Doris实战笔记

Doris实战笔记

本文基于Doris1.2.4.1版本部署,其他版本不同之处还请见谅
注意:在Doris官网下载时,记得查询自己的服务器cpu核心架构,下载合适的架构才能运行

Doris安装部署

Doris在安装部署时,可以使用官方提供的前后端和依赖包进行安装,同时可以自行编译,此处介绍使用官方脚本:

配置Fe

没什么难度,按照[Doris官方教程](快速开始 - Apache Doris)启动即可,可能个别机器会出现启动失败的问题,建议去github的issue中查看

配置Be

我们进入到 apache-doris-x.x.x/be 目录

cd apache-doris-x.x.x/be

修改 BE 配置文件 conf/be.conf ,这里我们主要修改两个参数:priority_networksstorage_root ,如果你需要更多优化配置,请参考 BE 参数配置说明,进行调整。

  1. 添加 priority_networks 参数
priority_networks=172.23.16.0/24

注意:

这个参数我们在安装的时候是必须要配置的,特别是当一台机器拥有多个IP地址的时候,我们要为 BE 指定唯一的IP地址。

Be配置时必须注意一下,这个地址后面绝对不能加分号,否则在启动be的start.sh时会以下下错误:

(core dumped) ${LIMIT:+${LIMIT}} "${DORIS_HOME}/lib/doris_be" "$@" 2>&1 < /d
  1. 配置 BE 数据存储目录
storage_root_path=/path/your/data_dir

注意:

  1. 默认目录在 BE安装目录的 storage 目录下。
  2. BE 配置的存储目录必须先创建好
配置 JAVA_HOME 环境变量

注意:

  • 由于从 1.2 版本开始支持 Java UDF 函数,BE 依赖于 Java 环境。所以要预先配置 JAVA_HOME 环境变量,也可以在 start_be.sh 启动脚本第一行添加 export JAVA_HOME=your_java_home_path 来添加环境变量。

  • 安装 Java UDF 函数,因为从1.2 版本开始支持Java UDF 函数,需要从官网下载 Java UDF 函数的 JAR 包(所谓的官网就在下载路径中的dependencies的tar包中,名称是:java-udf-jar-with-dependencies.jar,一直没找到,此处来自本人的咒骂)放到 BE 的 lib 目录下,否则可能会启动失败,如下报错:

    Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/doris/udf/JniUtil
    Caused by: java.lang.ClassNotFoundException: org.apache.doris.udf.JniUtil
            at java.net.URLClassLoader.findClass(URLClassLoader.java:387)
            at java.lang.ClassLoader.loadClass(ClassLoader.java:418)
            at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:355)
            at java.lang.ClassLoader.loadClass(ClassLoader.java:351)
    WARNING: Logging before InitGoogleLogging() is written to STDERR
    W0530 12:47:01.236318 3087945 doris_main.cpp:382] Failed to initialize JNI: [INTERNAL_ERROR]Failed to find JniUtil class.
    
启动 BE

在 BE 安装目录下执行下面的命令,来完成 BE 的启动。

./bin/start_be.sh --daemon
添加 BE 节点到集群

在此之前建议将mysql链接到全局命令,否则每次需要去mysql路径下执行,很麻烦:

ln -sf xxx命令路径 /usr/bin/xxx

通过MySQL 客户端连接到 FE 之后执行下面的 SQL,将 BE 添加到集群中

ALTER SYSTEM ADD BACKEND "be_host_ip:heartbeat_service_port";
  1. be_host_ip:这里是你 BE 的 IP 地址,和你在 be.conf 里的 priority_networks 匹配
  2. heartbeat_service_port:这里是你 BE 的心跳上报端口,和你在 be.conf 里的 heartbeat_service_port 匹配,默认是 9050
查看 BE 运行状态

你可以在 MySQL 命令行下执行下面的命令查看 BE 的运行状态。

SHOW BACKENDS\G

示例:

mysql> SHOW BACKENDS\G
*************************** 1. row ***************************
            BackendId: 10003
              Cluster: default_cluster
                   IP: 172.21.32.5
        HeartbeatPort: 9050
               BePort: 9060
             HttpPort: 8040
             BrpcPort: 8060
        LastStartTime: 2022-08-16 15:31:37
        LastHeartbeat: 2022-08-17 13:33:17
                Alive: true
 SystemDecommissioned: false
ClusterDecommissioned: false
            TabletNum: 170
     DataUsedCapacity: 985.787 KB
        AvailCapacity: 782.729 GB
        TotalCapacity: 984.180 GB
              UsedPct: 20.47 %
       MaxDiskUsedPct: 20.47 %
                  Tag: {"location" : "default"}
               ErrMsg:
              Version: 1.1.2-rc03-ca55ac2
               Status: {"lastSuccessReportTabletsTime":"2022-08-17 13:33:05","lastStreamLoadTime":-1,"isQueryDisabled":false,"isLoadDisabled":false}
1 row in set (0.01 sec)
  1. Alive : true表示节点运行正常
停止 BE 节点

Doris BE 的停止可以通过下面的命令完成

./bin/stop_be.sh

Docker运行Doris

前置条件

首先按照官方的安装,进行初始化,类似我这样的小白可能会有以下疑问:

  • 1、官方分为Docker run和Docker compose方式,二选一即可;
  • 2、Docker-compose安装
    安装方法地址:https://cloud.tencent.com/developer/article/1855291

安装完成后,使用本服务器的对外地址访问:8030端口即可看到相关内容

Kubernetes 部署

等待学习后,更新;

Docker源码编译

使用现成的镜像
  1. 下载 Docker 镜像
docker pull apache/doris:build-env-ldb-toolchain-latest`
  1. 运行镜像(不推荐)
docker run -it apache/doris:build-env-ldb-toolchain-latest

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

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

docker run -it 
-v /your/local/.m2:/root/.m2 
-v /your/local/doris-DORIS-x.x.x-release/:/root/doris-DORIS-x.x.x-release/ apache/doris:build-env-ldb-toolchain-latest

解释(以上地址自行配置):

  • 第一个**-v**,本地服务器maven的.m2地址,** : **后为docker内部地址

  • 第二个**-v**,本地源码的地址,,** : **后为docker内部地址

  • apache/doris:build-env-ldb-toolchain-latest,为docker的TAG名称

以下是我的配置:

docker run -it -v /root/.m2:/root/.m2 -v /home/doris/doris/:/root/doris/ apache/doris:build-env-ldb-toolchain-latest

3、编译 Doris

先通过以下命令查看编译机器是否支持avx2指令集

cat /proc/cpuinfo | grep avx2

不支持则使用以下命令进行编译

$ USE_AVX2=0  sh build.sh

如果支持,可不加 USE_AVX2=0 ,直接进行编译

$ sh build.sh

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

注意:

如果你是第一次使用 build-env-for-0.15.0 或之后的版本,第一次编译的时候要使用如下命令:

sh build.sh --clean --be --fe

这是因为 build-env-for-0.15.0 版本镜像升级了 thrift(0.9 -> 0.13),需要通过 --clean 命令强制使用新版本的 thrift 生成代码文件,否则会出现不兼容的代码。

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

遇见问题

1、运行build.sh脚本中的github包无法下载

  • 使用加速方式下载好,随后修改build.sh文件(注释以下下函数调用):

    #update_submodule "be/src/apache-orc" "apache-orc" "https://github.com/apache/doris-thirdparty/archive/refs/heads/orc.tar.gz"
    #update_submodule "be/src/clucene" "clucene" "https://github.com/apache/doris-thirdparty/archive/refs/heads/clucene.tar.gz"
    
    tar -zxvf doris-thirdparty-orc.tar.gz -C /home/doris/doris/be/src/apache-orc  --strip-components=1
    
    rm doris-thirdparty-orc.tar.gz
    
    tar -zxvf doris-thirdparty-clucene.tar.gz -C /home/doris/doris/be/src/clucene  --strip-components=1
    
    rm doris-thirdparty-clucene.tar.gz
    

本人在编译时,出现编译前端报错的问题,暂时未解决,查找方案后更新;

你可能感兴趣的:(docker,apache)