StarRocks 集群安装
当前按照官网上的提供的安装包方式安装,版本是 3.2.2,部署模式为存算一体,安装的操作系统是 Ubuntu 22.04,JDK 版本为 OpenJDK 11,这里选择 3 个节点进行安装,节点的 hosts 定义如下:
10.0.1.25 ec25
10.0.1.26 ec26
10.0.1.27 ec27
由于 StarRocks 安装包比较大,所以选择在每个节点上都单独解压,否则发送解压后读文件速度比较慢:
# 每个机器上分别解压
tar -xvzf StarRocks-3.2.2.tar.gz -C /opt
cd /opt/StarRocks-3.2.2
解压后的目录中除了两个 txt 的文件外有 3 个目录,分别是 fe 、be 和 apache_hdfs_broker ,其中 fe 是 FE 角色相关的程序,be 是 BE 角色相关的程序,apache_hdfs_broker 是 Broker 节点的相关的程序,主要用于对接 HDFS 或 S3 等外部存储数据源,不过从 StarRocks 2.5 版本起不需要手动部署 Broker 节点,StarRocks 本身已经集成了这部分功能。
我们计划将 3 个 FE 和 3 个 BE 在 3 个节点上混合部署,不过我们首先启动其中 1 个 FE,等集群整体组件完毕再加入另外 2 个 FE 从而实现高可用的功能。
安装 FE 服务
在所有节点提前创建 FE 元数据目录:
# 建议为 StarRocks 分配独立的外部挂载
mkdir -p /data/starrocks/meta
然后我们修改 FE 的配置文件 fe/conf/fe.conf 主要修改下面的一些配置:
meta_dir = /data/starrocks/meta
http_port = 8030
rpc_port = 9020
query_port = 9030
edit_log_port = 9010
mysql_service_nio_enabled = true
priority_networks = 10.0.1.0/24
meta_dir 配置 FE 的元数据目录。
然后是端口号部分的设置,我们这里都使用了默认值:
http_port是 FE 对外提供的 HTTP 端口,默认是8030。rpc_port是 FE 对外提供的 Thrift 端口,默认是9020。query_port是 FE 对外提供的查询端口,可以使用 MySQL 客户端连接,默认是9030。edit_log_port是多个 FE 之间组建高可用集群使用的通信端口,默认是9010。
priority_networks 配置集群所在的网络,格式是 CIDR 描述,如果我们使用主机名(FQDN)访问,则不需要配置这个项,我们这里计划使用 IP 地址访问,所以需要设置一下这个配置。
如果我们系统上有多个 JDK,那么可以单独指定我们要使用的 JAVA_HOME ,例如:
JAVA_HOME=/usr/lib/jvm/java-11-openjdk-amd64
因为我们全局只有一个 JDK 并且在 /etc/profile 中设置了 JAVA_HOME 环境变量,所以这里就不需要再配置了。
基本的配置就是上面这些,我们修改完成后保存配置,然后注意将配置文件同步到其他节点,用的时候就不用再修改了。
然后我们可以启动 FE 服务,现在是只在第 1 个节点上执行:
./fe/bin/start_fe.sh --daemon
# 如果是使用主机名访问,那么需要指定 --host_type
./fe/bin/start_fe.sh --host_type FQDN --daemon
然后我们查看日志确保启动成功即可。
安装 BE 服务
在所有节点都创建 BE 数据目录:
mkdir -p /data/starrocks/storage
然后修改配置文件 be/conf/be.conf 主要内容如下:
JAVA_HOME=/usr/lib/jvm/java-11-openjdk-amd64
be_port = 9060
be_http_port = 8040
heartbeat_service_port = 9050
brpc_port = 8060
starlet_port = 9070
priority_networks = 10.0.1.0/24
storage_root_path = /data/starrocks/storage
首先是建议为 BE 指定 JAVA_HOME,因为 BE 不会自动搜索系统的 JDK,需要手动配置一下,否则将无法使用 JNI 相关的调用。
然后端口号的配置我们同样保持默认:
be_port是 BE 对外提供的 Thrift 端口,默认是9060。be_http_port是 BE 对外提供的 HTTP 端口,默认是8040。heartbeat_service_port是 BE 之间心跳服务的端口,默认是9050。brpc_port是 BE 对外提供的 bRPC 端口,默认是8060。starlet_port是存算分离集群用于心跳的端口,默认是9070。
然后 priority_networks 仍然是和 FE 一样,由于使用 IP 访问所以需要配置一下,如果使用主机名则不需要配置。
最后 storage_root_path 配置 BE 的数据目录。
基本配置就上面这些,配置完成后保存,然后同步到其他的节点。
然后在所有节点都启动 BE 服务:
./be/bin/start_be.sh --daemon
这里和 FE 不太一样的地方是如果要使用主机名访问不需要指定 --host_type ,但是要确保 hosts 配置正确即可。
启动之后查看日志确保启动成功,3 个节点都启动后会自动组成 BE 高可用集群。
我们在第一个节点上使用 MySQL 客户端连接:
mysql -h127.0.0.1 -P9030 -uroot --prompt='StarRocks > '
默认 root 用户不需要密码,我们连接上去之后查看 FE 状态:
SHOW PROC '/frontends'\G
当前 FE 只有 1 个就是当前的节点,然后查看 BE 状态:
SHOW PROC '/backends'\G
这里 BE 应该为空,我们需要手动添加 BE 节点:
-- 注意端口使用 heartbeat_service_port 配置的端口
ALTER SYSTEM ADD BACKEND "10.0.1.25:9050", "10.0.1.26:9050", "10.0.1.27:9050";
然后再次查看 BE 的状态:
SHOW PROC '/backends'\G
现在就可以看到 3 个 BE 节点了。
配置 FE 高可用
首先在第一个节点添加 FE 节点:
ALTER SYSTEM ADD FOLLOWER "10.0.1.26:9010";
ALTER SYSTEM ADD FOLLOWER "10.0.1.27:9010";
注意这里只能一行添加 1 个 FE,不能添加多个,端口使用的是 FE 中配置的 edit_log_port,添加后查看状态 active 和 join 应该都是 false,然后我们要启动另外两个节点的 FE 服务:
# 添加 --helper 参数指定 Leader FE
fe/bin/start_fe.sh --helper 10.0.1.25:9010 --daemon
启动之后再查看 FE 的状态就正常了,这样 FE 集群就具备了高可用的能力。
如果之前不小心启动了其他节点的 FE,那么再次启动加入集群时可能会报错如下:
weren't! UNEXPECTED_STATE: Unexpected internal state, may have side effects.
这个原因就是启动的时候 FE 会生成元数据,由于加入 FE 集群会重新生成新的元数据,所以数据出现了冲突,遇到这个问题只需要清空报错节点的元数据目录,再次添加 --helper 参数启动即可。
另外停止服务可以执行:
./fe/bin/stop_fe.sh --daemon
./be/bin/stop_be.sh --daemon
最后由于 root 用户默认没有密码,为了安全需要设置 root 用户密码:
SET PASSWORD = PASSWORD('<password>')
设置后再次登录就需要输入密码了,这个密码和 FE 的 HTTP 访问密码都是相同的,建议生产环境为数据库单独分配用户。
Reference:
StarRocks 集群安装的更多相关文章
- StarRocks 3.0 集群安装手册
本文介绍如何以二进制安装包方式手动部署最新版 StarRocks 3.0集群. 什么是 StarRocks StarRocks 是新一代极速全场景 MPP (Massively Parallel Pr ...
- 【Oracle 集群】Oracle 11G RAC教程之集群安装(七)
Oracle 11G RAC集群安装(七) 概述:写下本文档的初衷和动力,来源于上篇的<oracle基本操作手册>.oracle基本操作手册是作者研一假期对oracle基础知识学习的汇总. ...
- kafka集群安装部署
kafka集群安装 使用的版本 系统:centos6.5 centos6.7 jdk:1.7.0_79 zookeeper:3.4.9 kafka:2.10-0.10.1.0 一.环境准备[只列,不具 ...
- CentOS下Hadoop-2.2.0集群安装配置
对于一个刚开始学习Spark的人来说,当然首先需要把环境搭建好,再跑几个例子,目前比较流行的部署是Spark On Yarn,作为新手,我觉得有必要走一遍Hadoop的集群安装配置,而不仅仅停留在本地 ...
- Hadoop多节点集群安装配置
目录: 1.集群部署介绍 1.1 Hadoop简介 1.2 环境说明 1.3 环境配置 1.4 所需软件 2.SSH无密码验证配置 2.1 SSH基本原理和用法 2.2 配置Master无密码登录所有 ...
- codis集群安装
在网上找了很多codis的集群安装方法,看起来都是大同小异,本人结合了大多种方法完成了一套自己使用的codis的集群安装,可以供大家学习使用,如果有什么问题或者不懂的地方欢迎指正 1.集群规划: 三台 ...
- [bigdata] spark集群安装及测试
在spark安装之前,应该已经安装了hadoop原生版或者cdh,因为spark基本要基于hdfs来进行计算. 1. 下载 spark: http://mirrors.cnnic.cn/apache ...
- (原) 1.2 Zookeeper伪集群安装
本文为原创文章,转载请注明出处,谢谢 Zookeeper伪集群安装 zookeeper单机安装配置可以查看 1.1 zookeeper单机安装 1.复制三份zookeeper,分别为zookeeper ...
- 一步步教你Hadoop多节点集群安装配置
1.集群部署介绍 1.1 Hadoop简介 Hadoop是Apache软件基金会旗下的一个开源分布式计算平台.以Hadoop分布式文件系统HDFS(Hadoop Distributed Filesys ...
- kafka 集群安装与安装测试
一.集群安装 1. Kafka下载:wget https://archive.apache.org/dist/kafka/0.8.1/kafka_2.9.2-0.8.1.tgz 解压 tar zxvf ...
随机推荐
- vscode 对js文件不格式化的修正方案 settings.json
修正1 "javascript.format.enable": true, // 这里false 改true 修正2 注释掉这个地方 // "[javascript]&q ...
- 【预训练语言模型】 使用Transformers库进行BERT预训练
基于 HuggingFace的Transformer库,在Colab或Kaggle进行预训练. 鉴于算力限制,选用了较小的英文数据集wikitext-2 目的:跑通Mask语言模型的预训练流程 一.准 ...
- BES2500开发板介绍和入门
一 前记 BES2500是恒玄科技推出的款高端的TWS耳机芯片,该芯片的性能非常强悍.蓝牙5.2双模,1.8M的SRAM空间,ARM-M33的主核,绝对是音频耳机芯片中的高配,性能不是一般的强.该芯片 ...
- 一个简单的百万并发的TCP服务器的实现。
我们紧接着上篇文章,看看我们上节课的代码有什么问题? 可以明显的看出来上节课的代码公用了一个同样的缓冲区进行读写,正常的情况下我们需要封装一个结构体,让每个对应的客户端的FD都有独立的结构进行读写还有 ...
- .gvfs 文件夹 异常
PS:要转载请注明出处,本人版权所有. PS: 这个只是基于<我自己>的理解, 如果和你的原则及想法相冲突,请谅解,勿喷. 前置说明 本文作为本人csdn blog的主站的备份.(Bl ...
- 【Unity干货教程】如何实现Unity和Android原生互相调用?
Unity是一个跨平台开发工具,发布到移动平台也是大部分Unity开发者的必备技能.而由于Unity跨平台的特性,总会遇到在移动平台的技术细节支持不够,或者需要在调用其他原生插件的情况.这里我们说一下 ...
- 【LeetCode刷题】744. 寻找比目标字母大的最小字母
744. 寻找比目标字母大的最小字母(点击跳转LeetCode) 给你一个排序后的字符列表 letters ,列表中只包含小写英文字母.另给出一个目标字母 target,请你寻找在这一有序列表里比目标 ...
- ItemsControl和ListView、ListBox的区别
1.ItemsControl用来显示一个数据项的集合,它的底层是一个列表,它可以非常灵活的展示布局和数据 以下是例子 <ItemsControl ItemsSource="{Bindi ...
- nginx完全卸载删除
nginx卸载 其实很简单,只需要两步即可完成! 第一步:输入以下指令全局查找nginx相关的文件: sudo find / -name nginx* 第二步:删除查找出来的所有nginx相关文件 s ...
- iOS开发优势解析,费用探究以及软件开发详解
摘要 本文探讨了iOS开发的优势.费用以及软件开发方面的相关内容.通过分析iOS开发所采用的编程语言.开发环境.用户界面设计.应用审核流程以及应用领域等方面,展示了iOS开发的诸多优势和特点.虽然iO ...