Apache Doris编译部署


一、官网

编译:http://doris.apache.org/master/zh-CN/installing/compilation.html

部署:http://doris.apache.org/master/zh-CN/installing/install-deploy.html

 

二、Docker

1 卸载旧版本

$ sudo yum remove docker \
                  docker-client \
                  docker-client-latest \
                  docker-common \
                  docker-latest \
                  docker-latest-logrotate \
                  docker-logrotate \
                  docker-engine

2 安装所需软件包

注:yum-utils 提供了 yum-config-manager ,并且 device mapper 存储驱动程序需要 device-mapper-persistent-data 和 lvm2

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

3 配置源地址

$ sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

4 安装社区版引擎

$ sudo yum -y install docker-ce docker-ce-cli containerd.io

5 启动Docker

$ sudo systemctl start docker

6 验证docker

$ sudo docker run hello-world

7 查看docker配置

$ sudo docker info

8 重启docker

$ sudo systemctl restart docker

9 搜索镜像

$ docker search [image_name:image_tag]

10 获取镜像

$ docker pull [image_name:image_tag]

11 列出本地镜像

$ docker images

12 删除镜像

$ sudo docker rmi [image_name:image_tag]

13 创建容器

$ sudo docker create -it [image_name:image_tag]  /bin/bash

14 启动容器

$ sudo docker start [container_id]

15 新建并启动容器

# 交互式启动
$ sudo docker run -it [image_name:image_tag] /bin/bash # 后台启动 $ sudo docker run -it -d [image_name:image_tag] /bin/bash

16 进入容器

$ sudo docker exec -it [image_name:image_tag] /bin/bash

17 停止容器

$ sudo docker stop [container_id]

18 删除容器

# 删除已停止的容器
$ sudo docker rm [container_id]
# 删除运行的容器
$ sudo docker rm -f [container_id]

19 查看容器

# 查看启动的容器
$ sudo docker ps

# 查看所有的容器
$ sudo docker ps -a

三 配置npm

1 配置代理

npm config set proxy [your_proxy]
npm config set https-proxy [your_proxy]

2 配置源

npm config set registry https://registry.npm.taobao.org
npm config get registry

四 配置maven

 mvn -v 查看maven目录,修改 setting.xml 

1 配置代理

<proxy>
    <!--id 代理的名称(随便设)-->
    <id>optional</id>
    <!--true 表示生效-->
    <active>true</active>
    <!--协议-->
    <protocol>http</protocol>
    <!--上网用户名及密码,如果没有,请注释或者是删除-->
    <username></username>
    <password></password>
    <!--上网使用ip及端口,即代理,这里替换成相对应的ip和端口-->
    <host>[your_proxy_host]</host>
    <port>[your_proxy_port]</port>
    <!--填写不用代理的地址,以竖线|分割多个地址,一般填写本地Maven仓库地址-->
    <nonProxyHosts>local.net|some.host.com</nonProxyHosts>
</proxy>

2 配置源

<mirror>  
    <id>nexus-aliyun</id>  
    <mirrorOf>central</mirrorOf>    
    <name>Nexus aliyun</name>  
    <url>http://maven.aliyun.com/nexus/content/groups/public</url>  
</mirror>  
# 或开源中国maven镜像
<mirror>  
  <id>nexus-osc</id>  
  <mirrorOf>*</mirrorOf>  
  <name>Nexus osc</name>  
  <url>http://maven.oschina.net/content/groups/public/</url>  
</mirror>

五 编译

1 下载镜像

docker pull apache/incubator-doris:build-env-1.2

2 下载源码

wget https://dist.apache.org/repos/dist/dev/incubator/doris/0.14/0.14.0-rc06/apache-doris-0.14.0-incubating-src.tar.gz

tar -zxvf
apache-doris-0.14.0-incubating-src.tar.gz

3 运行镜像

docker run -it -v /[local]/.m2:/[docker]/.m2 -v /[local]/apache-doris-0.14.0-incubating-src/:/[docker]/apache-doris-0.14.0-incubating-src/ apache/incubator-doris:build-env-1.2

4 编译fe\be

cd /{doris_home}/

sh build.sh

 

输出目录: {doris_home}/output 

 

 5 编译broker

cd {doris_home}/fs_brokers/apache_hdfs_broker/

sh build.sh

输出目录:

{doris_home}/fs_brokers/apache_hdfs_broker/output

六、FE部署

1 拷贝fe部署文件到指定节点

 

2 配置fe

(1)配置文件:{doris_home}/fe/conf/fe.conf

(2)修改配置项

meta_dir = ${DORIS_HOME}/doris-meta

注:①meta_dir是元数据存放目录,默认值为 ${DORIS_HOME}/doris-meta ,需要手动创建该目录。

  ②其它配置项可选,参考官网。

 

3 启动fe

sh bin/start_fe.sh --daemon

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

 

4 fe高可用

4.1 使用mysql客户端连接doris

# query_port 默认9030,对应fe/conf/fe.conf
mysql -h {fe_ip} -u root -P {query_port}

 

4.2 添加follower或observer

# 第一个节点自动为leader,edit_log_port默认9010
ALTER SYSTEM ADD FOLLOWER "follower_host:edit_log_port";

ALTER SYSTEM ADD OBSERVER "observer_host:edit_log_port";

 

4.3 配置并启动follower或observer

./bin/start_fe.sh --helper leader_host:edit_log_port --daemon

注:①Follower 和 Observer 的配置同 Leader 的配置。

  ②第一次启动时,需执行以下命令 --helpler leader_host:edit_log_port ,即,--helper 参数仅在 follower 和 observer 第一次启动时才需要

 

5 查看fe状态

show proc '/frontends'\G;

 

 

 

6 删除fe

ALTER SYSTEM DROP FOLLOWER[OBSERVER] "fe_host:edit_log_port";

 

7  FE 扩容/缩容注意事项

7.1 扩容

(1)Follower FE(包括 Leader)的数量必须为奇数,建议最多部署 3 个组成高可用(HA)模式即可。

(2)当 FE 处于高可用部署时(1个 Leader,2个 Follower),我们建议通过增加 Observer FE 来扩展 FE 的读服务能力。当然也可以继续增加 Follower FE,但几乎是不必要的。

(3)通常一个 FE 节点可以应对 10-20 台 BE 节点。建议总的 FE 节点数量在 10 个以下。而通常 3 个即可满足绝大部分需求。

(4)helper 不能指向 FE 自身,必须指向一个或多个已存在并且正常运行中的 Master/Follower FE。

 

7.2 缩容

(1)删除 Follower FE 时,确保最终剩余的 Follower(包括 Leader)节点为奇数。

 

8 停止FE

sh bin/stop_fe.sh

 

 七 部署BE

7.1 拷贝be部署文件到指定节点

7.2 配置be

7.2.1 配置文件: be/conf/be.conf。

7.2.2 修改配置项:

# data root path, separate by ';'
# you can specify the storage medium of each root path, HDD or SSD
# you can add capacity limit at the end of each root path, seperate by ','
# eg:
# storage_root_path = /home/disk1/doris.HDD,50;/home/disk2/doris.SSD,1;/home/disk2/doris
# /home/disk1/doris.HDD, capacity limit is 50GB, HDD;
# /home/disk2/doris.SSD, capacity limit is 1GB, SSD;
# /home/disk2/doris, capacity limit is disk capacity, HDD(default)

storage_root_path:数据存放目录。默认在be/storage下,需要手动创建该目录。

②多个路径之间使用英文状态的分号 ; 分隔(最后一个目录后不要加 ;)。

③可以通过路径区别存储目录的介质,HDD或SSD。

④可以添加容量限制在每个路径的末尾,通过英文状态逗号,隔开。

⑤示例1如下:storage_root_path=/home/disk1/doris.HDD,50;/home/disk2/doris.SSD,10;/home/disk2/doris

  注意:如果是SSD磁盘要在目录后面加上.SSD,HDD磁盘在目录后面加.HDD

  说明

    •   /home/disk1/doris.HDD, 50,表示存储限制为50GB, HDD;
    •   /home/disk2/doris.SSD 10, 存储限制为10GB,SSD;
    •   /home/disk2/doris,存储限制为磁盘最大容量,默认为HDD

⑥示例2如下:storage_root_path=/home/disk1/doris,medium:hdd,capacity:50;/home/disk2/doris,medium:ssd,capacity:50

  注意:不论HHD磁盘目录还是SSD磁盘目录,都无需添加后缀,storage_root_path参数里指定medium即可 

  说明

    •   /home/disk1/doris,medium:hdd,capacity:10,表示存储限制为10GB, HHD;
    •   /home/disk2/doris,medium:ssd,capacity:50,表示存储限制为50GB, SSD;  

7.2.3 在 FE 中添加所有 BE 节点

# heartbeat_service_port默认9050,对应be/conf/be.conf
ALTER SYSTEM ADD BACKEND "be_host:be_heartbeat_service_port";

7.3 启动be

sh bin/start_be.sh --daemon

注:日志默认存放在 be/log/ 目录下。如启动失败,可以通过查看 be/log/be.log 或者 be/log/be.out 查看错误信息。

7.4 查看be状态

SHOW PROC '/backends'\G;

 

 

7.5 be扩容

ALTER SYSTEM DROP BACKEND "be_host:be_heartbeat_service_port";

BE 扩容注意事项:

①BE 扩容后,Doris 会自动根据负载情况,进行数据均衡,期间不影响使用。

7.6 be缩容

ALTER SYSTEM DROP BACKEND "be_host:be_heartbeat_service_port";

# 或者

ALTER SYSTEM DECOMMISSION BACKEND "be_host:be_heartbeat_service_port";

注意:DROP BACKEND 会直接删除该 BE,并且其上的数据将不能再恢复!!!所以强烈不推荐使用 DROP BACKEND 这种方式删除 BE 节点。使用DECOMMISSION语句时,会有对应的防误操作提示。

7.7 DECOMMISSION 命令说明

(1)该命令用于安全删除 BE 节点。命令下发后,Doris 会尝试将该 BE 上的数据向其他 BE 节点迁移,当所有数据都迁移完成后,Doris 会自动删除该节点。

(2)该命令是一个异步操作。执行后,可以通过 SHOW PROC '/backends'; 看到该 BE 节点的 isDecommission 状态为 true。表示该节点正在进行下线。

(3)该命令不一定执行成功。比如剩余 BE 存储空间不足以容纳下线 BE 上的数据,或者剩余机器数量不满足最小副本数时,该命令都无法完成,并且 BE 会一直处于 isDecommission 为 true 的状态。

(4)DECOMMISSION 的进度,可以通过 SHOW PROC '/backends'; 中的 TabletNum 查看,如果正在进行,TabletNum 将不断减少。

(5)该操作可以通过CANCEL DEMMISSION命令取消。取消后,该 BE 上的数据将维持当前剩余的数据量。后续 Doris 重新进行负载均衡

CANCEL DECOMMISSION BACKEND "be_host:be_heartbeat_service_port";


八 部署Broker(可选)

8.1 拷贝broker文件到指定节点

fs_brokers/apache_hdfs_broker/output/apache_hdfs_broker

8.2 配置broker

8.2.1 配置文件

apache_hdfs_broker/conf/apache_hdfs_broker.conf

8.2.2 配置项

# the thrift rpc port
broker_ipc_port=8000

注:可使用默认值8000,不做修改

8.3 启动broker

sh bin/start_broker.sh --daemon

8.4 添加broker

ALTER SYSTEM ADD BROKER broker_name "broker1_host:broker1_ipc_port","broker2_host:broker2_ipc_port",...;

8.5 查看broker状态

SHOW PROC "/brokers"\G;

 

 8.6 broker扩容

# ipc_port默认8000,对应/apache_hdfs_broker/conf/apache_hdfs_broker.conf
ALTER SYSTEM ADD BROKER broker_name "broker_host:broker_ipc_port";

8.7 broker缩容

ALTER SYSTEM DROP BROKER broker_name "broker_host:broker_ipc_port";

ALTER SYSTEM DROP ALL BROKER broker_name;

 

九、Apache Doris简单使用

9.1 新建数据库

CREATE DATABASE `test`;

9.2 切换数据库

use `test`;

9.3 新建数据表

CREATE TABLE `student` (
  `id` int(11) NULL COMMENT "",
  `name` varchar(50) NULL COMMENT "",
  `age` int(11) NULL COMMENT "",
  `count` bigint(20) SUM NULL DEFAULT "0" COMMENT ""
) ENGINE=OLAP
AGGREGATE KEY(`id`, `name`, `age`)
COMMENT "OLAP"
DISTRIBUTED BY HASH(`id`) BUCKETS 10
PROPERTIES (
"replication_num" = "1",
"in_memory" = "false",
"storage_format" = "V2"
);

9.4 insert into插入数据

insert into student values(1,'stephen',18,2);

9.5 stream load插入数据

示例数据

3,stephen,18,33
6,lebron,28,44
4,stephen,18,33
5,stephen,18,33
1,stephen,18,33
2,lebron,28,44

 

curl --location-trusted -u root -T /app/student.csv -H "label:123" -H "column_separator:," http://{fe_host}:{fe_http_port}/api/test/student/_stream_load

9.6 查询数据

 select * from student;

 

 

十 后记

1. 该文档详细记录了Apache Doris测试环境的编译、部署、简单使用,所有配置都使用官网默认配置。

2. 更多优化配置、高级使用请参考Apache Doris官网。

3. 如有用欢迎转载,请注明转载出处。

 

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM