【无标题】

Doris简介

Apache Doris(原百度 Palo)是一个基于 MPP 架构的高性能、实时的分析型数据库,由百度在 2017 年开源,2018 年 8月 进入 Apache 孵化器。

产品特性

  • MPP分布式执行框架:在 MPP 执行框架中,一条查询请求会被拆分成多个物理计算单元,在多机并行执行。
  • 全面向量化执行引擎:全面向量化引擎按照列式的方式组织和处理数据,充分发挥了CPU的处理能力。
  • CBO 优化器:基于代价的优化器CBO(Cost Based Optimizer),StarRocks能比同类产品更好地支持多表关联查询,特别是复杂的多表关联查询,让全面向量化引擎能够发挥极致的性能。
  • 可实时更新的列式存储引擎:在列式存储引擎中,数据以按列的方式进行存储;支持秒级的导入延迟,提供准实时的服务能力。
  • 智能的物化视图:支持用户使用物化视图实现查询加速。不同于一些同类产品的物化视图需要异步和原表做数据同步,StarRocks的物化视图可以自动根据原始表更新数据。

环境准备

安装Doris其实很方便,参考Doris官网的快速开始和安装部署基本上就可以顺利完成,我这里主要补充了一些安装过程中,自己参考的实用命令。

软硬件选择

  • 软件版本:Doris 1.1
  • 服务器配置:
官方建议:通常建议 10 ~ 100 台左右的机器,来充分发挥 Doris 的性能(其中 3 台部署 FE(HA),剩余的部署 BE)在最少4台机器(一台 FE,三台 BE,其中一台 BE 混部一个 Observer FE 提供元数据备份),以及较低配置的情况下,依然可以平稳的运行 Doris。

考虑到只是做替换尝试,我们参考了官网的开发测试环境配置。

安装需求

  1. Linux 操作系统版本需求​
# 查看CentOs版本(>=7.1) 
cat /etc/redhat-release

1)设置系统最大打开文件句柄数​

vi /etc/security/limits.conf 
* soft nofile 65536
* hard nofile 65536

2)时钟同步(参考指南)​

Doris 的元数据要求时间精度要小于5000ms,所以所有集群所有机器要进行时钟同步,避免因为时钟问题引发的元数据不一致导致服务出现异常。

vi /etc/chrony.conf

3)关闭交换分区(swap)​

Linux交换分区会给Doris带来很严重的性能问题,需要在安装之前禁用交换分区。

# 使用不重启的方式,禁用swap,立即生效
sudo swap -a
sudo free -m

4)Liunx文件系统​

这里我们推荐使用ext4文件系统,在安装操作系统的时候,请选择ext4文件系统。

# 查看文件系统 xfs(Cent OS之后)
df -hT

2. 软件需求

# 查看GCC版本(>=4.8.2) 
gcc -v
# 安装并查看JAVA版本(>=1.8)
rpm -qa | grep java
yum list java*
yum install java-1.8.0-openjdk.x86_64 -y
java - version

下载
wget https://repo.huaweicloud.com/java/jdk/8u201-b09/jdk-8u201-linux-x64.tar.gz

注:卸载OpenJDK

卸载命令:rpm -e –nodeps 名称    或者    yum remove *openjdk*

之后再次输入命令 查看卸载情况:rpm -qa | grep java  或者  java -version

添加JAVA环境变量

export JAVA_HOME=/opt/jdk1.8.0_191
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib/dt/jar:$JAVA_HOME/lib/tools.jar

集群部署

因为我们采用集群部署,所以每台服务器都需要上传解压。

https://mirrors.tuna.tsinghua.edu.cn/apache/doris/1.2/1.2.4-rc01/

【无标题】_第1张图片

FE部署

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

# 1. 创建目录
mkdir -p /opt/software
mkdir -p fe /home/doris/
cd /opt/software
# 2. 解压压缩包
tar -xvf apache-doris-1.1.0-bin-x86-jdk8.tar
cd apache-doris-1.1.0-bin-x86-jdk8/
# 3. 移动fe文件夹至/home/doris/目录下去
mv fe /home/doris/

2)配置FE

# 配置 FE-Config
vi fe/conf/fe.conf
# 取消 priority_networks 的注释,修改参数
# 例如当前节点的 IP 地址为 10.10.2.21,则需要更改为 10.10.2.0/24 填入
# 这里需要填入的是 IP 子网网段地址,并非 IP 地址
priority_networks = 10.10.2.0/24
# 保存退出

3)启动 FE​

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

./bin/start_fe.sh --daemon

查看 FE 运行状态​

curl http://127.0.0.1:8030/api/bootstrap

这里 IP 和 端口分别是 FE 的 IP 和 http_port(默认8030),如果是在 FE 节点执行,直接运行上面的命令即可。如果返回结果中带有 "msg":"success" 字样,则说明启动成功。

4)连接 FE

通过下载免安装的 MySQL 客户端(mysql-client)来连接 Doris FE。

wget https://cdn.mysql.com/archives/mysql-8.0/mysql-community-common-8.0.25-1.el7.x86_64.rpm
wget https://cdn.mysql.com/archives/mysql-8.0/mysql-community-client-plugins-8.0.25-1.el7.x86_64.rpm
wget https://cdn.mysql.com/archives/mysql-8.0/mysql-community-libs-8.0.25-1.el7.x86_64.rpm
wget https://cdn.mysql.com/archives/mysql-8.0/mysql-community-client-8.0.25-1.el7.x86_64.rpm

再次将这些包放在一个路径下面安装

rpm -Uvh *.rpm --nodeps --force

MySQL客户端安装完成以后开始配置BE节点

在FE节点运行命令:

mysql -h fe_host -P query_port -uroot
fe_host为FE节点

query_port为在FE节点conf/fe.conf中设置的端口号

mysql -h 192.168.18.130 -P 9030 -uroot
 

# 解压刚才下载的 MySQL 客户端,在 bin/ 目录下可以找到 mysql 命令行工具。然后执行下面的命令连接 Doris。
mysql -uroot -P9030 -h127.0.0.1

查看 FE 运行状态(如果 IsMaster、Join 和 Alive 三列均为true,则表示节点正常)

SHOW FRONTENDS\G;

5)停止FE

在 FE 安装目录下执行下面的命令,来完成 FE 的停止。

./bin/stop_fe.sh

BE部署

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

# 1. 创建目录
mkdir -p /opt/software
mkdir -p be /home/doris/
cd /opt/software
# 2. 解压压缩包
tar -xvf apache-doris-1.1.0-bin-x86-jdk8.tar
cd apache-doris-1.1.0-bin-x86-jdk8/
# 3. 移动be文件夹至/home/doris/目录下去
mv be /home/doris/

参数配置

BE 节点需要设置 2 个参数

[root@vm31 ~]# sysctl -w vm.max_map_count=2000000
vm.max_map_count = 2000000
[root@vm31 ~]# ulimit -n 65536
[root@vm31 ~]# ulimit -n
65536

下载 Doris 软件包

从页面 https://doris.apache.org/zh-CN/download/ 选择版本 1.2.3 下载,会跳转到清华的软件源:

【无标题】_第2张图片

wget --no-check-certificate https://mirrors.tuna.tsinghua.edu.cn/apache/doris/1.2/1.2.3-rc02/apache-doris-dependencies-1.2.3-bin-x86_64.tar.xz
wget --no-check-certificate https://mirrors.tuna.tsinghua.edu.cn/apache/doris/1.2/1.2.3-rc02/apache-doris-be-1.2.3-bin-x86_64.tar.xz
wget --no-check-certificate https://mirrors.tuna.tsinghua.edu.cn/apache/doris/1.2/1.2.3-rc02/apache-doris-fe-1.2.3-bin-x86_64.tar.xz

VM31 按照 apache-doris-fe-1.2.3-bin-x86_64.tar.xz

VM32 安装 apache-doris-be-1.2.3-bin-x86_64.tar.xz

需要把 apache-doris-dependencies-1.2.3-bin-x86_64.tar.xz 解压,拷贝 java-udf-jar-with-dependencies.jar 到 BE 安装目录的 lib 目录里。否则 BE 启动会报错:

Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/doris/udf/JniUtil
Caused by: java.lang.ClassNotFoundException: org.apache.doris.udf.JniUtil
W0402 12:21:14.746762   501 doris_main.cpp:382] Failed to initialize JNI: [INTERNAL_ERROR]Failed to find JniUtil class.
Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/doris/udf/JniUtil
Caused by: java.lang.ClassNotFoundException: org.apache.doris.udf.JniUtil
W0402 12:44:25.101190  2127 doris_main.cpp:382] Failed to initialize JNI: [INTERNAL_ERROR]Failed to find JniUtil class.

2)配置BE

# 配置 BE-Config
vi be/conf/be.conf
# 取消 priority_networks 的注释,修改参数
# 例如当前节点的 IP 地址为 10.10.2.21,则需要更改为 10.10.2.0/24 填入
# 这里需要填入的是 IP 子网网段地址,并非 IP 地址
priority_networks = 10.10.2.0/24
# 保存退出

3)启动 BE​

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

./bin/start_be.sh --daemon

查看 BE 运行状态​

curl http://127.0.0.1:8040/api/health

如果返回: {"status": "OK","msg": "To Be Added"} 则表示启动成功,其余情况,则可能存在问题。

4)注册BE

通过免安装的 MySQL 客户端连接 Doris FE,执行以下命令来添加每一个 BE:

mysql -h 192.168.18.130 -P 9030 -uroot

set password = password('123456');

ALTER SYSTEM ADD BACKEND "BE_IP:9050";
ALTER SYSTEM ADD BACKEND "BE_IP:9050";
ALTER SYSTEM ADD BACKEND "BE_IP:9050";

【无标题】_第3张图片

 

查看 BE 运行状态

SHOW PROC '/backends'\G;

【无标题】_第4张图片

5)停止BE

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

./bin/stop_be.sh

注:分别发到另外几台机器上

原生安装部署方式

FE 主要负责元数据管理、集群管理、用户请求的接入和查询计划的解析等工作。
BE 主要负责数据存储、查询计划的执行等工作。

1、提前安装的软件

yum -y install centos-release-scl
yum -y install devtoolset-8-gcc devtoolset-8-gcc-c++ devtoolset-8-binutils
scl enable devtoolset-8 bash  #启动gcc8

通过scl命令启动gcc,这个只是暂时的,当你的shell关闭后或者重启就会恢复原来的版本,要想一直使用升级后的版本可以使用如下命令

echo "source /opt/rh/devtoolset-8/enable" >>/etc/profile
或者
echo "source /opt/rh/devtoolset-8/enable" >> /etc/bashrc
source /etc/bashrc 

2、下载及安装

第一步:设置系统最大打开文件句柄数

修改 /etc/security/limits.conf, 执行命令:

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

第二步:下载官网提供的二进制包

下载地址: https://doris.apache.org/download/
[图片上传失败...(image-9350b5-1678433123646)]

tar xvJf apache-doris-fe-1.2.1-bin-x86_64.tar.xz   #解压fe
tar xvJf apache-doris-be-1.2.1-bin-x86_64.tar.xz
tar xvJf apache-doris-dependencies-1.2.1-bin-x86_64.tar.xz

第三步:配置操作

mv apache-doris-be-1.2.1-bin-x86_64 be
mv apache-doris-fe-1.2.1-bin-x86_64 fe
mv apache-doris-dependencies-1.2.1-bin-x86_64 dependencies

将java_udf的jar包复制到be/lib目录下

cp /data8/doris_syw/dependencies/java-udf-jar-with-dependencies.jar /data8/doris_syw/be/lib/

设置vm.max_map_count

sysctl -w vm.max_map_count=2000000

第四步:添加环境变量

vi /etc/profile   #打开配置文件

#DORIS_HOME
export DORIS_HOME=/data8/doris_syw/fe/
export DORIS_HOME=/data8/doris_syw/be/
export PATH=$PATH:$DORIS_HOME/bin

source /etc/profile   #保存配置文件

第五步:配置FE

[root@rc fe]# pwd
/data8/doris_syw/fe    #下载二进制包解压后的存放目录

【第一步】进入到fe
[root@rc fe]# ll
total 160
drwxr-xr-x. 2 1103 1103  4096 Jan  9 17:14 bin
drwxr-xr-x. 2 1103 1103  4096 Jan  9 17:09 conf    #fe的配置文件存放在此里面
drwxr-xr-x. 4 1103 1103  4096 Jan  9 17:09 doris-meta
drwxr-xr-x. 2 1103 1103 32768 Dec 31 21:50 lib
-rw-r--r--. 1 1103 1103 87050 Dec 31 21:50 LICENSE-dist.txt
drwxr-xr-x. 2 1103 1103  4096 Dec 31 21:50 licenses
drwxr-xr-x. 2 1103 1103  4096 Jan  9 17:09 log
-rw-r--r--. 1 1103 1103  1948 Dec 31 21:50 NOTICE.txt
drwxr-xr-x  2 root root  4096 Jan  9 17:09 plugins
drwxr-xr-x. 2 1103 1103  4096 Dec 31 21:50 spark-dpp
drwxr-xr-x  5 root root  4096 Jan  9 17:09 temp_dir
drwxr-xr-x. 3 1103 1103  4096 Dec 31 21:50 webroot

【第二步】找到fe.conf
[root@rc fe]# cd conf/
[root@rc conf]# ll
total 16
-rw-r--r--  1 1103 1103 2922 Jan  9 17:06 fe.conf
-rw-r--r--. 1 1103 1103  956 Dec 31 21:50 hdfs-site.xml
-rw-r--r--. 1 1103 1103 2480 Dec 31 21:50 ldap.conf
-rw-r--r--  1 root root 2920 Jan  9 17:09 log4j2-spring.xml

【第三步】找到如下的内容,并释放掉注释
[root@rc conf]# vim fe.conf
#-----修改配置文件内容如下
meta_dir = ${DORIS_HOME}/doris-meta
priority_networks=192.168.30.118/24   #修改为自己电脑的IP

启动fe

#1、进入到bin目录下
cd /data8/doris_syw/fe/bin   
#2、启动fe
./start_fe.sh --daemon

[图片上传失败...(image-bf4cf9-1678433123646)][图片上传失败...(image-ae83e9-1678433123646)]

第六步:配置BE

cd /data8/doris_syw/be

#在be目录下,创建data存放目录文件
mkdir /data8/doris_syw/be/data/data1
mkdir /data8/doris_syw/be/data/data2
mkdir /data8/doris_syw/be/data/data3

【第一步】进入/data8/doris_syw/be/conf/fe.conf   #进入存放be的目录
-rw-r--r-- 1 1103 1103  819 Dec 31 21:50 asan_suppr.conf
-rw-r--r-- 1 1103 1103 2735 Jan  9 17:36 be.conf
-rw-r--r-- 1 1103 1103  956 Dec 31 21:50 hdfs-site.xml
-rw-r--r-- 1 1103 1103 1529 Dec 31 21:50 odbcinst.ini

【第二步】找到如下的内容,并释放掉注释
[root@rc conf]# vim be.conf
#-----修改配置文件内容如下
#配置文件中指定数据存放路径:
storage_root_path=/data8/doris_syw/be/data/data1;/data8/doris_syw/be/data/data2;/data8/doris_syw/be/data/data3
#修改绑定 ip(每台机器修改成自己的 ip)
priority_networks=192.168.30.118/24
#更快的导入速度,默认为2
flush_thread_num_per_store=5
#修改 BE 的配置文件 be.conf 添加以下配置项,重启BE,以获得更好的查询性能
enable_storage_vectorization=true
enable_low_cardinality_optimize=true

【第四步】将dependencies文件夹下的java-udf-jar-with-dependencies.jar移动到BE 的 lib 目录下
[root@rc conf]# cp /data8/doris_syw/dependencies/java-udf-jar-with-dependencies.jar ./

第七步:配置集群

添加BE到FE

#启动be
start_be.sh --daemon  #后台启动be
#./bin/start_be.sh    #建议第一次时用此方法运行,便于查看错误

#mysql连接fe
mysql -h192.168.30.118 -P9030 -uroot

#无密码,确认即可
#在客户端设置root密码
SET PASSWORD FOR 'root' = PASSWORD('Aa123456');

#退出再次登录即可
mysql -h192.168.30.118 -P9030 -uroot -pAa123456

#添加 BE
mysql> ALTER SYSTEM ADD BACKEND "192.168.30.118:9050";  
mysql> ALTER SYSTEM ADD BACKEND "192.168.30.117:9050";
mysql> ALTER SYSTEM ADD BACKEND "192.168.30.116:9050";
mysql> ALTER SYSTEM ADD BACKEND "192.168.30.115:9050";
mysql> ALTER SYSTEM ADD BACKEND "192.168.30.114:9050";

登录Doris

mysql -h192.168.30.118 -P9030 -uroot -pAa123456

查看BE状态

SHOW PROC '/backends' \G;   #注alive要为true   

3、Doris常用操作

启动与停止服务FE/BE

#启动
sh  /data8/doris_syw/fe/bin/start_fe.sh --daemo
sh  /data8/doris_syw/be/bin/start_be.sh --daemon

#停止
sh  /data8/doris_syw/fe/bin/stop_fe.sh
sh  /data8/doris_syw/be/bin/stop_be.sh

删除BE

ALTER SYSTEM DROPP BACKEND "hostname:9050";

查看FE的状态

SHOW PROC '/frontends';  #IsMaster、Join 和 Alive 三列均为true,则表示节点正常

4、报错解决

启动be报错

[root@rc bin]# ./start_be.sh 
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:381)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
        at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:349)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
WARNING: Logging before InitGoogleLogging() is written to STDERR
W0109 18:27:14.798044 99676 doris_main.cpp:382] Failed to initialize JNI: Failed to find JniUtil class.

解决方法:报错的原因:安装Java UDF 函数因为从1.2 版本开始支持Java UDF 函数,需要从官网下载 Java UDF 函数的 JAR 包放到 BE 的 lib 目录下,否则可能会启动失败。

5、部署结果

[1] 如下是BE的运行状态

[2] 如下是FE的运行状态

参考文章:
https://blog.csdn.net/qq_41187116/article/details/125813989
官网安装文档(推荐):https://doris.apache.org/zh-CN/docs/dev/get-starting/
doris官方的tpch建表与查询测试:https://github.com/apache/doris/tree/master/tools/tpch-tools

Docker方式安装部署Doris

#安装maven
apt install maven

# install autoconf-2.69
wget http://ftp.gnu.org/gnu/autoconf/autoconf-2.69.tar.gz && \
    tar zxf autoconf-2.69.tar.gz && \
    cd autoconf-2.69 && \
    ./configure && \
    make && \
    make install
    
# install bison-3.0.4
wget http://ftp.gnu.org/gnu/bison/bison-3.0.4.tar.gz && \
    tar xzf bison-3.0.4.tar.gz && \
    cd bison-3.0.4 && \
    ./configure && \
    make && \
    make install

拉取 Doris 的镜像

docker pull apachedoris/doris-dev:build-env-1.2

docker run -it --name doris-fe -v /home/incubator-doris/:/var/local/incubator-doris/  --network host --privileged apachedoris/doris-dev:build-env-1.2

下载doris的源码
git地址:https://github.com/apache/incubator-doris

git clone https://github.com/apache/incubator-doris.git

已经下载好的incubator-doris,直接上传到服务器中去使用
incubator-doris-master.zip

apt install unzip

------安装介绍

https://cloud.baidu.com/doc/DORIS/s/dkn5p8qbc

在fe下新建palo-meta文件夹,目录为:/root/doris/incubator-doris-master/fe/palo-meta
进入/root/doris/incubator-doris-master/conf目录
1) Fe.conf
meta_dir =/root/doris/incubator-doris-master/fe/palo-meta
http_port = 8030
rpc_port = 9020
query_port = 9030
edit_log_port = 9010
2) be.conf
be_port = 9060
be_rpc_port = 9070
webserver_port = 18040
heartbeat_service_port = 9050
brpc_port = 18060
storage_root_path =/root/doris/data
---------再一次的重新安装
1、安装java11
2、安装cmake
2、安装doris
docker pull apache/incubator-doris:build-env
docker run -it --name build-env-1.2 -v /root/.m2:/root/.m2 -v /root/doris/:/root/doris/ apache/incubator-doris:build-env-1.2
wget https://github.com/apache/incubator-doris/archive/refs/tags/1.0.0-rc03.tar.gz
tar -zxvf 1.0.0-rc03.tar.gz
mv incubator-doris-1.0.0-rc03/ incubator-doris

-------再次安装
1.1 修改镜像地址为国内地址

vim /etc/docker/daemon.json

{
  "registry-mirrors": [
    "https://dockerhub.azk8s.cn",
    "https://hub-mirror.c.163.com"
  ]
}

1.2 重启进程

 systemctl daemon-reload
 systemctl restart docker**

2、下载代码

git clone https://github.com/apache/incubator-doris.git

3、docker拉取编译环境镜像
注意,你若下载的是最新的源码,那也需要下载最近的镜像
doris-dev镜像地址:https://hub.docker.com/r/apachedoris/doris-dev/tags
[图片上传失败...(image-d5eb2b-1678433123646)]

docker pull apachedoris/doris-dev:build-env-1.3

4、进入docker容器

docker run -it --name build-env-1.3 -v /root/doris/incubator-doris/:/root/doris/incubator-doris/ apachedoris/doris-dev:build-env-1.3

注意参数的替换:
/opt/package/incubator-doris/ : 为本地源代码地址
/root/incubator-doris : 挂载的镜像内地址
5、开始编译

cd /root/incubator-doris
sh build.sh --be --clean
 
 此时会报错:
 build.sh: line 41: /var/local/thirdparty/build-thirdparty.sh: No such file or directory
 
 执行:cp thirdparty/*.sh //var/local/thirdparty (上述错误解决)

6、开始漫长的编译
此过程需要等待很久,根据网速来定
如果确定本地网络不慢的话,但是下载只有几kb,可以结束掉build 命令,会重新找新的下载地址下载继续,速度会提高

你可能感兴趣的:(DorisDB,数据库)