Doris 部署 (CentOS 原生部署) 2

分享 123456789987654321 ⋅ 于 2021-12-02 18:25:18 ⋅ 4531 阅读

安装

#准备三台物理机, 需要以下环境支持:
Linux (Centos 7+)
Java 1.8+
CPU需要支持AVX2指令集
`cat /proc/cpuinfo |grep avx2`
有结果输出表明CPU支持,如果没有支持,建议更换机器,
StarRocks使用向量化技术需要一定的指令集支持才能发挥效果。
StarRocks-XX-1.0.0
├── be  # BE目录
│   ├── bin
│   │   ├── start_be.sh # BE启动命令
│   │   └── stop_be.sh  # BE关闭命令
│   ├── conf
│   │   └── be.conf     # BE配置文件
│   ├── lib
│   │   ├── starrocks_be  # BE可执行文件
│   │   └── meta_tool
│   └── www
├── fe  # FE目录
│   ├── bin
│   │   ├── start_fe.sh # FE启动命令
│   │   └── stop_fe.sh  # FE关闭命令
│   ├── conf
│   │   └── fe.conf     # FE配置文件
│   ├── lib
│   │   ├── starrocks-fe.jar  # FE jar包
│   │   └── *.jar           # FE 依赖的jar包
│   └── webroot
└── udf

软硬件需求

(1)linux操作系统要求

linux系统 版本
Centos 7.1及以上
Ubuntu 16.04及以上

(2)软件需求

软件 版本
Java 1.8及以上
GCC 4.8.2及以上

(3)开发测试环境

模块 CPU 内存 磁盘 网络 实例数量
Frontend 8核+ 8GB SSD 或 SATA,10GB+ * 千兆网卡 1
Backend 8核+ 16GB SSD 或 SATA,50GB+ * 千兆网卡 1-3*

(4)生产环境

模块 CPU 内存 磁盘 网络 实例数量
Frontend 16核+ 64GB SSD 或 SATA,100GB+ * 万兆网卡 1-5*
Backend 16核+ 64GB SSD 或 SATA,100GB+ * 万兆网卡 10-100*

(5)默认端口

实例名称 端口名称 默认端口 通讯方向 说明
BE be_prot 9060 FE-->BE BE 上 thrift server 的端口,用于接收来自 FE 的请求
BE webserver_port 8040 BE<-->FE BE上的http server端口
BE heartbeat_service_port 9050 FE-->BE BE上心跳服务端口,用于接收来自FE的心跳
BE brpc_prot* 8060 FE<-->BE,BE<-->BE BE上的brpc端口,用于BE之间通信
FE http_port 8030 FE<-->FE,用户 FE上的http_server端口
FE rpc_port 9020 BE-->FE,FE<-->FE FE上thirt server端口号
FE query_port 9030 用户 FE上的mysql server端口
FE edit_log_port 9010 FE<-->FE FE上bdbje之间通信用的端口
Broker broker_ipc_port 8000 FE-->BROKERBE-->BROKER Broker上的thrift server,用于接收请求
注:
1.FE的磁盘主要用于存储元数据,包括日志,和image。通常几百MB到几个GB不等
2.BE的磁盘主要用于存储用户数据,总磁盘空间按用户总数据量*3(3份副本)计算,然后再预留额外40%的空间用作后台compaction以及一些中间数据的存放。
3.一台机器上可以部署多个BE实例,但只能部署一个FE。如果需要3副本数据,那么至少三台机器各部署一个BE实例。
4.FE角色分为Follower和Observer,(Leader为Follwer中选举出来的一种角色)
5.FE节点至少为1个。当部署1个Follower和1个Observer时,可以实现高可用HA
6.Follower的数量必须为奇数,Observer数量随意
7.根据官网描述,以往经验,当集群可用性要求很高,可以部署3个Follower和1-3个Observer。如果是离线业务,建议部署1个Follower和1-3个Observer
8.Broker部署,Broker是用于访问外部数据源hdfs进程。通常每台机器上部署一个broker实例即可。

集群部署

Dors1 Dors2 Dors3
FE(LEADER) FE(FOLLOWER) FE(OBSERVER)
BE BE BE
BROKER BROKER BROKER

关闭防火墙以及selinux

# 关闭防火墙
systemctl stop firewalld.service
# 禁止防火墙开机启动
systemctl disable firewalld.service
# 查看服务是否开机启动
systemctl is-enabled firewalld.service
# 查看防火墙状态
firewall-cmd --state

#关闭selinux要执行
setenforce 0

三台机器配置固定ip

[root@localhost ~]# vi /etc/sysconfig/network-scripts/ifcfg-ens33
TYPE="Ethernet"
BOOTPROTO="static"
IPADDR="192.168.92.140"
NETMASK="255.255.255.0"
GATEWAY="192.168.92.2"
DNS="192.168.92.2"
NM_CONTROLLED="no"
DEFROUTE="yes"
PEERDNS="yes"
PEERROUTES="yes"
IPV4_FAILURE_FATAL="no"
IPV6INIT="yes"
IPV6_AUTOCONF="yes"
IPV6_DEFROUTE="yes"
IPV6_PEERDNS="yes"
IPV6_PEERROUTES="yes"
IPV6_FAILURE_FATAL="no"
NAME="ens33"
UUID="aa4b6db1-a838-464d-98c6-18009dfcd8e7"
DEVICE="ens33"
ONBOOT="yes"

#重启网络服务
[root@localhost network-scripts]# systemctl stop NetworkManager.service
[root@localhost network-scripts]# systemctl disable NetworkManager.service
[root@localhost network-scripts]# systemctl restart network.service
                                # systemctl restart NetworkManager.service

三台机器准备ssh环境

[root@op ~]# ssh hadoop@op.hadoop  op要拿到三台电脑的公钥
[hadoop@nn1 ~]$ mkdir sshkey #创建文件夹
[hadoop@nn1 ~]$ ssh-keygen -t rsa #生成公钥
[hadoop@nn1 ~]$ ll -a #查看隐藏文件
[hadoop@nn1 ~]$ cd .ssh/ #隐藏目录有.
[hadoop@dr2 .ssh]$ scp id_rsa.pub root@192.168.92.141:~/sshkey/dr2 #将公钥拷贝到一台主机
[hadoop@dr3 .ssh]$ scp id_rsa.pub root@192.168.92.141:~/sshkey/dr3 #将公钥拷贝到一台主机
# ctrl d 退出
#
[hadoop@nn1 sshkey]$ touch authorized_keys
[hadoop@nn1 sshkey]$ chmod 600 authorized_keys 
[hadoop@nn1 sshkey]$ cat nn1_rsa >> authorized_keys 
[hadoop@nn1 sshkey]$ cat nn2_rsa >> authorized_keys 
[hadoop@nn1 sshkey]$ cat s1 >> authorized_keys 
[hadoop@nn1 sshkey]$ cat s2 >> authorized_keys 
[hadoop@nn1 sshkey]$ cat s3 >> authorized_keys 
#分发
[hadoop@nn1 sshkey]$ scp authorized_keys root@192.168.92.138:~/.ssh
[hadoop@nn1 sshkey]$ scp authorized_keys root@192.168.92.140:~/.ssh

(1)准备三台机器,配置对应域名

root@doris1:~# vim /etc/hosts
172.26.16.60    doris1  doris1
172.26.16.61    doris2  doris2
172.26.16.62    doris3  doris3

(2)安装jdk8

rpm -ivh jdk-8u144-linux-x64.rpm
#配置环境变量
[root@localhost ]#  vim /etc/profile
export JAVA_HOME=/usr/java/jdk1.8.0_144
export JRE_HOME=$JAVA_HOME/jre
export PATH=$PATH:$JAVA_HOME/bin
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar

#使修改生效
source /etc/profile
#查看系统变量值
echo $PATH
#检查JDK 配置情况
java -version

(3)手动部署,配置FE,三台机器上传编译后的doris,并进行配置

#上传服务jar到三台服务器
root@doris123:~# mkdir /opt/module && cd /opt/module/

root@doris123:# cd /opt/module/StarRocks-1.19.0/fe/conf
root@doris123:# vim fe.conf 
meta_dir = /opt/module/doris-meta

root@doris123:# mkdir /opt/module/doris-meta

root@doris123:# cd /opt/module/doris-meta

root@doris123:# sh /opt/module/StarRocks-1.19.0/fe/bin/start_fe.sh --daemon 

root@doris123:# jps
15878 PaloFe
15983 Jps

(5)部署三台BE节点

storage_root_path配置存储目录,可以用;来指定多个目录,每个目录后可以跟逗号,指定大小默认GB

root@doris123:# vim /opt/module/StarRocks-1.19.0/be/conf/be.conf
storage_root_path = /opt/module/doris_storage1,10;/opt/module/doris_storage2
root@doris123:# mkdir /opt/module/doris_storage1 && mkdir /opt/module/doris_storage2

(5)官网示例:

storage_root_path=/home/disk1/doris.HDD,50;/home/disk2/doris.SSD,10;/home/disk2/doris

说明
/home/disk1/doris.HDD, 50,表示存储限制为50GB, HDD;
/home/disk2/doris.SSD 10, 存储限制为10GB,SSD;
/home/disk2/doris,存储限制为磁盘最大容量,默认为HDD
示例2如下:

注意:不论HHD磁盘目录还是SSD磁盘目录,都无需添加后缀,storage_root_path参数里指定medium即可

storage_root_path=/home/disk1/doris,medium:hdd,capacity:50;/home/disk2/doris,medium:ssd,capacity:50

说明
/home/disk1/doris,medium:hdd,capacity:10,表示存储限制为10GB, HHD;
/home/disk2/doris,medium:ssd,capacity:50,表示存储限制为50GB, SSD;

(6)安装mysql客户端,上传所需离线包

#在 doris1上面安装 mysql

[hadoop@nn1 tmp]$ cd tmp/upload
1.#下载yum原
wget https://dev.mysql.com/get/mysql57-community-release-el7-11.noarch.rpm

2.#安装mysql 源
rpm -ivh mysql57-community-release-el7-11.noarch.rpm

3.#查看是否安装成功
yum repolist enabled | grep "mysql.*-community.*"

4.#用 yum 命令安装mysql
yum install mysql-community-server

5.#查看MYSQL配置文件加载顺序:
mysqld --help --verbose|grep -A1 -B1 cnf 

6.#修改/etc/my.cnf 配置文件内的文件目录 修改mysql的配置文件
[root@nn1 yum.repos.d]# vim /etc/my.cnf
 #data目录
 datadir=/data/mysql/data
 #严格模式
 sql_mode=STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
 log-error=/data/mysql/log/mysqld.log

7.#创建mysql 文件目录
[root@localhost jar]# mkdir -p /data/mysql/data
[root@localhost jar]# mkdir -p /data/mysql/log

7.1#生成首次登录随机密码
mysqld --initialize

8.查看密码
[root@nn1 log]# cat /data/mysql/log/mysqld.log
 A temporary password is generated for root@localhost: DL7Mgfh9rh(r

9.#修改mysql 文件目录所有者为 mysql 用户
    sudo chown -R mysql:mysql /data/mysql
10.#启动mysql 
    sudo systemctl start mysqld.service
10.1#查看服务
[root@nn1 log]# ps aux | grep mysqld.service 
11.#用生成的随机密码登录mysql
    mysql -uroot -p'DL7Mgfh9rh(r'
12.#设置密码
mysql> set password=PASSWORD('123456')
Query OK, 0 rows affected, 1 warning (0.03 sec)
mysql>exit #退出

(7)安装mysql客户端后,使用客户端访问doris pe节点

root@doris1:/opt/software# mysql -hdoris1 -P 9030 -uroot

(8)登录后添加be节点,port为be上的heartbeat_service_port端口,默认9050

ALTER SYSTEM ADD BACKEND "doris1:9050";
ALTER SYSTEM ADD BACKEND "doris2:9050";
ALTER SYSTEM ADD BACKEND "doris3:9050";

(9)启动be节点 安装到这里了

root@doris123:~# sh /opt/module/StarRocks-1.19.0/be/bin/start_be.sh --daemon 

(10)通过mysql客户端,检测be节点状态,alive必须为true

root@doris1:/opt/software# mysql -hdoris1 -P 9030 -uroot
SHOW PROC '/backends';

(11)可选,非必须部署,部署FS_BROKER,BROKER以插件的形式,独立与Doris的部署,建议每个PE和BE节点都部署一个Broker,Broker是用于访问外部数据源的进程,默认是HDSF。上传编译好的hdfs_broker。

#上传broker   (--daemon在后台启动)
root@doris123:# sh /opt/module/StarRocks-1.19.0/apache_hdfs_broker/bin/start_broker.sh --daemon

(12)使用mysql客户端访问pe,添加broker节点

root@doris1:/opt/module/apache_hdfs_broker#  mysql -hdoris1 -P 9030 -uroot
ALTER SYSTEM ADD BROKER broker_name "doris1:8000","doris2:8000","doris3:8000";

(13)查看Broker状态

SHOW PROC "/brokers";

扩容和缩容

(1)使用mysql登录客户端后,可以使用sql命令查看FE状态,目前就一台FE

root@doris1:/opt/module/apache_hdfs_broker#  mysql -hdoris1 -P 9030 -uroot
mysql> SHOW PROC '/frontends';

(2)也可以通过页面访问进行监控,访问8030,账户为root,密码默认为空不用填写

(3)增加FE节点,FE分为Leader,Follower和Observer三种角色。默认一个集群只能有一个Leader,可以有多个Follower和Observer.其中Leader和Follower组成一个Paxos选择组,如果Leader宕机,则剩下的Follower会成为Leader,保证HA。Observer是负责同步Leader数据的不参与选举。如果只部署一个FE,则FE默认就是Leader。

(4)在doris2再部署一台FE,doris3上部署Observer。--helper参数指定leader地址和端口号

mysql> ALTER SYSTEM ADD FOLLOWER "doris2:9010";
mysql> ALTER SYSTEM ADD OBSERVER "doris3:9010";
root@doris2:/opt/module/doris/fe# mkdir /opt/module/doris/fe/doris-meta
root@doris2:/opt/module/doris/fe# sh bin/start_fe.sh --helper doris1:9010 --daemon
root@doris3:/opt/module/doris/fe# mkdir /opt/module/doris/fe/doris-meta
root@doris3:/opt/module/doris/fe# sh bin/start_fe.sh --helper doris1:9010 --daemon

(5)全部启动完毕后,再通过mysql客户端,查看FE状况

mysql> SHOW PROC '/frontends';

(6) 增加BE节点,就像上面安装一样在mysql客户端,使用ALTER SYSTEM ADD BACKEND语句即可,相对应删除BE节点,使用ALTER SYSTEM DECOMMISSION BACKEND "be_host:be_heartbeat_service_port";

版权声明:原创作品,允许转载,转载时务必以超链接的形式表明出处和作者信息。否则将追究法律责任。来自海汼部落-123456789987654321,http://hainiubl.com/topics/75806
回复数量: 0
    暂无评论~~
    • 请注意单词拼写,以及中英文排版,参考此页
    • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`, 更多语法请见这里 Markdown 语法
    • 支持表情,可用Emoji的自动补全, 在输入的时候只需要 ":" 就可以自动提示了 :metal: :point_right: 表情列表 :star: :sparkles:
    • 上传图片, 支持拖拽和剪切板黏贴上传, 格式限制 - jpg, png, gif,教程
    • 发布框支持本地存储功能,会在内容变更时保存,「提交」按钮点击时清空
    Ctrl+Enter