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 ...
随机推荐
- git拉项目, 1.新建目录 2 git clone 地址 . (重点最后的点)
- debian在使用Thunderbird时英文改为中文
sudo apt-get install thunder* 随后重启应用!
- python元组(tuple)循环遍历实例分析
一 概念: 元组是有序且不可更改的集合.在 Python 中,元组是用圆括号编写的. 二 使用方法: 1 基本创建: thistuple = ("apple", "ba ...
- Electron 开发过程中主进程的无法看到 console.log 输出怎么办
开发过程中命令行工具(powershell.terminal)内无法看到 console.log 输出 Eelectron 的在开发过程中主进程 NodeJS 内往往需要 console.log 来进 ...
- FFmpeg命令行之ffplay
一.简述 ffplay是以FFmpeg框架为基础,外加渲染音视频的库libSDL构建的媒体文件播放器. 二.命令格式 在安装了在命令行中输入如下格式的命令: ffplay [选项] ['输入文件'] ...
- grep 第四天
grep 第四天 1 使用grep 取 passwd 显示行数 grep -c '' /etc/passwd [root@master ~]# grep -c '' /etc/passwd 135 2 ...
- Spring Boot学习日记13
学习引入Thymeleaf Thymeleaf 官网:https://www.thymeleaf.org/ Thymeleaf 在Github 的主页:https://github.com/thyme ...
- Android 开发day1
下载了安卓开发软件 Android studio 下载过程中遇到了,C盘默认安装路径不匹配问题,因为我的系统文件是中文的,软件是国外的软件,导致了他不让我安装,我还是最后在C盘创建了一个文件后,直接安 ...
- C++ Qt开发:QTcpSocket网络通信组件
Qt 是一个跨平台C++图形界面开发库,利用Qt可以快速开发跨平台窗体应用程序,在Qt中我们可以通过拖拽的方式将不同组件放到指定的位置,实现图形化开发极大的方便了开发效率,本章将重点介绍如何运用QTc ...
- python高级技术(进程一)
一 什么是进程 进程(Process)是计算机中的程序关于某数据集合上的一次运行活动,是系统进行资源分配和调度的基本单位,是操作系统结构的基础.在早期面向进程设计的计算机结构中,进程是程序的基本执行实 ...