一、前言
1、本文将介绍如何添加自定义StarRocks服务托管在CDH上,需要按照一定的规则流程制作相关程序包,最后发布到CDH上。
- 相关安装包已经分享到百度网盘,需要的可以自取
链接:https://pan.baidu.com/s/1nT0BgUutW66cyiu2C_jqIg
提取码:Acdy
- 本文章以社区版StarRocks服务打包成parcel包部署为例
a. cm添加starrocks服务
b. cm管理starrocks
c. cm启停配置参数,以及日志管理等
二、CDH Parcel打包规则介绍
制作完成的parcel包和csd jar包需要校验其合法性,cdh提供了jar方便我们对制作完成parcel包和csd jar进行校验。
一个完整的集成到CDH的parcel包应包含如下几个包,下面会介绍这几个包如何制作:
1、制作parcel包
- Parcel包相关规则介绍
Parcel包目录结构由你的服务目录和一个meta目录组成。meta目录组成文件如下:
parcel.json: 这个文件记录了你的服务信息,如版本、所属用户、适用的CDH平台版本等。
starrocks_env.sh: 声明你的服务运行时的所需的一些变量环境,可以根据你的服务需要可以自行添加设置。
parcel:以".parcel“结尾的gz格式的压缩文件。它必须为一个固定规则的文件名。
parcel包内包含了你的服务组件,同时包含一个重要的描述性文件parcel.json;这个文件记录了你的服务信息,如版本、所属用户、适用的CDH平台版本等parcel必须包置于/opt/cloudera/parcel-repo/目录下才可以被CDH发布程序时识别到。
文件名称格式为三段,第一段是包名,第二段是版本号,第三段是运行平台。
例如:STARROCKS-2.3.3.starrocks.p0.1-el7.parcel
包名:STARROCKS
版本号:2.3.3.starrocks.p0.1
运行环境:el7
el6是代表centos6系统,centos7则用el7表示
STARROCKS-2.3.3.jar文件是一个jar包,它记录了你的服务在CDH上的管理规则,如你的服务在CDH页面上显示的图标、依赖的服务、暴露的端口、启动规则等。csd的jar包必须置于/opt/cloudera/csd/目录才可以在添加集群服务时被识别到(下面有相关介绍如如打csd包)。
- STARROCKS-2.3.3.starrocks.p0.1-el7.parcel
1、下载官方 StarRocks 安装包,解压相关软件包,下载地址如下:
官方下载地址:
https://www.starrocks.com/zh-CN/download/community
wget 直接下载:
wget https://download.starrocks.com/zh-CN/download/request-download/59/StarRocks-2.3.3.tar.gz -P /app
2、下载完解压相关tar包
解压 StarRocks-2.3.3.tar.gz:
tar-xzvf /app/StarRocks-2.3.3.tar.gz -C /app
3、创建 meta目录
mkdir /app/StarRocks-2.3.3/meta
4、添加parcel.json、starrocks_env.sh 相关文件
- parcel.json
相关参数详解:https://github.com/cloudera/cm_ext/wiki/The-parcel.json-file
cat /app/StarRocks-2.3.3/meta/parcel.json
{"schema_version":1,"name":"STARROCKS","version":"2.3.3.starrocks.p0.1","setActiveSymlink":true,"depends":"CDH (>= 5.2)","provides":["starrocks"],"scripts":{"defines":"starrocks_env.sh"},"packages":[{"name":"starrocks","version":"2.3.3.starrocks.p0.1"}],"components":[{"name":"starrocks","version":"2.3.3","pkg_version":"2.3.3"}],"users":{"starrocks":{"longname":"starrocks","home":"/var/lib/starrocks","shell":"/bin/bash","extra_groups":["starrocks"]}},"groups":["starrocks"]}
- starrocks_env.sh
cat /app/StarRocks-2.3.3/meta/starrocks_env.sh
#!/bin/bashexportSTARROCKS_HOME=$PARCELS_ROOT/$PARCEL_DIRNAME
5、打parcel包
tar-zcvf STARROCKS-2.3.3.starrocks.p0.1-el7.parcel STARROCKS-2.3.3.starrocks.p0.1
6、验证打包是否正常
java-jar /data/build/build/cm_ext/cm_ext/validator/target/validator.jar -f /data4/github/cloudera/starrocks/down/STARROCKS-2.3.3.starrocks.p0.1-el7.parcel
7、生成.sha哈希校验文件。
sha1sum /data4/github/cloudera/starrocks/down/STARROCKS-2.3.3.starrocks.p0.1-el7.parcel
echo'547daca12f140748b629d28deea0cc404981c4f0'> /data4/github/cloudera/starrocks/down/STARROCKS-2.3.3.starrocks.p0.1-el7.parcel.sha
2、制作csd.jar
- STARROCKS-2.3.3.jar
aux:CSD 可以选择有一个aux目录。辅助文件可以存在于此目录中,如果存在,也会与scripts目录一起向下发送到代理。
descriptor: CSD 的核心是服务描述符语言 (SDL) 文件:descriptor/service.sdl. 这是一个 json 文件,描述了如何管理与 CSD 同名的服务类型。该文件包括:
服务类型和相关的角色类型
如何启动服务/角色
服务和角色类型的参数
附加命令
配置文件生成器
images: 放置服务的图标文件,png格式。不放图标文件,则CDH页面不显示图标。
scripts: 该目录包含所有用于控制底层服务的可执行脚本。service.sdl文件通过脚本运行程序引用这些脚本。
- 检查 service.sdl 文件是否正常
java-jar /data/build/build/cm_ext/cm_ext/validator/target/validator.jar -s /csd-src/descriptor/service.sdl
- 打包成csd jar
cd /csd-src
jar -cvf STARROCKS-2.3.3.jar *
三、分发CDH Parcel包
1、将parcel包和parcel.sha拷贝到cm节点的/opt/cloudera/parcel-repo/目录
2、将csd jar包拷贝到/opt/cloudera/csd目录下
3、执行重启 cloudera-scm-server
systemctl restart cloudera-scm-server
4、分配 激活 Parcel包
- 【主机】
- 【Parcel】
- 【检查新Parcel】
- 【分配】
- 【激活】
四、添加 StarRocks 服务
- 官方建议如下
echo0|sudotee /proc/sys/vm/swappiness
echo1|sudotee /proc/sys/vm/overcommit_memory
# 临时关闭swap
swapoff -a# 永久关闭,注释 /etc/fstabsed-i'/swap/s/^/#/' /etc/fstab
# 关闭优化交换分区echo"vm.swappiness=0">> /etc/sysctl.conf
sysctl-p
1、点击添加服务
2、选择添加starrocks服务
3、因为有适配 hive外部表,所以这里依赖 hdfs、hive服务(可选,如果没有hive外表需求,可以选无)
4、选择 Fe、Be、 Broker
5、再后面就是现在安装的目录、一些相关配置的选择,这里我已经添加了,就不截图了,最后执行成功
后在首页可以看到新添加的服务。
五、初始化启动StarRocks 服务
1、添加初始化 FE
sys_log_dir: fe日志配置位置,需要和cm中日志路径配置一致既可以在页面查看相关日志
fe_server_max_heapsize:用设置fe内存大小的参数,将此值代入脚本启动jvm的
fe_server_first_start_enabled:开启分的HA模式时, 此节点是否第一次启动,开启参数会执行 --helper host:port --daemon
fe_ha_master_ip:fe启动HA模式时此值为master节点ip,用于fe第一次启动
meta_dir:fe元数据的位置
priority_networks: 以CIDR 形式10.10.10.0/24 指定FE节点的IP 地址
- 添加完成使用 mysql-client 连接到已启动的 FE:
-- 添加 followerALTER SYSTEM ADD FOLLOWER "xxxx:9010";-- 或者添加 observerALTER SYSTEM ADD OBSERVER "xxxx:9010";
fe 一些重要端口设置,再此页面修改即可,9010为cm端口,注意修改
fe 高级配置代码段:在此配置添加需要变更的参数会同步至fe,不用登录机器修改,cm管理好处,重启即可生效
2、添加 BE
-- 添加 beALTER SYSTEM ADD BACKEND "xxxx:9050";
sys_log_dir:和上述fe log配置一致,主要修改log输出配置,fe日志格式问题,暂无法在页面查看相关日志,如遇到启动报错问题,请直接登录机器查看be日志。
storage_root_path:数据存储目录,支持配置多个
priority_networks: 以CIDR 形式10.10.10.0/24 指定BE节点的IP 地址
- 需注意添加描述符,不然进程会启动失败
3、添加Broker
-- 添加 BrokerALTER SYSTEM ADD BROKER broker "xxxx:8000";
broker_server_max_heapsize :jvm最大值配置
sys_log_dir:日志存储位置,也需要和cm中日志配置位置相同
conf/core-site.xml/hdfs-site.xml/hive-site.xml: 填写相关参数也会代入到broker的启动目录/conf 下面,在使用broker拉取也不会有问题
六、添加hive外表
- 业务需要查询hive外表,可以在cm平台上添加FE、BE 高级配置代码段 core-site.xml、hdfs-site.xml、hive-site.xml 会自动在启动目前/conf 下面创建
1、创建hive外表
-- 创建 RESOURCE CREATE EXTERNAL RESOURCE "hive0"
PROPERTIES ("type"="hive","hive.metastore.uris"="thrift://10.10.223.14:9083,thrift://10.10.223.15:9083");-- 查看 StarRocks 中创建的资源 SHOW RESOURCES;-- 建表CREATE EXTERNAL TABLE example_db.customer (`c_custkey`int(11)NULLCOMMENT"",`c_name`varchar(200)NULLCOMMENT"",`c_address`varchar(200)NULLCOMMENT"",`c_city`varchar(200)NULLCOMMENT"",`c_nation`varchar(200)NULLCOMMENT"",`c_region`varchar(200)NULLCOMMENT"",`c_phone`varchar(200)NULLCOMMENT"",`c_mktsegment`varchar(200)NULLCOMMENT"")ENGINE=HIVE
PROPERTIES ("resource"="hive0","database"="ssb","table"="customer");
2、创建 hive_catalog 外表
- Catalog StarRocks 2.3已支持,支持的好处是不用创建表,直接可以查hive里面的数据,对于导入starrocks非常方便。
-- 创建 hive_catalogCREATE EXTERNAL CATALOG hive_catalog0
PROPERTIES ("type"="hive","hive.metastore.uris"="thrift://10.10.223.15:9083,thrift://10.10.223.14:9083");-- 查询数据(不用创建表,可以直接查hive表)select*from hive_catalog_sit.ssb.customer limit1;-- 查看当前集群中的所有 catalogshow catalogs;
七、补充
1、FE 启动失败
- 设置hadoop_env.sh
FE 设置 hadoop_env.sh,没有env用户,可能导致FE启动失败。
- 检查 FE fe_ha_master_ip、fe_server_first_start_enabled
2、BE 启动失败
- 登录启动失败机器,查看 /var/log/starrocks/be.INFO和/var/log/starrocks/be.WARNING
最后:有任何问题欢迎大家下面评论,多多支持,创作不宜,点赞支持一下,感谢!
- 下期将会分享如何在cdh 集成 clickhouse 服务 ,小伙伴们我们下期见!
版权归原作者 柠檬味的鱼° 所有, 如有侵权,请联系我们删除。