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

微信公众号

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

相关推荐
小宋102111 分钟前
高性能分布式搜索引擎Elasticsearch详解
大数据·elasticsearch·搜索引擎
DolphinScheduler社区19 分钟前
中电信翼康基于Apache Dolphinscheduler重构“星海·济世医疗数据中台”实践经验分享
大数据
sunxunyong22 分钟前
Linux 删除文件不释放空间问题处理
大数据·linux·运维·服务器
isNotNullX7 小时前
一文解读OLAP的工具和应用软件
大数据·数据库·etl
不是笨小孩i9 小时前
Git常用指令
大数据·git·elasticsearch
howard20059 小时前
大数据概念与价值
大数据·特征·概念·价值
知识分享小能手10 小时前
mysql学习教程,从入门到精通,SQL DISTINCT 子句 (16)
大数据·开发语言·sql·学习·mysql·数据分析·数据库开发
紫钺-高山仰止10 小时前
【脑机接口】脑机接口性能的电压波形的尖峰分类和阈值比较
大数据·分类·数据挖掘
Alluxio10 小时前
选择Alluxio来解决AI模型训练场景数据访问的五大理由
大数据·人工智能·分布式·ai·语言模型
武子康11 小时前
大数据-133 - ClickHouse 基础概述 全面了解
java·大数据·分布式·clickhouse·flink·spark