您当前的位置:首页 > 电脑百科 > 程序开发 > 架构

ARM架构下部署StarRocks3,你学会了吗?

时间:2023-11-28 12:37:55  来源:微信公众号  作者:政采云技术

一、什么是 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 拉取镜像

# 拉取镜像
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 目录下

# 进入镜像内
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 文件。

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 目录下

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 文件

# 新建 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 版本。

# 第一行添加 JAVA_HOME
export JAVA_HOME=/{JAVA 安装目录}/zulu11.66.19-ca-jdk11.0.20.1-linux_aarch64

# 第 108 行需手动修改 JAVA_VERSION
JAVA_VERSION=11

4、FE 节点启动

cd /opt/starRocks/fe/bin
./start_fe.sh --daemon

5、验证 FE 启动成功

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

6、FE 节点日志自动清理

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 节点服务挂断拉起脚本

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 赋权及定时任务设置

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 目录下。

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 地址。

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 文件

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 节点启动

各个节点需单独启动

cd /opt/starRocks/be/bin
./start_be.sh --daemon

6、验证 BE 启动成功

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

7、BE 节点日志自动清理

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 节点服务挂断拉起脚本

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 赋权及定时任务设置

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 可用

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

2、添加 BE 节点

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

# 添加 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 镜像最终实现的部署方案,从运行的结果来看符合预期。



Tags:ARM架构   点击:()  评论:()
声明:本站部分内容及图片来自互联网,转载是出于传递更多信息之目的,内容观点仅代表作者本人,不构成投资建议。投资者据此操作,风险自担。如有任何标注错误或版权侵犯请与我们联系,我们将及时更正、删除。
▌相关推荐
ARM架构下部署StarRocks3,你学会了吗?
一、什么是 StarRocks StarRocks 是一款新一代的极速全场景 MPP(Massively Parallel Processing)数据库,通过向量化、MPP 架构、CBO、智能物化视图、可实时更新的列式存储引擎...【详细内容】
2023-11-28  Search: ARM架构  点击:(192)  评论:(0)  加入收藏
英伟达据称正设计基于Arm架构的PC芯片 最早或在2025年开始销售
据媒体援引消息人士报道,英伟达已开始设计基于Arm架构的中央处理器(CPU),这将对英特尔构成重大挑战。受此影响影响,周一美股收盘,英伟达涨近4%,英特尔跌3%。知情人士称,英伟达已悄悄...【详细内容】
2023-10-24  Search: ARM架构  点击:(187)  评论:(0)  加入收藏
Docker如何跨平台下载Arm架构的镜像
Docker是一个开源的容器化平台,它可以让开发者打包应用程序及其依赖项到一个容器中,并在任何地方运行这个容器,而不用担心环境配置的问题。类比一下,就好像打包一个包裹,里面包含...【详细内容】
2023-09-02  Search: ARM架构  点击:(368)  评论:(0)  加入收藏
ARM架构
一、SoC和CPU区别1、 SOC = System on chip (硅片上有一个系统,也就是片上系统)CPU = 运算器 + 控制器SOC =运算器 + 控制器 + 集成到CPU内部的外设;就是在CPU内部把许多外设...【详细内容】
2021-05-18  Search: ARM架构  点击:(1394)  评论:(0)  加入收藏
arm架构解释
本文将解释Arm计算机体系结构的组织方式,包括其ISA,执行状态,体系结构和处理器系列。Arm是处理器行业中无处不在的名称,Arm核心几乎可以在任何需要计算能力的现代设备中找到。这...【详细内容】
2019-08-29  Search: ARM架构  点击:(1122)  评论:(0)  加入收藏
华为达芬奇架构和arm架构有什么区别?
华为达芬奇架构和arm架构有什么区别?说起达芬奇大家都可能知道他是一个画家,但是有些东西可能你不太清楚,达芬奇是一个传奇人物,他学识渊博、多才多艺,是一个博学者:在绘画、音乐...【详细内容】
2019-07-25  Search: ARM架构  点击:(1665)  评论:(0)  加入收藏
▌简易百科推荐
对于微服务架构监控应该遵守的原则
随着软件交付方式的变革,微服务架构的兴起使得软件开发变得更加快速和灵活。在这种情况下,监控系统成为了微服务控制系统的核心组成部分。随着软件的复杂性不断增加,了解系统的...【详细内容】
2024-04-03  步步运维步步坑    Tags:架构   点击:(4)  评论:(0)  加入收藏
大模型应用的 10 种架构模式
作者 | 曹洪伟在塑造新领域的过程中,我们往往依赖于一些经过实践验证的策略、方法和模式。这种观念对于软件工程领域的专业人士来说,已经司空见惯,设计模式已成为程序员们的重...【详细内容】
2024-03-27    InfoQ  Tags:架构模式   点击:(13)  评论:(0)  加入收藏
哈啰云原生架构落地实践
一、弹性伸缩技术实践1.全网容器化后一线研发的使用问题全网容器化后一线研发会面临一系列使用问题,包括时机、容量、效率和成本问题,弹性伸缩是云原生容器化后的必然技术选择...【详细内容】
2024-03-27  哈啰技术  微信公众号  Tags:架构   点击:(10)  评论:(0)  加入收藏
DDD 与 CQRS 才是黄金组合
在日常工作中,你是否也遇到过下面几种情况: 使用一个已有接口进行业务开发,上线后出现严重的性能问题,被老板当众质疑:“你为什么不使用缓存接口,这个接口全部走数据库,这怎么能扛...【详细内容】
2024-03-27  dbaplus社群    Tags:DDD   点击:(11)  评论:(0)  加入收藏
高并发架构设计(三大利器:缓存、限流和降级)
软件系统有三个追求:高性能、高并发、高可用,俗称三高。本篇讨论高并发,从高并发是什么到高并发应对的策略、缓存、限流、降级等。引言1.高并发背景互联网行业迅速发展,用户量剧...【详细内容】
2024-03-13    阿里云开发者  Tags:高并发   点击:(5)  评论:(0)  加入收藏
如何判断架构设计的优劣?
架构设计的基本准则是非常重要的,它们指导着我们如何构建可靠、可维护、可测试的系统。下面是这些准则的转换表达方式:简单即美(KISS):KISS原则的核心思想是保持简单。在设计系统...【详细内容】
2024-02-20  二进制跳动  微信公众号  Tags:架构设计   点击:(36)  评论:(0)  加入收藏
详解基于SpringBoot的WebSocket应用开发
在现代Web应用中,实时交互和数据推送的需求日益增长。WebSocket协议作为一种全双工通信协议,允许服务端与客户端之间建立持久性的连接,实现实时、双向的数据传输,极大地提升了用...【详细内容】
2024-01-30  ijunfu  今日头条  Tags:SpringBoot   点击:(8)  评论:(0)  加入收藏
PHP+Go 开发仿简书,实战高并发高可用微服务架构
来百度APP畅享高清图片//下栽のke:chaoxingit.com/2105/PHP和Go语言结合,可以开发出高效且稳定的仿简书应用。在实现高并发和高可用微服务架构时,我们可以采用一些关键技术。首...【详细内容】
2024-01-14  547蓝色星球    Tags:架构   点击:(114)  评论:(0)  加入收藏
GraalVM与Spring Boot 3.0:加速应用性能的完美融合
在2023年,SpringBoot3.0的发布标志着Spring框架对GraalVM的全面支持,这一支持是对Spring技术栈的重要补充。GraalVM是一个高性能的多语言虚拟机,它提供了Ahead-of-Time(AOT)编...【详细内容】
2024-01-11    王建立  Tags:Spring Boot   点击:(124)  评论:(0)  加入收藏
Spring Boot虚拟线程的性能还不如Webflux?
早上看到一篇关于Spring Boot虚拟线程和Webflux性能对比的文章,觉得还不错。内容较长,抓重点给大家介绍一下这篇文章的核心内容,方便大家快速阅读。测试场景作者采用了一个尽可...【详细内容】
2024-01-10  互联网架构小马哥    Tags:Spring Boot   点击:(115)  评论:(0)  加入收藏
站内最新
站内热门
站内头条