安装指南
安装简介
组网规划
建议采用存算一体组网,即存储节点和计算节点共用,充分发挥OmniRuntime子特性在大数据场景中的计算加速效果。
OmniOperator算子加速组网规划的环境由4台服务器组成,使用存算一体的组网,分别是管理节点(1台)、计算节点(3台)。以存储节点为HDFS进行举例说明,其中:
- 管理节点为server1,用于管理任务。
- 计算节点为agent1、agent2和agent3,用于运行OmniOperator。
一台服务器可以同时充当管理节点和计算节点(如果是单机安装模式,后续文章中提到的在管理节点/计算节点上执行的操作,均需要在一个节点上执行),组网规划如图 1 安装组网图所示。
环境要求
安装OmniOperator算子加速特性前,请参见本节内容,提前准备软硬件安装环境,以确保后续安装操作顺利进行。
集群中各节点硬件要求如表 1 硬件要求所示。
| 硬件环境 | 管理/计算/存储节点 |
|---|---|
| 处理器 | 鲲鹏920系列处理器鲲鹏950处理器只有支持SVE(Scalable Vector Extension,可扩展向量指令集)指令集的服务器支持在Gluten上使能OmniOperator。您可以通过**cat /proc/cpuinfo |
| 内存大小 | 384GB(12 * 32GB) |
| 内存频率 | 2666MHz |
| 网络 | 业务网络10GE管理网络1GE |
| 硬盘 | 系统盘:1 * RAID 0(1 * 1.2TB SAS HDD)数据盘:12 * RAID 0(12 * 8TB SATA HDD) |
| RAID控制卡 | LSI SAS3508 |
集群中各节点操作系统和软件要求如表 2 操作系统和软件要求所示。
| 项目 | 版本 | 说明 | 管理节点(Server) | 计算/存储节点 |
|---|---|---|---|---|
| 操作系统 | CentOS 7.9 openEuler 20.03 LTS SP1 openEuler 22.03 LTS SP1 |
例如openEuler 20.03 LTS SP3、openEuler 22.03 LTS SP3等后续补丁版本亦可。 | √ | √ |
| JDK | 毕昇JDK 1.8(毕昇JDK 1.8.0_342) | openEuler 22.03 LTS SP1与毕昇JDK 1.8.0_262不兼容,需更换为毕昇JDK 1.8.0_342。毕昇JDK安装指南请参见《毕昇JDK 8 安装指南》。 | √ | √ |
| Hadoop | 3.2.0 | 部署指南请参见《Hadoop 集群部署(CentOS 7.6&openEuler 20.03)》。 | √ | √ |
| Spark | 3.1.1 3.3.1 3.4.3 3.5.2 | 部署指南请参见《Spark 部署指南(CentOS 7.6&openEuler 20.03)》。 | √ | - |
| Hive | 3.1.0 | 部署指南请参见《Hive部署指南(CentOS 7.6&openEuler 20.03)》。 | √ | - |
| Python | 3.10.2及以上 | 无特殊要求。 | √ | √ |
说明:
- √:表示对应节点需要安装该项目。
- -:表示对应节点不需要安装该项目。
- 以上第三方依赖版本如有漏洞请根据官方说明进行漏洞修复。
- 以上组件版本,可能和部署指南中的组件版本不一致,部署指南仅供部署参考。
安装OmniOperator算子加速特性所需软件安装包及其获取方式如表 3 OmniOperator算子加速软件获取列表所示,后续的操作步骤中,请根据操作指导安装相应的安装包。
说明:
在Spark引擎上的应用:
- SparkExtension场景涉及安装的软件包为序号1、2(根据Spark版本选择对应的SparkExtension版本)和5。
- Gluten场景涉及安装的软件包为序号4。
在Hive引擎上的应用:
- HiveExtension场景涉及安装的软件包为序号1、3和5。
| 序号 | 名称 | 包名 | 发布类型 | 说明 | 获取地址 |
|---|---|---|---|---|---|
| 1 | OmniRuntime压缩包 | BoostKit-omniruntime_1.9.0.zip | 闭源 | 解压OmniRuntime压缩包(BoostKit-omniruntime_1.9.0.zip),可获得OmniOperator算子加速软件安装包(BoostKit-omniop_2.0.0.zip)。 | 鲲鹏社区:获取链接 使用软件包前请先阅读《鲲鹏应用使能套件BoostKit用户许可协议 2.0》,如确认继续使用,则默认同意协议的条款和条件。 |
| 2 | SparkExtension | boostkit-omniop-spark-3.1.1-2.0.0-aarch64.zip | 开源 | 使用OmniOperator算子加速计算底座时,Spark引擎扩展包。 | 获取链接 |
| boostkit-omniop-spark-3.3.1-2.0.0-aarch64.zip | 开源 | 使用OmniOperator算子加速计算底座时,Spark引擎扩展包。 | 获取链接 | ||
| boostkit-omniop-spark-3.4.3-2.0.0-aarch64.zip | 开源 | 使用OmniOperator算子加速计算底座时,Spark引擎扩展包。 | 获取链接 | ||
| boostkit-omniop-spark-3.5.2-2.0.0-aarch64.zip | 开源 | 使用OmniOperator算子加速计算底座时,Spark引擎扩展包。 | 获取链接 | ||
| 3 | HiveExtension | boostkit-omniop-hive-3.1.0-2.0.0-aarch64.zip | 开源 | 使用OmniOperator算子加速计算底座时,Hive引擎扩展包。 | 获取链接 |
| 4 | Gluten | Boostkit-omniruntime-gluten-2.0.0.zip | 开源 | OmniOperator算子加速软件安装包(适配Gluten)。 | 获取链接 |
| Dependency_library_Gluten.zip | 开源 | Gluten运行时所依赖的库文件。 | 获取链接 | ||
| 5 | Dependency_library | Dependency_library_centos.zip Dependency_library_openeuler20.03.zip Dependency_library_openeuler22.03.zip |
开源 | OmniOperator算子加速运行时所依赖的库文件。请根据OS类型选择对应的依赖包。 | CentOS依赖获取链接 openEuler20.03依赖获取链接 openEuler22.03依赖获取链接 |
从鲲鹏社区获取的软件安装包,下载软件安装包后需要校验软件安装包,确保与网站上的原始软件安装包一致。
校验方法:
- 获取软件数字证书和软件安装包。
- 获取校验工具和校验方法。
- 参见上述链接下载的《OpenPGP签名验证指南》进行软件安装包完整性检查。
安装特性
安装节点要求
安装节点要求介绍了安装OmniOperator算子加速前对各节点安装依赖包和配置环境变量的要求。
-
若使用源码编译安装方式,在源码编译前,需在各节点安装GCC/G++、Autoconf以及CMake,其版本要求请参见表 1 源码编译前需要配置的软件。
说明:- LLVM和jemalloc需要在对应操作系统上编译才能正常运行,如需在CentOS上运行则需要在CentOS上编译;如需在openEuler上运行,需在以下两个版本的操作系统(openEuler 20.03 LTS SP1和openEuler 22.03 LTS SP1)中选择对应的版本进行编译。
- Gluten运行依赖ABSL库,需要在当前运行系统(openEuler 22.03 SP1)上编译安装才能正常运行。
| 名称 | 版本要求 | 获取链接 |
|---|---|---|
| GCC/G++ | openEuler 20.03:7.3.0 | 获取链接 |
| openEuler 22.03:10.3.0 | 获取链接 | |
| Autoconf | 2.69 | 获取链接 |
| CMake | 3.20.5 | 获取链接 |
-
编译安装GCC/G++。以7.3.0版本为例:
-
查看GCC/G++版本,确认是否为目标版本。
``` gcc --version g++ --version ``` -
编译安装GCC/G++。
``` # 解压安装包并进入目录gcc-7.3.0 tar -zxvf gcc-7.3.0.tar.gz cd gcc-7.3.0 # 编译安装 mkdir build && cd build ../configure --prefix=/usr/local/gcc-7.3.0 --enable-languages=c,c++ --disable-multilib make -j$(nproc) make install # 设置环境变量 echo 'export PATH=/usr/local/gcc-7.3.0/bin:$PATH' >> /etc/profile echo 'export LD_LIBRARY_PATH=/usr/local/gcc-7.3.0/lib64:$LD_LIBRARY_PATH' >> /etc/profile source /etc/profile # 验证安装是否成功 gcc --version g++ --version ```
-
-
编译安装Autoconf。
-
查看Autoconf版本,确认是否为目标版本。
``` autoconf --version ``` -
编译安装Autoconf。
``` # 解压安装包并进入目录autoconf-2.69 tar -zxvf autoconf-2.69.tar.gz cd autoconf-2.69 # 编译安装 ./configure --prefix=/usr/local/autoconf-2.69 make -j$(nproc) make install # 设置环境变量 echo 'export PATH=/usr/local/autoconf-2.69/bin:$PATH' >> /etc/profile source /etc/profile # 验证安装是否成功 autoconf --version ```
-
-
安装CMake。
-
查看CMake版本,确认是否为目标版本。
``` cmake --version ``` -
安装CMake。
``` # 解压安装包到任意目录(这里用/opt) tar -zxvf cmake-3.20.5-linux-aarch64.tar.gz -C /opt # 设置环境变量 echo 'export PATH=/opt/cmake-3.20.5-linux-aarch64/bin:$PATH' >> /etc/profile source /etc/profile # 验证安装是否成功 cmake --version ```
-
- 安装OmniOperator算子加速前,集群环境请参见表 2 操作系统和软件要求完成相关组件部署。
- 配置环境变量前请确认环境中是否已存在
LD_LIBRARY_PATH环境变量。如果不存在则配置时无需追加$LD_LIBRARY_PATH,避免当前目录(cwd)被引入动态库查找路径,导致安全问题,全文中export环境变量操作均遵循此原则。以LD_LIBRARY_PATH为例,如果已存在则export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/xxx,不存在则export LD_LIBRARY_PATH=/xxx。
安装依赖
通过本地方式安装OmniOperator算子加速,在OmniOperator算子加速结合Spark引擎应用时,在管理节点安装依赖包LLVM和jemalloc。
在Spark on Yarn场景中,通过Spark的--archives参数提升部署易用性。预编译so下载安装与源码编译安装两种方式可任选其一。预编译so下载安装更快速且便捷,适用于大部分场景;源码编译安装较慢,适用于一些有合规要求的场景。
安装依赖(预编译so下载安装方式,SparkExtension场景)
安装LLVM和jemalloc
说明:
- 根据OS类型选择对应的依赖包,以下安装以openEuler 22.03系统为例,对应
Dependency_library_openeuler22.03.zip。/opt/omni-operator及/opt/omni-operator/lib目录用户可自行定义。
-
在管理节点创建
/opt/omni-operator/目录作为安装OmniOperator算子加速的根目录,进入该目录。mkdir /opt/omni-operator cd /opt/omni-operator -
从表 3 OmniOperator算子加速软件获取列表中获取
Dependency_library_openeuler22.03.zip,并上传到/opt/omni-operator/目录下,再进行解压。unzip Dependency_library_openeuler22.03.zip -
创建
/opt/omni-operator/lib目录,将Dependency_library_openeuler中的libLLVM-15.so、libjemalloc.so.2复制到/opt/omni-operator/lib目录下。
须知:
如果环境中安装过LLVM和jemalloc,需要先删除旧的libLLVM-15.so、libjemalloc.so.2文件,再执行复制命令。rm -rf /opt/omni-operator/lib/libjemalloc.so.2 rm -rf /opt/omni-operator/lib/libLLVM-15.socd /opt/omni-operator mkdir lib cp /opt/omni-operator/Dependency_library_openeuler22.03/libjemalloc.so.2 /opt/omni-operator/lib cp /opt/omni-operator/Dependency_library_openeuler22.03/libLLVM-15.so /opt/omni-operator/lib
安装LLVM和jemalloc
说明:
- Gluten场景中未提供ABSL库的预编译so文件,因此需要用户手动编译安装。
/opt/omni-operator及/opt/omni-operator/lib目录用户可自行定义。
-
在管理节点创建
/opt/omni-operator/目录作为安装OmniOperator算子加速的根目录,进入该目录。mkdir /opt/omni-operator cd /opt/omni-operator rm Dependency_library_Gluten.zip -rf -
从表 3 OmniOperator算子加速软件获取列表中获取
Dependency_library_Gluten.zip压缩包,并上传到/opt/omni-operator/目录下,再进行解压。unzip Dependency_library_Gluten.zip -
创建
/opt/omni-operator/lib目录,将Dependency_library_Gluten中的libLLVM-15.so、libjemalloc.so.2复制到/opt/omni-operator/lib目录下。
须知:
如果环境中安装过LLVM和jemalloc,需要先删除旧的libLLVM-15.so、libjemalloc.so.2文件,再执行复制命令。rm -rf /opt/omni-operator/lib/libjemalloc.so.2 rm -rf /opt/omni-operator/lib/libLLVM-15.socd /opt/omni-operator mkdir lib cp /opt/omni-operator/Dependency_library_Gluten/libjemalloc.so.2 /opt/omni-operator/lib cp /opt/omni-operator/Dependency_library_Gluten/libLLVM-15.so /opt/omni-operator/lib
安装依赖(源码编译安装方式,SparkExtension和Gluten场景)
安装LLVM
说明:
/opt/omni-operator、/opt/omni-operator/llvm和/opt/omni-operator/lib目录用户可自行定义。
-
下载llvm-project-llvmorg-15.0.4.tar.gz,在管理节点上创建目录
/opt/omni-operator作为安装OmniOperator的根目录并进入,将压缩包上传到/opt/omni-operator目录下。mkdir /opt/omni-operator cd /opt/omni-operator tar zxvf llvm-project-llvmorg-15.0.4.tar.gz mv llvm-project-llvmorg-15.0.4 llvm cd llvm mkdir build -
进入
build目录编译并安装LLVM。cd ./build cmake -DCMAKE_INSTALL_PREFIX=/opt/omni-operator/llvm -DCMAKE_BUILD_TYPE=Release -DLLVM_BUILD_LLVM_DYLIB=true -DLLVM_ENABLE_PROJECTS="clang" -G "Unix Makefiles" ../llvm make -j4 make install -
在
/opt/omni-operator下创建lib目录,拷贝/opt/omni-operator/llvm/lib/libLLVM-15.so到/opt/omni-operator/lib目录下。mkdir /opt/omni-operator/lib cp /opt/omni-operator/llvm/lib/libLLVM-15.so /opt/omni-operator/lib/
安装jemalloc
-
下载jemalloc-5.3.0.tar.gz,并上传到管理节点。
cd /opt/omni-operator/ tar zxvf jemalloc-5.3.0.tar.gz mv jemalloc-5.3.0 jemalloc
说明:
/opt/omni-operator/jemalloc目录用户可自行定义。 -
进入
jemalloc目录,运行脚本并安装。cd jemalloc ./autogen.sh --disable-initial-exec-tls make -j2 -
拷贝
/opt/omni-operator/jemalloc/lib/libjemalloc.so.2到/opt/omni-operator/lib目录下。cp /opt/omni-operator/jemalloc/lib/libjemalloc.so.2 /opt/omni-operator/lib/
安装ABSL(仅在Gluten上使能时需要)
-
git clone https://szv-open.codehub.huawei.com/OpenSourceCenter/abseil/abseil-cpp.git cd abseil-cpp/ git checkout tags/20250127.0 -
编译ABSL源码。
mkdir build && cd build cmake .. -DCMAKE_CXX_STANDARD=17 -DCMAKE_CXX_STANDARD_REQUIRED=ON -DABSL_PROPAGATE_CXX_STD=ON -DBUILD_SHARED_LIBS=ON make -j32 make install -
将编译好的ABSL库拷贝到
/opt/omni-operator/lib。cp /usr/local/lib64/libabsl_* /opt/omni-operator/lib
安装OmniOperator
在管理节点和计算节点安装OmniOperator并设置相应的环境变量。如果是在Gluten上使能OmniOperator,则跳过本章节。
说明:
BoostKit-omniop_2.0.0.zip可通过BoostKit-omniruntime_2.0.0.zip解压获得。BoostKit-omniop_2.0.0.zip中有boostkit-omniop-operator-2.0.0-aarch64-openeuler.tar.gz和boostkit-omniop-operator-2.0.0-aarch64-centos.tar.gz两个包,分别适用于openEuler和CentOS操作系统,下文以openEuler为例进行说明。- 如果需要在CentOS系统安装OmniOperator算子加速,把以下命令参数中的
boostkit-omniop-operator-2.0.0-aarch64-openeuler.tar.gz替换为boostkit-omniop-operator-2.0.0-aarch64-centos.tar.gz即可。
-
将表 3 OmniOperator算子加速软件获取列表中OmniOperator算子加速相关压缩文件上传到管理节点和计算节点的
/opt/omni-operator/目录。 -
进入
/opt/omni-operator/目录解压OmniOperator算子加速相关文件。cd /opt/omni-operator/ unzip BoostKit-omniruntime_1.9.0.zip unzip BoostKit-omniop_2.0.0.zip tar -zxvf boostkit-omniop-operator-2.0.0-aarch64-openeuler.tar.gz -
拷贝OmniOperator算子加速相关文件到
/opt/omni-operator/lib目录下,并将该目录下的软件安装包权限设置为550。cd /opt/omni-operator/boostkit-omniop-operator-2.0.0-aarch64 cp -r include libboostkit* boostkit-omniop* libsecurec.so /opt/omni-operator/lib/ chmod -R 550 /opt/omni-operator/lib/* -
在
/opt/omni-operator目录下创建conf文件夹,设置文件夹权限750。cd /opt/omni-operator mkdir conf chmod 750 /opt/omni-operator/conf -
在
conf文件夹下新增omni.conf配置文件并修改配置文件权限为640,用于配置OmniOperator算子加速配置项。cd conf touch omni.conf chmod 640 omni.conf -
删除
/opt/omni-operator的冗余文件。mkdir -p /opt/omni-operator-bak mv /opt/omni-operator/lib /opt/omni-operator-bak mv /opt/omni-operator/conf /opt/omni-operator-bak ls /opt/omni-operator rm -rf /opt/omni-operator cd /opt mv omni-operator-bak omni-operator
(可选)安装UDF插件
当业务场景明确需要使用UDF(User Defined Functions,用户自定义函数)功能时,才需要执行本章节的操作。插件安装操作仅需在管理节点完成。在Gluten上使能OmniOperator场景暂不支持加速UDF。
该插件目前仅支持HiveSimpleUDF类型(即基于Hive UDF框架编写的简单UDF)。HiveSimpleUDF是Hive中的一种用户定义函数类型,基于Hive的UDF框架实现,用于扩展Hive查询功能。由于Spark支持Hive的UDF接口,因此HiveSimpleUDF也可以在Spark环境中直接使用。
OmniOperator加速UDF,支持两种执行方式:行处理和批处理。可通过修改配置文件切换使用方式。
-
使用前请确认您的UDF是基于Hive UDF框架实现的简单UDF。
-
为了使用OmniOperator加速UDF,用户需提供相关JAR包和配置文件,包括以下文件。
-
udf.zip:包含所有UDF的class文件。
-
conf.zip:包含UDF所依赖的配置文件。
-
udf.properties:用于配置OmniOperator加速UDF。
以udfName1和udfName2为例,udf.properties内容格式如下。
udfName1 com.huawei.udf.UdfName1 udfName2 com.huawei.udf.UdfName2
-
在管理节点创建
/opt/omni-operator/hive-udf目录。mkdir /opt/omni-operator/hive-udf -
将上述相关的压缩文件udf.zip、conf.zip上传到管理节点的
/opt/omni-operator/hive-udf目录。
说明:
udf.zip、conf.zip等压缩包名称用户根据自己实际情况可进行自定义,本处仅提供示例。 -
解压相关压缩文件。
cd /opt/omni-operator/hive-udf unzip udf.zip rm -f udf.zip unzip conf.zip rm -f conf.zip -
在
/opt/omni-operator/conf/omni.conf文件中更新配置。-
打开配置文件。
vi /opt/omni-operator/conf/omni.conf -
按
i进入编辑模式,新增关于UDF配置相关内容。# <----UDF properties----> #false表示使用表达式行处理,true表示使用表达式批处理 enableBatchExprEvaluate=false #UDF白名单文件路径 hiveUdfPropertyFilePath=./hive-udf/udf.properties #Hive UDF JAR所在目录路径 hiveUdfDir=./hive-udf/udf
说明:
配置的路径必须以字符.开始,OmniOperator运行的时候会读取环境变量OMNI_HOME的值替换字符.。 -
按
Esc键,输入 :wq!,按Enter保存并退出编辑。
-
-
更新环境变量。
-
打开
\~/.bashrc文件。vi ~/.bashrc -
按
i进入编辑模式,追加LD_LIBRARY_PATH的内容更新环境变量。export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:${JAVA_HOME}/jre/lib/aarch64/server -
按
Esc键,输入 :wq!,按Enter保存并退出编辑。 -
使更新后环境变量生效。
source ~/.bashrc
-
在管理节点完成行处理安装的基础之上,执行以下步骤更新/opt/omni-operator/conf/omni.conf中的配置内容,以支持批处理操作。
-
打开文件。
vi /opt/omni-operator/conf/omni.conf -
按
i进入编辑模式,找到以下语句并修改。enableBatchExprEvaluate=true -
按
Esc键,输入 :wq!,按Enter保存并退出编辑。
