总体包括4步:
确认硬件和软件环境:确认硬件资源可用性和操作系统兼容性。确认操作系统:确认操作系统参数和配置。做集群规划:规划集群FE和BE节点的布局,预估需要的资源。部署集群:基于规划和配置部署集群。验证:登录集群验证是否OK。CPU
doris支持基于AVX2指令对查询进行向量加速,建议机器支持AVX2指令集。
运行下面命令,如果有返回,则代表机器支持AVX2指令集。
| 1 |
|
如果不支持AVX2指令,你可以使用“noavx2”安装包。
内存
doris没有严格的内存闲置。在生产环境中,内存的GB数是CPU核数的4倍,例如是16核,最好就对应64GB的内存,当然内存更多点更好。
存储
doris数据可以保存在SSD/HDD/OSS上。
对于以下场景,推荐使用SSD存储:
大数据量高并发查询。大数据量高频更新。文件系统
doris支持ext4和xfs文件系统。
网卡
doris对于碎片化分布式数据的并发计算会导致网络开支。为了优化doris性能、最小化网络开支,强烈建议在部署时选用万兆网卡(10 Gigabit Ethernet,即 10GbE)或者更快网络。
推荐服务器
doris可以运行在x84-64和arm64架构服务器上。
开发和测试环境:
| Frontend | 8+ Cores | 8+ GB | SSD or SATA, 10+ GB | 1 or 10 GbE | 1 |
| Backend | 8+ Cores | 16+ GB | SSD or SATA, 50+ GB | 1 or 10 GbE | 1 |
TIP
描述:
在验证测试环境中,您可以将FE和BE部署在同一台服务器上。通常建议在一台机器上只部署一个BE实例。同样,您只能在一台机器上部署一个FE。如果需要三个数据副本,则至少需要三台机器,并在每台机器上部署一个BE实例,而不是在一台机器上部署三个BE实例。多个服务器的时钟必须同步,时钟偏差不能超过5秒。在测试环境中,您也可以仅使用一个BE执行测试。在实际的生产环境中,BE实例的数量直接影响总体查询延迟。生产环境:
| Frontend | 16+ Cores | 64+ GB | SSD or RAID, 100+ GB | 10 GbE | 1 |
| Backend | 16+ Cores | 64+ GB | SSD or SATA, 100+ GB | 10 GbE | 3 |
TIP
描述:
在生产环境中,如果FE和BE共存,请注意资源争用问题。建议将元数据和数据分别存储在不同的磁盘上。BE节点可以配置多个磁盘用于存储。您可以将多个HDD或SSD绑定到单个BE实例。集群的性能取决于BE节点的资源。BE节点越多,Doris的性能越好。通常,Doris可以在10到100台机器上充分发挥其性能潜力。在Doris集群中,FE主要负责元数据存储,包括元数据编辑日志和镜像。BE的磁盘空间主要用于存储数据,需要根据业务需要进行计算。
| FE | 元数据的大小一般在几百MB到几GB之间。建议磁盘空间不小于100GB。 |
| BE | Doris默认使用LZ4压缩,压缩比为0.3~0.5。根据数据总量* 3(3个数据副本)计算磁盘空间,需要预留40%的磁盘空间用于后台数据压缩和临时数据存储。 |
| Broker | 如果希望部署Broker,通常可以将Broker节点部署在与FE /BE节点相同的机器上。 |
禁用交换分区
部署Doris时,建议关闭swap分区。当内核检测到内存压力时,使用交换分区将一些内存数据移动到配置的交换空间。但是,由于内核的策略可能无法完全理解应用程序的行为,因此它可能会严重影响数据库的性能。因此,建议禁用它。
您可以使用以下命令暂时禁用它。它将在下次机器启动时再次启用。
| 1 |
|
要永久禁用它,请使用Linux root帐户注释掉/etc/fstab中的交换分区,然后重新启动。
| 1 2 3 4 5 6 |
|
注意
不建议通过设置vm.swappiness = 0来关闭swap开关。因为该参数在不同的Linux内核版本中具有不同的语义。在许多情况下,这不会完全禁用swap。
检查并禁用系统防火墙
如果发现端口不一致,请尝试关闭防火墙,确认是否是该原因。如果是,请根据doris组件配置的端口打开对应的端口进行通信。
| 1 2 |
|
设置打开文件句柄的最大数目
Doris依靠大量的文件来管理表数据。因此,系统对程序打开的文件数量的限制需要增加。
| 1 2 3 |
|
为使更改生效,当前用户需要退出当前会话并重新登录。
修改虚拟内存区域的数量
设置虚拟内存区域的数量至少为2000000。
| 1 |
|
禁用明显的大页面
建议在部署doris时禁用明显的大页面。
| 1 2 |
|
端口规划
Doris实例直接通过网络通信,正常操作需要以下端口。管理员可以根据自己的环境调整Doris端口:
| BE | be_port | 9060 | FE --> BE | BE thrift server端口,用来接收FE请求。 |
| BE | webserver_port | 8050 | BE <--> BE | BE之间通信http端口。原8040端口被hadoop占用了,故使用8050端口,需要保证各be一致 |
| BE | heartbeat_service_port | 9050 | FE --> BE | BE心跳服务端口 (thrift),用来从FE接收心跳。 |
| BE | brpc_port | 8060 | FE <--> BE BE <--> BE | BE的BRPC端口,用于BE之间通信。 |
| FE | http_port | 8040 | FE <--> FE Client <--> FE | FE的http服务端口。原8030端口被hadoop占用了,故使用8040端口,需要保证各fe一致。 |
| FE | rpc_port | 9020 | BE --> FE FE <--> FE | FE thrift server端口,各FE应该配置一致。 |
| FE | query_port | 9030 | Client <--> FE | FE MySQL server 端口。 |
| FE | edit_log_port | 9010 | FE <--> FE | FE bdbje通信端口。 |
| Broker | broker_ipc_port | 8000 | FE --> Broker BE --> Broker | Broker用来接收请求的thrift server端口。 |
节点规划
FE节点规划:
FE节点主要负责处理用户请求、查询解析和规划、元数据管理和节点管理。
对于生产集群,通常建议部署至少3个FE节点以实现高可用性。在Doris中,FE节点有两种角色:
一般建议部署3个Follower节点。在高并发场景中,您可以扩展Observer节点。
BE节点规划:
BE节点负责数据存储和计算。在生产环境中,通常有3个数据副本,因此建议至少部署3个BE节点。BE节点也可以扩展。通过增加BE节点的数量,可以提高查询性能和并发性。
创建元数据路径
FE元数据一般不超过10GB。建议将FE元数据存储在与BE节点数据不同的磁盘上。
在解压缩安装包之后,通常会包含一个默认的doris-meta目录。建议创建一个单独的元数据目录,并创建一个从该目录到doris-meta的符号链接。在生产环境中,强烈建议指定一个单独的目录,而不是将其放在Doris安装目录中,最好放在专用磁盘(最好是SSD)上。对于测试和开发环境,您可以简单地使用默认配置。
| 1 2 3 4 5 |
|
修改FE配置文件
FE配置文件在FE部署路径下的conf目录下。启动FE节点前,需要修改“conf/ FE .conf”文件。
以下是一些必要的修改:
1.修改FE元数据目录:配置文件中的meta_dir指定元数据的存放位置。默认情况下,meta_dir位于FE安装路径下。如果您已经创建了到FE元数据目录的符号链接,则不需要配置meta_dir。
2.绑定集群IP:在有多个网口的环境下,需要显式配置“priority_networks”。
| 1 |
|
这是一个CIDR表示,它指定了FE使用的IP。在使用FQDN的环境中,可以忽略这一点。
3.调整FE内存。
在"fe.conf"中,默认的最大Java堆内存设置为8GB。对于生产环境,建议将其增加到16GB或更高。可以通过在JAVA_OPTS参数中指定-Xmx来调整最大Java堆内存。
| 1 |
|
5.修改大小写敏感参数lower_case_table_names。缺省情况下,Doris对表名区分大小写。如果需要不区分大小写的表名,则需要在集群初始化期间进行设置。注意,一旦集群初始化完成,表名的大小写敏感性就不能更改。有关lower_case_table_names设置的更多详细信息,请参考变量文档。
启动FE进程
执行以下命令启动FE进程:
| 1 |
|
FE进程启动后,在后台运行。日志文件默认存放在“log/”目录下。如果启动失败,可以查看log/fe.log或log/fe.out中的错误信息。
检查FE状态
检查FE启动状态,可以使用MySQL客户端连接到Doris集群。初始用户为root,密码为空。
| 1 |
|
连接到Doris集群后,可以使用show frontend命令查看FE节点的状态。重要的是要核实以下内容:
如果"Alive"为true,则节点是活的。如果"Join"为true,则该节点已加入集群,但它当前在集群中可能不是活动的(它可能已断开连接)。如果“IsMaster”为true,则表示该节点是主节点。创建元数据文件夹
参考FE Master节点的部署并创建“doris-meta”目录。
修改FE follower节点配置
参考FE Master节点的部署,修改FE配置文件。大多数情况下,可以直接从FE Master节点复制配置文件。
注册新follower节点到集群
在启动新的FE节点之前,需要将其注册到FE集群中。
| 1 2 3 4 5 6 7 |
|
如果需要添加观察者节点,可以使用add Observer命令。
| 1 2 |
|
建议使用奇数个FE Follower节点(包括Master节点),建议使用3个以实现高可用性。
当FE部署在高可用模式(1个Master节点,2个Follower节点)时,建议通过增加一个Observer FE来增加FE读服务的可扩展性。
通常,一个FE节点可以处理大约10-20个BE节点。建议FE节点总数不超过10个。
启动FE follower节点
启动FE Follower节点,自动同步元数据。
| 1 |
|
helper_fe_ip表示当前FE集群中任何存活的节点。–heper参数仅在初始FE启动期间用于同步元数据,在随后的FE重启操作中不需要指定它。
检查follower节点状态
检查Follower节点状态的方法与检查Master节点状态的方法相同。注册FE Follower节点后,使用show frontend命令查看FE节点状态。与Master节点不同,Follower节点的IsMaster状态应该为false。
创建目录
BE进程负责数据计算和存储。默认情况下,数据目录在be/storage下。在生产环境中,通常使用专用磁盘来存储数据,将BE数据与BE部署文件分开。BE支持跨多个磁盘分发数据,以便更好地利用磁盘的I/O能力。
| 1 2 |
|
修改BE配置
BE的配置文件在BE部署路径下的conf目录下。启动BE节点前,需要修改“conf/ be.conf”文件。
1.配置Java环境从1.2版本开始,Doris支持Java UDF(用户定义函数),BE依赖于Java环境。您需要事先在操作系统中配置JAVA_HOME环境变量,或者在BE配置文件中指定Java环境变量。
| 1 2 |
|
2.配置BE存储路径
如果需要修改BE存储路径,可以通过修改storage_root_path参数。使用分号分隔多个路径;(不要在最后一个目录后面添加分号。)
冷热数据分级存储
Doris支持冷热数据分级存储,冷数据存储在HDD或OSS上,热数据存储在SSD上。
通过HDD(冷数据目录)路径和SSD(热数据目录)路径,可以区分节点内存放热数据和存放冷数据的路径。如果在BE节点中不需要热/冷机制,则只需要配置路径,而不指定介质类型。您也不需要修改BE中的默认存储介质配置。
使用分级存储特性时,需要在storage_root_path参数中指定介质。
| 1 2 3 4 |
|
绑定集群ID
在多网络接口环境中,需要显式配置“priority_networks”。但是,在配置了FQDN的环境中,可以忽略“priority_networks”。
| 1 |
|
注册BE节点到doris
在启动新的BE节点之前,您需要在BE集群中注册新的BE节点。
| 1 2 3 4 5 6 7 |
|
启动BE进程
启动BE进程通过执行以下命令:
| 1 |
|
BE进程启动后,在后台运行。日志文件默认存放在“log/”目录下。如果启动失败,可以查看log/be.log或log/be.out中的错误信息。
检查BE状态
连接到Doris集群后,可以使用show backends命令查看BE节点的状态。
| 1 2 3 4 5 |
|
通常情况下,你应该核实以下内容:
如果"Alive"为true,则节点是活的。“TabletNum”表示该节点上的片(分片)的数量。当增加一个新节点时,会发生数据均衡,TabletNum逐渐接近平均值。登录数据库
使用MySQL客户端登录doris数据库:
| 1 2 |
|
检查版本
使用“show frontends”和“show backends”命令检查版本。
| 1 2 3 4 5 |
|
修改集群密码
Doris集群创建完成后,系统会自动创建一个root用户,默认密码为空。建议在创建集群后设置root用户的新密码。
| 1 2 3 4 5 6 7 8 9 10 |
|
创建一个测试表并插入数据
在新创建的集群中,您可以创建一个表并向其中插入数据,以验证集群是否正常工作。
| 1 2 3 4 5 6 7 8 9 10 11 12 13 |
|
Doris与MySQL协议兼容,因此您可以使用“insert”语句插入数据。
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
|