macOS m1 m2 芯片编译 Hadoop native 库, 消除警告信息
默认情况下,直接运行 Hadoop 命令会出现如下警告:
1 | WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... |
当然这个警告信息没有什么实质的影响,一般也不会在本地电脑运行计算任务,消除警告只是强迫症发作罢了。
这里提供了编译好的二进制文件,但是版本不全,需要手动编译的参考下面的内容。
另有 Intel CPU 版本的二进制文件。我上面仓库中编译的 ARM 版本也 merge 到此仓库了。
只需要将对应版本 hadoop-x.x.x/lib/native
下的文件,替换到本地 ${HADOOP_HOME}/lib/native
中即可,不需要重启集群。
另外还有一个更简单的办法,修改日志等级,就不会打印这条警告日志了,只需要在 ${HADOOP_HOME}/etc/hadoop/log4j.properties
里面加上下面这一行即可:
1 | log4j.logger.org.apache.hadoop.util.NativeCodeLoader=ERROR |
下面的教程仅针对 Apple silicon (M1 / M2) 芯片。
安装 PB 2.5.0
Hadoop 2.x 需要先编译安装 PB 2.5.0,Hadoop 3.x 不需要:
准备源码
1 | wget https://github.com/google/protobuf/releases/download/v2.5.0/protobuf-2.5.0.tar.bz2 |
修改 src/google/protobuf/stubs/platform_macros.h
,增加如下开始的三行(PB 2.5.0 版本代码的第 60 行开始):
1 |
编译安装
1 | # brew install m4 |
至此 PB 2.5.0 安装完成。
编译 Hadoop
准备源码
1 | git clone https://github.com/apache/hadoop.git |
在 hadoop-common-project/hadoop-common/pom.xml
文件的 cmake 参数里添加如下字段:
1 | <ZLIB_LIBRARY>/opt/homebrew/Cellar/zlib/1.2.12/lib</ZLIB_LIBRARY> |
修改文件:
1 | vim hadoop-common-project/hadoop-common/src/main/native/src/exception.c |
修改文件:
1 | vim hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-nodemanager/src/main/native/container-executor/impl/container-executor.c |
开始编译
编译过程中请保持网络畅通:
1 | mvn clean package -Pnative -DskipTests |
检查编译、安装结果:
1 | hadoop checknative -a |