Doris安装配置

概念

Doris: MPP架构的数据库,兼容大部分mysql语法,通过向量化技术和内部特殊的表结构可以实现海量数据的分析,查询。

向量化:也叫做SIMD,通过单指令多数据实现并行任务处理。

Fe|Frontend:是doris的管理节点,用户请求的接入、查询解析规划、元数据的管理、节点管理。角色分为Follower和Master和Observer。其中Observer只负责元数据的同步没有选举功能相当于SecondeNameNode。

Be|Backend:要负责数据存储、查询计划的执行

Broker:数据的导入

规划

集群规划

  • 通过上面的介绍可以知道集群的性能与 BE 节点的资源有关,BE 节点越多,Doris 性能越好。doris的节点数>=doris副本数+1(也就是如果设置3副本至少部署4be)
  • fe主要负责sql的解析,执行计划分发,元数据管理(Master独有)。fe的角色分为Follower和Observer。如果部署1Follower+2Observer=>读高可用。如果配置读写高可用3Follower节点。
  • fe的follower和observer如何选择?fe内部使用了bdbje的选举方式类似Paxos。因此必须保证半数以上写入成功,如果不成功该fe节点直接退出,来保证数据的准确性。事实如果Master的fe配置合理很难挂掉,即使Fe的Master磁盘故障仍然可以通过observer的元数据故障恢复。而如果对于Follower的元数据结构不是特别了解,不建议部署多台follower因为这样增加了运维的难度。相反部署多台observer运维成本更低
  • 关于混布。生产环境不建议混布(fe+be),但是可能资源有限,如果部署读写高可用必须保证2fe独立部署。内存10G+,硬盘保证10G空间(元数据一般不会超过2G);be不能混部。
  • 关于硬件资源。be节点对于内存使用较多,生产建议内存是 CPU 核数的 4 倍-8倍。fe节点如果节点数少建议16G-32G,如果节点数多可以适当调整内存10G+。
  • Ssd 和hdd应该怎么设置?对于fe来说,ssd可以通过配置meta_data存放元数据,加速大数据情况下的高并发点查和高频更新的能力。如果该节点是be,在多种存储介质存在时可以通过配置后缀设置冷热数据(该场景使用较少)。

端口规划

实例名称端口名称默认端口通信方向说明
BEbe_port9060FE --> BEBE 上 thrift server 的端口,用于接收来自 FE 的请求
BEwebserver_port8040BE <–> BEBE 上的 http server 的端口
BEheartbeat_service_port9050FE --> BEBE 上心跳服务端口(thrift),用于接收来自 FE 的心跳
BEbrpc_port8060FE <–> BEBE <–> BEBE 上的 brpc 端口,用于 BE 之间通讯
FEhttp_port8030FE <–> FEClient <–> FEFE 上的 http server 端口
FErpc_port9020BE --> FEFE <–> FEFE 上的 thrift server 端口,每个 fe 的配置需要保持一致
FEquery_port9030Client <–> FEFE 上的 MySQL server 端口
FEedit_log_port9010FE <–> FEFE 上的 bdbje 之间通信用的端口
Brokerbroker_ipc_port8000FE --> Broker BE --> BrokerBroker 上的 thrift server,用于接收请求

前置操作

1.检查支持AVX2 指令集(be节点)

cat /proc/cpuinfo | grep avx2

2.存储检查,必须ext4 和 xfs 文件系统均支持。

3.网卡配置检查,万兆带宽(如果只有千兆带宽影响性能),值得时priority_networks的网卡

4.关闭swap 分区

5.关闭防火墙

6.配置NTP服务

7.修改虚拟内存区域至少 2000000

sysctl -w vm.max_map_count=2000000

8.关闭透明大页

echo never > /sys/kernel/mm/transparent_hugepage/enabled
echo never > /sys/kernel/mm/transparent_hugepage/defrag

9.修改最大文件句柄数

vi /etc/security/limits.conf 
* soft nofile 1000000
* hard nofile 1000000

相关配置

  1. priority_networks(包含:fe+be) 配置ip,多网卡必须配置。并且启动后不能修改此配置,否则对应节点可能无法恢复。为了部署和后期维护的方便建议配置文件保持一致,因此可以通过配置网段让doris自定选择合理的ip例如该节点ip为192.168.0.1可以设置成priority_networks=192.168.0.0/24。只有匹配上 192.168.0.0/24 这个网段的才会去作为服务监听地址。
  2. Fe的节点数(Follower不包含observer)必须是奇数个。
  3. 如果fe节点数多个并且集群内存有限,可以使用默认8G内存。配置参数
    JAVA_OPTS="-Xmx16384m -XX:+UseMembar -XX:SurvivorRatio=8 -XX:MaxTenuringThreshold=7 -XX:+PrintGCDateStamps -XX:+PrintGCDetails -XX:+UseConcMarkSweepGC -XX:+UseParNewGC -XX:+CMSClassUnloadingEnabled -XX:-CMSParallelRemarkEnabled -XX:CMSInitiatingOccupancyFraction=80 -XX:SoftRefLRUPolicyMSPerMB=0 -Xloggc:$DORIS_HOME/log/fe.gc.log.$DATE"
  1. meta_dir在fe中配置如果有ssd尽量配置ssd的目录
  2. storage_root_path是be的数据存储路径。另外如果如果配置的目录有ssd和hdd的情况需要指定类型。否则可以不用制定类型,可以添加相关资源限制条件。多块磁盘配置多个路径,提高性能
  3. lower_case_table_names(fe) 默认0,区分大小写。1不区分(自动转成小写)2.不区分(保持sql的表名,以小写查询还有区别见官网)。需要注意此配置修改后只能通过重建元数据相当于重建集群

部署

建议使用doris用户完成下面的操作。

1.Fe 节点部署

#修改fe.conf配置文件
## 选择独立于 BE 数据的硬盘,创建 FE 的元数据目录
mkdir -p <doris_meta_created>
#启动fe节点(非master节点需要使用helper方式启动)
bin/start_fe.sh --daemon
#非master第一次启动需要使用helper方式启动,后续使用start_fe.sh --daemon即可
#helper_fe_ip为任意一正常的fe节点一般用fe-master
#fe_edit_log_port默认9010
bin/start_fe.sh  --helper <helper_fe_ip>:<fe_edit_log_port> --daemon

2.be节点部署

#修改be.conf配置文件
## 修改 be/be.conf 的 Java 环境变量
JAVA_HOME = <your-java-home-path>
#启动be节点
bin/start_be.sh --daemon

3.加入节点

mysql -uroot -P<fe_query_port> -h<fe_ip_address>
ALTER SYSTEM ADD BACKEND "<be_ip_address>:<be_heartbeat_service_port>"
ALTER SYSTEM ADD FOLLOWER "<fe_ip_address>:<fe_edit_log_port>"
ALTER SYSTEM ADD OBSERVER "<fe_ip_address>:<fe_edit_log_port>"
## 查看 FE 各实例的版本,在 MySQL Client 中执行 show 命令
show frontends \G

## 查看 BE 各实例的版本,在 MySQL Client 中执行 show 命令
show backends \G

4.验证

## 创建测试数据库,在 MySQL Client 中执行 create database 语句
create database testdb;

## 创建测试表,在 MySQL Client 中执行 create table 语句
CREATE TABLE testdb.table_hash
(
    k1 TINYINT,
    k2 DECIMAL(10, 2) DEFAULT "10.5",
    k3 VARCHAR(10) COMMENT "string column",
    k4 INT NOT NULL DEFAULT "1" COMMENT "int column"
)
COMMENT "my first table"
DISTRIBUTED BY HASH(k1) BUCKETS 32;
## 插入部分测试数据,在 MySQL Client 中执行 insert into 语句
INSERT INTO testdb.table_hash VALUES
(1, 10.1, 'AAA', 10),
(2, 10.2, 'BBB', 20),
(3, 10.3, 'CCC', 30),
(4, 10.4, 'DDD', 40),
(5, 10.5, 'EEE', 50);
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值