---
title: 安装依赖
description: "通过本地方式安装OmniOperator算子加速，在OmniOperator算子加速结合Spark引擎应用时，在管理节点安装依赖包LLVM和jemalloc。"
url: https://www.hikunpeng.com/document/detail/zh/kunpengboostkithistory/2530/bds/kunpengbds_omniruntime_20_0211.html
sourcePath: /source/zh/kunpengboostkithistory/2530/bds/kunpengbds_omniruntime_20_0211.html
indexId: ff7c39f837cb76b39e4a701278fe006a3e5c187586795aa38477f706b0a59e0b78
---
# 安装依赖

通过本地方式安装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 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操作步骤的1～3。


#### 安装依赖（源码编译安装方式，SparkExtension和Gluten场景）

安装LLVM

“/opt/omni-operator”、“/opt/omni-operator/llvm”和“/opt/omni-operator/lib”目录用户可自行定义。


1. 下载llvm-project-llvmorg-15.0.4.tar.gz(https://github.com/llvm/llvm-project/archive/refs/tags/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(https://github.com/jemalloc/jemalloc/archive/refs/tags/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://github.com/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
```
