合 StarRocks企业级安装部署
前提条件
在部署 StarRocks 之前,请确保如下环境要求已满足。
分类 | 描述 | 说明 |
---|---|---|
硬件要求 | 集群至少拥有两台物理或虚拟节点。 -BE 节点 CPU 需支持 AVX2 指令集。 各节点间需要通过万兆网卡及万兆交换机连接。 | FE 节点建议配置 8 核 或以上 CPU,16GB 或以上内存。 BE 节点建议配置 16 核 或以上 CPU,64GB 或以上内存。 通过运行 cat /proc/cpuinfo |grep avx2 命令查看节点 CPU 支持的指令集,若有结果返回则表明 CPU 支持 AVX2 指令集。 |
操作系统 | Linux kernel 3.10 以上。 | |
软件要求 | 所有节点需安装 Java Development Kit(1.8 或以上,推荐使用1.8)。 客户端节点需安装 MySQL 客户端(5.5 或以上)。 | |
系统环境 | 集群时钟需保持同步。 用户需要有设置 ulimit -n 权限。 |
说明
- 依据不同的工作负载复杂性,StarRocks 每个 CPU 线程每秒可以处理 10M 至 100M 行数据。您可以据此估计集群中需要多少 CPU 线程能够满足您的要求。而 StarRocks 在存储数据时利用列存储和压缩,可以达到 4-10 倍的压缩比,您可以使用该数据来估计集群所需的存储量。
- StarRocks 仅支持 JDK 作为依赖,不支持使用 JRE。
环境配置
为了实现集群高可用,建议集群最低3个节点,FE和BE分开部署也可以混合部署。
集群部署注意事项
假设node01、node02、node03均为符合要求的服务器,生产环境最小部署架构示例:
其中,node01部署一个FE作为Leader,node02部署一个FE Observer提供元数据备份。集群三个节点各部署一个BE,可保证生产环境数据使用StarRocks默认的三副本存储(测试环境可以使用单副本)。
FE的数量及是否需要FE的高可用
FE的Follower要求为奇数个,且并不建议部署太多,通常我们推荐部署1个或3个Follower。在三个Follower时,即可实现高可用(HA)。此时,若Leader节点进程挂掉或与集群脱离通信,其他2个Follower节点会通过bdbje协议快速重新选主出一个Leader,保证集群的正常工作(FE Leader节点异常仅影响集群写入,不会对集群对外的查询功能有影响)。这里注意,集群中需要有半数以上的Follower节点存活,才可进行FE的重新选主。
一般情况下,相对更推荐部署1 Follower+多Observer的FE架构,通过增加Observer来扩展集群的高并发读服务能力。
通常,一个FE节点可以应对10-20台BE节点,我们建议总的FE节点数量在10个以下,而一般3个即可满足绝大部分业务需求。
BE实例数量
BE实例数量直接决定了集群整体查询延迟,生产环境BE数量建议至少为3个。StarRocks建表时默认为3副本,生产环境下我们也推荐使用3副本数据。由于StarRocks的副本策略,副本数不能大于BE实例数(不同Host),所以为保障数据安全,建议至少部署三个BE实例(不同Host)。
Broker实例数量
通常与BE混布,与BE数量保持相同,并建议所有的Broker使用相同的名称,这样在执行Broker任务时可以并行使用多个Broker实例。
如果我们的业务中不需要和Hadoop类的产品对接,那么也可以不部署Broker。
FE与BE是否混布
前面已经提到,单台机器下,同集群FE不能混布,BE虽然能混布但是没有价值。FE和BE是可以混布的,但生产环境下需要注意CPU、内存等资源竞争问题,并保证元数据目录和数据目录分属不同磁盘。
环境申请
IP | 主机名 | 角色 |
---|---|---|
172.72.2.50 | starrocks50 | FE Leader |
172.72.2.51 | starrocks51 | BE + Broker + FE Observer |
172.72.2.52 | starrocks52 | BE + Broker |
172.72.2.53 | starrocks53 | BE + Broker |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 | -- 网卡 docker network create --subnet=172.72.0.0/16 lhrnw docker rm -f starrocks50 docker run -itd --name starrocks50 -h starrocks50 \ --net=lhrnw --ip 172.72.2.50 \ -p 8031:8030 -p 9031:9030 \ -v /sys/fs/cgroup:/sys/fs/cgroup \ --privileged=true \ --add-host='starrocks50:172.72.2.50' \ --add-host='starrocks51:172.72.2.51' \ --add-host='starrocks52:172.72.2.52' \ --add-host='starrocks53:172.72.2.53' \ lhrbest/lhrcentos76:9.0 \ /usr/sbin/init docker rm -f starrocks51 docker run -itd --name starrocks51 -h starrocks51 \ --net=lhrnw --ip 172.72.2.51 \ -v /sys/fs/cgroup:/sys/fs/cgroup \ --privileged=true \ --add-host='starrocks50:172.72.2.50' \ --add-host='starrocks51:172.72.2.51' \ --add-host='starrocks52:172.72.2.52' \ --add-host='starrocks53:172.72.2.53' \ lhrbest/lhrcentos76:9.0 \ /usr/sbin/init docker rm -f starrocks52 docker run -itd --name starrocks52 -h starrocks52 \ --net=lhrnw --ip 172.72.2.52 \ -v /sys/fs/cgroup:/sys/fs/cgroup \ --privileged=true \ --add-host='starrocks50:172.72.2.50' \ --add-host='starrocks51:172.72.2.51' \ --add-host='starrocks52:172.72.2.52' \ --add-host='starrocks53:172.72.2.53' \ lhrbest/lhrcentos76:9.0 \ /usr/sbin/init docker rm -f starrocks53 docker run -itd --name starrocks53 -h starrocks53 \ --net=lhrnw --ip 172.72.2.53 \ -v /sys/fs/cgroup:/sys/fs/cgroup \ --privileged=true \ --add-host='starrocks50:172.72.2.50' \ --add-host='starrocks51:172.72.2.51' \ --add-host='starrocks52:172.72.2.52' \ --add-host='starrocks53:172.72.2.53' \ lhrbest/lhrcentos76:9.0 \ /usr/sbin/init docker cp -q /soft/StarRocks-2.5.3.tar.gz starrocks50:/soft/ docker cp -q /soft/StarRocks-2.5.3.tar.gz starrocks51:/soft/ docker cp -q /soft/StarRocks-2.5.3.tar.gz starrocks52:/soft/ docker cp -q /soft/StarRocks-2.5.3.tar.gz starrocks53:/soft/ |
安装包部署
安装包下载: https://www.mirrorship.cn/zh-CN/download/community
需要放在每个节点上。
1 2 3 4 5 6 7 8 9 10 11 | wget https://releases.mirrorship.cn/starrocks/StarRocks-3.0.0.tar.gz tar -zxf /soft/StarRocks-2.5.3.tar.gz -C /usr/local/ ln -s /usr/local/StarRocks-2.5.3 /usr/local/starrocks mkdir -p /usr/local/starrocks/fe/meta mkdir -p /usr/local/starrocks/be/storage chown root.root -R /usr/local/starrocks/ chown root.root -R /usr/local/StarRocks-2.5.3/ |