ARM架构下部署StarRocks3

一、什么是 StarRocks

StarRocks 是一款新一代的极速全场景 MPP(Massively Parallel Processing)数据库,通过向量化、MPP 架构、CBO、智能物化视图、可实时更新的列式存储引擎等技术实现的新一代大数据数据库,同时它兼容 Mysql5.7 的协议,支持标准 SQL 语法,极大降低了使用成本。作为大数据数据库,StarRocks 支持 Hive 作为外部 catalog 实现与 Hadoop 的直接对接,同时也支持将数据直接存储用于高效计算。

二、X86 和 ARM

众所周知,当前 CPU 的主流系统架构分为 X86 架构和 ARM 架构。其中 X86 架构的所有权归属于 Intel 公司,而 ARM 架构则是开源的。

X86 架构的系统推出已经近 30 年,在这 30 年来互联网领域发展飞快,X86 架构也伴随着互联网的腾飞经过了高速发展的黄金时期,用户的应用、软件配套、软件开发等工具的配套和兼容都非常成熟,但由于 X86 架构的所有权问题,所有使用该架构的用户都需向 Intel 公司付费方可使用。

而开源的 ARM 架构在近年来尤为受到关注,面对当前日益复杂的国际环境以及基于 ARM 架构本身在功耗上的优异表现,国内外大量企业自研基于 ARM 架构的服务器芯片,越来越多的应用和软件配套也适配 ARM 架构。

三、StarRocks 部署

StarRocks 部署需单独部署 FE 节点和 BE 节点,其中 FE 节点是 StarRocks 的前端节点,负责管理元数据,管理客户端连接,进行查询规划,查询调度等;BE 节点是 StarRocks 的后端节点,负责数据存储、SQL 执行等。

当前,由于 StarRocks 的 BE 节点部署强依赖 X86 架构下的 AVX2 指令集(StarRocks 向量化引擎强依赖),所以当前 StarRocks 官方针对 ARM 架构更多的是建议使用 Docker 部署或修改编译脚本关闭 AVX2 指令集重新打包部署,并未提供官方的稳定版本。针对当前情况以及实际的业务发展需求,我们评估决定使用官方提供的 Docker 镜像内的配置文件进行 ARM 架构下的部署。

本文的 StarRocks3 部署是基于已搭建完成 Hadoop3 集群条件下进行,若还未搭建 Hadoop 集群,请先搭建 Hadoop 集群再进行后续部署。

3.1 Docker 镜像内配置文件获取

使用官方提供的 starrocks/artifacts-centos7:latest 镜像内文件进行部署。

3.1.1 拉取镜像

bash 复制代码
# 拉取镜像
docker pull starrocks/artifacts-centos7:latest
​
# 启动镜像
docker run -p 9030:9030 -p 8030:8030 -p 8040:8040 --privileged=true -itd --name starrocks-art starrocks/artifacts-centos7

3.1.2 镜像内文件导出

镜像内文件均在/release 目录下

bash 复制代码
# 进入镜像内
docker exec -it starrocks-art sh
mkdir starRocks
cp -r be_artifacts/be starRocks/
cp -r fe_artifacts/fe starRocks/
cp -r broker_artifacts/apache_hdfs_broker starRocks/
​
# 文件压缩
tar -zcvf starRocks.tar.gz starRocks/
​
# 文件导出
docker cp artifacts-art:/release/starRocks.tar.gz /usr/local/

3.2 节点部署

部署需要 4 台机器,1 台机器部署 FE,3 台机器部署 BE。接下去以 node01、node02、node03、node04 区分。

StarRocks 文件默认安装路径为 /opt/starRocks。

3.2.1 apache_hdfs_borker 配置

替换该目录下的 hdfs-site.xml 文件。

bash 复制代码
cp /opt/hadoop3/etc/hadoop/hdfs-site.xml /opt/starRocks/apache_hdfs_borker/

3.2.2 FE 节点部署

在 node01 节点部署 FE,同时在该节点需搭建 Mysql 用于连接测试搭建完成后的 StarRocks。

1、复制 core-site.xml、hdfs-site.xml 和 hive-site.xml 至 /fe/conf 目录下

bash 复制代码
cp /opt/hadoop3/etc/hadoop/core-site.xml /opt/starRocks/fe/conf/
cp /opt/hadoop3/etc/hadoop/hdfs-site.xml /opt/starRocks/fe/conf/
cp /opt/hive/conf/hive-site.xml /opt/starRocks/fe/conf/

2、 修改 fe.conf 文件

bash 复制代码
# 新建 meta 文件夹
cd /opt/starRocks/fe
mkdir meta
​
vim conf/fe.conf
​
# 添加
meta_dir=/opt/starRocks/fe/meta
priority_networks=node01/24  
enable_udf=true

3、start_fe.sh 脚本修改

由于 StarRocks3 版本强依赖 JAVA11 以上版本,但搭建的 Hadoop3 集群默认使用 JAVA8 的版本,所以需手动指定 StarRocks3 使用的 JAVA 版本,本文使用 zulu11.66.19-ca-jdk11.0.20.1-linux_aarch64 版本。

ini 复制代码
# 第一行添加 JAVA_HOME
export JAVA_HOME=/{JAVA 安装目录}/zulu11.66.19-ca-jdk11.0.20.1-linux_aarch64
​
# 第 108 行需手动修改 JAVA_VERSION
JAVA_VERSION=11

4、FE 节点启动

bash 复制代码
cd /opt/starRocks/fe/bin
./start_fe.sh --daemon

5、验证 FE 启动成功

shell 复制代码
# 使用 jps 检查进程,如果没有 StarRocksFE 进程,可在 /opt/starRocks/log 下查看 fe.log
jps
Jps
StarRocksFE

6、FE 节点日志自动清理

bash 复制代码
vim /usr/local/bin/auto-del-3-days-ago-log.sh 

#!/bin/sh
find /opt/starRocks/fe/log/ -mtime +3 -name "fe.*" -exec rm -rf {} ;

7、FE 节点服务挂断拉起脚本

lua 复制代码
vim /usr/local/bin/monitor_starrocks_fe.sh

#!/bin/sh
pidFE=`ps aux | grep 'StarRocksFE' | grep -v 'grep' | awk '{print $2}'`
if [[ !$pidFE ]];
then
   sh /opt/starRocks/fe/bin/start_fe.sh --daemon
fi

8、bash 赋权及定时任务设置

bash 复制代码
chmod +x /usr/local/bin/auto-del-3-days-ago-log.sh
chmod +x /usr/local/bin/monitor_starrocks_fe.sh

10 0 * * * /bin/bash /usr/local/bin/auto-del-3-days-ago-log.sh >/dev/null 2>&1
*/2 * * * * /bin/bash /usr/local/bin/monitor_starrocks_fe.sh >/dev/null 2>&1

3.2.3 BE 节点部署

1、替换 starrocks/allin1-ubuntu:latest 镜像内导出文件的 be 目录,使用 starrocks/artifacts-centos7:latest 镜像导出的 be 文件。

2、复制 core-site.xml、hdfs-site.xml 和 hive-site.xml 至 /be/conf 目录下。

bash 复制代码
cp /opt/hadoop3/etc/hadoop/core-site.xml /opt/starRocks/be/conf/
cp /opt/hadoop3/etc/hadoop/hdfs-site.xml /opt/starRocks/fe/conf/
cp /opt/hive/conf/hive-site.xml /opt/starRocks/be/conf/

3、修改 be.conf 文件

priority_networks 需修改为各 BE 节点的 ip 地址。

ini 复制代码
cd /opt/starRocks/be
mkdir data

vim conf/be.conf

priority_networks=node02/24
load_process_max_memory_limit_percent=50
mem_limit=75%
storage_root_path=/opt/starRocks/be/data

4、修改 start_be.sh 文件

bash 复制代码
cd /opt/starRocks/be/bin

vim start_be.sh
export JAVA_HOME=/{JAVA 安装目录}/zulu11.66.19-ca-jdk11.0.20.1-linux_aarch64

5、BE 节点启动

各个节点需单独启动

bash 复制代码
cd /opt/starRocks/be/bin
./start_be.sh --daemon

6、验证 BE 启动成功

shell 复制代码
ps aux | grep starrocks_be 
# 会看到一个 starrocks_be 的进程,如果没有可在 /opt/starRocks/be/log 下查看 be.INFO 日志

7、BE 节点日志自动清理

bash 复制代码
vim /usr/local/bin/auto-del-3-days-ago-log.sh 

#!/bin/sh
find /opt/starRocks/be/log/ -mtime +3 -name "be.*" -exec rm -rf {} ;

8、BE 节点服务挂断拉起脚本

lua 复制代码
vim /usr/local/bin/monitor_be.sh

#!/bin/sh
pidBE=`ps aux | grep 'starrocks_be' | grep -v 'grep' | awk '{print $2}'`
if [[ !$pidBE ]];
then
   sh /opt/starRocks/be/bin/start_be.sh --daemon
fi

9、bash 赋权及定时任务设置

bash 复制代码
chmod +x /usr/local/bin/auto-del-3-days-ago-log.sh
chmod +x /usr/local/bin/monitor_starrocks_be.sh

10 0 * * * /bin/bash /usr/local/bin/auto-del-3-days-ago-log.sh >/dev/null 2>&1
*/2 * * * * /bin/bash /usr/local/bin/monitor_starrocks_be.sh >/dev/null 2

3.3 部署验证

FE 和 BE 节点均部署完成并启动完成后,在 FE 节点通过 Mysql 客户端进行部署验证及相关设置。

1、验证 FE 可用

bash 复制代码
# FE 节点地址,初始无密码,非 3306 端口需指定地址 127.0.0.1
mysql -h 127.0.0.1 -P9030 -uroot -p

2、添加 BE 节点

以下操作均已完成第一步,成功连接 FE。

sql 复制代码
# 添加 BE,所有 BE 都添加
ALTER SYSTEM ADD BACKEND "node02:9050";
ALTER SYSTEM ADD BACKEND "node03:9050";
ALTER SYSTEM ADD BACKEND "node04:9050";

# 检查 BE, 所有 Alive: true,否则 BE 有问题
SHOW PROC '/backends'\G
# 检查 FE 
show proc '/frontends'\G

# 设置密码
SET PASSWORD for root = PASSWORD('密码');

# 按需选择是否创建初始数据库,仅用作示例新建 ads 库
create database ads;

# 按需选择是否创建 Hive 外部 catalog
CREATE EXTERNAL CATALOG hive
PROPERTIES ("type" = "hive","hive.metastore.uris"="thrift://{hivemetastore}");

# 检查 catalog
show catalogs;

# 验证 Hive catalog 使用是否正常

四、总结

本文讲解了如何在 ARM 架构下部署 StarRocks3 的详细步骤。

在科技高速发展的当下,ARM 架构由于其开源性和功耗上的优异表现正在受到越来越多的关注,大数据相关的各种组件也纷纷推出了基于 ARM 架构的版本用于更好的支持用户体验。由于 StarRocks3 并无官方的 ARM 版本,通过查询网上资料也并无详细完整的相关文档,所以本文也仅是利用 Docker 镜像最终实现的部署方案,从运行的结果来看符合预期。

推荐阅读

Spring Validation实践及其实现原理

ThreadPoolExecutor杂谈

浅谈软件架构

你是否真的需要实现一个3D地图

深入分析 RocketMQ 的 push 消费方式实现

招贤纳士

政采云技术团队(Zero),Base 杭州,一个富有激情和技术匠心精神的成长型团队。规模 500 人左右,在日常业务开发之外,还分别在云原生、区块链、人工智能、低代码平台、中间件、大数据、物料体系、工程平台、性能体验、可视化等领域进行技术探索和实践,推动并落地了一系列的内部技术产品,持续探索技术的新边界。此外,团队还纷纷投身社区建设,目前已经是 google flutter、scikit-learn、Apache Dubbo、Apache Rocketmq、Apache Pulsar、CNCF Dapr、Apache DolphinScheduler、alibaba Seata 等众多优秀开源社区的贡献者。

如果你想改变一直被事折腾,希望开始折腾事;如果你想改变一直被告诫需要多些想法,却无从破局;如果你想改变你有能力去做成那个结果,却不需要你;如果你想改变你想做成的事需要一个团队去支撑,但没你带人的位置;如果你想改变本来悟性不错,但总是有那一层窗户纸的模糊......如果你相信相信的力量,相信平凡人能成就非凡事,相信能遇到更好的自己。如果你希望参与到随着业务腾飞的过程,亲手推动一个有着深入的业务理解、完善的技术体系、技术创造价值、影响力外溢的技术团队的成长过程,我觉得我们该聊聊。任何时间,等着你写点什么,发给 zcy-tc@cai-inc.com

微信公众号

文章同步发布,政采云技术团队公众号,欢迎关注

相关推荐
Natural_yz4 小时前
大数据学习09之Hive基础
大数据·hive·学习
Natural_yz5 小时前
大数据学习10之Hive高级
大数据·hive·学习
AI服务老曹5 小时前
建立更及时、更有效的安全生产优化提升策略的智慧油站开源了
大数据·人工智能·物联网·开源·音视频
Mephisto.java5 小时前
【大数据学习 | HBASE高级】storeFile文件的合并
大数据·sql·oracle·json·hbase·database
这样の我5 小时前
hbase集成phoenix
大数据·数据库·hbase
思通数据5 小时前
AI与OCR:数字档案馆图像扫描与文字识别技术实现与项目案例
大数据·人工智能·目标检测·计算机视觉·自然语言处理·数据挖掘·ocr
CoderJia程序员甲6 小时前
重学SpringBoot3-整合 Elasticsearch 8.x (三)使用Repository
java·大数据·spring boot·elasticsearch
东方巴黎~Sunsiny6 小时前
如何优化Elasticsearch的查询性能?
大数据·elasticsearch·搜索引擎
杭州的物联网专家6 小时前
涉密载体管控系统:DW-S402全方位守护信息安全的利器
大数据
guanpinkeji6 小时前
搭子小程序定制开发:全新找搭子之旅
大数据·小程序·小程序开发·小程序制作·找搭子·搭子小程序