From 4dcb1cf78f818aeb0865186d774ce456278c2cdd Mon Sep 17 00:00:00 2001 From: WangYiming <2213794417@qq.com> Date: Wed, 7 May 2025 19:41:01 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E3=80=8AApache=20Doris=20x86?= =?UTF-8?q?=E5=B9=B3=E5=8F=B0=E6=BA=90=E7=A0=81=E7=BC=96=E8=AF=91=E4=B8=8E?= =?UTF-8?q?=E9=83=A8=E7=BD=B2=E3=80=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 修改 --- src/content/posts/2024-01/wym _01.md | 309 +++++++++++++++++++++++++++ 1 file changed, 309 insertions(+) create mode 100644 src/content/posts/2024-01/wym _01.md diff --git a/src/content/posts/2024-01/wym _01.md b/src/content/posts/2024-01/wym _01.md new file mode 100644 index 0000000..3642428 --- /dev/null +++ b/src/content/posts/2024-01/wym _01.md @@ -0,0 +1,309 @@ +--- +title: Apache Doris x86平台源码编译与部署 +author: 王伊鸣 +pubDate: 2025-05-07 +categories: ['2025 年第二期'] +description: '通过源码编译方式安装Apache Doris,并以部署一个 FE 节点和一个 BE 节点为例来演示部署。' +--- + +## 目录 +- [部署前准备](#部署前准备) + - [软硬件环境检查](#软硬件环境检查) + - [操作系统检查](#操作系统检查) + - [关闭swap分区](#关闭swap分区) + - [关闭系统透明大页](#关闭系统透明大页) + - [增加虚拟内存区域](#增加虚拟内存区域) + - [网络连接溢出时自动重置新连接](#网络连接溢出时自动重置新连接) + - [相关端口畅通](#相关端口畅通) + - [增加系统的最大文件句柄数](#增加系统的最大文件句柄数) +- [使用 LDB Toolchain 编译](#使用-ldb-toolchain-编译) + - [安装编译所需依赖](#安装编译所需依赖) + - [启动MySQL服务](#启动mysql服务) + - [获取LDB Toolchain](#获取ldb-toolchain) + - [下载并安装其他编译组件](#下载并安装其他编译组件) + - [获取Doris源码](#获取doris源码) + - [获取预编译三方库](#获取预编译三方库) + - [配置 Python 符号链接​](#配置-python-符号链接) + - [执行编译](#执行编译) +- [部署](#部署) + - [部署 FE 节点](#部署-fe-节点) + - [修改 FE 配置文件](#修改-fe-配置文件) + - [启动FE进程](#启动fe进程) + - [查看 FE 启动状态](#查看-fe-启动状态) + - [部署 BE 节点](#部署-be-节点) + - [修改 BE 配置文件](#修改-be-配置文件) + - [在FE中注册该节点](#在fe中注册该节点) + - [启动 BE 进程](#启动-be-进程) + - [查看BE启动状态](#查看be启动状态) +- [验证](#验证) + - [使用`MySQL`登录](#使用mysql登录) + - [检查Doris安装信息](#检查doris安装信息) + - [创建测试表并插入数据](#创建测试表并插入数据) + +--- + +## 部署前准备 + +### 软硬件环境检查 +参考[软硬件环境检查 - Apache Doris](https://doris.apache.org/zh-CN/docs/install/preparation/env-checking) +### 操作系统检查 +参考[操作系统检查 - Apache Doris](https://doris.apache.org/zh-CN/docs/install/preparation/os-checking) +#### 关闭swap分区 +使用Linux root账户,注释掉`/etc/fstab`中的swap分区,重启后即可彻底关闭swap分区 + +#### 关闭系统透明大页 + +```bash +# 如不存在对应文件夹需创建 +mkdir -p /etc/rc.d + +# 使用以下命令永久关闭透明大页 +cat >> /etc/rc.d/rc.local << EOF + echo madvise > /sys/kernel/mm/transparent_hugepage/enabled + echo madvise > /sys/kernel/mm/transparent_hugepage/defrag +EOF +chmod +x /etc/rc.d/rc.local +``` +如遇权限问题,使用root账户。 +#### 增加虚拟内存区域 +```bash +cat >> /etc/sysctl.conf << EOF +vm.max_map_count = 2000000 +EOF + +# Take effect immediately +sysctl -p +``` +#### 网络连接溢出时自动重置新连接 +```bash +cat >> /etc/sysctl.conf << EOF +net.ipv4.tcp_abort_on_overflow=1 +EOF + +# Take effect immediately +sysctl -p +``` +#### 相关端口畅通 +如果发现端口不通,可以试着关闭防火墙。 +#### 增加系统的最大文件句柄数 +```bash +vi /etc/security/limits.conf +* soft nofile 1000000 +* hard nofile 1000000 +``` +在调整后,需要重启会话以生效配置。 + +--- + +## 使用 LDB Toolchain 编译 +参考[使用 LDB Toolchain 编译(推荐) - Apache Doris](https://doris.apache.org/zh-CN/community/source-install/compilation-with-ldb-toolchain) +### 安装编译所需依赖 +```bash +sudo apt-get update + +sudo apt-get -y install autoconf autogen pkg-config byacc patch automake libtool make file \ +libncurses-dev gettext unzip bzip2 zip util-linux wget git python3 mysql-server openssl libssl-dev \ +openjdk-17-jdk openjdk-17-jre +``` +### 启动MySQL服务 +参考[在Ubuntu 22.04 LTS 上安装 MySQL两种方式:在线方式和离线方式_ubuntu离线安装mysql-CSDN博客](https://blog.csdn.net/weixin_45626288/article/details/133220238) + +```bash +# 启动MySQL +sudo systemctl start mysql + +# 登录mysql,在默认安装时如果没有让我们设置密码,则直接回车就能登录成功。 +sudo mysql -uroot -p + +# 设置密码 mysql 8.0 +ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '新密码'; + +# 刷新缓存 +flush privileges; + +# 设置开机自动启动 +sudo systemctl enable mysql +``` + +### 获取LDB Toolchain +```bash +# 下载 ldb_toolchain_gen.sh +wget https://github.com/amosbird/ldb_toolchain_gen/releases/download/v0.19/ldb_toolchain_gen.sh + +# 执行命令生成 ldb toolchain +sh ldb_toolchain_gen.sh /path/to/ldb_toolchain/ + ``` +其中 `/path/to/ldb_toolchain/` 为安装 Toolchain 目录。 + +### 下载并安装其他编译组件 +```bash +# 安装 Apache Maven +wget https://doris-thirdparty-repo.bj.bcebos.com/thirdparty/apache-maven-3.6.3-bin.tar.gz +tar zxvf apache-maven-3.6.3-bin.tar.gz + +# 安装 Node.js +wget https://doris-thirdparty-repo.bj.bcebos.com/thirdparty/node-v12.13.0-linux-x64.tar.gz +tar zxvf node-v12.13.0-linux-x64.tar.gz +``` + +### 获取Doris源码 +```bash +# 下载Doris源码 +git clone --depth=1 https://github.com/apache/doris.git + +# 进入到 Doris 源码目录,创建 `custom_env.sh`文件,并设置 PATH 环境变量 +cd doris + +cat > custom_env.sh < +``` +#### 启动FE进程 +```bash +output/fe/bin/start_fe.sh --daemon +``` +FE 进程在后台启动,日志默认保存在 log/ 目录。如果启动失败,检查 log/fe.out 文件以获取错误信息。 + +#### 查看 FE 启动状态 +```sql +## connect a alive FE node +mysql -uroot -P -h + +## check FE node status +show backends \G; +``` +链接到 Doris 集群后,可以通过 show frontends 命令查看 FE 的状态,通常要确认以下几项 + +- Alive 为 true 表示节点存活; +- Join 为 true 表示节点加入到集群中,但不代表当前还在集群内(可能已失联); +- IsMaster 为 true 表示当前节点为 Master 节点。 +### 部署 BE 节点 +#### 修改 BE 配置文件 +在`output/be/be.conf`中添加配置项: +```ini +## 配置JAVA包对应路径 +JAVA_HOME = +``` +#### 在FE中注册该节点 +```sql +## connect a alive FE node +mysql -uroot -P -h +## registe BE node +ALTER SYSTEM ADD BACKEND ":" +``` +#### 启动 BE 进程 +```bash +output/be/bin/start_be.sh --daemon +``` +BE 进程在后台启动,日志默认保存在 log/ 目录。如果启动失败,检查 log/be.out 文件以获取错误信息。 +#### 查看BE启动状态 +```sql +## connect a alive FE node +mysql -uroot -P -h + +## check BE node status +show backends \G; +``` +常情况下需要注意以下状态: + +- Alive 为 true 表示节点存活 +--- + +## 验证 +### 使用`MySQL`登录 +```bash +## connect a alive fe node +mysql -uroot -P -h +``` +### 检查Doris安装信息 +通过 `show frontends` 与 `show backends` 可以查看数据库各实例的信息。 +```sql +-- check fe status +show frontends \G + +-- check be status +show backends \G +``` +### 创建测试表并插入数据 +```sql +-- create a test database +create database testdb; + +-- create a test table +CREATE TABLE testdb.table_hash +( + k1 TINYINT, + k2 DECIMAL(10, 2) DEFAULT "10.5", + k3 VARCHAR(10) COMMENT "string column", + k4 INT NOT NULL DEFAULT "1" COMMENT "int column" +) +COMMENT "my first table" +DISTRIBUTED BY HASH(k1) BUCKETS 32 +PROPERTIES ( + "replication_num = "1" -- 显式设置副本数为1 +); + +-- insert data +INSERT INTO testdb.table_hash VALUES +(1, 10.1, 'AAA', 10), +(2, 10.2, 'BBB', 20), +(3, 10.3, 'CCC', 30), +(4, 10.4, 'DDD', 40), +(5, 10.5, 'EEE', 50); + +-- check the data +SELECT * from testdb.table_hash; + ++------+-------+------+------+ +| k1 | k2 | k3 | k4 | ++------+-------+------+------+ +| 3 | 10.30 | CCC | 30 | +| 4 | 10.40 | DDD | 40 | +| 5 | 10.50 | EEE | 50 | +| 1 | 10.10 | AAA | 10 | +| 2 | 10.20 | BBB | 20 | ++------+-------+------+------+ +``` -- Gitee