当前按照官网上的提供的安装包方式安装,版本是 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 个目录,分别是 febeapache_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 的元数据目录。

然后是端口号部分的设置,我们这里都使用了默认值:

  1. http_port 是 FE 对外提供的 HTTP 端口,默认是 8030
  2. rpc_port 是 FE 对外提供的 Thrift 端口,默认是 9020
  3. query_port 是 FE 对外提供的查询端口,可以使用 MySQL 客户端连接,默认是 9030
  4. 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 相关的调用。

然后端口号的配置我们同样保持默认:

  1. be_port 是 BE 对外提供的 Thrift 端口,默认是 9060
  2. be_http_port 是 BE 对外提供的 HTTP 端口,默认是 8040
  3. heartbeat_service_port 是 BE 之间心跳服务的端口,默认是 9050
  4. brpc_port 是 BE 对外提供的 bRPC 端口,默认是 8060
  5. 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:

  1. https://docs.starrocks.io/zh/docs/deployment/deploy_manually/

StarRocks 集群安装的更多相关文章

  1. StarRocks 3.0 集群安装手册

    本文介绍如何以二进制安装包方式手动部署最新版 StarRocks 3.0集群. 什么是 StarRocks StarRocks 是新一代极速全场景 MPP (Massively Parallel Pr ...

  2. 【Oracle 集群】Oracle 11G RAC教程之集群安装(七)

    Oracle 11G RAC集群安装(七) 概述:写下本文档的初衷和动力,来源于上篇的<oracle基本操作手册>.oracle基本操作手册是作者研一假期对oracle基础知识学习的汇总. ...

  3. kafka集群安装部署

    kafka集群安装 使用的版本 系统:centos6.5 centos6.7 jdk:1.7.0_79 zookeeper:3.4.9 kafka:2.10-0.10.1.0 一.环境准备[只列,不具 ...

  4. CentOS下Hadoop-2.2.0集群安装配置

    对于一个刚开始学习Spark的人来说,当然首先需要把环境搭建好,再跑几个例子,目前比较流行的部署是Spark On Yarn,作为新手,我觉得有必要走一遍Hadoop的集群安装配置,而不仅仅停留在本地 ...

  5. Hadoop多节点集群安装配置

    目录: 1.集群部署介绍 1.1 Hadoop简介 1.2 环境说明 1.3 环境配置 1.4 所需软件 2.SSH无密码验证配置 2.1 SSH基本原理和用法 2.2 配置Master无密码登录所有 ...

  6. codis集群安装

    在网上找了很多codis的集群安装方法,看起来都是大同小异,本人结合了大多种方法完成了一套自己使用的codis的集群安装,可以供大家学习使用,如果有什么问题或者不懂的地方欢迎指正 1.集群规划: 三台 ...

  7. [bigdata] spark集群安装及测试

    在spark安装之前,应该已经安装了hadoop原生版或者cdh,因为spark基本要基于hdfs来进行计算. 1. 下载 spark:  http://mirrors.cnnic.cn/apache ...

  8. (原) 1.2 Zookeeper伪集群安装

    本文为原创文章,转载请注明出处,谢谢 Zookeeper伪集群安装 zookeeper单机安装配置可以查看 1.1 zookeeper单机安装 1.复制三份zookeeper,分别为zookeeper ...

  9. 一步步教你Hadoop多节点集群安装配置

    1.集群部署介绍 1.1 Hadoop简介 Hadoop是Apache软件基金会旗下的一个开源分布式计算平台.以Hadoop分布式文件系统HDFS(Hadoop Distributed Filesys ...

  10. kafka 集群安装与安装测试

    一.集群安装 1. Kafka下载:wget https://archive.apache.org/dist/kafka/0.8.1/kafka_2.9.2-0.8.1.tgz 解压 tar zxvf ...

随机推荐

  1. CYQ.Data 支持 KingbaseES人大金仓数据库

    KingbaseES人大金仓数据库介绍: KingbaseES是一种关系型数据库管理系统,也被称为人大金仓数据库.KingbaseES 是北京人大金仓信息技术股份有限公司研发的,具有自主知识产权的通用 ...

  2. centos 目录磁盘使用情况

    最简单的查看方法可以使用ls -ll.ls-lh命令进行查看,当使用ls -ll,会显示成字节大小,而ls- lh会以KB.MB等为单位进行显示,这样比较直观一些.   通过命令du -h –max- ...

  3. [VueJsDev] 基础知识 - Node.js常用函数

    [VueJsDev] 目录列表 https://www.cnblogs.com/pengchenggang/p/17037320.html Node.js 常用函数 总结常用 node 函数 用的 E ...

  4. kettle教程--通过配置文件同步所需要的列数据

    kettle教程--通过配置文件同步所需要的列数据 欢迎关注博主公众号「Java大师」, 专注于分享Java领域干货文章, 关注回复「kettle」, 免费领取全网最热的kettle实战视频教程 ht ...

  5. 关于使用Kotlin开发SpringBoot项目使用@Transactional和@Autowired的报错问题

    原文地址: 关于使用Kotlin开发SpringBoot项目使用@Transactional和@Autowired的报错问题 - Stars-One的杂货小窝 问题描述 最近在开发一个订单模块,需要出 ...

  6. 浅析三维模型OBJ格式轻量化压缩文件大小的技术方法

    浅析三维模型OBJ格式轻量化压缩文件大小的技术方法 在减小三维模型OBJ格式轻量化文件大小方面,有许多技术和方法可以使用.下面我将介绍一些常用的方法来减小OBJ文件的大小. 1.优化顶点数量:减少OB ...

  7. 记录--手写vm.$mount方法

    这里给大家分享我在网上总结出来的一些知识,希望对大家有所帮助 一.概述 在我们开发中,经常要用到Vue.extend创建出Vue的子类来构造函数,通过new 得到子类的实例,然后通过$mount挂载到 ...

  8. pandas 自动化处理Excel数据

    需求: 如下一份这样的Excel数据  现在需要把学生的学号.姓名分离出来到单独的一列 ,将 测验.讨论.成绩三列转换成数值,并把讨论这列的"-"转换成 0 显示 最后把处理好的内 ...

  9. 创建远程仓库&克隆项目(Github)

    创建远程仓库 在GitHub上注册一个账号,之后creat a new repository 创建的远程仓库把它看作一个百度网盘就可以了 克隆项目 1.远程仓库可以下载\克隆到本地 code :git ...

  10. 开发必会系列:J2EE是什么

    为什么Java是跨平台的? 高级语言通过编译器,转为汇编语言,汇编语言通过汇编器转为0和1. 当c转为汇编时,不同厂家cpu,用不同的指令集,所以有不同的汇编语言结果,导致c不能跨平台. java在各 ...