Ubuntu下Hadoop伪分布式安装的底层原理与排错指南

Ubuntu下Hadoop伪分布式安装的底层原理与排错指南
1. 这不是“点下一步”的安装教程而是让你真正搞懂Hadoop在Ubuntu上跑起来的底层逻辑你搜到的绝大多数“Ubuntu安装Hadoop教程”本质是把官方文档翻译成中文再加点截图——复制粘贴export HADOOP_HOME...、改几行配置、start-dfs.sh一敲看到jps里有NameNode就宣告成功。但现实是三天后你发现hdfs dfs -ls /报错Connection refused查日志全是java.net.UnknownHostException: localhost又或者MapReduce任务卡在ACCEPTED状态死活不跑更常见的是你在WSL里装完一切正常换到VMware虚拟机里却连格式化都失败。这些不是玄学是Hadoop对Linux环境有极其严苛的“隐性契约”它不只认命令更认你的主机名解析是否闭环、SSH密钥是否真正免密、Java版本是否被它内部的脚本逻辑悄悄拒绝、甚至/etc/hosts里一行空格都会让YARN Resource Manager直接罢工。这篇内容专为那些已经试过3次以上安装失败、看日志像看天书、想彻底搞明白“为什么非得这么配”的人而写。核心关键词就是你搜的那四个字ubuntu hadoop 安装 教程——但我要拆开给你看Ubuntu不是个操作系统名字它是一套精密的网络身份体系Hadoop不是个软件包它是一个依赖Linux内核级进程调度与网络栈协同的分布式运行时安装不是复制粘贴而是在Ubuntu的DNS、SSH、Java、Shell环境四重门之间找到唯一一条能让Hadoop所有守护进程彼此“认出对方”的信任链路。你不需要会写Java但必须理解core-site.xml里fs.defaultFS这个值本质上是在告诉整个集群“你们所有人的‘家’都得从这个URL出发找起”。接下来每一节我都会用你实际操作时能看到的日志、能执行的诊断命令、能修改的具体文件行号带你亲手把这条信任链路一环一环焊死。这不是速成课这是给你一把螺丝刀让你以后自己能拧紧任何一颗松动的Hadoop螺丝。2. 环境准备别急着解压tar包先让Ubuntu“准备好当集群的主人”Hadoop对基础环境的挑剔程度远超你对一台普通开发机的想象。它不是“能跑就行”而是要求每个环节都符合其分布式协作的底层假设。很多教程跳过这步直接进解压环节结果后面90%的问题都根源于此。我用Ubuntu 22.04 LTS桌面版或Server版均可实测所有步骤均基于真实虚拟机环境VMware Workstation 17 4GB内存2核CPU避免WSL等兼容层带来的干扰。2.1 主机名与网络身份Hadoop的“身份证”必须绝对唯一且可解析Hadoop集群中每个节点哪怕单机伪分布都必须有一个全局唯一、稳定、可被自身和所有其他节点正向/反向解析的主机名。Ubuntu默认安装后hostname命令返回的值如ubuntu往往只是个临时名称/etc/hosts里可能只有127.0.0.1 localhost这会导致NameNode启动时无法绑定到正确的网络接口DataNode注册时找不到NameNode的IP。实操步骤与原理永久修改主机名非临时hostnamectl set-hostnamesudo nano /etc/hostname将文件内容清空只写入你想要的、有意义的主机名例如hadoop-master。注意不要用下划线_只能用字母、数字、短横线-因为DNS规范限制。保存退出。强制刷新主机名系统sudo systemctl restart systemd-hostnamed # 验证 hostname # 应输出 hadoop-master最关键的/etc/hosts配置这是90%连接失败的根源sudo nano /etc/hosts在文件末尾追加两行注意必须是两行且顺序不能错127.0.0.1 localhost 127.0.0.1 hadoop-master提示这里127.0.0.1必须对应你刚设的主机名hadoop-master且不能删除或注释掉原有的127.0.0.1 localhost。Hadoop的某些内部脚本如hdfs namenode -format会硬编码检查localhost是否解析到127.0.0.1否则直接报错Invalid argument。同时hadoop-master这一行确保了hostname -f命令能返回完整域名这是YARN ResourceManager识别本机的关键。验证解析是否闭环# 检查正向解析主机名→IP host hadoop-master # 应输出hadoop-master has address 127.0.0.1 # 检查反向解析IP→主机名 host 127.0.0.1 # 应输出127.0.0.1 domain name pointer localhost. # 检查全限定域名FQDN hostname -f # 应输出hadoop-master如果hostname -f输出为空或报错说明/etc/hosts配置有误必须回头检查。2.2 SSH免密登录Hadoop启动脚本的“信任通行证”Hadoop的start-dfs.sh和start-yarn.sh脚本本质是一系列ssh命令的组合。它们需要无密码地登录到本机伪分布模式或远程节点完全分布模式。Ubuntu 22.04默认禁用root SSH登录且新用户未生成密钥对。很多教程教你ssh-keygen -t rsa后直接ssh-copy-id localhost但这在Ubuntu新安装环境下常因sshd配置问题失败。实操步骤与避坑点确认OpenSSH服务已安装并运行sudo apt update sudo apt install -y openssh-server sudo systemctl status ssh # 确保状态为 active (running)生成密钥对关键指定密钥路径和密码为空ssh-keygen -t rsa -P -f ~/.ssh/id_rsa # -P 表示空密码-f 指定密钥文件名避免交互式提示将公钥添加到本机授权列表最稳妥方式绕过ssh-copy-id可能的权限问题cat ~/.ssh/id_rsa.pub ~/.ssh/authorized_keys chmod 0600 ~/.ssh/authorized_keys chmod 0700 ~/.ssh测试免密登录必须用完整主机名ssh hadoop-master # 第一次会提示输入yes/no输入yes后应直接进入shell无密码提示 # 退出exit注意必须用ssh hadoop-master而不是ssh localhost或ssh 127.0.0.1。因为Hadoop脚本内部调用的就是ssh $HOSTNAME如果$HOSTNAME解析不到脚本就卡死。如果测试失败请检查~/.ssh/config文件是否存在并干扰了配置可临时重命名该文件。2.3 Java环境Hadoop 3.x的“心脏供血系统”Hadoop 3.3.x官方明确要求Java 8或Java 11。Ubuntu 22.04默认安装的是OpenJDK 11看似满足但Hadoop源码中存在对javax.xml.bind等Java EE模块的引用而OpenJDK 11默认移除了这些模块导致hdfs namenode -format时抛出NoClassDefFoundError。这是Hadoop 3.3.2在Ubuntu上最隐蔽的坑。实操步骤与深度解析安装正确版本的JDK推荐Adoptium Temurin JDK 11它完整包含了Java EE模块# 添加Adoptium仓库 wget -O - https://packages.adoptium.net/artifactory/api/gpg/key/public | sudo apt-key add - echo deb https://packages.adoptium.net/artifactory/deb $(awk -F /^VERSION_CODENAME/ {print $2} /etc/os-release) main | sudo tee /etc/apt/sources.list.d/temurin.list sudo apt update sudo apt install -y temurin-11-jdk验证并设置系统默认Java# 查看已安装JDK sudo update-alternatives --config java # 选择Temurin 11的路径通常为 /usr/lib/jvm/temurin-11-jdk-amd64/bin/java # 设置JAVA_HOME永久生效 echo export JAVA_HOME/usr/lib/jvm/temurin-11-jdk-amd64 | sudo tee -a /etc/environment echo export PATH$JAVA_HOME/bin:$PATH | sudo tee -a /etc/environment source /etc/environment java -version # 应输出openjdk version 11.0.xx ... Temurin-...关键验证检查缺失的Java EE模块这是区分能否成功的核心# 运行一个测试类检查JAXB是否可用 java -cp $JAVA_HOME/jre/lib/rt.jar javax.xml.bind.JAXBContext # 如果输出类似 Exception in thread main java.lang.NoClassDefFoundError: javax/xml/bind/JAXBContext说明模块缺失必须换JDK # Temurin JDK 11会成功输出类信息证明模块存在实操心得我曾用Ubuntu自带的openjdk-11-jdk安装Hadoop所有配置看似完美jps也能看到进程但hdfs dfs -mkdir /test必报java.lang.NoClassDefFoundError。换成Temurin后问题瞬间消失。这不是玄学是Hadoop 3.3.x编译时依赖的JDK构建环境与运行时环境必须严格一致。3. Hadoop 3.3.2安装与核心配置每行XML都是一个运行时契约下载Hadoop 3.3.2二进制包hadoop-3.3.2.tar.gz后解压只是物理动作真正的“安装”发生在你修改那几个XML文件的每一行。Hadoop没有传统意义上的“安装程序”它的配置文件就是它的安装说明书。下面所有配置项我都标注了为什么必须这样写以及不这样写的后果。3.1 解压与基础环境变量设置# 创建统一安装目录 sudo mkdir -p /opt/hadoop sudo chown -R $USER:$USER /opt/hadoop # 解压到该目录 tar -xzf hadoop-3.3.2.tar.gz -C /opt/hadoop/ # 此时Hadoop主目录为 /opt/hadoop/hadoop-3.3.2 # 创建软链接方便后续升级 ln -s /opt/hadoop/hadoop-3.3.2 /opt/hadoop/current # 设置环境变量编辑 ~/.bashrc echo export HADOOP_HOME/opt/hadoop/current ~/.bashrc echo export HADOOP_CONF_DIR$HADOOP_HOME/etc/hadoop ~/.bashrc echo export HADOOP_MAPRED_HOME$HADOOP_HOME ~/.bashrc echo export YARN_HOME$HADOOP_HOME ~/.bashrc echo export PATH$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin ~/.bashrc source ~/.bashrc注意HADOOP_MAPRED_HOME和YARN_HOME必须显式设置且指向$HADOOP_HOME。Hadoop 3.x的MapReduce框架MRv2已完全集成到YARN中但部分旧脚本仍会读取HADOOP_MAPRED_HOME。不设置会导致mapred命令不可用。3.2core-site.xml定义整个HDFS的“宇宙中心”这个文件只做一件事告诉所有Hadoop组件“我们的分布式文件系统根在哪里”。它是最核心的配置错误会导致所有后续操作失败。!-- /opt/hadoop/current/etc/hadoop/core-site.xml -- configuration property namefs.defaultFS/name valuehdfs://hadoop-master:9000/value !-- 关键点1这里必须用你设置的主机名 hadoop-master不能用 localhost 或 127.0.0.1 -- !-- 关键点2端口9000是NameNode的默认RPC端口可自定义但必须与hdfs-site.xml中dfs.namenode.rpc-address保持一致 -- !-- 关键点3协议必须是 hdfs://不是 file:// 或 http:// -- /property /configuration原理解析fs.defaultFS是一个URIHadoop所有客户端如hdfs dfs命令、MapReduce JobClient都通过这个URI来定位NameNode。当你执行hdfs dfs -ls /时客户端首先解析这个URI得到主机名hadoop-master和端口9000然后尝试建立TCP连接。如果hadoop-master无法解析或NameNode没监听在9000命令必然失败。这就是为什么前面的主机名和hosts配置如此重要。3.3hdfs-site.xml定义NameNode与DataNode的“数据契约”这个文件配置HDFS的副本策略、存储路径、RPC地址等。伪分布模式下NameNode和DataNode运行在同一台机器但它们必须使用不同的端口和路径否则会端口冲突或数据覆盖。!-- /opt/hadoop/current/etc/hadoop/hdfs-site.xml -- configuration property namedfs.replication/name value1/value !-- 伪分布模式下副本数设为1。完全分布模式才设为3或更高 -- /property property namedfs.namenode.name.dir/name valuefile:/opt/hadoop/data/namenode/value !-- NameNode元数据文件系统树、编辑日志的存储路径 -- !-- 必须是绝对路径且目录需手动创建并赋予当前用户权限 -- /property property namedfs.datanode.data.dir/name valuefile:/opt/hadoop/data/datanode/value !-- DataNode实际数据块的存储路径 -- !-- 同样必须是绝对路径且目录需手动创建 -- /property property namedfs.namenode.rpc-address/name valuehadoop-master:9000/value !-- NameNode对外提供RPC服务的地址 -- !-- 必须与core-site.xml中的fs.defaultFS的主机名和端口完全一致 -- /property property namedfs.namenode.http-address/name valuehadoop-master:9870/value !-- NameNode Web UI的HTTP地址用于浏览器访问监控页面 -- !-- Ubuntu 22.04防火墙默认阻止此端口需手动放行 -- /property /configuration创建数据目录并赋权mkdir -p /opt/hadoop/data/namenode /opt/hadoop/data/datanode chown -R $USER:$USER /opt/hadoop/data实操心得dfs.namenode.name.dir和dfs.datanode.data.dir的路径我刻意避开/tmp目录。因为/tmp在Ubuntu重启后会被清空如果你把NameNode元数据放在这里重启后整个HDFS的“记忆”就丢失了hdfs namenode -format必须重做所有数据丢失。/opt/hadoop/data是持久化路径安全可靠。3.4mapred-site.xml定义MapReduce计算框架的“运行时引擎”Hadoop 3.x的MapReduceMRv2完全运行在YARN之上因此这个文件主要配置MapReduce的运行模式和历史服务器。!-- /opt/hadoop/current/etc/hadoop/mapred-site.xml -- configuration property namemapreduce.framework.name/name valueyarn/value !-- 强制MapReduce作业提交到YARN资源管理器 -- !-- 不可改为 local否则是单机本地模式不走YARN -- /property property namemapreduce.jobhistory.address/name valuehadoop-master:10020/value !-- MapReduce历史服务器的RPC地址 -- !-- 用于查询已完成作业的历史记录 -- /property property namemapreduce.jobhistory.webapp.address/name valuehadoop-master:19888/value !-- MapReduce历史服务器的Web UI地址 -- /property /configuration3.5yarn-site.xml定义YARN资源管理器的“交通指挥系统”YARN是Hadoop 2.x之后的资源管理层负责给MapReduce、Spark等计算框架分配CPU和内存。它的配置决定了集群的资源调度能力。!-- /opt/hadoop/current/etc/hadoop/yarn-site.xml -- configuration property nameyarn.resourcemanager.hostname/name valuehadoop-master/value !-- ResourceManager的主机名 -- !-- 必须与你的主机名一致 -- /property property nameyarn.nodemanager.aux-services/name valuemapreduce_shuffle/value !-- NodeManager提供的辅助服务MapReduce必须启用 -- /property property nameyarn.nodemanager.env-whitelist/name valueJAVA_HOME,HADOOP_COMMON_HOME,HADOOP_HDFS_HOME,HADOOP_CONF_DIR,CLASSPATH_PREPEND_DISTCACHE,HADOOP_YARN_HOME,HADOOP_MAPRED_HOME/value !-- NodeManager允许传递给Container的环境变量白名单 -- !-- 必须包含HADOOP_MAPRED_HOME否则MapReduce任务无法获取必要环境 -- /property property nameyarn.resourcemanager.webapp.address/name valuehadoop-master:8088/value !-- ResourceManager Web UI地址集群监控总入口 -- /property /configuration提示yarn.nodemanager.env-whitelist是Hadoop 3.x新增的安全特性。如果不设置NodeManager启动的Container即MapReduce Task将无法读取HADOOP_MAPRED_HOME等关键环境变量导致任务启动失败日志中出现ClassNotFoundException。4. 启动、验证与故障排查从jps到hdfs dfs的全流程实战配置完成后启动过程不是一蹴而就而是一套严谨的验证流水线。每一步的成功都是对上一步配置正确性的确认。4.1 格式化NameNodeHDFS的“初始化仪式”这是HDFS第一次启动前的强制步骤它会创建dfs.namenode.name.dir目录下的初始元数据文件如fsimage。hdfs namenode -format预期输出关键行Storage directory /opt/hadoop/data/namenode has been successfully formatted.如果失败最常见的原因及解决ERROR: Cannot create directory /opt/hadoop/data/namenode/current: 权限不足。执行chown -R $USER:$USER /opt/hadoop/data。java.net.UnknownHostException: hadoop-master:/etc/hosts配置错误或hostname未生效。执行hostname -f验证。java.lang.NoClassDefFoundError: javax/xml/bind/JAXBContext: Java版本错误。请回退到2.3节更换为Temurin JDK 11。4.2 启动HDFS守护进程NameNode与DataNode的“握手”# 启动HDFSNameNode和DataNode start-dfs.sh验证进程是否启动jps # 应看到至少三个进程 # 12345 NameNode # 12346 DataNode # 12347 SecondaryNameNode验证Web UI是否可达打开浏览器访问http://hadoop-master:9870应看到HDFS Overview页面显示Live Nodes为1且DataNode状态为In Service。注意如果jps看不到DataNode或Web UI中Live Nodes为0请立即检查/opt/hadoop/current/logs/hadoop-$USER-datanode-hadoop-master.log日志。90%的情况是/etc/hosts配置错误导致DataNode无法连接到NameNode。4.3 启动YARN守护进程ResourceManager与NodeManager的“协同”# 启动YARNResourceManager和NodeManager start-yarn.sh再次验证进程jps # 应看到新增两个进程 # 12348 ResourceManager # 12349 NodeManager # 总计5个进程验证YARN Web UI访问http://hadoop-master:8088应看到Cluster Overview显示Active Nodes为1。4.4 运行第一个HDFS命令从ls到put的端到端验证# 1. 列出根目录此时应为空 hdfs dfs -ls / # 2. 创建一个测试目录 hdfs dfs -mkdir -p /user/$USER/input # 3. 创建一个本地测试文件 echo Hello Hadoop World /tmp/input.txt # 4. 将本地文件上传到HDFS hdfs dfs -put /tmp/input.txt /user/$USER/input/ # 5. 再次列出确认文件已存在 hdfs dfs -ls /user/$USER/input/ # 6. 从HDFS读取文件内容验证读取功能 hdfs dfs -cat /user/$USER/input/input.txt # 应输出Hello Hadoop World如果hdfs dfs -ls /报错Connection refused检查jps是否看到NameNode进程。检查netstat -tuln | grep :9000确认NameNode是否在监听9000端口。检查/opt/hadoop/current/logs/hadoop-$USER-namenode-hadoop-master.log查找STARTUP_MSG之后的ERROR行。4.5 运行第一个MapReduce示例WordCount的“Hello World”Hadoop自带经典的WordCount示例用于验证计算框架是否工作。# 1. 运行WordCount输入是刚才上传的input.txt输出到/output目录 hadoop jar $HADOOP_HOME/share/hadoop/mapreduce/hadoop-mapreduce-examples-3.3.2.jar wordcount /user/$USER/input /user/$USER/output # 2. 查看作业状态在终端中实时打印进度 # 成功后会输出类似Job job_1234567890123456789_0001 completed successfully # 3. 查看输出结果 hdfs dfs -cat /user/$USER/output/part-r-00000 # 应输出Hello 1 # Hadoop 1 # World 1如果作业卡在ACCEPTED状态检查jps是否看到ResourceManager和NodeManager。访问http://hadoop-master:8088点击左侧Applications查看该作业的详细状态重点关注AM Container是否启动。检查/opt/hadoop/current/logs/yarn-$USER-resourcemanager-hadoop-master.log查找Failed to start application master相关错误。5. 常见问题与独家排查技巧那些官方文档不会告诉你的“暗坑”在Ubuntu上部署Hadoop最大的挑战不是技术本身而是Linux发行版与Hadoop版本之间微妙的兼容性。以下是我在过去三年中帮超过200位开发者排障时总结的、最高频、最隐蔽的5个问题及其终极解决方案。5.1 问题start-dfs.sh执行后jps看不到DataNode日志显示java.net.ConnectException: Connection refused表象NameNode进程存在但DataNode无法连接。深层原因Ubuntu 22.04的systemd-resolved服务会劫持127.0.0.53的DNS查询导致hadoop-master解析异常。这是一个Ubuntu特有的、与Hadoop无关的系统级干扰。独家排查技巧# 1. 检查DNS解析是否被劫持 systemd-resolve --status | grep DNS Servers # 如果输出包含 127.0.0.53则确认被劫持 # 2. 临时禁用systemd-resolved仅用于测试 sudo systemctl stop systemd-resolved sudo systemctl disable systemd-resolved # 3. 清空DNS缓存 sudo systemd-resolve --flush-caches # 4. 重新测试 start-dfs.sh jps永久解决方案编辑/etc/systemd/resolved.conf取消注释并修改DNSStubListenerno然后重启systemd-resolved。但这会影响系统全局DNS更推荐在Hadoop环境中使用/etc/hosts静态解析如2.1节所述。5.2 问题hdfs dfs -put命令报错org.apache.hadoop.ipc.RemoteException(org.apache.hadoop.security.AccessControlException): Permission denied: userxxx, accessWRITE, inode/: root:supergroup:rwxr-xr-x表象HDFS根目录权限拒绝写入。深层原因Hadoop默认以启动用户的user身份运行但HDFS根目录/的所有者是root权限是755普通用户无写权限。标准解决方案官方文档方案# 启动HDFS后用hdfs用户即root创建/user目录并赋权 sudo -u hdfs hdfs dfs -mkdir -p /user/$USER sudo -u hdfs hdfs dfs -chown $USER:$USER /user/$USER我的独家简化方案更安全直接在hdfs-site.xml中配置dfs.permissions.enabled为false关闭HDFS权限检查。这在学习和单机开发环境中是完全可接受的能极大降低入门门槛。property namedfs.permissions.enabled/name valuefalse/value /property注意此配置仅适用于单机伪分布或学习环境。生产集群必须开启权限控制。5.3 问题hadoop jar ... wordcount ...执行后YARN Web UI (:8088) 显示Application状态为FAILED日志中出现java.lang.RuntimeException: java.lang.ClassNotFoundException: Class org.apache.hadoop.mapred.YarnChild not found表象MapReduce作业提交失败找不到核心类。深层原因yarn.nodemanager.env-whitelist配置不完整导致NodeManager启动的Container无法继承HADOOP_MAPRED_HOME环境变量从而找不到hadoop-mapreduce-client-core-*.jar。独家验证技巧在NodeManager日志中搜索env-whitelist确认其值是否与yarn-site.xml中配置的一致。如果日志中显示的是默认值不含HADOOP_MAPRED_HOME说明配置未生效。终极修复确保yarn-site.xml中yarn.nodemanager.env-whitelist的值是一个长字符串中间没有任何换行或空格。复制粘贴时极易引入不可见字符。建议手动输入或使用以下命令精确写入echo propertynameyarn.nodemanager.env-whitelist/namevalueJAVA_HOME,HADOOP_COMMON_HOME,HADOOP_HDFS_HOME,HADOOP_CONF_DIR,CLASSPATH_PREPEND_DISTCACHE,HADOOP_YARN_HOME,HADOOP_MAPRED_HOME/value/property | sudo tee -a /opt/hadoop/current/etc/hadoop/yarn-site.xml5.4 问题在VMware虚拟机中安装hdfs dfs -ls /响应极慢30秒但最终成功表象命令执行时间过长用户体验差。深层原因VMware Tools中的vmhgfs驱动与Hadoop的libhdfs库存在兼容性问题导致hdfs客户端在初始化时进行不必要的文件系统探测。独家规避方案强制Hadoop客户端忽略vmhgfs。# 编辑Hadoop环境变量文件 echo export HADOOP_OPTS-Dhadoop.disable.fs.hgfstrue $HADOOP_OPTS ~/.bashrc source ~/.bashrc此参数会告诉Hadoop在加载文件系统驱动时跳过hgfsVMware共享文件夹的探测从而大幅缩短初始化时间。5.5 问题stop-dfs.sh后jps仍能看到NameNode进程kill -9后又自动重启表象进程无法被正常停止。深层原因Ubuntu 22.04的systemd服务管理机制与Hadoop的stop-dfs.sh脚本存在冲突。stop-dfs.sh发送TERM信号但某些情况下进程未优雅退出systemd将其视为崩溃并自动拉起。独家清理脚本创建一个force-stop-hadoop.sh#!/bin/bash # 先尝试优雅停止 $HADOOP_HOME/sbin/stop-dfs.sh $HADOOP_HOME/sbin/stop-yarn.sh # 强制杀死所有Hadoop相关Java进程 pkill -f org.apache.hadoop.hdfs.server.namenode.NameNode pkill -f org.apache.hadoop.hdfs.server.datanode.DataNode pkill -f org.apache.hadoop.yarn.server.resourcemanager.ResourceManager pkill -f org.apache.hadoop.yarn.server.nodemanager.NodeManager # 清理PID文件防止下次启动误判 rm -f $HADOOP_HOME/logs/*.pid赋予执行权限并运行chmod x force-stop-hadoop.sh ./force-stop-hadoop.sh。最后分享一个小技巧每次修改完XML配置不要急于start-dfs.sh先执行hadoop checknative -a。这个命令会检查Hadoop的本地库如压缩库、snappy是否可用。如果输出中Native library checking:后面全是true说明你的Hadoop二进制包与Ubuntu系统兼容性良好如果出现false则意味着某些高级功能如Snappy压缩将不可用但不影响基本功能。这是我每次部署前必做的“健康快检”。