Doris学习笔记(一)

一、Doris架构

分为FE(Frontend)、BE(Backend)两种角色、两个进程。FE、BE都可以线性扩展。

1. FE

  • 存储、维护集群元数据
  • 接收、解析查询请求,规划查询计划,调度查询执行,返回查询结果。
  • 主要为三个角色:
    • LeaderFollower:用来达到元数据的高可用,保证单节点宕机后,元数据仍能实时在线恢复,不影响服务。
    • Observer:用来扩展查询节点,同时起到了备份作用。(集群压力非常大,需要扩展整个查询能力,可以增加Observer节点。Observer不参与写入,只参与查询)

2. BE

  • 负责物理数据的存储和计算
  • 数据的可靠性由BE保证,对整个数据存储多副本或者三副本。

3. MySQL Client

Doris借助MySQL协议,用户可以通过ODBC/JDBC以及MySQL客户端来直接访问Doris

4. Broker

Broker是一个独立的无状态进程。封装了文件系统接口,可以读取远端存储系统中文件的能力,包括HDFS、S3、BOS等。

二、编译Doris

1. 安装docker

  1. 更新yum包

    1
    yum update -y
  2. 卸载旧版本的docker

    1
    yum remove docker docker-common docker-selinux  docker-engine
  3. 安装yum-util工具包和devicemapper驱动依赖

    1
    yum install -y yum-utils device-mapper-persistent-data lvm2
  4. 更新yum镜像源

  5. 查看所有仓库中的docker版本,并选择特定的版本安装,一般可直接安装最新版

    1
    yum list docker-ce --showduplicates | sort -r
  6. 安装docker

    1
    2
    #安装最新稳定版
    yum install docker-ce -y
  7. 启动并设置开机自启

    1
    2
    systemctl start docker
    systemctl enable docker

2. 使用Docker开发镜像编译

  1. 下载源码并解压

    1
    wget https://mirrors.tuna.tsinghua.edu.cn/apache/doris/1.2/1.2.3-rc02/apache-doris-1.2.3-src.tar.gz
  2. 解压源码

    1
    tar -zxvf apache-doris-1.2.3-src.tar.gz
  3. 拉取docker镜像

    1
    docker pull apache/doris:build-env-for-1.2
  4. 挂载本都目录运行镜像

    1
    2
    3
    4
    5
    6
    docker run -it \ 
    # 挂载Maven的仓库
    -v [maven的.m2目录]:/root/.m2 \
    # 挂载Doris源码
    -v [刚刚解压的doris目录]:/root/doris/ \
    apache/doris:build-env-for-1.2
  5. 切换JDK8

    1
    2
    3
    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
  6. 编译

    1
    sh build.sh --clean --be --fe --ui

三、Doris安装要求

1. 注意事项

  1. FE主要存储元数据、日志和image。通常几百MB到几GB不等。
  2. BE主要存储用户数据。磁盘空间按用户总数据量*副本数计算额外预留40%空间用作后台compaction以及中间数据存放。
  3. 一台机器可以部署多个BE实例,但是只能部署一个FE。需要三个副本数据,至少需要三台机器部署BE实例。
  4. 多个FE所在服务器时钟需要保持一致,最多允许偏差5秒
  5. 测试环境可以一个BE。实际生成环境BE实例数量决定了整体查询延迟
  6. 所有部署节点关闭SWAP
  7. FE节点至少为1个(一个Follower)。当部署一个Follower和一个Observer时,可以实现读高可用。部署三个Follower时,可以实现读写高可用(HA)。
  8. Follower必须为奇数(脑裂、选举),Observer数量随意
  9. 集群可用性要求高时,部署一个Follower和一到三个Observer。离线业务部署一个Follower和一到三个Observer。
  10. Broker通常每台机器部署一个实例即可。

2. 默认端口

实例名称 端口名称 默认端口 通讯方向 说明
BE be_port 9060 FE—>BE BE上的thrift server的端口
用于接收FE的请求
BE webserver_port 8040 BE<—>FE BE上的Http server端口
BE heartbeat_serivce_port 9050 FE—>BE BE上的心跳服务端口
用于接收来自FE的心跳
BE brpc_port 8060 FE<—>BE
BE<—>BE
BE上的brpc端口
用于BE之间的通信
FE http_port 8030 FE<—>FE
用户<—>FE
FE上的http server端口
FE rpc_port 9020 BE—>FE
FE<—>FE
FE上的thrift server端口
FE query_port 9030 用户<—>FE FE上的mysql server端口
FE edit_log_port 9010 FE<—>FE FE上bdbje之间通信用的端口
Broker broker_ipc_port 8000 BE—>Broker
FE—>Broker
Boker上的thrift server
用于接收请求