TT Bigdata TT Bigdata
首页
  • 部署专题

    • 常规安装
    • 一键部署
  • 组件专题

    • 安装教程
    • 魔改分享
  • 版本专题

    • 更新说明
    • BUG临时处理
  • Ambari-Env

    • 环境准备
    • 开始使用
  • 组件编译

    • 专区—Ambari
    • 专区—Bigtop-官方组件
    • 专区—Bigtop-扩展组件
  • 报错解决

    • 专区—Ambari
    • 专区—Bigtop
  • 其他技巧

    • APT仓库增量更新
    • Maven镜像加速
    • Gradle镜像加速
    • Bower镜像加速
    • 虚拟环境思路
    • R环境安装+一键安装脚本
    • Ivy配置私有镜像仓库
    • Node.js 多版本共存方案
    • Ambari Web本地启动
    • Npm镜像加速
    • PostgreSQL快速安装
    • Temurin JDK 23快速安装
  • 成神之路

    • 专区—Ambari
    • 专区—Ambari-Metrics
    • 专区—Bigtop
  • 集成案例

    • Redis集成教学
    • Dolphin集成教学
    • Doris集成教学
    • 持续整理...
  • 核心代码

    • 各组件代码
    • 通用代码模板
  • 国产化&其他系统

    • Rocky系列
    • Ubuntu系列
  • Grafana监控方案

    • Ambari-Metrics插件
    • Infinity插件
  • 支持&共建

    • 蓝图愿景
    • 合作共建
登陆
GitHub (opens new window)

JaneTTR

数据酿造智慧,每一滴都是沉淀!
首页
  • 部署专题

    • 常规安装
    • 一键部署
  • 组件专题

    • 安装教程
    • 魔改分享
  • 版本专题

    • 更新说明
    • BUG临时处理
  • Ambari-Env

    • 环境准备
    • 开始使用
  • 组件编译

    • 专区—Ambari
    • 专区—Bigtop-官方组件
    • 专区—Bigtop-扩展组件
  • 报错解决

    • 专区—Ambari
    • 专区—Bigtop
  • 其他技巧

    • APT仓库增量更新
    • Maven镜像加速
    • Gradle镜像加速
    • Bower镜像加速
    • 虚拟环境思路
    • R环境安装+一键安装脚本
    • Ivy配置私有镜像仓库
    • Node.js 多版本共存方案
    • Ambari Web本地启动
    • Npm镜像加速
    • PostgreSQL快速安装
    • Temurin JDK 23快速安装
  • 成神之路

    • 专区—Ambari
    • 专区—Ambari-Metrics
    • 专区—Bigtop
  • 集成案例

    • Redis集成教学
    • Dolphin集成教学
    • Doris集成教学
    • 持续整理...
  • 核心代码

    • 各组件代码
    • 通用代码模板
  • 国产化&其他系统

    • Rocky系列
    • Ubuntu系列
  • Grafana监控方案

    • Ambari-Metrics插件
    • Infinity插件
  • 支持&共建

    • 蓝图愿景
    • 合作共建
登陆
GitHub (opens new window)
  • 案例-Ambari重启失败

  • 案例-数据库连接问题

  • 案例-日志级别控制问题

  • 案例-找不到snappy-devel

  • 案例-编译高级功能

    • 解读-开启Hadoop下ISAL-L和PMDK功能
      • 一、背景与问题
      • 二、解决思路
      • 三、编译环境准备(Rocky 8.10 示例)
        • 3.1 处理 Hadoop 3.3.4 的 OpenSSL 低版本 API 问题
        • 3.2 安装 Rocky 必备依赖包
        • 3.3 启用 OpenSSL + Snappy + ISA-L + PMDK + Zstd 的完整环境
      • 四、完整编译命令
      • 五、编译结果验证
    • 解决-ISAL-L和PMDK功能完整环境包
  • SYS-Rocky
  • 案例-编译高级功能
JaneTTR
2025-08-17
目录

解读-开启Hadoop下ISAL-L和PMDK功能

# 一、背景与问题

在 Hadoop 默认构建包中,ISAL(Intel Storage Acceleration Library)、PMDK(Persistent Memory Development Kit) 和 ZSTD(Zstandard 压缩库) 往往是关闭状态,这会影响数据压缩、解压及内存操作的效率。

根据群友用户反馈,在执行 hadoop checknative 时,经常看到这些功能显示为 false 或 not available:

功能关闭示例

功能缺失提示

实际安装时,也可能遇到功能库缺失的提示:

安装缺失依赖提示

# 二、解决思路

要让这些特性在 Hadoop 中可用,必须在源码编译阶段显式开启相关编译参数,并且确保构建机已安装对应的开发库文件。

这样,Hadoop 的 native 模块在编译时就会检测到依赖并启用支持,生成的 tarball 和安装包安装后功能即为 true。

# 三、编译环境准备(Rocky 8.10 示例)

# 3.1 处理 Hadoop 3.3.4 的 OpenSSL 低版本 API 问题

高版本系统需源码适配

在 Rocky Linux 8.10 中,OpenSSL 默认是 3.x,不再提供 1.1.x API,也不建议降级。
因此,必须在源码中适配新旧 API,避免 EVP_CIPHER_CTX_block_size 相关报错。

具体解决方案可参考:EVP_CIPHER_CTX_block_size 报错解决

# 3.2 安装 Rocky 必备依赖包

在正式构建 Hadoop 前,建议先安装以下依赖,确保编译链路完整:

dnf install -y \
  isa-l-devel \
  libpmem-devel \
  libpmemobj-devel \
  protobuf-compiler \
  python3-pip \
  pkgconf \
  m4 \
  autoconf-archive \
  libzip-devel \
  sharutils \
  libgsasl-devel \
  libzstd-devel
1
2
3
4
5
6
7
8
9
10
11
12
13

依赖说明:

  • isa-l-devel:Intel Storage Acceleration Library(压缩加速库)
  • libpmem-devel / libpmemobj-devel:持久化内存开发套件
  • libzstd-devel:Zstandard 压缩库
  • snappy-devel:Snappy 压缩库(Hadoop 默认依赖)
  • protobuf 系列:包含 Protobuf 编译器和开发库

提示

完整 Rocky 8.10 构建环境包可参考本站 Rocky 编译环境准备 章节。

# 3.3 启用 OpenSSL + Snappy + ISA-L + PMDK + Zstd 的完整环境

一站式环境方案

如果需要一次性启用 OpenSSL、Snappy、ISA-L、PMDK、Zstd 等 Native 特性,

可参考会员专属方案:解决-ISAL-L和PMDK功能完整环境包

# 四、完整编译命令

在 Hadoop 源码根目录执行:

mvn \
  -Dsnappy.prefix=x \
  -Dbundle.snappy=true \
  -Dsnappy.lib=/usr/lib64 \
  -Pdist -Pnative -Psrc -Pyarn-ui -Dtar \
  -Dzookeeper.version=3.5.9 \
  -Dleveldbjni.group=org.fusesource.leveldbjni \
  -DskipTests -DskipITs \
  -Drequire.openssl=true \
  -Drequire.isal=true \
  -Drequire.pmdk=true \
  -DProtobuf_PROTOC_EXECUTABLE=/usr/bin/protoc \
  -DProtobuf_LIBRARY=/usr/lib64/libprotobuf.so \
  -DProtobuf_LITE_LIBRARY=/usr/lib64/libprotobuf-lite.so \
  -DProtobuf_PROTOC_LIBRARY=/usr/lib64/libprotoc.so \
  -Drequire.zstd=true \
  install \
  -Divy.home=/root/.ivy2
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18

参数说明:

参数 作用
-Pnative 启用 Hadoop 原生库构建
-Drequire.isal=true 强制检测并启用 ISAL
-Drequire.pmdk=true 强制检测并启用 PMDK
-Drequire.zstd=true 强制检测并启用 ZSTD
-Drequire.openssl=true 启用 OpenSSL 加密
-Dbundle.snappy=true 将 Snappy 静态打包到 Hadoop 中
Protobuf 系列参数 指定 Protobuf 编译器及库路径,避免找不到依赖

# 五、编译结果验证

安装打包好的 Hadoop 后,运行:

# 安装后执行
hadoop checknative -a

# hadoop-dist 文件可以直接使用这个命令
./bin/hadoop jar share/hadoop/common/hadoop-common-3.3.4.jar org.apache.hadoop.util.NativeLibraryChecker -a
1
2
3
4
5

如输出结果中 zstd, isal, pmdk 都显示为 true,说明已成功启用:

全部开启验证结果

#bigtop-select#rocky8#编译适配#源码分析
解决-HDFS报snappy-devel包缺失现象
解决-ISAL-L和PMDK功能完整环境包

← 解决-HDFS报snappy-devel包缺失现象 解决-ISAL-L和PMDK功能完整环境包→

最近更新
01
[/metrics/aggregated] — 聚合数据范围 检查点
09-19
02
[/metrics] — 反向分析接口参数 请求抓包
09-17
03
[/metrics] — 普通指标写入方法 POST
09-17
更多文章>
Theme by Vdoing | Copyright © 2017-2025 JaneTTR | MIT License
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式