安装指南

安装简介

组网规划

建议采用存算一体组网,即存储节点和计算节点共用,充分发挥OmniRuntime子特性在大数据场景中的计算加速效果。

OmniOperator算子加速组网规划的环境由4台服务器组成,使用存算一体的组网,分别是管理节点(1台)、计算节点(3台)。以存储节点为HDFS进行举例说明,其中:

  • 管理节点为server1,用于管理任务。
  • 计算节点为agent1、agent2和agent3,用于运行OmniOperator。

一台服务器可以同时充当管理节点和计算节点(如果是单机安装模式,后续文章中提到的在管理节点/计算节点上执行的操作,均需要在一个节点上执行),组网规划如图 1 安装组网图所示。

图 1 安装组网图

环境要求

安装OmniOperator算子加速特性前,请参见本节内容,提前准备软硬件安装环境,以确保后续安装操作顺利进行。

硬件要求

集群中各节点硬件要求如表 1 硬件要求所示。

表 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 操作系统和软件要求所示。

表 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。

表 3 OmniOperator算子加速软件获取列表

序号 名称 包名 发布类型 说明 获取地址
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依赖获取链接

软件安装包完整性校验

从鲲鹏社区获取的软件安装包,下载软件安装包后需要校验软件安装包,确保与网站上的原始软件安装包一致。

校验方法:

  1. 获取软件数字证书和软件安装包。
  2. 获取校验工具和校验方法
  3. 参见上述链接下载的《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)上编译安装才能正常运行。

    表 1 源码编译前需要配置的软件

名称 版本要求 获取链接
GCC/G++ openEuler 20.03:7.3.0 获取链接
openEuler 22.03:10.3.0 获取链接
Autoconf 2.69 获取链接
CMake 3.20.5 获取链接
  1. 编译安装GCC/G++。以7.3.0版本为例:

    1. 查看GCC/G++版本,确认是否为目标版本。

        ```
        gcc --version
        g++ --version
        ```
      
    2. 编译安装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
        ```
      
  2. 编译安装Autoconf。

    1. 查看Autoconf版本,确认是否为目标版本。

       ```
       autoconf --version
       ```
      
    2. 编译安装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
       ```
      
  3. 安装CMake。

    1. 查看CMake版本,确认是否为目标版本。

       ```
       cmake --version
       ```
      
    2. 安装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目录用户可自行定义。
  1. 在管理节点创建/opt/omni-operator/目录作为安装OmniOperator算子加速的根目录,进入该目录。

    mkdir /opt/omni-operator
    cd /opt/omni-operator
    
  2. 表 3 OmniOperator算子加速软件获取列表中获取Dependency_library_openeuler22.03.zip,并上传到/opt/omni-operator/目录下,再进行解压。

    unzip Dependency_library_openeuler22.03.zip
    
  3. 创建/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.so
    
    cd /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
    

安装依赖(预编译so下载安装方式,Gluten场景)

安装LLVM和jemalloc

说明:

  • Gluten场景中未提供ABSL库的预编译so文件,因此需要用户手动编译安装。
  • /opt/omni-operator/opt/omni-operator/lib目录用户可自行定义。
  1. 在管理节点创建/opt/omni-operator/目录作为安装OmniOperator算子加速的根目录,进入该目录。

    mkdir /opt/omni-operator
    cd /opt/omni-operator
    rm Dependency_library_Gluten.zip -rf
    
  2. 表 3 OmniOperator算子加速软件获取列表中获取Dependency_library_Gluten.zip压缩包,并上传到/opt/omni-operator/目录下,再进行解压。

    unzip Dependency_library_Gluten.zip
    
  3. 创建/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.so
    
    cd /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
    
  4. 手动编译安装ABSL。详细操作步骤请参见安装ABSL操作步骤的13

安装依赖(源码编译安装方式,SparkExtension和Gluten场景)

安装LLVM

说明: /opt/omni-operator/opt/omni-operator/llvm/opt/omni-operator/lib目录用户可自行定义。

  1. 下载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
    
  2. 进入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
    
  3. /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

  1. 下载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目录用户可自行定义。

  2. 进入jemalloc目录,运行脚本并安装。

    cd jemalloc
    ./autogen.sh --disable-initial-exec-tls
    make -j2
    
  3. 拷贝/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上使能时需要)

  1. 在管理节点上下载ABSL源码。

    git clone https://szv-open.codehub.huawei.com/OpenSourceCenter/abseil/abseil-cpp.git
    cd abseil-cpp/
    git checkout tags/20250127.0
    
  2. 编译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
    
  3. 将编译好的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.gzboostkit-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即可。
  1. 表 3 OmniOperator算子加速软件获取列表中OmniOperator算子加速相关压缩文件上传到管理节点和计算节点的/opt/omni-operator/目录。

  2. 进入/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
    
  3. 拷贝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/*
    
  4. /opt/omni-operator目录下创建conf文件夹,设置文件夹权限750。

    cd /opt/omni-operator
    mkdir conf
    chmod 750 /opt/omni-operator/conf
    
  5. conf文件夹下新增omni.conf配置文件并修改配置文件权限为640,用于配置OmniOperator算子加速配置项。

    cd conf
    touch omni.conf
    chmod 640 omni.conf
    
  6. 删除/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
    

UDF插件行处理安装

  1. 在管理节点创建/opt/omni-operator/hive-udf目录。

    mkdir /opt/omni-operator/hive-udf
    
  2. 将上述相关的压缩文件udf.zip、conf.zip上传到管理节点的/opt/omni-operator/hive-udf目录。

    说明: udf.zip、conf.zip等压缩包名称用户根据自己实际情况可进行自定义,本处仅提供示例。

  3. 解压相关压缩文件。

    cd /opt/omni-operator/hive-udf
    unzip udf.zip
    rm -f udf.zip
    unzip conf.zip
    rm -f conf.zip
    
  4. /opt/omni-operator/conf/omni.conf文件中更新配置。

    1. 打开配置文件。

      vi /opt/omni-operator/conf/omni.conf
      
    2. i进入编辑模式,新增关于UDF配置相关内容。

      # <----UDF properties---->
      #false表示使用表达式行处理,true表示使用表达式批处理
      enableBatchExprEvaluate=false
      #UDF白名单文件路径
      hiveUdfPropertyFilePath=./hive-udf/udf.properties
      #Hive UDF JAR所在目录路径
      hiveUdfDir=./hive-udf/udf
      

      说明: 配置的路径必须以字符.开始,OmniOperator运行的时候会读取环境变量OMNI_HOME的值替换字符.

    3. Esc键,输入 :wq!,按Enter保存并退出编辑。

  5. 更新环境变量。

    1. 打开\~/.bashrc文件。

      vi ~/.bashrc
      
    2. i进入编辑模式,追加LD_LIBRARY_PATH的内容更新环境变量。

      export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:${JAVA_HOME}/jre/lib/aarch64/server
      
    3. Esc键,输入 :wq!,按Enter保存并退出编辑。

    4. 使更新后环境变量生效。

      source ~/.bashrc
      

UDF插件批处理安装

在管理节点完成行处理安装的基础之上,执行以下步骤更新/opt/omni-operator/conf/omni.conf中的配置内容,以支持批处理操作。

  1. 打开文件。

    vi /opt/omni-operator/conf/omni.conf
    
  2. i进入编辑模式,找到以下语句并修改。

    enableBatchExprEvaluate=true
    
  3. Esc键,输入 :wq!,按Enter保存并退出编辑。