WARN util.NativeCodeLoader: Unable to load native-hadoop library for y

打印 上一主题 下一主题

主题 862|帖子 862|积分 2586

媒介

在大数据时代,Hadoop以其强大的数据处理能力和灵活性,成为了许多企业和开发者处理大规模数据集的首选工具。然而,设置和维护Hadoop集群并非易事,特别是当涉及到平台兼容性和情况设置时。最近,我在启动Hadoop集群时遇到了一些常见的警告和错误,这些虽然不是致命的问题,但它们的存在无疑增长了维护的复杂性。在这篇文章中,我将分享我如何通过一系列步骤办理这些启动问题,以及如何优化Hadoop的设置,以提高其在特定平台上的稳定性和性能。
问题

hadoop 启动时 控制台一直提示 WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform… using builtin-java classes where applicable
具体日记如下
  1. Starting namenodes on [localhost]
  2. ERROR: Attempting to operate on hdfs namenode as root
  3. ERROR: but there is no HDFS_NAMENODE_USER defined. Aborting operation.
  4. Starting datanodes
  5. ERROR: Attempting to operate on hdfs datanode as root
  6. ERROR: but there is no HDFS_DATANODE_USER defined. Aborting operation.
  7. Starting secondary namenodes [MacBook-Pro.local]
  8. ERROR: Attempting to operate on hdfs secondarynamenode as root
  9. ERROR: but there is no HDFS_SECONDARYNAMENODE_USER defined. Aborting operation.
  10. 2024-01-13 17:34:36,524 WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
复制代码
虽说不是error 但是看这个错误 有点难熬 ! 还是来看看是否 可以办理
2. 分析

Native Library兼容性问题

Hadoop的可执行文件和其native库是在特定情况下编译的,其中native库,大概不兼容全部平台。
未正确设置hadoop加载native lib

大概未正确设置 hadoop的 native lib
3. 办理

关闭告警日记的输出

比较简答的办理方案 – 眼不见心不烦 直接关闭告警日记的输出
${HADOOP_HOME}/etc/hadoop/log4j.properties
在这个文件 新增一句
  1. log4j.logger.org.apache.hadoop.util.NativeCodeLoader=ERROR
复制代码
设置hadoop加载native lib

确保Hadoop能够正确加载native库,可以通过修改hadoop情况变量来实现:
修改 ${HADOOP_HOME}/etc/hadoop/hadoop-env.sh 文件
  1. #修改为自己的hadoop 目录
  2. export HADOOP_HOME=/usr/local/develop/hadoop-3.3.6
  3. export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native
  4. export HADOOP_OPTS="$HADOOP_OPTS -Djava.library.path=$HADOOP_HOME/lib/native"
复制代码
编译源码 更换自带的 native lib

别的 提供了已经编译好的版本 同时也提供了使用说明 拜见: https://github.com/silent-night-no-trace/mac-native-hadoop-library
结果验证

通过上述步骤,可以有效地办理Hadoop启动时的警告问题,并确保系统的正确运行。更换native库后,启动Hadoop应该不再出现兼容性警告,从而提高了系统的稳定性和用户体验。
更换完成可使用 如下命令来验证 native lib
  1. hadoop checknative -a
复制代码

其中3.3.6 源码的编译 有点烦躁 现在只编译了重点的部分 common 和 hdfs 和 mapreduce
参考文章:

源码目录下有个BUILDING.txt : https://github.com/apache/hadoop/blob/trunk/BUILDING.txt
总结

Hadoop作为一个强大的分布式系统框架,其设置和优化是一个持续的过程。正确设置情况变量和处理native库问题,是确保Hadoop稳定运行的关键步骤。

good day!!!

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

用户国营

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表