拓冰建站拓冰建站
首页 / 资讯中心 / 正文

Hadoop 3.3.3安装教程:版本选择、配置详解与排错指南

简介本资源为 Apache Hadoop 3.3.3 官方发行版二进制安装包hadoop-3.3.3.tar.gz面向大数据初学者、运维工程师及分布式系统开发者用于快速部署单机或集群模式的 HDFS、YARN 和 MapReduce 环境。包内含22536个文件涵盖18870个HTML文档含完整API参考与配置手册、763个JPG/GIF/PNG图形资源含架构图与流程示意图、449个JAR依赖库、75个Shell脚本如hdfs、yarn启动控制脚本及124个XML配置模板辅以原生库so文件如libhadoop.so、libhdfs.so等和容器执行器二进制工具支撑本地调试与生产级部署。压缩包大小为615.16MB结构规范、开箱即用适合实验环境搭建、源码阅读辅助及集群调优实践。目前已有640人学习下载获取后可直接解压运行配套文档齐全、模块划分清晰是掌握Hadoop核心组件原理与实操能力的重要基础资源。 如果最近你在搜索 Apache Hadoop 的安装教程大概率会下载到hadoop-3.3.3.tar.gz这个包。我收到过不少类似的求助解压没问题、环境变量也配了但start-dfs.sh一执行就各种报错或者说jps一看少了几个进程。这篇文章就把我从零搭起 Hadoop 3.3.3 的完整过程写下来涵盖版本选择、环境准备、配置文件逐项说明、启动验证和踩坑排查最后专门聊聊最近热度很高的 3.5.0 要不要追。适合刚入门大数据、想在单机或虚拟机里把 Hadoop 真正跑起来的读者也适合被网上各种旧教程坑过的同学对照自查。1. 为什么先选 3.3.3而不是顶着热度上 3.5.0如果你用搜索引擎查 Apache Hadoop第一屏大概率能看到 3.5.0 的消息。我也专门翻过 3.5.0 的发布说明确实有一批新特性和 bug 修复。但落到我想在自家电脑上把 Hadoop 跑起来这件事我依然推荐 3.3.3。原因不是越老越稳定这种玄学而是三个非常实际的问题。1.1 版本发布节奏和 3.3.x 的位置Hadoop 的大版本演进从来不是越快越好。3.x 系列刚出的那几年周边组件兼容性一言难尽光是一个mapreduce.framework.name配置就够新手折腾半天。3.3.x 是 3.x 系列里被社区和第三方生态反复验证过的版本线3.3.3 又是这条线上靠后的一个小版本。换句话说前面 3.3.0、3.3.1、3.3.2 踩出来的典型坑到 3.3.3 这里基本都已经修掉了。版本选择还有一个隐性成本教程数量。你用 3.3.3 搜问题能搜到大量可复现的答案你用一个刚发布的新版本碰到问题大概率只能去翻源码和 JIRA。对学习来说这种成本差是非常现实的。1.2 JDK 和生态兼容性才是真正的门槛3.3.x 官方文档明确写的构建要求是 Java 8 或 Java 11。这意味着你装一个 JDK 8 就能跑生产环境里很多团队至今还在用 JDK 8周边工具完全对得上。而 3.5.0 对 JDK 的基线要求更高也适配了更新的操作系统听起来是好事但配套的 Spark、Flink、Hive 如果想和它协同工作版本匹配不一定能跟上。我见过太多人因为追新把整个依赖链都带崩了。你只是想学 HDFS 和 YARN 的原理3.3.3 的复杂度刚刚好文档和社区讨论也足够密集。等到你真正需要某个新特性时再考虑升级也不迟。1.3 3.5.0 适合谁不适合谁3.5.0 适合两类人一类是团队里明确需要一个更现代特性做预研另一类是已有 Hadoop 集群做规划性升级。它不太适合刚开始接触大数据、只是想验证文件上传到 HDFS 再跑一个 WordCount的新手。我会在第七节专门讲从 3.3.3 怎么过渡到 3.5.0这里先给一个结论别让最新两个字干扰你的第一台 Hadoop。2. 装 Hadoop 之前的三个前置条件用户、JDK、SSH很多人上来就tar -zxvf然后改配置结果后面每一步都在和权限、路径、远程登录搏斗。我建议把环境准备看成整个安装里最不能省的一步它决定了你后面是顺滑跑通还是反复踩坑。2.1 为什么必须建一个独立用户我最早折腾 Hadoop 是在 root 下直接干的后来换到独立用户hadoop之后整个世界清净了。原因在于 Hadoop 的启动脚本在 root 下会碰到一堆用户检查虽然可以通过设置HDFS_NAMENODE_USERroot这类变量绕过但完全没必要。而且你后面做权限实验普通用户权限才更贴近真实生产环境。创建用户的步骤很简单useradd hadoop passwd hadoop su - hadoop如果你需要偶尔装软件可以给这个用户配一个免密的 sudo 权限打开/etc/sudoers加上一行hadoop ALL(ALL) NOPASSWD: ALL。注意用visudo编辑直接改文件容易语法错误。2.2 JDK 版本别乱选8 和 11 的区别Hadoop 3.3.3 支持 Java 8 和 Java 11两个版本都能跑但我的建议是看操作系统再选如果你用的是 CentOS 7 这类老系统直接用 JDK 8兼容性最省心如果用的是 Ubuntu 20.04 以上JDK 11 也可以毕竟更接近当前主流。安装命令很简单# CentOS / RHEL 系列 yum install -y java-1.8.0-openjdk java-1.8.0-openjdk-devel # Ubuntu / Debian 系列 apt install -y openjdk-8-jdk-headless装完别急着配环境变量先确认路径java -version readlink -f $(which java)readlink -f这个命令特别有用能帮你找到真实 JDK 安装路径避免which java显示的是符号链接而搞错JAVA_HOME。至于为什么不用 JDK 17因为 3.3.3 官方没有承诺对 Java 17 的支持某些组件在运行时会出现反射相关的异常。想用 17你应该考虑 3.4 或 3.5 之后的版本。2.3 SSH 免密登录踩坑最多的第一步Hadoop 的守护进程脚本会通过 SSH 去连接每一台机器即使是单机伪分布式模式也需要能免密ssh localhost。很多人卡在这里不是方向错了而是少了某个细节。一条命令敲下来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第一次ssh localhost会问你要不要接受 host key输入 yes 回车就行。如果系统根本没有 sshd先装# CentOS yum install -y openssh-server openssh-clients systemctl start sshd # Ubuntu apt install -y openssh-server service ssh start这里有个容易忽略的坑~/.ssh目录权限不能太松authorized_keys文件必须是 600否则 SSH 会静默拒绝你的公钥。我帮人排查时见过太多 chmod 不对导致配置了免密但一直要我输密码的情况。3. 下载 hadoop-3.3.3.tar.gz 并完成首次目录规划环境准备好之后真正的主角hadoop-3.3.3.tar.gz才登场。下载和解压本身没什么难的但目录怎么放、环境变量怎么配、安装完怎么验证这些细节决定了你后面写配置时会不会晕。3.1 从哪里下、怎么校验官方归档地址可以直接 wget 下载wget https://archive.apache.org/dist/hadoop/common/hadoop-3.3.3/hadoop-3.3.3.tar.gz wget https://archive.apache.org/dist/hadoop/common/hadoop-3.3.3/hadoop-3.3.3.tar.gz.sha512国内用户如果觉得慢可以找 Apache 镜像站的 common/hadoop 目录文件名一模一样。下载完建议做一个 SHA-512 校验确保文件没有被破坏或被篡改sha512sum hadoop-3.3.3.tar.gz cat hadoop-3.3.3.tar.gz.sha512两个输出一致再继续。这一步很多人会跳过但压缩包体积有七百多兆下载过程中有一个 bit 错了解压时就会出现莫名其妙的 tar 错误到时候排查起来比花十秒校验要痛苦得多。3.2 解压后目录结构里藏着什么我习惯把 Hadoop 装到/usr/local/hadoop下解压和授权一步到位sudo tar -zxvf hadoop-3.3.3.tar.gz -C /usr/local/ sudo mv /usr/local/hadoop-3.3.3 /usr/local/hadoop sudo chown -R hadoop:hadoop /usr/local/hadoop解压完你看到的目录里真正需要关心的只有几个etc/hadoop/所有核心配置文件后面大部分时间都在这里改。bin/命令行工具比如hdfs、yarn、hadoop。sbin/启动和停止脚本比如start-dfs.sh、start-yarn.sh。share/hadoop/mapreduce/自带 MapReduce 示例 jar验证集群用。logs/进程启动后生成的日志排查问题的主战场。3.3 环境变量配置和安装验证编辑~/.bashrc把下面几行加进去export JAVA_HOME/usr/lib/jvm/java-1.8.0-openjdk export HADOOP_HOME/usr/local/hadoop export HADOOP_CONF_DIR$HADOOP_HOME/etc/hadoop export PATH$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin然后执行source ~/.bashrc运行hadoop version看到 Hadoop 3.3.3 就说明安装成功。这里HADOOP_CONF_DIR是很多人不配但后面会吃亏的变量Spark 和 Hive 集成时经常需要告诉它们配置文件的路径。提示配环境变量时JAVA_HOME一定要写到 JDK 的根目录不是bin目录也不是jre目录。写错了 Hadoop 启动时只会告诉你找不到 Java。4. 六个配置文件逐一填坑从 hadoop-env 到 workers配置文件是 Hadoop 安装的重头戏也是新旧教程混淆的重灾区。我按修改顺序逐个讲你把每个文件里关键的 property 搞清楚就不会被网上各种互相矛盾的配置带偏了。4.1 hadoop-env.sh最先改也最容易漏这个文件位于$HADOOP_HOME/etc/hadoop/hadoop-env.sh。我建议打开后直接把这两行写死export JAVA_HOME/usr/lib/jvm/java-1.8.0-openjdk export HADOOP_HOME/usr/local/hadoop为什么一定要在这里写JAVA_HOME而不是依赖~/.bashrc因为 Hadoop 守护进程是通过 SSH 启动的SSH 会话不一定继承你交互式 shell 里的环境变量。很多人的报错 JAVA_HOME is not set and could not be found 就是这么来的。你交互式终端里明明能java -version脚本里就是找不到问题就在这。4.2 core-site.xml决定了你的集群入口core-site.xml是 Hadoop 全局配置的入口我建议只动两个 propertyconfiguration property namefs.defaultFS/name valuehdfs://localhost:8020/value /property property namehadoop.tmp.dir/name value/home/hadoop/data/tmp/value /property /configurationfs.defaultFS是客户端访问 HDFS 的默认入口地址这个配置等于告诉所有 Hadoop 命令行工具你的根文件系统是哪个。这里写hdfs://localhost:8020其中 8020 是 NameNode RPC 的默认端口。网上很多老教程写的是 9000其实也能用但你要确保core-site.xml里的端口和hdfs-site.xml里的dfs.namenode.rpc-address完全一致不一致的后果就是客户端找不到 NameNode。hadoop.tmp.dir是很多新手最容易忽略的配置。它的默认值指向/tmp/hadoop-${user.name}而系统会定期清理/tmp一旦被清你的 NameNode 元数据就没了。我强烈建议把它放到用户目录下的持久化路径比如/home/hadoop/data/tmp后面 NameNode 和 DataNode 的数据目录我还会单独指定。4.3 hdfs-site.xml数据放哪、副本几份hdfs-site.xml里最关键的是存储目录和副本数configuration property namedfs.namenode.name.dir/name valuefile:///home/hadoop/data/namenode/value /property property namedfs.datanode.data.dir/name valuefile:///home/hadoop/data/datanode/value /property property namedfs.replication/name value1/value /property /configuration我把三个 property 都解释一下dfs.namenode.name.dirNameNode 元数据存放目录。生产环境这里应该配多个目录做冗余单机学习一个目录够了。dfs.datanode.data.dir真实数据块存放目录。这里也能配逗号分隔的多个目录数据块会按策略分布。dfs.replication副本数。伪分布式只有一台 DataNode副本数必须写 1。如果你照搬生产环境的 3HDFS 在副本无法满足时会一直处于 unhealthy 状态你会看到 DataNode 明明活着但集群所有块都在 pending。首次配置时记得先创建目录并授权mkdir -p /home/hadoop/data/namenode /home/hadoop/data/datanode chown -R hadoop:hadoop /home/hadoop/data4.4 yarn-site.xml资源分配的默认值很坑YARN 负责资源调度伪分布式下最核心的配置是这三个configuration property nameyarn.nodemanager.aux-services/name valuemapreduce_shuffle/value /property property nameyarn.nodemanager.resource.memory-mb/name value2048/value /property property nameyarn.nodemanager.resource.cpu-vcores/name value2/value /property /configurationyarn.nodemanager.aux-services必须设置为mapreduce_shuffle这是 MapReduce 任务在 YARN 上执行时做 shuffle 的辅助服务。忘了配这个你的 WordCount 作业提交后永远卡在 ACCEPTED 状态。yarn.nodemanager.resource.memory-mb和cpu-vcores的默认值是 8192 MB 和 8 vcores。如果你的虚拟机只有 2GB 内存NodeManager 启动时检测到可用内存不足会直接崩溃或拒绝调度。我习惯在虚拟机上给 2048 MB 内存和 2 核 CPU这个值要结合你机器的实际情况调。4.5 mapred-site.xml 和 workersmapred-site.xml里其实只需要一个关键配置configuration property namemapreduce.framework.name/name valueyarn/value /property /configurationmapreduce.framework.name默认是local如果不改成yarn你的 MapReduce 作业会在本地进程里跑而不是提交到 YARN 集群你会在 YARN 的 Web UI 上什么都看不到。workers文件Hadoop 3.x 叫这个名字2.x 叫slaves在etc/hadoop/workers里。单机模式默认内容就是localhost不用改。如果你以后加节点把这个文件里的每行替换成对应主机名或 IP 就行。4.6 端口对照表3.x 和 2.x 差在哪很多教程讲的是 Hadoop 2.x端口和 3.x 差很多。我用一张表直接对照服务2.x 常见端口3.3.3 默认端口NameNode Web UI500709870NameNode RPC9000 / 80208020DataNode 数据传输500109866DataNode Web UI500759864YARN ResourceManager Web UI80888088NodeManager Web UI80428042你在 3.3.3 上照着老教程去访问http://localhost:50070页面是永远打不开的正确地址是本文还有配套的精品资源点击获取
分享:

看完干货,该让你的企业上线了

免费需求沟通 · 48 小时内出具建站方案 · 河南本地可上门