装置 Docker 环境

  1. Docker 要求CentOS 体系的内核版别高于 3.10 ,首要检查体系内核版别是否满意:uname -r
  2. 保证 yum 包更新到最新:sudo yum update -y
  3. 装置 yum-util 工具包和devicemapper 驱动依靠:sudo yum install -y yum-utils device-mapper-persistent-data lvm2
  4. 设置 yum 源(加速yum 下载速度):yum-config-manager –add-repo mirrors.aliyun.com/docker-ce/l…
  5. 假如衔接超时,能够运用 alibaba 的镜像源:yum-config-manager –add-repo mirrors.aliyun.com/docker-ce/l…
  6. 装置最新安稳版别的方法:sudo yum install docker-ce -y #装置的是最新安稳版别,由于 repo 中默许只开启 stable 库房
  7. 发动并参与开机发动 sudo systemctl start docker && docker sudo systemctl enable docker #参与开机自发动
  8. 检查 Version,验证是否装置成功:docker version

运用 Docker 开发镜像编译

  1. 下载源码并解压:mwget dist.apache.org/repos/dist/…
    • 解压到/opt:tar -zxvf apache-doris-1.0.0-incubating-bin.tar.gz -C /opt
  2. 下载 Docker 镜像:docker pull apache/doris:build-env-for-1.0.0
    • 能够经过以下指令检查镜像是否下载完结:docker images
  3. 挂载本地目录运转镜像
    • 以挂载本地 Doris 源码目录的方法运转镜像,这样编译的产出二进制文件会存储在宿主机中,不会由于镜像退出而消失。同时将镜像中 maven 的 .m2 目录挂载到宿主机目录,以避免每次发动镜像编译时,重复下载 maven 的依靠库。
    • docker run -it -v /opt/.m2:/root/.m2 -v /opt/apache-doris-1.0.0-incubating-src/:/root/apache-doris-1.0.0-incubating-src/ apache/incubator-doris:build-env-for-1.0.0
  4. docker中环境切换到 JDK 8
    • alternatives –set java java-1.8.0-openjdk.x86_64
    • alternatives –set javac java-1.8.0-openjdk.x86_64
    • export JAVA_HOME=/usr/lib/jvm/java-1.8.0
  5. 准备 Maven 依靠
    • 编译过程会下载很多依靠,能够将咱们准备好的 doris-repo.tar.gz 解压到 Docker 挂载的对应目录,来避免下载依靠的过程,加速编译:tar -zxvf doris-repo.tar.gz -C /opt/
  6. 编译Doris:sh build.sh
    • 假如是第一次运用 build-env-for-0.15.0 或之后的版别,第一次编译的时候要运用如下指令:sh build.sh –clean –be –fe –ui
    • 由于 build-env-for-0.15.0 版别镜像升级了 thrift(0.9 -> 0.13),需求经过–clean 指令强制运用新版别的thrift 生成代码文件,不然会出现不兼容的代码。
  7. 检查编译成果目录:生成的编译成果目录是/opt/apache-doris-1.0.0-incubating-src/output/

布置

  • 在集群各个节点上创立目录并复制编译后的文件
    • mkdir /opt/apache-doris-1.0.0
    • cp -r /opt/apache-doris-1.0.0-incubating-src/output/ /opt/doris*
布置 FE 节点:装备IP 和 meta_dir
  1. 创立 fe 元数据存储的目录:mkdir /opt/doris/doris-meta
  2. 改 fe 的仅有的装备文件:vim /opt/doris/fe/conf/fe.conf
  3. 留意:出产环境激烈主张独自指定目录不要放在 Doris 装置目录下,最好是独自的磁盘(假如有 SSD 最好)。
    • 假如机器有多个 ip, 比如内网外网, 虚拟机 docker 等, 需求进行 ip 绑定,才干正确识别。
    • JAVA_OPTS 默许 java 最大堆内存为 4GB,主张出产环境调整至 8G 以上。
  4. 发动 hadoop1 的FE:/opt/doris/fe/bin/start_fe.sh –daemon
  5. 中止:/opt/doris/fe/bin/stop_fe.sh
装备 BE 节点:装备IP 和 storage_root_path
  1. 分发 BE:xsync /opt/doris/be
  2. 创立 BE 数据寄存目录(每个节点):mkdir /opt/doris/doris-storage1 && mkdir /opt/doris/doris-storage2
  3. 修正 BE 的装备文件(每个节点):vim /opt/doris/be/conf/be.conf
    • storage_root_path 默许在 be/storage 下,需求手动创立该目录。多个路径之间运用英文状况的分号;分隔(最终一个目录后不要加)。
    • 能够经过路径差异存储目录的介质,HDD 或 SSD。能够增加容量限制在每个路径的结尾,经过英文状况逗号,离隔,如:
      • 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
    • 假如机器有多个 IP, 比如内网外网, 虚拟机 docker 等, 需求进行 IP 绑定,才干正确识别。
在 FE 中增加一切 BE 节点:运用 mysql-client 衔接到 FE
  • BE 节点需求先在FE 中增加,才可参与集群。能够运用 mysql-client 衔接到 FE。
  • 运用 MySQL Client 衔接 FE:mysql -h hadoop1 -P 9030 -uroot
    • 增加 BE
      • ALTER SYSTEM ADD BACKEND “hadoop1:9050”;
      • ALTER SYSTEM ADD BACKEND “hadoop2:9050”;
      • ALTER SYSTEM ADD BACKEND “hadoop3:9050”;
    • 检查 BE 状况:SHOW PROC ‘/backends’\G;
      使用 Docker 开发镜像编译doris源码
      • Alive 为 true 表明该BE 节点存活。
  • 发动 BE(每个节点):/opt/doris/be/bin/start_be.sh –daemon
  • 中止:/opt/doris/be/bin/stop_fe.sh

布置 FS_Broker(可选)

  • Broker 以插件的方法,独立于Doris 布置。假如需求从第三方存储体系导入数据,需求布置相应的 Broker,默许提供了读取 HDFS、百度云 BOS 及 Amazon S3 的 fs_broker。 fs_broker 是无状况的,主张每一个 FE 和 BE 节点都布置一个Broker。
  1. 发动容器docker run -it -v /opt/.m2:/root/.m2 -v /opt/apache-doris-1.0.0-incubating-src/:/root/apache-doris-1.0.0-incubating-src/ apache/incubator-doris:build-env-for-1.0.0
  2. docker中环境切换到 JDK 8:echo $JAVA_HOME
    • alternatives –set java java-1.8.0-openjdk.x86_64
    • alternatives –set javac java-1.8.0-openjdk.x86_64
    • export JAVA_HOME=/usr/lib/jvm/java-1.8.0
  3. 容器中进入源码目录下的 fs_brokers 目录进行编译:sh build.sh
  4. 复制编译成果:源码 fs_broker 的 output 目录下的相应 Broker 目录到需求布置的一切节点上,改名为: apache_hdfs_broker。主张和 BE 或许 FE 目录坚持同级。
  5. 发动 Broker:/opt/doris/apache_hdfs_broker/bin/start_broker.sh –daemon
  6. 中止:/opt/doris/apache_hdfs_broker/bin/stop_fe.sh
  7. 增加 Broker:要让 Doris 的 FE 和 BE 知道 Broker 在哪些节点上,经过 sql 指令增加 Broker 节点列表。
    • 运用 mysql-client 衔接发动的 FE,履行以下指令:ALTER SYSTEM ADD BROKER broker_name “hadoop1:8000″,”hadoop2:8000″,”hadoop3:8000”;
    • 其间 broker_host 为 Broker 所在节点 ip;broker_ipc_port 在 Broker 装备文件中的conf/apache_hdfs_broker.conf。
  8. 检查 Broker 状况:运用 mysql-client 衔接任一已发动的 FE,履行以下指令检查Broker 状况:SHOW PROC “/brokers”;
    使用 Docker 开发镜像编译doris源码
    • 注:在出产环境中,一切实例都应运用守护进程发动,以保证进程退出后,会被主动拉起,如 Supervisor(opens new window)。
    • 如需运用守护进程发动,在 0.9.0 及之前版别中,需求修正各个 start_xx.sh 脚本,去掉最终的 & 符号。从 0.10.0 版别开端,直接调用 sh start_xx.sh 发动即可。

扩容和缩容

  • Doris 能够很便利的扩容和缩容 FE、BE、Broker 实例。
FE 扩容和缩容
  • 能够经过将 FE 扩容至 3 个以上节点来完结 FE 的高可用。
  1. 运用 MySQL 登录客户端后,能够运用 sql 指令检查 FE 状况,现在就一台 FE:mysql -h hadoop1 -P 9030 -uroot -p
    • SHOW PROC ‘/frontends’\G;
    • 也能够经过页面拜访进行监控,拜访 8030,账户为root,密码默许为空不用填写。
  2. 增加 FE 节点
    • FE 分为 Leader,Follower 和 Observer 三种角色。
    • 默许一个集群,只能有一个 Leader,能够有多个 Follower 和 Observer。
    • 其间 Leader 和 Follower 组成一个 Paxos 挑选组,假如 Leader 宕机,则剩下的 Follower 会主动选出新的Leader,保证写入高可用。
    • Observer 同步 Leader 的数据,可是不参与选举。
    • 假如只布置一个 FE,则 FE 默许便是 Leader。在此基础上,能够增加若干 Follower 和Observer。
  3. 装备及发动 Follower 和 Observer
    • ALTER SYSTEM ADD FOLLOWER “hadoop2:9010”;
    • ALTER SYSTEM ADD OBSERVER “hadoop3:9010”;
    • 分发FE,修正 FE 的装备(IP):vim /opt/doris/fe/conf/fe.conf
    • 扩容的节点第一次发动时,发动指令需求增加参–helper leader 主机: edit_log_port:
    • 在 hadoop2 发动 Follower:/opt/doris/fe/bin/start_fe.sh –helper hadoop1:9010 –daemon
    • 在 hadoop3 发动 Observer:/opt/doris/fe/bin/start_fe.sh –helper hadoop2:9010 –daemon
  4. 发动 hadoop1 的FE:/opt/doris/fe/bin/start_fe.sh –daemon
    • 中止:/opt/doris/fe/bin/stop_fe.sh
  5. mysql-client 中检查运转状况:SHOW PROC ‘/frontends’\G;
    使用 Docker 开发镜像编译doris源码
  6. 删去 FE 节点指令:ALTER SYSTEM DROP FOLLOWER[OBSERVER] “fe_host:edit_log_port”;
    • 留意:删去 Follower FE 时,保证最终剩下的 Follower(包括 Leader)节点为奇数。
BE 扩容和缩容
  1. 增加 BE 节点:在 MySQL 客户端,经过 ALTER SYSTEM ADD BACKEND 指令增加BE 节点。
  2. DROP 方法删去 BE 节点(不引荐):ALTER SYSTEM DROP BACKEND “be_host:be_heartbeat_service_port”;
    • 留意:DROP BACKEND 会直接删去该BE,而且其上的数据将不能再康复!!!所以咱们激烈不引荐运用 DROP BACKEND 这种方法删去 BE 节点。当你运用这个句子时,会有对应的防误操作提示。
  3. DECOMMISSION 方法删去 BE 节点(引荐):ALTER SYSTEM DECOMMISSION BACKEND ALTER SYSTEM DROP FOLLOWER[OBSERVER];
    • 该指令用于安全删去 BE 节点。指令下发后,Doris 会尝试将该 BE 上的数据向其他 BE 节点搬迁,当一切数据都搬迁完结后,Doris 会主动删去该节点。
    • 该指令是一个异步操作。履行后,能够经过 SHOW PROC ‘/backends’; 看到该 BE节点的 isDecommission 状况为 true。表明该节点正在进行下线。
    • 该指令不一定履行成功。比如剩下BE 存储空间不足以容纳下线BE 上的数据,或许剩下机器数量不满意最小副本数时,该指令都无法完结,而且 BE 会一向处于 isDecommission 为 true 的状况。
    • DECOMMISSION 的进度,能够经过SHOW PROC ‘/backends’; 中的TabletNum 检查,假如正在进行,TabletNum 将不断削减。
    • 该操作能够经过如下指令取消:CANCEL DECOMMISSION BACKEND “be_host:be_heartbeat_service_port”;
    • 取消后,该 BE 上的数据将保持当时剩下的数据量。后续 Doris 重新进行负载均衡
Broker 扩容缩容
  • Broker 实例的数量没有硬性要求。一般每台物理机布置一个即可。Broker 的增加和删去能够经过以下指令完结:
    • ALTER SYSTEM ADD BROKER broker_name “broker_host:broker_ipc_port”;
    • ALTER SYSTEM DROP BROKER broker_name “broker_host:broker_ipc_port”;
    • ALTER SYSTEM DROP ALL BROKER broker_name;
  • Broker 是无状况的进程,能够随意启停。当然,中止后,正在其上运转的作业会失利,重试即可。