Apache Doris 2.0.2 安装步骤 Centos8

Linux 操作系统版本需求
Linux 系统 版本 当前系统版本
CentOS 7.1 及以上 CentOS8
Ubuntu 16.04 及以上 -
软件需求
软件 版本 当前版本
Java 1.8 1.8.0_391
GCC 4.8.2 及以上 gcc (GCC) 8.5.0 20210514 (Red Hat 8.5.0-4)

1、查看操作系统版本

方法 1:使用命令行

  1. 打开终端或命令行窗口。
  2. 运行以下命令来查看 CentOS 版本信息:
cat /etc/centos-release

如果你看到输出中含有 CentOS 7 或 CentOS 8 的版本号,则可以确定当前系统的 CentOS 版本。

方法 2:使用运行版本命令

  1. 同样需要打开终端或命令行窗口。
  2. 运行以下命令来检查 CentOS 系统中 /etc/os-release 文件的内容:
cat /etc/os-release

这个命令会显示包含 CentOS 版本信息的输出。在 VERSION_ID 一行中,你将能够看到版本号,从而确定是 CentOS 7 还是 CentOS 8。

无论使用哪种方法,你都将能够确定当前系统运行的是 CentOS 7 还是 CentOS 8。

2、查看GCC版本

要查看 CentOS 8 上安装的 GCC 版本,你可以按照以下方法进行操作:

  1. 打开终端或命令行窗口。
  2. 运行以下命令来查看 GCC 版本信息:
gcc --version

该命令将输出 GCC 的版本信息,包括主版本号、次版本号等详细信息。

注意:如果你的系统中未安装 GCC,需要先通过以下命令安装:

sudo dnf install gcc

使用上述步骤,你将能够在 CentOS 8 上查看到安装的 GCC 版本。

3、集群做时钟同步

在 CentOS 8 上,你可以使用 chronyd 服务来进行时钟同步。以下是设置时钟同步的步骤:

  1. 确保 chronyd 服务已安装:

    sudo dnf install chrony
    

    如果你已安装了 chrony,则会显示已安装的版本号。

  2. 编辑 /etc/chrony.conf 文件:

    sudo vim /etc/chrony.conf
    

    打开文件后,你可以根据需要进行配置更改。

  3. 添加或更改时间服务器: 在 /etc/chrony.conf 文件中,你可以找到一些种类为 server 的行。你可以编辑这些行来添加或更改时间服务器。通常,你可以在互联网上找到公共的时间服务器。例如,你可以在 chrony.conf 文件中添加以下行:

    ## 注释掉这个一行
    # pool 2.centos.pool.ntp.org iburst
    # FE 同步授时中心cn.ntp.org.cn
    server cn.ntp.org.cn iburst
    
    # BE 同步FE的时间
    # server 10.10.8.156 iburst
    
    

    请将 time.example.com 替换为你选择的时间服务器。例如:cn.ntp.org.cn

  4. 启动并启用 chronyd 服务:

    sudo systemctl start chronyd
    sudo systemctl enable chronyd
    
  5. 检查时钟同步状态:

    chronyc sources
    

    这将显示与 chronyd 同步的时间服务器列表以及同步状态。

通过按照上述步骤设置 chronyd 服务,你将在 CentOS 8 上实现时钟同步。如果你修改了 chrony.conf 配置文件,请确保重新启动 chronyd 服务以使更改生效。

4、设置系统最大打开文件句柄数

vim /etc/security/limits.conf
* soft nofile 65536
* hard nofile 65536
# 重启服务器生效 reboot
# 通过ulimit 查看是否生效
ulimit -n

5、安装Java环境

# Oracle官网下载,上传JDK jdk-8u391-linux-x64.tar.gz
[root@localhost ~]# cd /u01/
[root@localhost u01]# tar -zxf jdk-8u391-linux-x64.tar.gz
[root@localhost u01]# vim /etc/profile
export JAVA_HOME=/u01/jdk1.8.0_391
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export PATH=$JAVA_HOME/bin:$PATH

# 重新加载资源
[root@localhost u01]# source /etc/profile
[root@localhost u01]# java -version
java version "1.8.0_391"
Java(TM) SE Runtime Environment (build 1.8.0_391-b13)
Java HotSpot(TM) 64-Bit Server VM (build 25.391-b13, mixed mode)

6、Doris 配置 FE

6.1、查看操作系统是否支持avx2指令集,没有则下载noavx2的安装包。

要检查你的 CentOS 8 系统是否支持 AVX2 指令集,可以使用以下命令来检查 CPU 的功能:

grep avx2 /proc/cpuinfo

如果你看到类似下面的输出,说明你的 CPU 支持 AVX2 指令集:

flags		: ... avx2 ...

其中 flags 列表中包含了支持的 CPU 功能标记。如果你在其中找到了 avx2,则表示你的系统 CPU 支持 AVX2 指令集。

如果你的 CPU 不支持 AVX2 指令集,那么在上述输出中将找不到 avx2 标记。

请注意,要确保你的 CPU 支持 AVX2 指令集,你的 CPU 和主板必须支持该功能。虽然 CentOS 8 是一个 64 位操作系统,但该操作系统本身并不影响 CPU 功能。因此,支持 AVX2 指令集取决于你的 CPU 硬件。

6.2 解压缩,修改配置

# 这里没有avx2指令集 下载apache-doris-2.0.2-bin-x64-noavx2.tar.gz
# 上传到服务器 /u01目录下
# 1、解压缩包
[root@localhost u01]# tar -zxf apache-doris-2.0.2-bin-x64-noavx2.tar.gz
# 2、这里把FE的文件夹,单独拿到/u01 方便后面出问题后,删除重新复制一份
[root@localhost u01]# cp -r apache-doris-2.0.2-bin-x64-noavx2/fe/ /u01/

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

  1. 添加 priority_networks 参数

    [root@localhost u01]# vim fe/conf/fe.conf
    
    # 修改内容如下
    priority_networks=x.x.x.0/24
    

    注意:

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

    这里假设你的节点 IP 是 172.23.16.32,那么我们可以通过掩码的方式配置为 172.23.16.0/24

  2. 添加元数据目录

    # 单独配置元数据目录,需要你提前创建好你指定的目录
    meta_dir=/u01/fe/doris-meta
    # 注意:生产环境强烈建议单独指定目录不要放在Doris安装目录下,最好是单独的磁盘(如果有SSD最好),测试开发环境可以使用默认配置(默认是在你的Doris FE 安装目录下的 doris-meta)
    

6.3 后台启动FE

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

[root@localhost fe]# ./bin/start_fe.sh --daemon

6.4查看 FE 运行状态

你可以通过下面的命令来检查 Doris 是否启动成功

root@narada:/u01/apache-doris-2.0.2-bin-x64/fe# curl http://127.0.0.1:8030/api/bootstrap
{"msg":"success","code":0,"data":{"replayedJournalId":0,"queryPort":0,"rpcPort":0,"version":""},"count":0}

这里 IP 和 端口分别是 FE 的 IP 和 http_port(默认8030),如果是你在 FE 节点执行,直接运行上面的命令即可。

如果返回结果中带有 "msg":"success" 字样,则说明启动成功。

你也可以通过 Doris FE 提供的Web UI 来检查,在浏览器里输入地址

http:// fe_ip:8030 即:http://x.x.x.x:8030/

可以看到下面的界面,说明 FE 启动成功

注意:

  1. 这里我们使用 Doris 内置的默认用户 root 进行登录,密码是空
  2. 这是一个 Doris 的管理界面,只能拥有管理权限的用户才能登录,普通用户不能登录。

6.5连接 FE

我们下面通过 MySQL 客户端来连接 Doris FE,下载免安装的 MySQL 客户端

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

[root@localhost bin]# pwd
/u01/mysql-5.7.22/bin
[root@localhost bin]# ./mysql -uroot -P9030 -h127.0.0.1

# 设置登录密码
SET PASSWORD FOR 'root' = PASSWORD('narada2023');

注意:

  1. 这里使用的 root 用户是 doris 内置的默认用户,也是超级管理员用户,具体的用户权限查看 权限管理
  2. -P :这里是我们连接 Doris 的查询端口,默认端口是 9030,对应的是fe.conf里的 query_port
  3. -h : 这里是我们连接的 FE IP地址,如果你的客户端和 FE 安装在同一个节点可以使用127.0.0.1。
  4. mysql 无法运行的话,要先解决对应报错。

执行下面的命令查看 FE 运行状态

show frontends\G;

然后你可以看到类似下面的结果:

mysql> show frontends\G
*************************** 1. row ***************************
             Name: fe_cd86c1da_3c70_4ebe_add6_70c7e39b3827
             Host: x.x.x.x
      EditLogPort: 9010
         HttpPort: 8030
        QueryPort: 9030
          RpcPort: 9020
             Role: FOLLOWER
         IsMaster: true
        ClusterId: 1027578203
             Join: true
            Alive: true
ReplayedJournalId: 3379
    LastHeartbeat: 2023-12-06 14:29:20
         IsHelper: true
           ErrMsg: 
          Version: doris-2.0.2-rc05-ae923f7
 CurrentConnected: Yes
1 row in set (0.04 sec)
  1. 如果 IsMaster、Join 和 Alive 三列均为true,则表示节点正常。

7 Doris配置 BE

7.1 同样解压缩,复制be到/u01

[root@localhost u01]# tar -zxf apache-doris-2.0.2-bin-x64-noavx2.tar.gz
[root@localhost u01]# cp -r apache-doris-2.0.2-bin-x64-noavx2/be/ /u01

我们进入到 be 目录

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

  1. 添加 priority_networks 参数

    [root@localhost u01]# cd be/conf/
    [root@localhost conf]# vim be.conf 
    priority_networks=x.x.x.0/24
    

    注意:

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

  2. 配置 BE 数据存储目录

    修改 be/conf/be.conf。主要是配置 storage_root_path:数据存放目录。默认在be/storage下,若需要指定目录的话,需要预创建目录。多个路径之间使用英文状态的分号 ; 分隔。
    可以通过路径区别节点内的冷热数据存储目录,HDD(冷数据目录)或 SSD(热数据目录)。如果不需要 BE 节点内的冷热机制,那么只需要配置路径即可,无需指定 medium 类型;也不需要修改FE的默认存储介质配置

    注意:

    1. 如果未指定存储路径的存储类型,则默认全部为 HDD(冷数据目录)。
    2. 这里的 HDD 和 SSD 与物理存储介质无关,只为了区分存储路径的存储类型,即可以在 HDD 介质的盘上标记某个目录为 SSD(热数据目录)。

    示例1如下:

    storage_root_path=/home/disk1/doris;/home/disk2/doris;/home/disk2/doris
    

    示例2如下:

    使用 storage_root_path 参数里指定 medium

    storage_root_path=/home/disk1/doris,medium:HDD;/home/disk2/doris,medium:SSD
    

    说明

    • /home/disk1/doris,medium:HDD: 表示该目录存储冷数据;
    • /home/disk2/doris,medium:SSD: 表示该目录存储热数据;

    实际操作: centos这边先不动了,直接用默认目录

    # 这里是测试环境没有多余的磁盘 用disk1 disk2 区分,生产环境:挂不同的地址可以用 u01 u02区分
    # 预创建目录:/u01/disk1/doris  /u01/disk2/doris
    storage_root_path=/u01/disk1/doris,medium:HDD;/u01/disk2/doris,medium:SSD
    
  3. 配置 JAVA_HOME 环境变量

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

    **注意:**最开始安装JDK的时候,已经把环境变量配置好了,所有这里不用管

  4. 安装 Java UDF 函数

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

    **注意:**发现lib下面已经有 java_extensions/java-udf 。这里把他复制到lib下面

    [root@localhost lib]# pwd
    /u01/be/lib
    [root@localhost lib]# cp java_extensions/java-udf/java-udf-jar-with-dependencies.jar .
    

    7.2 启动 BE

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

    [root@localhost bin]# pwd
    /u01/be/bin
    [root@localhost bin]# ./start_be.sh --daemon
    

    提示报错1:

    Please set vm.max_map_count to be 2000000 under root using 'sysctl -w vm.max_map_count=2000000'.
    

    解决方案:

    # 临时修改:使用sysctl命令临时修改参数的值
    sysctl -w vm.max_map_count=2000000
    # 永久修改:编辑/etc/sysctl.conf文件,并增加或修改以下行:
    root@narada:/u01/apache-doris-2.0.2-bin-x64/be# vim /etc/sysctl.conf
    vm.max_map_count=2000000
    
    # 保持文件后,使用一下命令更改生效
    root@narada:/u01/apache-doris-2.0.2-bin-x64/be# sysctl -p
    vm.max_map_count = 2000000
    

    提示报错2:

    Please disable swap memory before installation.
    

    解决方案:

    # 关闭交换分区(swap)
    # 使用swapoff -a命令可以关闭所有已启用的交换分区。在执行此命令之前,应仔细检查已启用的交换分区,并确保关闭它们不会对系统产生不利影响。
    swapoff -a
    

    7.3添加 BE 节点到集群

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

    -- 实例:ALTER SYSTEM ADD BACKEND "be_host_ip:heartbeat_service_port";
    ALTER SYSTEM ADD BACKEND "be1_ip:9050";
    ALTER SYSTEM ADD BACKEND "be2_ip:9050";
    ALTER SYSTEM ADD BACKEND "be3_ip:9050";
    
    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
    
    1. Alive : true表示节点运行正常

常见问题

1、MySQL连接报错

./mysql: error while loading shared libraries: libncurses.so.5: cannot open shared object file: No such file or directory

解决方案:

这个错误通常是由于缺少 libncurses.so.5 库文件引起的。要解决这个问题,你可以尝试以下方法:

  1. 安装 libncurses.so.5 库文件:

    sudo dnf install ncurses-compat-libs
    

    这个命令将安装 ncurses-compat-libs 软件包,它提供了 libncurses.so.5 库文件。

  2. 创建软链接: 如果安装了 ncurses-compat-libs 软件包但问题仍存在,可以尝试创建一个软链接来解决:

    # 安装以后没有,就再建一个软连接。如果已经有了 就不用管了
    sudo ln -s /usr/lib64/libncurses.so.6 /usr/lib64/libncurses.so.5
    

    这个命令将在 /usr/lib64 目录下创建一个 libncurses.so.5 的软链接指向 libncurses.so.6。

尝试以上解决方法后,再次运行 ./mysql 命令,应该可以成功加载 libncurses.so.5 库文件并启动 MySQL 服务器。

2、导入数据时 max_allowed_packet 值过小

com.mysql.cj.jdbc.exceptions.PacketTooBigException: Packet for query is too large (1,347,330 > 1,048,576). You can change this value on the server by setting the 'max_allowed_packet' variable.

# 查询原来的大小是多少,默认是1G
select @@max_allowed_packet; -- 1048576
# 重新设置大小20*1024*1024;  20代表:20G
set global max_allowed_packet = 20*1024*1024;

3、centos8 查看CPU使用情况

在CentOS中,你可以使用 top 命令来查看 CPU 的使用情况。请按照以下步骤进行操作:

  1. 打开终端或 SSH 连接到 CentOS 服务器。

  2. 在终端中输入以下命令并按下回车运行:

    top
    
  3. 在顶部的信息栏中,你将看到类似下面的 CPU 使用情况:

    top - 08:45:23 up 1 day,  3:25,  1 user,  load average: 0.00, 0.01, 0.05
    Tasks: 176 total,   1 running, 175 sleeping,   0 stopped,   0 zombie
    %Cpu(s):  0.0 us,  0.0 sy,  0.0 ni,100.0 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
    KiB Mem :  2047812 total,   196180 free,  1192144 used,   653488 buff/cache
    KiB Swap:        0 total,        0 free,        0 used.   659280 avail Mem
    

    %Cpu(s) 行列出了 CPU 的使用情况。其中,us 代表用户进程占用 CPU 的百分比,sy 代表系统进程占用 CPU 的百分比,ni 代表改变过优先级的进程占用 CPU 的百分比,id 代表空闲 CPU 的百分比,wa 代表等待 I/O 的进程占用 CPU 的百分比,hi 代表硬件中断占用 CPU 的百分比,si 代表软件中断占用 CPU 的百分比,st 代表虚拟机被强制获取 CPU 时间的百分比。

    在该信息栏中,你还可以看到系统的负载情况和内存使用情况等。你可以使用箭头键来上下滚动查看更多进程和信息。

除了 top 命令之外,你还可以使用其他一些命令来查看 CPU 使用情况,例如 htopmpstat。这些工具提供了更详细和交互式的 CPU 监控信息。你可以使用 yumdnf 命令安装这些工具。

4、centos8 查看IO使用情况

4.1 使用 iotop ,安装命令 sudo dnf install iotop

在 CentOS 8 中,你可以使用 iotop 命令来查看磁盘 I/O 使用情况。请按照以下步骤进行操作:

  1. 打开终端或通过 SSH 连接到 CentOS 8 服务器。

  2. 在终端中输入以下命令并按下回车运行:

    iotop
    
  3. 当命令运行后,你将看到类似下面的实时磁盘 I/O 使用情况的统计信息:

    Apache Doris 2.0.2 安装步骤 Centos8_第1张图片

该输出显示了每个活动的进程以及它们的磁盘 I/O 使用情况,包括磁盘读取速度(DISK READ)、磁盘写入速度(DISK WRITE)以及进程的资源占用情况。你可以根据需要来查看特定进程的 I/O 使用情况和排名。

iotop 命令提供了实时的磁盘 I/O 统计信息,可以帮助你监控磁盘活动,找到可能引起性能问题的进程。请注意,你可能需要以 root 用户身份运行 iotop 命令或具有相应权限的用户。如果系统中没有安装 iotop,你可以使用 yumdnf 命令来安装它。

4.2 使用 iostat ,安装命令 sudo dnf install sysstat

iostat 命令可以提供关于磁盘 I/O 统计信息的详细报告。请按照以下步骤进行操作:

  1. 打开终端或通过 SSH 连接到 CentOS 8 服务器。

  2. 在终端中输入以下命令并按下回车运行:

    iostat
    
  3. 你将看到类似下面的输出,其中包含了磁盘 I/O 使用情况的统计信息:

    Linux 4.18.0-80.11.2.el8_0.x86_64 (centos)      08/25/20      _x86_64_       (1 CPU)
    
    avg-cpu:  %user   %nice %system %iowait  %steal   %idle
              0.10    0.00    0.48    1.13    0.00   98.29
    
    Device             tps    kB_read/s    kB_wrtn/s    kB_read    kB_wrtn
    sda               0.83         2.36         2.82     161343     198840
    sdb               0.00         0.00         0.00         10         20
    

    在输出中,kB_read/s 表示每秒的读取速度(单位为 kB),kB_wrtn/s 表示每秒的写入速度(单位为 kB),tps 表示每秒的 I/O 操作次数。

4.3 使用 dstat ,安装命令 sudo dnf install dstat

dstat 命令可以提供实时的系统资源监视器,其中包括磁盘 I/O 使用情况。请按照以下步骤进行操作:

  1. 打开终端或通过 SSH 连接到 CentOS 8 服务器。

  2. 在终端中输入以下命令并按下回车运行:

    dstat -d
    
  3. 你将看到类似下面的输出,其中包含了磁盘 I/O 使用情况及其他资源的统计信息:

    ----total-cpu-usage---- --dsk/total- --dsk/sda-- --dsk/sdb-- --net/total- --paging-- ---system--
    usr sys idl wai hiq siq| read  writ | read  writ | read  writ | recv  send |  in   out | int   csw
    ...
    

    输出中的readwrit列分别表示读取和写入的数据量。

0.00 10 20


在输出中,`kB_read/s` 表示每秒的读取速度(单位为 kB),`kB_wrtn/s` 表示每秒的写入速度(单位为 kB),`tps` 表示每秒的 I/O 操作次数。

### 4.3 使用 `dstat  ` ,安装命令  `sudo dnf install dstat`

`dstat` 命令可以提供实时的系统资源监视器,其中包括磁盘 I/O 使用情况。请按照以下步骤进行操作:

1. 打开终端或通过 SSH 连接到 CentOS 8 服务器。

2. 在终端中输入以下命令并按下回车运行:

dstat -d


3. 你将看到类似下面的输出,其中包含了磁盘 I/O 使用情况及其他资源的统计信息:

----total-cpu-usage---- --dsk/total- --dsk/sda-- --dsk/sdb-- --net/total- --paging-- —system–
usr sys idl wai hiq siq| read writ | read writ | read writ | recv send | in out | int csw


输出中的`read`和`writ`列分别表示读取和写入的数据量。

这些工具可以帮助你监控磁盘 I/O 使用情况,以便了解系统的性能和负载情况。你可以根据需要来选择使用其中的一个工具。如果系统中没有安装这些工具,你可以使用 `yum` 或 `dnf` 命令来安装它们。

你可能感兴趣的:(Doris)