鲲鹏社区首页
中文
注册
开发者
我要评分
获取效率
正确性
完整性
易理解
在线提单
论坛求助

安装依赖

以本地方式安装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算子加速的根目录,进入该目录。
    1
    2
    3
    mkdir /opt/omni-operator
    cd /opt/omni-operator
    -
    
  2. 软件安装包获取中获取Dependency_library_openeuler22.03.zip,并上传到“/opt/omni-operator/”目录下,再进行解压。
    1
    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文件,再执行复制命令。

    1
    2
    rm -rf /opt/omni-operator/lib/libjemalloc.so.2
    rm -rf /opt/omni-operator/lib/libLLVM-15.so
    
    1
    2
    3
    4
    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算子加速的根目录,进入该目录。
    1
    2
    3
    mkdir /opt/omni-operator
    cd /opt/omni-operator
    rm Dependency_library_Gluten.zip -rf
    
  2. 软件安装包获取中获取Dependency_library_Gluten.zip压缩包,并上传到“/opt/omni-operator/”目录下,再进行解压。
    1
    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文件,再执行复制命令。

    1
    2
    rm -rf /opt/omni-operator/lib/libjemalloc.so.2
    rm -rf /opt/omni-operator/lib/libLLVM-15.so
    
    1
    2
    3
    4
    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”目录下。
    1
    2
    3
    4
    5
    6
    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。
    1
    2
    3
    4
    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”目录下。
    1
    2
    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,并上传到管理节点。
    1
    2
    3
    cd /opt/omni-operator/
    tar zxvf jemalloc-5.3.0.tar.gz
    mv jemalloc-5.3.0 jemalloc
    

    “/opt/omni-operator/jemalloc”目录用户可自行定义。

  2. 进入“jemalloc”目录,运行脚本并安装。
    1
    2
    3
    cd jemalloc
    ./autogen.sh --disable-initial-exec-tls
    make -j2
    
  3. 拷贝“/opt/omni-operator/jemalloc/lib/libjemalloc.so.2”“/opt/omni-operator/lib”目录下。
    1
    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