资讯动态

Hadoop三种部署模式详解:本地、伪分布式与完全分布式配置实战

发布时间:2026/9/16 7:10:27 来源:尧图企业网站定制
只要学大数据Hadoop就是绕不过去的第一道坎。这份实验报告要做的不是简单地把hadoop version跑出来而是把 Hadoop 的三种部署模式——本地模式、伪分布式模式、完全分布式模式——从零开始完整装一遍把每种模式到底解决了什么问题、配置文件里每个参数为什么这么写、启动之后哪些进程必须出现全部理清楚。我见过太多同学装 Hadoop 时跟着视频敲命令敲完了也不知道自己干了什么。伪分布式模式下jps只看到 3 个进程完全分布式里 DataNode 起不来最后发现是 workers 文件没改这类问题几乎每一届实验都会重演。所以这篇文章我会按实验报告的节奏走把每一步操作背后的原因、需要验证的结果、常见的坑都写在对应位置。适合正在做大数据的课程实验、准备系统入门 Hadoop、或者被集群配置折腾到头秃的开发者参考。1. 实验环境准备虚拟机、JDK 与版本选型1.1 为什么要把环境提前规划清楚Hadoop 的安装配置和普通 Java 开发不一样。Java 开发配好 JDK 就能跑Hadoop 则要同时考虑用户、目录、网络、端口、进程管理这些因素而且完全分布式模式还要用到多台机器之间的免密通信。很多同学实验失败不是因为 Hadoop 本身有多难而是环境没规划好JDK 版本不对、主机名和 IP 不匹配、目录权限不足这些坑会在后面接二连三地冒出来。我建议在动手安装之前先把下面这几件事定下来用什么操作系统、装哪个版本的 JDK、下载哪个版本的 Hadoop、把安装包和解压目录放在哪。不要小看这一点实验课上常见的 “ 为什么我按教程做了还是起不来 ” 的问题很大比例都出在版本不匹配上。Hadoop 3.x 必须跑在 JDK 8 及以上如果你用了 JDK 11 也没问题但千万别用 JDK 7否则编译和运行都会报出各种奇怪的类加载错误。1.2 操作系统与虚拟机规格建议我的实验方案是使用三台 CentOS 7 虚拟机。CentOS 7 在 Hadoop 相关的学习资料里占有率很高遇到问题容易找到现成解决方案而且它和 Red Hat 系的操作行为一致很多公司生产环境用的就是这类系统。如果你电脑内存够大三台虚拟机每台分配 2GB 内存就够跑实验如果内存紧张也可以用两台机器模拟完全分布式但三台是最贴近真实集群的配置。安装 CentOS 时尽量采用最小化安装不需要装图形界面。Hadoop 的所有操作都在命令行完成图形界面既占资源又没有实际用途。网络模式建议选择 NAT 或桥接如果只是自己本机做实验NAT 就够了如果之后想用其他电脑访问集群界面再考虑桥接。虚拟机磁盘建议 40GB 以上格式化 NameNode 会产生不少日志后面跑 MapReduce 任务也会堆积中间文件空间太小容易出现磁盘满导致节点宕掉的问题。1.3 JDK 安装与配置细节Hadoop 底层是 Java 写的所以装 Hadoop 之前必须先配好 JDK。我推荐使用 JDK 8版本号选择 jdk-8u202这是 Oracle JDK 8 的最后一个免费商用版本稳定性和兼容性都有保障。实验环境不需要追求最新版稳定优先。安装步骤很简单上传安装包到/usr/local/src解压到/usr/local/java然后配置环境变量tar -zxvf jdk-8u202-linux-x64.tar.gz -C /usr/local/java编辑/etc/profile在文件末尾添加export JAVA_HOME/usr/local/java/jdk1.8.0_202 export PATH$PATH:$JAVA_HOME/bin执行source /etc/profile后再输入java -version能看到 java version 1.8.0_202 就说明 JDK 装好了。有一个细节要提醒Hadoop 的启停脚本会调用JAVA_HOME环境变量所以我建议你在/etc/profile和~/.bashrc两个文件里都写上这个配置双保险。我在实验课上遇到过一种情况用户在命令行里手动 export 了 JAVA_HOME当时能用但重启虚拟机后 Hadoop 起不来就是因为配置只写在了当前 session 里没有持久化到配置文件。1.4 Hadoop 版本选型与目录规划Hadoop 目前有 Apache 原版、CDH、HDP 等多个发行版本。学习阶段我强烈建议直接用 Apache 原版不要去碰那些一键部署工具。原因很简单原版 Hadoop 的所有配置都需要你亲手修改你会被迫去看每一个配置文件、理解每一个参数的含义这个过程本身就是大数据入门最重要的一课。等你在原版上把三种模式都跑通了再去看 CDH 的封装配置就是降维打击。版本选择上Apache Hadoop 3.3.x 是当前学习的主流版本。我下面所有配置都以 Hadoop 3.3.6 为例。下载地址可以去 Apache 官网也可以使用国内镜像站速度会快很多。下载文件名一般是hadoop-3.3.6.tar.gz。目录规划我建议分成三层安装包放在/opt/software解压后的程序放在/opt/module/hadoop-3.3.6然后建一个软链接/opt/hadoop指向程序目录。以后升级版本时只需要重新解压并修改软链接配置路径不用改。规划统一目录还有一个隐藏的好处完全分布式模式里需要把配置同步到多台机器目录结构一样脚本才能正常工作。2. 本地模式单机模式安装配置2.1 本地模式能做什么本地模式是 Hadoop 最基础的运行模式所有进程都运行在同一个 JVM 里不启动 HDFS也不启动 YARN直接使用 Linux 的本地文件系统来读写数据。这种模式适合两件事第一跑官方自带的示例程序验证环境是否安装成功第二做 MapReduce 逻辑层面的开发和调试。很多初学者觉得本地模式太简单不重视直接跳到伪分布式。我的建议是老老实实把本地模式跑一遍因为它是后面所有模式的基础。如果本地模式跑不通 WordCount说明环境有问题你在伪分布式模式下会遇到同样的问题而且因为进程变多排查难度会更大。把本地模式当成体检几分钟就能做完后面省下的是几个小时的排查时间。2.2 解压安装与环境变量配置下载好hadoop-3.3.6.tar.gz后把它放到/opt/software然后解压到/opt/modulecd /opt/software tar -zxvf hadoop-3.3.6.tar.gz -C /opt/module接下来配置环境变量。编辑/etc/profile在文件末尾添加export HADOOP_HOME/opt/module/hadoop-3.3.6 export PATH$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin注意bin和sbin两个目录都要加进 PATH。bin下的hadoop命令负责文件系统和作业操作比如hdfs dfs -ls、hadoop jarsbin下的start-dfs.sh、stop-yarn.sh这些才是集群启停脚本后面必然会用到。配置完成后执行source /etc/profile然后输入hadoop version能看到Hadoop 3.3.6的输出本地模式就装好了。2.3 跑通官方 WordCount 示例验证 Hadoop 安装是否成功最快的方法就是跑一次官方自带的 WordCount 示例。先在本地创建一个测试目录并放入几个文本文件mkdir -p /opt/test/input echo hello world hadoop /opt/test/input/a.txt echo hello hadoop hadoop /opt/test/input/b.txt然后执行hadoop jar /opt/module/hadoop-3.3.6/share/hadoop/mapreduce/hadoop-mapreduce-examples-3.3.6.jar wordcount /opt/test/input /opt/test/output这里有一个高频坑/opt/test/output这个输出目录在执行前一定不能存在MapReduce 框架要求输出目录是全新的否则会直接报FileAlreadyExistsException。另外本地模式下的输入路径和输出路径都是 Linux 本地目录不是 HDFS 路径这一点和后面伪分布式模式不一样。跑完后查看/opt/test/output/part-r-00000文件能看到每个单词的出现次数说明本地模式完全没问题。3. 伪分布式模式安装配置3.1 伪分布式的意义与学习价值本地模式虽然能跑通 MapReduce但它没有 HDFS也没有 YARN你感受不到真正的大数据环境是什么样的。伪分布式模式用一台机器模拟集群环境NameNode、DataNode、SecondaryNameNode、ResourceManager、NodeManager 这些进程全部独立启动只是跑在同一台机器上。这是从单机到集群之间最好的过渡。因为配置量不大你能把每一个配置文件的作用都搞清楚同时又能完整地体验 HDFS 的存储流程、YARN 的资源调度和 MapReduce 的作业提交。我给它一个定位伪分布式是大数据入门的 “ 沙盘 ”它能让你在一台机器上理解分布式系统的核心机制而不需要面对多台机器的通信问题。3.2 前置准备SSH 免密登录配置伪分布式模式下NameNode 启动时需要通过 SSH 连接到本机来启动 DataNode 进程所以要先配置 localhost 的免密登录。很多教程会跳过这一步导致用户在执行start-dfs.sh时被反复要求输入密码非常影响实验体验。配置命令如下ssh-keygen -t rsa -P -f ~/.ssh/id_rsa cat ~/.ssh/id_rsa.pub ~/.ssh/authorized_keys chmod 600 ~/.ssh/authorized_keys然后执行ssh localhost测试如果直接进入命令行而不是提示输入密码说明配置成功。如果第一次启动时还是会问密码检查一下是不是/root/.ssh/authorized_keys的权限不对Hadoop 对密钥文件的权限要求很严格权限太开放会直接拒绝使用。3.3 核心配置文件逐个拆解伪分布式模式需要修改的文件都在$HADOOP_HOME/etc/hadoop目录下主要有四个core-site.xml、hdfs-site.xml、mapred-site.xml、yarn-site.xml。下面逐个说明每个文件里每个参数的作用。第一个是core-site.xml它是 Hadoop 全局核心配置其中fs.defaultFS是最关键的一项configuration property namefs.defaultFS/name valuehdfs://localhost:9000/value /property /configuration这个参数指定了 HDFS 的访问入口9000是 NameNode 的 RPC 通信端口客户端通过这个端口与 NameNode 通信。后面访问 HDFS 的所有操作都会默认使用这个地址。第二个是hdfs-site.xml它控制 HDFS 的行为configuration property namedfs.replication/name value1/value /property property namedfs.namenode.name.dir/name value/data/hadoop/namenode/value /property property namedfs.datanode.data.dir/name value/data/hadoop/datanode/value /property /configurationdfs.replication是数据副本数。伪分布式只有一台 DataNode所以副本数必须设置为 1如果保持默认的 3DataNode 会尝试把数据复制到不存在的其他节点上导致数据写入报错。dfs.namenode.name.dir和dfs.datanode.data.dir分别指定 NameNode 的元数据目录和 DataNode 的数据目录生产环境这两个目录通常会放在独立硬盘上学习环境放在/data/hadoop下即可。注意这两个目录需要手动创建而且目录权限要保证启动 Hadoop 的用户有写入权限。第三个要处理的是mapred-site.xml。Hadoop 3.x 安装包里默认只有mapred-site.xml.template模板文件需要先复制一份mv mapred-site.xml.template mapred-site.xml然后写入configuration property namemapreduce.framework.name/name valueyarn/value /property /configuration这个参数告诉 MapReduce作业的执行框架使用 YARN。MapReduce 本身只负责计算逻辑真正的资源调度和任务分配交给 YARN 完成。如果不配置这一项MapReduce 作业会跑在本地模拟模式下起不到分布式执行的效果。第四个是yarn-site.xmlconfiguration property nameyarn.nodemanager.aux-services/name valuemapreduce_shuffle/value /property /configurationyarn.nodemanager.aux-services是 YARN 向 MapReduce 提供的辅助服务开关设置成mapreduce_shuffle才能让 Map 任务和 Reduce 任务之间正常传输数据。我见过有同学漏掉这一项结果作业提交后一直卡在 ACCEPTED 状态不执行排查半天才发现是这里没配置。3.4 格式化 NameNode 与启动集群首次启动 HDFS 之前必须先格式化 NameNodehdfs namenode -format格式化做的事情是创建 NameNode 的元数据目录并生成一个全新的集群 ID。注意这个操作只能执行一次或者只能在清空数据目录后执行。如果集群已经启动过你又重新格式化NameNode 的集群 ID 会变化而 DataNode 还保留着旧的集群 ID两者不一致就会导致 DataNode 启动失败。启动顺序建议分开start-dfs.sh start-yarn.shstart-dfs.sh负责启动 NameNode、DataNode、SecondaryNameNodestart-yarn.sh负责启动 ResourceManager 和 NodeManager。分开启动的好处是如果某个进程失败你能很快定位是 HDFS 的问题还是 YARN 的问题。全部启动后输入jps正常应该看到 5 个进程进程名作用NameNode管理 HDFS 的命名空间和元数据DataNode存储实际数据块SecondaryNameNode定期合并 NameNode 的编辑日志ResourceManager负责 YARN 的资源调度NodeManager负责单台节点的任务执行和资源管理少了哪个进程就去$HADOOP_HOME/logs目录看对应的日志这是最直接的排查方法。3.5 页面验证与伪分布式 WordCountHDFS 和 YARN 启动成功后浏览器访问http://localhost:9870可以看到 HDFS 的 Web 界面访问http://localhost:8088可以查看 YARN 的作业调度界面。如果你用的是虚拟机需要把地址里的 localhost 换成虚拟机 IP。伪分布式模式下跑 WordCount 和本地模式有一些区别。首先要把输入文件上传到 HDFShdfs dfs -mkdir -p /input hdfs dfs -put /opt/test/input/*.txt /input/然后执行作业hadoop jar /opt/module/hadoop-3.3.6/share/hadoop/mapreduce/hadoop-mapreduce-examples-3.3.6.jar wordcount /input /output_ps注意这次输入和输出路径都是 HDFS 路径不是本地路径。执行过程中登录8088页面能看到作业从 SUBMITTED 到 RUNNING 再到 FINISHED 的过程还能看到 Map 和 Reduce 任务的进度条。这是第一次直观感受分布式计算的过程。4. 完全分布式模式集群配置4.1 集群规划三台机器的角色分配完全分布式是生产环境中真正使用的模式。我用的实验方案是准备三台虚拟机角色分配如下主机名IP部署角色node101192.168.10.101NameNode ResourceManagernode102192.168.10.102DataNode NodeManagernode103192.168.10.103DataNode NodeManager生产环境中通常会把 NameNode 和 ResourceManager 分开部署因为这两个角色都属于 “ 大脑 ” 级别一个管存储、一个管计算如果放在同一台机器上这台机器挂了整个集群就瘫痪了。学习阶段放在一起可以省一台虚拟机让电脑跑起来更轻松。理解这个大原则就行实际实验按你自己的资源情况来定。4.2 网络与主机名配置拿到三台虚拟机后第一步是修改主机名和 hosts 文件。每台机器分别执行hostnamectl set-hostname node101三台机器分别设置成 node101、node102、node103。然后在每台机器的/etc/hosts文件里都加上三行192.168.10.101 node101 192.168.10.102 node102 192.168.10.103 node103这一步很容易被忽略但它是集群通信的基础。Hadoop 节点之间通过主机名互相访问如果 hosts 文件没有配置好NameNode 在启动时会因为解析不了主机名而报错。配置完可以互相ping node102验证一下。4.3 从伪分布式到完全分布式的配置改动完全分布式的配置文件在伪分布式基础上改动不大但每个改动都有讲究。core-site.xml里的fs.defaultFS从hdfs://localhost:9000改成valuehdfs://node101:9000/value这样所有节点都知道 NameNode 在 node101 上客户端提交作业、DataNode 注册心跳时都会访问这个地址。hdfs-site.xml里的dfs.replication从 1 改成 2。现在集群有两台 DataNode副本数为 2 意味着每个数据块会在两台机器上各存一份这样任何一台 DataNode 挂掉数据都不会丢失。副本数不宜设置成 3因为只有两台 DataNode第三份副本会一直处于等待状态。还需要修改或者新增一个关键文件workers。在 Hadoop 3.x 里这个文件叫workers在 Hadoop 2.x 里叫slaves。文件里写入node102 node103这个文件告诉 NameNode哪些节点是 DataNode。我见过不少人在完全分布式配置中忘了改这个文件结果 NameNode 启动后只管理了本机其他机器上根本没有 DataNode 进程。这个文件和start-dfs.sh脚本直接相关脚本会逐行读取文件里的主机名通过 SSH 到对应机器上启动 DataNode。yarn-site.xml要加一个参数指定 ResourceManager 所在的主机property nameyarn.resourcemanager.hostname/name valuenode101/value /propertymapred-site.xml和伪分布式保持一致不用改。4.4 免密登录与配置分发完全分布式模式下node101 需要通过 SSH 到 node102 和 node103 上启动 DataNode 和 NodeManager所以必须配置 node101 到其他节点的免密登录。注意方向不要搞反只需要 node101 能免密登录到 node102、node103反过来不是必需的。操作步骤# 在 node101 上执行 ssh-keygen -t rsa -P -f ~/.ssh/id_rsa ssh-copy-id node102 ssh-copy-id node103配置完成后在 node101 上执行ssh node102和ssh node103不需要输密码就能登录算配置成功。配置分发我建议用 scp 方式把 node101 上已经改好的etc/hadoop整个目录同步到其他节点scp -r /opt/module/hadoop-3.3.6/etc/hadoop/* node102:/opt/module/hadoop-3.3.6/etc/hadoop/ scp -r /opt/module/hadoop-3.3.6/etc/hadoop/* node103:/opt/module/hadoop-3.3.6/etc/hadoop/注意分发之前要保证三台机器上的 Hadoop 程序目录路径完全一致否则后续脚本会找不到命令。4.5 启动集群与常见故障处理只在 node101 上执行一次格式化hdfs namenode -format然后启动start-dfs.sh start-yarn.sh注意start-dfs.sh会在 node101 上启动 NameNode然后 SSH 到 node102、node103 启动 DataNodestart-yarn.sh一样会通过 SSH 在 node102、node103 上启动 NodeManager。所以免密登录没配好启动脚本会直接卡住。启动完成后在三台机器上分别执行jps预期的进程如下机器进程node101NameNode、ResourceManager、SecondaryNameNodenode102DataNode、NodeManagernode103DataNode、NodeManager如果某台机器的 DataNode 起不来常见原因是 ClusterID 不一致。这种情况多发生在你用伪分布式的 Hadoop 目录克隆虚拟机、或者之前格式化过又换了机器名的时候。解决办法是删除所有节点上的 name 目录和 data 目录比如/data/hadoop/namenode和/data/hadoop/datanode然后重新执行hdfs namenode -format再启动。简单说就是让所有节点从零开始形成一个新的集群而不是试图去兼容旧的数据目录。4.6 集群功能验证方法在浏览器访问http://node101:9870应该能看到 HDFS 界面Datanodes 列表里显示 2 个 Live Nodes说明两台 DataNode 都已注册成功。访问http://node101:8088能看到 2 个 Active Nodes说明 YARN 集群正常运行。然后做一个最经典的验证向 HDFS 上传一个文件跑一次 WordCount。这次跑完可以观察 8088 页面能看到 Container 被分配到不同节点上执行这就是分布式计算最直观的体现。上传文件用hdfs dfs -mkdir -p /input hdfs dfs -put /opt/test/input/*.txt /input/跑完作业后查看输出hdfs dfs -cat /output_ps/part-r-00000如果能看到每个单词的计数而且 8088 界面上确实有多个节点参与计算说明整个完全分布式集群已经跑通了。5. 三种模式横向对比与运维要点5.1 模式特性对比表三种模式跑到这里应该对它们有个整体的认识了。我把核心差异整理成表格方便后面复习时对照对比项本地模式伪分布式完全分布式进程数量单 JVM 内运行5 个独立进程每台机器多个进程HDFS不启动用本地文件系统单节点 HDFS多节点 HDFSYARN不启动单节点 YARN多节点 YARN副本数无概念12 或 3用途调试逻辑、验证安装学习分布式机制生产环境、集群实验配置复杂度低中高这张表后面做实验报告总结时可以直接用。我在实际教学中发现很多学生问 “ 为什么本地模式跑 WordCount 不需要启动 HDFS ”其实就是对模式区分不够清楚。本地模式的数据文件放在 Linux 本地文件系统里HDFS 都还没启动当然直接读本地文件。5.2 日志与进程管理技巧运行中最实用的技能是看日志。Hadoop 的日志文件在$HADOOP_HOME/logs目录下命名规则一般是hadoop-启动用户-进程名-主机名.log比如hadoop-root-namenode-node101.log。当某个进程启动失败时打开对应的日志文件重点看最后的 ERROR 或 Exception 信息大部分问题都能在这里找到答案。另外一个常用命令是ps -ef | grep java。jps只能显示 Java 进程的进程号和名称而ps -ef能看到启动参数、运行用户、完整命令在排查端口冲突和配置问题时更实用。比如你发现 8088 端口被占用想找到底是哪个进程占用的用ss -lntp | grep 8088一步就能定位。5.3 从实验到项目的集群部署思路实验做完以后如果要往真实项目靠还需要考虑机架感知、NameNode 高可用、资源队列规划等话题。比如生产环境里 DataNode 会部署在几十上百台机器上要考虑数据在机架之间的分布以减少跨机架传输NameNode 是单点故障要做 Active/Standby 的高可用方案。这些内容不是一篇文章能讲完的但你在实验阶段亲手搭过三台集群之后再理解这些概念就容易得多了。6. 踩坑实录常见报错与排查方法在整个三种模式的配置过程中我积累了一些高频错误和排查思路整理成一个速查表以后遇到类似问题可以直接对照报错信息发生场景常见原因解决办法FileAlreadyExistsException提交 MapReduce 作业输出目录已存在换一个新的输出目录或者先删除旧目录Incompatible clusterIDs启动 DataNodeNameNode 重新格式化导致集群 ID 不一致删除所有节点的数据目录重新格式化Permission denied启动 HDFS、写入数据数据目录权限不足检查目录属主和权限确保启动用户可读写ssh: connect to host node102 port 22: Connection refused启动集群脚本sshd 未启动或防火墙拦截确认 sshd 正常运行关闭防火墙Address already in use启动 NameNode 或 ResourceManager端口被占用使用ss -lntp定位占用进程并处理作业一直卡在 ACCEPTED 状态提交 MapReduce 作业yarn-site.xml 的 aux-services 未配置添加 mapreduce_shuffle 配置并重启 YARNDATA_DIR 目录为空浏览器访问 HDFS 页面DFS 命令创建目录不生效用hdfs dfs -mkdir -p创建并检查默认 FS 配置下面挑几个展开说因为这几个坑我见到的频率太高了。6.1 重复格式化导致 DataNode 起不来很多同学启动失败后第一反应是重新执行hdfs namenode -format结果越弄越糟。原因是 NameNode 重新格式化会生成新的 clusterID但 DataNode 的数据目录里还保留着旧的 clusterID两者对不上DataNode 就会一直报 Incompatible clusterIDs。正确的流程是先停掉所有 Hadoop 进程然后在所有节点上删除dfs.namenode.name.dir和dfs.datanode.data.dir指向的目录再重新格式化、重新启动。删除数据目录意味着数据会丢失如果集群里有重要数据要提前做备份。这个原则实验和生产都适用格式化 NameNode 不是修复问题的万能药慎用。6.2 浏览器访问不了 Web 界面有三种可能防火墙没关、地址填错、服务没起来。CentOS 7 默认开启 firewalld会拦截 9870 和 8088 端口。实验环境我建议直接关闭防火墙省去麻烦systemctl stop firewalld systemctl disable firewalld如果你不想关防火墙也可以只放行端口firewall-cmd --zonepublic --add-port9870/tcp --permanent firewall-cmd --reload地址方面如果你用的是虚拟机在外部浏览器访问时不能填 localhost要填虚拟机的 IP。确认服务起来了没可以在虚拟机本机执行curl http://localhost:9870有响应就说明服务正常问题出在网络配置上。6.3 免密登录配置了还是不生效ssh-copy-id执行成功但ssh node102还是提示输密码。检查两个点第一~/.ssh目录权限必须是 700authorized_keys文件权限必须是 600第二确认你登录的用户和生成密钥的用户是同一个。我有一次实验课上发现学生用 root 用户生成密钥然后用普通用户启动 Hadoop结果普通用户找不到 root 用户的公钥免密自然不生效。6.4 SSH 端口占用问题排查启动 NameNode 时报地址已使用通常是你之前启动过集群但没停干净或者端口被其他服务占用。处理方法ss -lntp | grep 9000找到 PID 后 kill 掉或者用stop-dfs.sh、stop-yarn.sh正常停止所有 Hadoop 进程。这里不建议直接 kill正常停止可以让节点优雅退出避免元数据不一致。6.5 伪分布式 WordCount 输出目录不能存在本地模式那个坑在伪分布式模式中同样存在而且更容易被忽略。你提交作业时用了一个之前跑过的目录名就会报输出目录已存在。处理办法很简单要么换个目录名要么先执行hdfs dfs -rm -r /output_ps把旧输出清掉。这类小问题看着不起眼每次实验都会有人卡在这上面。6.6 额外提一句日志方法论最后一个建议也是我最想强调的遇到问题一定要先看日志日志永远比你的猜测更接近真相。很多初学者报错后第一反应是重新格式化、重启机器、重装系统做了一堆无用功。正确的方式是先找到对应的日志文件搜索 ERROR 或 Exception看清楚报错发生在哪个模块再去搜解决方案。这套方法论不只在 Hadoop 上有效在大数据生态的其他组件里同样适用。我自己做这份实验时最深的体会是装 Hadoop 其实不难难的是理解每一步配置背后的原因。如果你把这个实验认真做完了三种模式的区别、核心配置文件的作用、进程之间的协作关系这些概念都会变得非常清晰。后面再去学 HBase、ZooKeeper、Spark你会发现很多组件的部署思路是相通的都是改配置、配免密、分发文件、启动集群、验证功能这一套流程。希望你在做实验的时候少走弯路多看一下日志和配置文件把每一步真正吃透。

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价