美文网首页
Doris系列2-Doris编译和安装

Doris系列2-Doris编译和安装

作者: 只是甲 | 来源:发表于2021-12-28 09:21 被阅读0次

    一.编译前准备

    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

    相关文章

      网友评论

          本文标题:Doris系列2-Doris编译和安装

          本文链接:https://www.haomeiwen.com/subject/czjpxrtx.html