1.拉取官方的安装环境
因为这个官网给的镜像对Doris有良好的兼容,所以我们最好使用Doris
官网所提供的Docker镜像,在这个镜像里面进行编译安装
docker pull apachedoris/doris-dev:build-env
2.下载官方的源代码
https://github.com/baidu-doris/incubator-doris/tree/master
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中做数据迁移,所以最好还是将该设置打开。
③执行安装脚本进行编译安装
WITH_MYSQL=1 开启Doris对MySQL的支持
cp -r thirdparty/* /var/local/thirdparty/ WITH_MYSQL=1 sh build.sh
Doris需要安装一些三方依赖,请耐心等待
安装成功如下图
④启动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。
将MySQL ODBC的配置,改为上图所示的配置,在这里配置好可以一劳永逸
⑥启动fe
bin/start_fe.sh --daemon
查看fe进程
ps -ef | grep fe
通过ps命令,我们看到fe的进程id为23161
查看fe的日志
tail -f log/fe.log
⑦清理残留
确认没有问题之后,杀死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
修改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,可等待几分钟之后再观察变化。
③启动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";
8.修改doris的登录密码
在MySQL客户端中,执行SQL命令进行修改
SET PASSWORD FOR 'root' = PASSWORD('your_password');
安装过程中遇到问题解决:
问题1:
表明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:
编译过程出现这种报错,是MySQL的ODBC没能安装成功导致,需重新安装MySQL的ODBC驱动,或者换一种安装方式进行安装
问题3
编译过程中,出现有的第三方依赖下载失败问题
可以自行在网上寻找下载失败的依赖进行下载,下载完成后,将依赖文件拷贝到docker节点的/var/local/thirdparty/src目录下,然后再执行编译命令,已经src目录下已存在就不会再下载了
当然,最好是先在一台Docker节点上装好,在做成镜像,然后使用镜像去生成机器哈!