ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

Hadoop 3.2.4伪分布式安装全攻略:从解压到WordCount跑通

Hadoop 3.2.4伪分布式安装全攻略:从解压到WordCount跑通 简介hadoop-3.2.4 安装包是面向大数据工程师与集群运维人员的完整发行版适用于搭建Hadoop分布式环境、学习YARN/HDFS核心机制及排查部署问题。压缩包共2000个文件涵盖1829个html帮助文档、82个css样式文件、60个sh运维脚本、10个sql初始化脚本及9个xml配置文件等整体约505.9MB结构近似官方二进制发行包便于离线部署与对照学习。目前已有220人学习/下载对于希望避开网络不稳定的手动下载、快速获得原生环境并研究其目录组织方式的开发者这份内容可直接用于本地集群搭建、脚本化启停服务并借助附带文档理解配置项含义与常见调优参数。受益于完整的sh脚本与xml样例还能辅助验证NameNode、DataNode、ResourceManager等组件协同流程是学习或生产预研的可靠基础包。1. Hadoop 3.2.4 安装包解压不等于装完先想清楚三件事Hadoop 3.2.4 安装包我见过太多人下完就解压、敲一句 start-all.sh然后卡在三种状态之一NameNode 起不来、DataNode 连不上、YARN 页面打不开。这个安装包资源解决的不是“下载”这一步而是把从解压到跑通原生 WordCount 的完整链路一次性理顺里面除了 hadoop-3.2.4 二进制发行版一般还会带上 JDK 8 安装说明、五份核心 XML 配置模板和 SSH 免密脚本。拆包之前先想清楚三件事——装给谁用、目录放哪里、启动用什么用户这三件事想明白了后面所有坑至少能避开一半。适合谁就是要在一台笔记本或云主机上搭单机伪分布式做学习、功能验证的从业者也包括正在准备大数据开发环境、不想在装环境这件事上反复折腾的人。你拿到的不是一个压缩包是一条能复现的部署路径。2. 装前准备JDK 版本、目录规划与安装包校验2.1 为什么选 3.2.4稳定性和 JDK 兼容性Hadoop 3.2.4 是 3.2.x 分支的一个维护版本它卡在一个比较微妙的平衡点上往上 3.3/3.4 对内存和 CPU 的要求更高往下 2.7/2.8 又太老很多新接口和默认端口都对不上。对学习机和测试环境来说3.2.4 是官方对 Java 8 支持最扎实的一代你不需要为了跑通它去装一个更高版本的 JDK也更不容易遇到“编译时好好的运行时 Class 版本冲突”的玄学问题。选型理由一句话总结如果你只是要验证 MapReduce 逻辑、练习 HDFS 命令、跑通 YARN 调度3.2.4 比 3.3 更容易一次成功。它默认的端口是 9870NameNode Web UI和 8088YARN ResourceManager这和 2.x 时代的 50070/8088 是两套体系查教程的时候一定要分清版本不然照着 2.x 的文章填配置最后 Web UI 永远打不开。这个安装包资源里给的是二进制发行版不是源码包所以解压即用不需要自己编译。省掉编译这一步是它和从 GitHub 拉源码自己 build 的最大区别。2.2 目录规划把“临时数据”和“安装目录”分开我拆过太多 Hadoop 环境见过最典型的翻车就是hadoop.tmp.dir 用默认值格式化 NameNode 的时候元数据写到了系统 /tmp 下某天系统一清理NameNode 直接起不来报 “Failed to load FSImage”。所以拿到安装包之后第一件事不是解压而是先把目录规划好。常见做法是把安装文件放 /opt/hadoop把运行数据放 /data/hadoop 下两者分开。数据目录再拆成三块tmp 放 mapreduce 中间结果和临时文件name 放 NameNode 元数据data 放 DataNode 数据块。这样后面万一要重装只需要清空 /data/hadoop安装目录还能留着。sudo useradd -m -s /bin/bash hadoop sudo mkdir -p /opt/hadoop sudo mkdir -p /data/hadoop/tmp /data/hadoop/name /data/hadoop/data sudo chown -R hadoop:hadoop /opt/hadoop /data/hadoop逻辑说明创建独立的 hadoop 用户是为了避免直接用 root 启动 Hadoop 时踩到 3.x 的 root 限制chown 把安装目录和数据目录的属主都交给 hadoop 用户后面所有命令都用这个用户执行。参数说明/opt/hadoop 是后面 $HADOOP_HOME 的指向位置/data/hadoop/tmp、name、data 三个子目录分别对应该安装包里 core-site.xml 和 hdfs-site.xml 里要填的路径。2.3 安装包校验和解压很多人忽略这一步。Hadoop 安装包从镜像站下载有极小概率碰到包损坏最常见的现象是解压时报 “gzip: invalid compressed data” 或者解压后 bin/hdfs 文件执行就报错。先做一次 MD5 校验比解压到一半才发现问题再回头重新下载要省时间得多。# 校验安装包完整性 md5sum hadoop-3.2.4.tar.gz # 解压到 /opt 目录并改名为 /opt/hadoop tar -zxvf hadoop-3.2.4.tar.gz -C /opt/ mv /opt/hadoop-3.2.4 /opt/hadoop逻辑说明md5sum 会输出一段 32 位十六进制串去 Apache 官方发布页对应版本号下核对这个值不一致就重新下载别硬着头皮解压。tar 的 -C 参数指定解压目标目录先解压到 /opt再把目录名统一成 hadoop。参数说明-zxvf 里 z 表示 gzip 压缩、x 表示解压、v 表示显示解压过程、f 表示指定文件名mv 改名这一步是为了让环境变量路径更短也避免版本号改动后脚本里路径要跟着改。解压完成后花十几秒看一眼目录结构bin 下是客户端命令sbin 下是启动脚本etc/hadoop 下是所有配置文件share/hadoop/mapreduce 下是自带示例 jar 包。后面几步全部围绕 etc/hadoop 展开这个目录就是整个 Hadoop 的黑匣子入口。3. 五份 XML 配置伪分布式最该改的参数就这几个3.1 环境变量让 hadoop 脚本找到 JDKHadoop 的启动脚本本质是一个个 shell 脚本它们靠 JAVA_HOME 找到 java 命令再靠 HADOOP_HOME 定位自己的 bin、sbin、etc 目录。很多人只配了 PATH 没配 JAVA_HOME表面上 hadoop 命令能敲出来但一执行 start-dfs.sh 就报 “JAVA_HOME is not set”。这一步直接写在用户环境变量里比改 /etc/profile 更稳妥。export JAVA_HOME/opt/jdk1.8.0_202 export HADOOP_HOME/opt/hadoop export PATH$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin逻辑说明这三行加到 hadoop 用户的 ~/.bashrc 末尾source 一次即可。HADOOP_HOME 指向上一节解压出来的目录PATH 里加上 bin 和 sbin是为了让 hdfs、yarn、start-dfs.sh 这些命令不用写全路径。参数说明JAVA_HOME 必须写成你实际 JDK 安装路径不要写相对路径如果你用的版本不是 jdk1.8.0_202这里要改成自己机器上 java -version 对应的路径一个字符都不能差。还有一个更容易漏的地方etc/hadoop/hadoop-env.sh 里有一行 export JAVA_HOME 经常被注释着hadoop 脚本加载完用户环境变量后还会读这个文件如果这里没配部分脚本照样找不到 JDK。我一般会在 hadoop-env.sh 里再显式写一遍export JAVA_HOME/opt/jdk1.8.0_202双保险。3.2 core-site.xml默认文件系统与临时目录core-site.xml 是 Hadoop 全局配置里最先生效的一份。伪分布式只跑一个节点最需要改的就是 fs.defaultFS 和 hadoop.tmp.dir。前者决定客户端执行 hdfs dfs 命令时默认连到哪个 NameNode后者决定 NameNode 和 DataNode 的默认数据落盘位置。configuration property namefs.defaultFS/name valuehdfs://localhost:9000/value /property property namehadoop.tmp.dir/name value/data/hadoop/tmp/value /property /configuration逻辑说明fs.defaultFS 写成 hdfs://localhost:9000表示所有 HDFS 操作默认连接本机 9000 端口的 NameNode RPC 服务。hadoop.tmp.dir 覆盖了默认的 /tmp/hadoop-${user}指向我们在 2.2 节建好的目录这样系统清理 /tmp 不影响元数据。参数说明9000 端口要和 hdfs-site.xml 里的 NameNode RPC 端口保持一致通常不用改hadoop.tmp.dir 一旦配好后面格式化 NameNode 时数据会写进这个名字目录下的 dfs 子目录里。3.3 hdfs-site.xml副本数、元数据目录与数据目录伪分布式只有一台机器、一个 DataNode所以 dfs.replication 必须设成 1。如果保持默认的 3所有数据块都会因为副本不足停在 “Under replicated” 状态虽然任务能跑但 HDFS 会一直报健康告警。这里也把 name.dir 和 data.dir 显式指向 /data/hadoop 下的独立子目录。configuration property namedfs.replication/name value1/value /property property namedfs.namenode.name.dir/name valuefile:///data/hadoop/name/value /property property namedfs.datanode.data.dir/name valuefile:///data/hadoop/data/value /property property namedfs.permissions.enabled/name valuefalse/value /property /configuration逻辑说明dfs.replication 设为 1避免复制因子高于节点数导致的副本告警。name.dir 是 NameNode 存 FSImage 和 EditLog 的路径data.dir 是 DataNode 存数据块的路径符号是 file:// 开头的本地路径。dfs.permissions.enabled 在单机学习时设 false可以避免文件属主和权限问题干扰测试生产环境千万别照抄这一项。参数说明file:///data/hadoop/name 是三个斜杠第一个是协议分隔符后两个是绝对路径起始漏一个斜杠会直接报路径解析错误。3.4 yarn-site.xml 与 mapred-site.xml内存配额与框架选择YARN 是资源调度层它负责告诉 NodeManager“你这台机器最多能跑多少内存、多少 vCPU”。mapred-site.xml 则决定 MapReduce 任务提交到哪个框架。伪分布式最容易出的问题就是 YARN 默认内存参数和本机实际内存不匹配——机器只有 4G 内存NodeManager 默认却认为自己有 8G 可用最后 Container 频繁被杀。configuration property nameyarn.nodemanager.resource.memory-mb/name value4096/value /property property nameyarn.scheduler.maximum-allocation-mb/name value4096/value /property property nameyarn.nodemanager.resource.cpu-vcores/name value2/value /property /configuration逻辑说明nodemanager.resource.memory-mb 是这台机器能分给 YARN 的总内存我这里按 4G 机器配置如果你的机器是 8G 或 16G可以相应调大。scheduler.maximum-allocation-mb 是单个 Container 能申请的上限必须大于等于 map/reduce 各自的内存需求否则任务会一直卡在调度阶段。cpu-vcores 按物理核数填2 是虚拟机环境比较容易一次通过的值。参数说明YARN 总内存不要超过机器物理内存减掉系统占用后的值否则操作系统会因为你同时跑了 NameNode、DataNode 再加 YARN 而开始换页整个集群响应变慢。mapred-site.xml 里最关键的是 mapreduce.framework.name必须设成 yarn否则任务不会提交到 YARN 上。然后是 map 和 reduce 的单个任务内存这里设 1024MB配合前面的 4096MB 上限同一时间最多能并行 4 个 map。configuration property namemapreduce.framework.name/name valueyarn/value /property property namemapreduce.map.memory.mb/name value1024/value /property property namemapreduce.reduce.memory.mb/name value1024/value /property /configuration逻辑说明framework.name 写 yarn提交 job 时客户端会把任务交给 ResourceManager 去调度而不是走本地 jobrunner。map.memory.mb 和 reduce.memory.mb 是每个 map/reduce Container 的内存大小单位是 MB。参数说明这两个值乘上并发度要小于 yarn.scheduler.maximum-allocation-mb如果以后跑大任务优先调大 maximum-allocation-mb而不是把单个 Container 撑得太大。3.5 workers 文件与 SSH 免密DataNode 从哪台机器启动3.2.4 里决定 DataNode 和 NodeManager 跑在哪台机器上的文件叫 workers位置在 etc/hadoop/workers。2.x 时代它叫 slaves很多人沿用旧文件名结果 start-dfs.sh 读不到任何节点信息一个 DataNode 都起不来。# 写入本机节点名 cat $HADOOP_HOME/etc/hadoop/workers EOF localhost EOF逻辑说明workers 文件里每行一个节点名。伪分布式只有一台机器写 localhost 即可。如果你后面想扩展成两台或三台在这个文件里追加 IP 或主机名再配好免密就能直接拉起。参数说明这里不要写空格以外的多余符号空行不影响文件里第一行数据会被用来启动 DataNode写错主机名或 IP 就会看到 NameNode 起来了、DataNode 死活不见。SSH 免密是另一个前置条件。start-dfs.sh 会通过 ssh 到 workers 上每个节点启动 DataNode如果不配免密脚本会停在密码提示上而且每个节点问一遍非常折磨。ssh-keygen -t rsa -P -f ~/.ssh/id_rsa cat ~/.ssh/id_rsa.pub ~/.ssh/authorized_keys chmod 700 ~/.ssh chmod 600 ~/.ssh/authorized_keys ssh localhost逻辑说明生成一对无密码的 RSA 密钥把公钥追加到本机授权列表里sshd 就会免密放行。最后 ssh localhost 如果直接进 shell 不再问密码就说明配好了。注意要在你启动 Hadoop 的那个用户下执行不是 root 下执行完切回 hadoop 用户就失效。参数说明-P 表示空口令-f 指定密钥存放位置chmod 600 是很多免密失败的根源——authorized_keys 权限如果太宽松sshd 会直接忽略它。4. 格式化与启动NameNode 初始化时机和三层验证4.1 格式化 NameNode只做一次做对一次格式化 NameNode 是伪分布式搭建里最容易被误操作的一步。格式化会清空 hdfs-site.xml 中 dfs.namenode.name.dir 指向的目录并生成 FSImage、clusterID 等元数据。它只在第一次部署时执行一次后续重启集群绝对不要重复格式化。很多教程没说清楚这句话导致新手每次启动失败就改配置、重新格式化最后 DataNode 的 clusterID 和 NameNode 不一致数据节点永远连不上。$HADOOP_HOME/bin/hdfs namenode -format逻辑说明这条命令会读取 core-site.xml 里的 hadoop.tmp.dir 和 hdfs-site.xml 里的 name.dir在对应目录下创建 current 子目录写入 fsimage_0000000000000000000 文件和一个 VERSION 文件VERSION 里就是 clusterID。格式化成功时日志里会明确打印 “successfully formatted”。参数说明执行这一段之前必须确认第 3 章的配置全部写完尤其是 hadoop.tmp.dir 不再指向 /tmp如果之前已经格式化过、后面改过配置最稳妥的做法是手动清空 /data/hadoop/name、/data/hadoop/data、/data/hadoop/tmp 三个目录后重新格式化而不是在旧数据上反复覆盖。4.2 启动顺序先 HDFS 再 YARN启动顺序有讲究先 HDFS 后 YARN。HDFS 起来了NameNode 和 DataNode 才能提供服务YARN 的 NodeManager 在启动时也会尝试去联络 HDFS顺序反了容易出现日志里一大片连接拒绝的报错。大部分环境用普通用户启动是正常路径但如果你和我一样图省事用 root 跑的云主机Hadoop 3.x 会直接拒绝脚本里会对 HDFS 和 YARN 的每个角色做用户名校验root 用户需要先在 hadoop-env.sh 里显式声明允许。# 常见部署方式普通用户已配好免密 $HADOOP_HOME/sbin/start-dfs.sh $HADOOP_HOME/sbin/start-yarn.sh逻辑说明start-dfs.sh 会读取 workers 文件通过 ssh 到 localhost 启动 DataNodestart-yarn.sh 同理启动 NodeManager。两条命令分别执行比用 start-all.sh 更利于定位是 HDFS 还是 YARN 出了问题。参数说明如果你是 root 跑的先在 hadoop-env.sh 里加这几行再执行启动HDFS_NAMENODE_USERroot、HDFS_DATANODE_USERroot、HDFS_SECONDARYNAMENODE_USERroot、YARN_RESOURCEMANAGER_USERroot、YARN_NODEMANAGER_USERroot否则脚本会在连 ssh 之前就报 “Attempting to operate on hdfs namenode as root”。4.3 三层验证进程、日志、Web UI启动完成后第一件事不是跑任务而是确认进程全不全。jps 是 JDK 自带工具能列出所有由 JVM 启动的 Hadoop 进程。对照以下表格五个进程缺一个都算没起来角色进程名Web UI 默认端口HDFS 元数据管理NameNode9870HDFS 数据块存储DataNode无HDFS 元数据备份SecondaryNameNode9868YARN 资源调度ResourceManager8088YARN 单机执行NodeManager无jps逻辑说明看到上面五个进程名说明进程层面没问题。如果一个都没有先看 JDK 是否安装如果进程启动后马上消失去 $HADOOP_HOME/logs 下找 hadoop-hadoop-namenode-localhost.log最后几十行就是原因。参数说明jps 默认只显示简短进程名想看到完整启动命令行可以用 jps -l如果 NameNode 的进程名出现但端口没监听多半是端口被其他服务占用用 lsof -i:9870 查一下。端口和存储层面的验证用 hdfs dfsadmin -report 和 yarn node -list 两条命令更直接。hdfs dfsadmin -report yarn node -list逻辑说明dfsadmin -report 会输出每个 DataNode 的存储容量、已使用空间、状态以及整个集群的块健康情况。yarn node -list 显示 ResourceManager 视角里活跃的 NodeManager 节点能看到节点的内存和 vCPU 总量。参数说明dfsadmin -report 输出里如果 Live datanodes 数量是 0说明 DataNode 和 NameNode 之间的 clusterID 没对上这就是第 5 章要展开讲的第一个高频坑yarn node -list 里如果 Rack 显示为 default-rack说明节点没配置机架拓扑伪分布式不用管多机集群后面需要单独配。三层验证的顺序是先看进程再看日志最后看 Web UI。浏览器打开 http://localhost:9870 确认 NameNode 状态打开 http://localhost:8088 确认 YARN 集群状态。这一步过了环境才算立住了。5. 避坑五个高频翻车点和对应处理5.1 进程起不来三个启动阶段的坑现象一NameNode 进程启动后秒退日志里报 “Failed to load FSImage file ... No such file or directory”。原因格式化时 hadoop.tmp.dir 还是默认的 /tmp/hadoop-${user}系统重启或定时清理后NameNode 的 current 目录被清掉元数据文件不存在。解决先修改 core-site.xml 固定 hadoop.tmp.dir 为 /data/hadoop/tmp然后执行rm -rf /data/hadoop/tmp /data/hadoop/name /data/hadoop/data再做一次hdfs namenode -format最后重新 start-dfs.sh。从那以后我再也没有把元数据放在系统临时目录里。现象二jps 里 DataNode 进程在但 dfsadmin -report 显示 Live datanodes 是 0。原因格式化 NameNode 执行了多次每次都会生成新的 clusterID而 DataNode 的 current/VERSION 里还是旧 clusterIDNameNode 校验不一致拒绝注册。解决用cat /data/hadoop/name/current/VERSION看 NameNode 的 clusterID再用cat /data/hadoop/data/current/VERSION看 DataNode 的 clusterID把 DataNode 里那个值改成和 NameNode 一致重启 DataNode。这是伪分布式搭建里最常见的“启动成功但连不上”原因。现象三start-dfs.sh 执行后一直要求输入 SSH 密码每个节点问一遍。原因SSH 免密没配好或者是在 root 用户下生成的密钥切换到 hadoop 用户后配置全部失效。解决确认当前启动用户执行whoami核对然后在该用户下重新走一遍ssh-keygen -t rsa -P -f ~/.ssh/id_rsa、cat ~/.ssh/id_rsa.pub ~/.ssh/authorized_keys、chmod 600 ~/.ssh/authorized_keys三步最后ssh localhost验证不再问密码再执行启动命令。5.2 能启动但任务失败两个运行阶段的坑现象四hadoop 或者 hdfs 命令报 “JAVA_HOME is not set”或者提示 java: command not found。原因只配置了 PATH 指向 $HADOOP_HOME/bin没设置 JAVA_HOMEhadoop 脚本里所有调用 java 的地方都失效了或者 hadoop-env.sh 里 export JAVA_HOME 那一行还注释着。解决在 hadoop-env.sh 里显式加export JAVA_HOME/opt/jdk1.8.0_202并用$JAVA_HOME/bin/java -version验证这个路径能直接执行。很多脚本绕过了用户环境变量只读 hadoop-env.sh所以这份文件里的 JAVA_HOME 比 ~/.bashrc 里的更关键。现象五WordCount 任务跑到一半失败日志里出现 “Container is running beyond virtual memory limits” 或者 “No space left on device”。原因虚拟内存超限是 YARN 默认开启 vmem 检查单个 Container 申请 1G 物理内存但 JVM 实际分配和系统统计的虚拟内存加起来远超限制NodeManager 直接把 Container 杀了。磁盘不足则是 hadoop.tmp.dir 还在系统盘中间结果把 / 分区写满。解决虚拟内存可以在 yarn-site.xml 里把yarn.nodemanager.vmem-pmem-ratio调大到 4~6或者学习环境直接设yarn.nodemanager.vmem-check-enabled为 false磁盘不足就把 hadoop.tmp.dir 和 name.dir 全部迁移到大分区后重启。这两个坑都是参数和机器资源不匹配导致的不是代码问题。6. 用自带 WordCount 跑通全链路一个验证技巧和三组参数检查6.1 一条命令链WordCount 冒烟测试环境立住之后最后一步是跑一个最简 MapReduce 任务。Hadoop 安装包自带 examples jar 包位置在 share/hadoop/mapreduce/hadoop-mapreduce-examples-3.2.4.jar里面就有 wordcount。这一步跑通了说明 HDFS 读写、YARN 调度、Container 启动全链路都没问题。hdfs dfs -mkdir -p /input hdfs dfs -put $HADOOP_HOME/etc/hadoop/*.xml /input/ hadoop jar $HADOOP_HOME/share/hadoop/mapreduce/hadoop-mapreduce-examples-3.2.4.jar wordcount /input /output hdfs dfs -cat /output/part-r-00000 | head -20逻辑说明前三行分别完成建输入目录、上传配置目录下的 XML 文件作为输入数据、提交 wordcount 任务。第四行读取 reduce 输出文件。任务跑起来后看到输出里每个单词和计数的键值对整个伪分布式环境就算真正可用了。参数说明/output 目录在任务启动前不能存在MapReduce 不会自动覆盖同名输出目录重复执行前要hdfs dfs -rm -r /output如果想让任务只执行一轮第一行用 /input 目录最后不要加斜杠客户端解析路径时行为更稳定。跑 WordCount 时我一般会多等一分钟再去浏览器看结果。MapReduce 任务从提交到输出中间有 ApplicationMaster 申请、Container 分配、map 阶段 shuffle、reduce 阶段合并第一次跑会慢是正常的不要看到几分钟没动静就手动 kill。6.2 三个验证技巧与参数检查第一个技巧看日志而不是猜原因。任务失败后不要马上改配置重试先去 $HADOOP_HOME/logs/userlogs 目录下找当前任务的 container 日志。这里记录了 stdout、stderr 和 syslog绝大多数失败原因都在 syslog 里。想更详细可以在启动时加上环境变量HADOOP_ROOT_LOGGERDEBUG,console这样 hadoop 命令会直接输出调试日志能看到每个 RPC 调用和调度决策适合排查“任务卡住不动”的问题。第二个技巧用 fsck 检查 HDFS 健康度。hdfs fsck / -files -blocks会输出每个文件的块分布和副本状态。伪分布式环境里看到 REPORT 行写着 HEALTHY 就是正常的如果出现 MISSING 块说明之前可能清理不彻底需要检查 data.dir 下是否有多个残留 current 目录。第三个技巧核对 YARN 页面的资源数字。打开 8088 页面看 Active Nodes 下节点的 Used Memory、Total Memory 是不是和你配置的 yarn.nodemanager.resource.memory-mb 一致。不一致说明节点没重启或者 YARN 还缓存着旧配置这时去 NodeManager 日志里确认重启时间而不是盲目调大任务内存。收尾前把最常见的几个参数做成一张自查表每次部署完对着它过一遍检查项期望值说明hadoop.tmp.dir/data/hadoop/tmp防止元数据被系统清理dfs.replication1单节点必须设 1dfs.namenode.name.dirfile:///data/hadoop/name与格式化目录一致mapreduce.framework.nameyarn提交到 YARN 而非本地yarn.nodemanager.resource.memory-mb小于物理内存超过会触发系统换页JAVA_HOMEhadoop-env.shJDK8 绝对路径能直接执行 bin/java从那以后我每次搭 Hadoop 环境都强制走一遍“格式化前删旧目录、jps 对照五个进程、跑一次 WordCount 冒烟”这三件事尤其是第二件事五进程齐不齐直接决定了前面一小时的配置有没有落对。顺序一旦乱了排查时间往往比第一次配置还长。希望这次拆包笔记帮你在 hadoop-3.2.4 安装包这条路上少绕几个弯。本文还有配套的精品资源点击获取
返回列表