Docker编译安装Doris集群

1.拉取官方的安装环境

因为这个官网给的镜像对Doris有良好的兼容,所以我们最好使用Doris

官网所提供的Docker镜像,在这个镜像里面进行编译安装

docker pull apachedoris/doris-dev:build-env

2.下载官方的源代码

https://github.com/baidu-doris/incubator-doris/tree/master

Docker编译安装Doris集群_第1张图片

 

3.将下载好的源代码分发到每台Docker节点上

通过docker run命令创建出1台docker节点。

docker run -id --name doris-node1 -h doris-node1 --network tech --privileged=true -p 9030:9030 apachedoris/doris-dev:build-env

给一个9030的对外端口,以便以后连接到Doris上使用

进入到Docker容器中

docker exec -it doris-node1 bash

通过git命令,将doris的代码下载下来

cd /opt wget https://github.com/apache/incubator-doris/archive/master.zip

解压

unzip master.zip

4.解压编译安装

分别进入到每个节点中,执行如下操作

①安装MySQL的ODBC驱动

下面是驱动的下载链接

链接: https://pan.baidu.com/s/1hcRVIGH3rGbIqJBGIpVSYQ  密码: 4mfq

 

将MySQL的ODBC安装包拷贝拷贝到宿主机, 然后拷贝到Docker上

docker cp mysql-connector-odbc-5.3.14-linux-glibc2.12-x86-64bit.tar.gz doris-node1:/opt

官方提示,自0.13开始,Doris默认关闭了对MySQL的支持,也就是说,默认是无法用来对MySQL进行往Doris上迁移数据的,所以,我们先安装的时候把对MySQL的支持打开,为后续有用到数据迁移做好准备。

yum install unixODBC.x86_64 -y yum install unixODBC-devel.x86_64 -y yum install net-tools -y tar -xvf mysql-connector-odbc-5.3.14-linux-glibc2.12-x86-64bit.tar.gz cd mysql-connector-odbc-5.3.14-linux-glibc2.12-x86-64bit cp lib/* /usr/lib64 ./myodbc-installer -d -a -n "MySQL ODBC 5.3 Driver" -t "DRIVER=/usr/lib64/libmyodbc5w.so;SETUP=/usr/lib64/libmyodbc5w.so"

②编辑安装脚本

cd incubator-doris-master

因为doris对MySQL的支持欠佳,所以Doris默认是关闭对MySQL数据迁移的支持的,从build.sh的136行就能看出默认是关闭的。为了以后可能用到MySQL往Doris中做数据迁移,所以最好还是将该设置打开。

Docker编译安装Doris集群_第2张图片

③执行安装脚本进行编译安装

WITH_MYSQL=1 开启Doris对MySQL的支持

cp -r thirdparty/* /var/local/thirdparty/ WITH_MYSQL=1 sh build.sh

Doris需要安装一些三方依赖,请耐心等待

安装成功如下图

Docker编译安装Doris集群_第3张图片

④启动fe,验证是否安装成功

编译成功后的可运行的二进制文件在output目录下

cd output/fe

创建fe所需的两个文件夹

mkdir log doris-meta

fe.conf中添加如下配置,开启自动分区和MySQL的ODBC支持,提前开启避免后续遗忘

echo "dynamic_partition_enable = true" >> conf/fe.conf echo "enable_odbc_table = true" >> conf/fe.conf

⑤配置be的

cd ../be mkdir log storage vi conf/odbcinst.ini

配置这个是让Doris支持由MySQl数据库迁移到Doris。

Docker编译安装Doris集群_第4张图片

将MySQL ODBC的配置,改为上图所示的配置,在这里配置好可以一劳永逸

⑥启动fe

bin/start_fe.sh --daemon

查看fe进程

ps -ef | grep fe

通过ps命令,我们看到fe的进程id为23161

查看fe的日志

tail -f log/fe.log

Docker编译安装Doris集群_第5张图片

 

⑦清理残留

确认没有问题之后,杀死fe进程,由ps命令查询自己环境的fe的进程id,每台机器的进程id都可能不太一样

kill -9 23161

删除log和doris-meta文件夹,清理掉试运行所产生的日志和元数据文件,准备做成Docker镜像

rm -rf log/* doris-meta/*

5.制作Docker镜像

①退出docker容器

exit

②制作docker镜像

doris-node1为docker节点的名称,doris-node是镜像名称,v1是镜像的版本

docker commit doris-node1 doris-node:v1

需要耐心等待制作过程

6.创建Doris的Docker集群

本次创建的集群为7个节点,其中,123为fe的follower节点,其中fe的follower数量为奇数个,234567为be节点,宿主机规格为16核64G,CPU16核差不多,内存越大越好,因为Doris是基于内存计算的数仓,所以对内存的需要较高。

①创建剩余的6个节点

需要按照顺序创建docker节点,因为docker的虚拟ip是按顺序创建的

docker run -id --name doris-node2 -h doris-node2 --network tech --privileged=true doris-node:v1 docker run -id --name doris-node3 -h doris-node3 --network tech --privileged=true doris-node:v1 docker run -id --name doris-node4 -h doris-node4 --network tech --privileged=true doris-node:v1 docker run -id --name doris-node5 -h doris-node5 --network tech --privileged=true doris-node:v1 docker run -id --name doris-node6 -h doris-node6 --network tech --privileged=true doris-node:v1 docker run -id --name doris-node7 -h doris-node7 --network tech --privileged=true doris-node:v1

可以通过docker ps命令查看创建出来的doris的docker节点

7.启动doris集群

①分别修改三个fe的配置文件

先启动node1

docker exec -id doris-node1 /opt/incubator-doris-master/output/fe/bin/start_fe.sh --daemon

修改node2的配置文件

docker exec -it doris-node2 bash cd /opt/incubator-doris-master/output/fe vi conf/fe.conf

Docker编译安装Doris集群_第6张图片

修改edit_log_port = 9011,避免与其他fe节点冲突

edit_log_port = 9011

同样的方式,修改node3的fe.conf,将edit_log_port = 9012

docker exec -it doris-node3 bash cd /opt/incubator-doris-master/output/fe vi conf/fe.conf
edit_log_port = 9012

②分别启动node2和node3的fe

在宿主机上安装好mysql客户端,进入doris-node1节点,通过ifconfig命令查看该节点的ip,然后使用MySQL客户端连接node1的Doris节点,需要输入密码的时候,直接回车。

mysql -u root -h ip -P 9030 -p

先进入到node2和node3节点,通过ifconfig命令查询各自的ip地址,然后在MySQL的客户端中执行以下命令来添加fe节点。

ALTER SYSTEM ADD FOLLOWER "node1-ip:9011"; ALTER SYSTEM ADD FOLLOWER "node2-ip:9012";

启动fe进程,注意,首次启动,需添加 --helper ip:port参数,以后可不需要添加该参数

其中。ip为leader节点的ip,port为leader节点的edit_log_port

bin/start_fe.sh --helper 192.168.124.11:9010 --daemon

启动node1和node2节点的fe进程后,回到MySQL客户端,通过以下SQL语句,查看fe节点是否成功添加

show proc "/frontends";

Alive列均为true表示已经成功配置好所有fe节点,由于master与follower建立心跳过程会稍有延迟,Alive可能不会立刻变为true,可等待几分钟之后再观察变化。

Docker编译安装Doris集群_第7张图片

③启动6个be节点

先分别查询出6个be节点的ip地址,然后通过先在MySQL的客户端中添加be的配置

doris-node2 - doris-node7的ip都要查看出来,端口9050为统一的heartbeat_service_port

ALTER SYSTEM ADD BACKEND "be-node-ip:9050";

直接执行以下命令,启动be进程

docker exec -id doris-node2 /opt/incubator-doris-master/output/be/bin/start_be.sh --daemon docker exec -id doris-node3 /opt/incubator-doris-master/output/be/bin/start_be.sh --daemon docker exec -id doris-node4 /opt/incubator-doris-master/output/be/bin/start_be.sh --daemon docker exec -id doris-node5 /opt/incubator-doris-master/output/be/bin/start_be.sh --daemon docker exec -id doris-node6 /opt/incubator-doris-master/output/be/bin/start_be.sh --daemon docker exec -id doris-node7 /opt/incubator-doris-master/output/be/bin/start_be.sh --daemon

④查看be的状态

回到MySQL客户端,输入SQL查看状态,需要每个be节点的Alive变为true即可

show proc "/backends";

Docker编译安装Doris集群_第8张图片

8.修改doris的登录密码

在MySQL客户端中,执行SQL命令进行修改

SET PASSWORD FOR 'root' = PASSWORD('your_password');

安装过程中遇到问题解决:

问题1:

Docker编译安装Doris集群_第9张图片

表明Doris的编译需要nodeJs,而环境中并没安装NodeJs,所以需要安装Node Js之后再进行编译安装

下载安装NodeJs:

cd /opt wget https://npm.taobao.org/mirrors/node/v10.14.1/node-v10.14.1-linux-x64.tar.gz tar -xvf node-v10.14.1-linux-x64.tar.gz echo "export NODE_HOME=/opt/node" >> /etc/profile echo "export PATH=$NODE_HOME/bin:$PATH" >> /etc/profile source /etc/profile

问题2:

Docker编译安装Doris集群_第10张图片

编译过程出现这种报错,是MySQL的ODBC没能安装成功导致,需重新安装MySQL的ODBC驱动,或者换一种安装方式进行安装

问题3

编译过程中,出现有的第三方依赖下载失败问题

可以自行在网上寻找下载失败的依赖进行下载,下载完成后,将依赖文件拷贝到docker节点的/var/local/thirdparty/src目录下,然后再执行编译命令,已经src目录下已存在就不会再下载了

当然,最好是先在一台Docker节点上装好,在做成镜像,然后使用镜像去生成机器哈!

 

 

你可能感兴趣的:(大数据实时分析,大数据)