Doris系列2-Doris编译和安装

一.编译前准备

1.1 环境准备

主机配置:

IP 主机名 部署
10.31.1.119 hp5 FE FS_Broker
10.31.1.120 hp6 BE FS_Broker
10.31.1.121 hp7 BE FS_Broker,FE Observer
10.31.1.122 hp8 BE FS_Broker

硬件配置:
每台主机:CPU4核、内存8G、硬盘150G

软件版本:

名称 版本
操作系统 CentOS release 7.8 (Final) 64位
JDK 1.11
yum install -y java-11-openjdk-devel.x86_64  
ln -s /usr/lib/jvm/java-11-openjdk-11.0.13.0.8-1.el7_9.x86_64 /usr/lib/jvm/java11

vi /etc/profile
JAVA_HOME=/usr/lib/jvm/java11
PATH=$JAVA_HOME/bin:$PATH
CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export JAVA_HOME
export PATH
export CLASSPATH

source /etc/profile

1.2 安装Docker

1.2.1 卸载旧版本

yum remove docker  docker-common docker-selinux docker-engine
image.png

1.2.2 安装需要的软件包

yum install -y yum-utils device-mapper-persistent-data lvm2

1.2.3 设置yum源

yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
image.png

1.2.4 查看docker版本

yum list docker-ce --showduplicates | sort -r
image.png

1.2.5 安装docker

yum install docker-ce
yum install <FQPN>  # 例如:yum install docker-ce-20.10.9
image.png

1.2.6 启动并加入开机启动

systemctl start docker
systemctl enable docker
image.png

1.2.7 验证安装是否成功

docker version
image.png

1.2.8 迁移docker

因为根目录的空间不够,将docker迁移到/home目录

systemctl stop dcoker
mkdir -p /home/docker
mv /var/lib/docker/* /home/docker/
mount --bind /home/docker/ /var/lib/docker

# 添加挂载命令至开机脚本
vi /etc/rc.local
mount --bind /home/docker/ /var/lib/docker

1.2.9 退出后重新进入docker

[root@hp7 /]# docker ps -a
CONTAINER ID   IMAGE                                    COMMAND       CREATED          STATUS                       PORTS     NAMES
4443aa0cb7b9   apache/incubator-doris:build-env-1.4.2   "/bin/bash"   44 seconds ago   Exited (0) 36 seconds ago              hardcore_chaum
8c022367ed79   apache/incubator-doris:build-env-1.4.2   "/bin/bash"   5 minutes ago    Exited (127) 5 minutes ago             lucid_jackson
07c7b65b7724   apache/incubator-doris:build-env-1.4.2   "/bin/bash"   6 minutes ago    Exited (0) 6 minutes ago               modest_hugle
5faefc1a7ce7   apache/incubator-doris:build-env-1.4.2   "/bin/bash"   4 hours ago      Exited (0) 2 minutes ago               infallible_boyd
1331eb39f288   apache/incubator-doris:build-env-1.4.2   "/bin/bash"   4 hours ago      Exited (1) 4 hours ago                 dreamy_clarke
731942087dec   apache/incubator-doris:build-env-1.4.2   "/bin/bash"   3 days ago       Exited (0) 3 days ago                  sweet_wescoff
[root@hp7 /]# 
[root@hp7 /]# docker start 5faefc1a7ce7
5faefc1a7ce7
[root@hp7 /]# docker attach 5faefc1a7ce7
[root@5faefc1a7ce7 ~]# 
[root@5faefc1a7ce7 ~]# ll
total 8
-rw-------.  1 root root 3416 Nov 13  2020 anaconda-ks.cfg
drwxr-xr-x. 22 root root 4096 Dec  6 11:08 incubator-doris
drwxr-xr-x.  2 root root    6 Dec  6 09:54 incubator-doris-DORIS-x.x.x-release
[root@5faefc1a7ce7 ~]# 

二. 编译

2.1 下载 Docker 镜像

下载镜像

docker pull apache/incubator-doris:build-env-1.4.2
image.png

检查镜像

docker images
image.png

2.2 运行镜像

运行镜像

docker run -it apache/incubator-doris:build-env-1.4.2

建议以挂载本地 Doris 源码目录的方式运行镜像,这样编译的产出二进制文件会存储在宿主机中,不会因为镜像退出而消失。

同时,建议同时将镜像中 maven 的 .m2 目录挂载到宿主机目录,以防止每次启动镜像编译时,重复下载 maven 的依赖库。

docker run -it -v /root/.m2 -v /root/incubator-doris-DORIS-x.x.x-release/ apache/incubator-doris:build-env-1.4.2
image.png

2.3 下载源码

启动镜像后,你应该已经处于容器内。可以通过以下命令下载 Doris 源码(已挂载本地源码目录则不用):

git clone https://github.com/apache/incubator-doris.git
image.png

2.4 编译 Doris

cd /root/incubator-doris
sh build.sh --clean --be --fe --ui
image.png

编译完成后,产出文件在 output/ 目录中


image.png

三. 安装部署

3.1 安装FE

3.1.1 拷贝FE部署文件

拷贝 FE 部署文件到hp5

scp -r ./fe root@10.31.1.119:/home/doris/

3.1.2 配置 FE

配置文件为 conf/fe.conf

  1. meta_dir是元数据存放位置。默认值为 ${DORIS_HOME}/doris-meta,我看已经创建好了目录。

  2. JAVA_OPTS 默认 java 最大堆内存为 4GB,可以根据真实环境进行调整。

  3. priority_networks=10.31.1.0/24 如果主机有多个IP,doris没办法知道具体该绑定哪个IP,此时需要进行指定。

3.1.3 启动FE

sh bin/start_fe.sh --daemon

FE进程启动进入后台执行。日志默认存放在 log/ 目录下。如启动失败,可以通过查看 log/fe.log 或者 log/fe.out 查看错误信息。

3.2 安装BE

3.2.1 拷贝BE安装文件

scp -r ./be root@10.31.1.120:/home/doris/  
scp -r ./be root@10.31.1.121:/home/doris/  
scp -r ./be root@10.31.1.122:/home/doris/  

以下步骤 hp6、hp7、hp8三个节点BE节点均需要执行:

3.2.2 修改所有 BE 的配置

修改 be/conf/be.conf

  1. 主要是配置 storage_root_path:数据存放目录。默认在be/storage下,需要手动创建该目录。多个路径之间使用英文状态的分号 ; 分隔(最后一个目录后不要加 ;)。可以通过路径区别存储目录的介质,HDD或SSD。可以添加容量限制在每个路径的末尾,通过英文状态逗号,隔开。
  1. priority_networks=10.31.1.0/24 如果主机有多个IP,doris没办法知道具体该绑定哪个IP,此时需要进行指定。

3.2.3 修改文件句柄数据

echo "* soft nofile 204800"  >> /etc/security/limits.conf
echo "* hard nofile 204800"  >> /etc/security/limits.conf
echo "* soft nproc 204800"  >> /etc/security/limits.conf
echo "* hard nproc 204800 "  >> /etc/security/limits.conf

-- 修改 /etc/sysctl.conf, 加入这个设置
echo   fs.file-max = 6553560  >> /etc/sysctl.conf

ulimit -u 60000

source /etc/profile

3.2.4 在 FE 中添加所有 BE 节点

-- 其中 host 为 FE 所在节点 ip;port 为 fe/conf/fe.conf 中的 query_port;默认使用 root 账户,无密码登录。
mysql -uroot -p -h10.31.1.119 -P9030
-- 其中 host 为 BE 所在节点 ip;port 为 be/conf/be.conf 中的 heartbeat_service_port。
ALTER SYSTEM ADD BACKEND "10.31.1.120:9050";
image.png

3.2.5 启动BE

sh bin/start_be.sh --daemon

查看 BE 运行情况。如一切正常,isAlive 列应为 true。


image.png

最终三台都成功

image.png

3.2.6 安装fs_broker

编译broker
Broker 以插件的形式,独立于 Doris 部署。如果需要从第三方存储系统导入数据,需要部署相应的 Broker,默认提供了读取 HDFS 和百度云 BOS 的 fs_broker。fs_broker 是无状态的,建议每一个 FE 和 BE 节点都部署一个 Broker。

cd /root/incubator-doris/fs_brokers/apache_hdfs_broker
sh build.sh
image.png
image.png

拷贝源码
拷贝fs_broker 的 output 目录下的相应 Broker 目录到需要部署的所有节点上。建议和 BE 或者 FE 目录保持同级。

cd /root/incubator-doris/fs_brokers/apache_hdfs_broker/output
scp -r apache_hdfs_broker root@10.31.1.119:/home/doris/
scp -r apache_hdfs_broker root@10.31.1.120:/home/doris/
scp -r apache_hdfs_broker root@10.31.1.121:/home/doris/
scp -r apache_hdfs_broker root@10.31.1.122:/home/doris/

修改相应 Broker 配置
可沿用默认值

cd /home/doris/apache_hdfs_broker/conf
vi apache_hdfs_broker.conf
image.png

启动 Broker

sh bin/start_broker.sh --daemon

添加 Broker
要让 Doris 的 FE 和 BE 知道 Broker 在哪些节点上,通过 sql 命令添加 Broker 节点列表。
使用 mysql-client 连接启动的 FE,执行以下命令:

-- 其中 host 为 Broker 所在节点 ip;port 为 Broker 配置文件中的 broker_ipc_port。
ALTER SYSTEM ADD BROKER broker_name "host1:port1","host2:port2",...;

ALTER SYSTEM ADD BROKER broker_name "10.31.1.119:8000","10.31.1.120:8000","10.31.1.121:8000","10.31.1.122:8000";

查看 Broker 状态

SHOW PROC "/brokers";
image.png

3.2.7 增加FE Observer

FE 分为 Leader,Follower 和 Observer 三种角色。 默认一个集群,只能有一个 Leader,可以有多个 Follower 和 Observer。其中 Leader 和 Follower 组成一个 Paxos 选择组,如果 Leader 宕机,则剩下的 Follower 会自动选出新的 Leader,保证写入高可用。Observer 同步 Leader 的数据,但是不参加选举。如果只部署一个 FE,则 FE 默认就是 Leader。

第一个启动的 FE 自动成为 Leader。在此基础上,可以添加若干 Follower 和 Observer。

修改 10.31.1.121上fe的配置文件
主要修改priority_networks 这个参数
priority_networks = 10.31.1.0/24

添加 Observer

-- 其中 host 为 Observer 所在节点 ip,port 为其配置文件 fe.conf 中的 edit_log_port。
ALTER SYSTEM ADD OBSERVER "host:port";

ALTER SYSTEM ADD OBSERVER "10.31.1.121:9010";

查看Observer 运行状态

SHOW PROC '/frontends';
image.png

FAQ:

1. BE连接FE出错

这个是网络的问题,具体排查日志,主机多IP的情况下,需要在配置文件中进行指定,例如:
priority_networks=10.31.1.0/24

还有一个问题,我的FE节点因为是测试机,已经安装好了MySQL,结果我BE连接过去的时候,是之前安装的测试库,安装FE之前,要卸载掉主机上已安装的MySQL服务。

2. BE安装报错 - File descriptor number is less than 60000.

BE报错:


image.png

解决方案:

echo "* soft nofile 204800"  >> /etc/security/limits.conf
echo "* hard nofile 204800"  >> /etc/security/limits.conf
echo "* soft nproc 204800"  >> /etc/security/limits.conf
echo "* hard nproc 204800 "  >> /etc/security/limits.conf

-- 修改 /etc/sysctl.conf, 加入这个设置
echo   fs.file-max = 6553560  >> /etc/sysctl.conf

ulimit -u 60000

source /etc/profile
image.png

3. BE FE一些其它的报错

安装过程中,因为配置文件等原因,出现了一些莫名奇妙的错误,此时可以把 $DORIS_HOME目录下的 be or fe整个目录全部删除掉,然后从源重新进行拷贝,再进行配置即可。

参考:

  1. http://doris.apache.org/master/zh-CN/installing/compilation.html#%E4%BD%BF%E7%94%A8-docker-%E5%BC%80%E5%8F%91%E9%95%9C%E5%83%8F%E7%BC%96%E8%AF%91-%E6%8E%A8%E8%8D%90
  2. https://blog.csdn.net/qq_21480329/article/details/117730233
  3. https://blog.csdn.net/longqiancao1/article/details/117665789
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 205,132评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,802评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,566评论 0 338
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,858评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,867评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,695评论 1 282
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,064评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,705评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 42,915评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,677评论 2 323
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,796评论 1 333
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,432评论 4 322
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,041评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,992评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,223评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,185评论 2 352
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,535评论 2 343

推荐阅读更多精彩内容