Hadoop 完全分布式搭建(超详细无坑版,直接复制执行)

张开发
2026/6/7 13:04:51 15 分钟阅读
Hadoop 完全分布式搭建(超详细无坑版,直接复制执行)
前言本文基于真实生产级环境搭建严格适配hadoop-3.1.4.tar.gz和jdk-8u171-linux-x64.tar.gz安装路径、环境变量完全贴合实际配置/opt/installs3台节点集群hadoop11、hadoop12、hadoop13每一步都附带命令、说明和避坑提示新手也能一次搭建成功无需修改多余配置直接复制执行即可。环境说明固定适配无需修改一、集群规划核心固定此规划避免混乱3台节点分工明确无需修改直接按此规划搭建保证集群稳定运行节点名称IP地址部署进程hadoop11192.168.1.11NameNode、DataNodehadoop12192.168.1.12DataNode、SecondaryNameNodehadoop13192.168.1.13DataNode避坑提示SecondaryNameNode不与NameNode部署在同一节点避免单点故障二、前期准备3台节点全部执行缺一不可所有节点必须完成以下操作否则后续搭建会出现权限、连接、环境异常建议逐台执行执行完成后验证是否成功。2.1 关闭防火墙关闭后永久生效Hadoop集群节点之间需要自由通信防火墙会拦截端口必须关闭# 停止防火墙systemctl stop firewalld# 禁止防火墙开机自启systemctl disable firewalld验证执行systemctl status firewalld显示“inactive”即为成功。2.2 配置主机名映射解析节点名称避免IP连接错误配置hosts文件让3台节点能够通过主机名hadoop11、hadoop12、hadoop13相互访问无需输入IP#设置hostname在hadoop11上执行:hostnamectl set-hostname hadoop11在hadoop12上执行:hostnamectl set-hostname hadoop12在hadoop13上执行:hostnamectl set-hostname hadoop13# 编辑hosts文件需要在三台节点各执行一遍vi /etc/hosts# 在文件末尾添加以下内容复制粘贴即可无需修改192.168.1.11 hadoop11 192.168.1.12 hadoop12 192.168.1.13 hadoop13保存退出vi编辑器按ESC输入:wq回车。验证执行ping hadoop12在hadoop11上执行能正常ping通即为成功。2.3 创建安装包存放目录统一存放JDK和Hadoop的安装包mkdir -p /opt/modules2.4创建安装目录统一存放JDK和Hadoop所有节点创建/opt/installs目录用于存放解压后的JDK和Hadoop保持路径统一mkdir -p /opt/installs说明-p参数表示递归创建目录即使/opt目录下没有installs也会自动创建避免报错。三、安装JDK仅在hadoop11执行后续分发到其他节点JDK是Hadoop运行的基础必须先安装JDK且版本适配JDK8适配Hadoop3.1.4本文使用jdk-8u171-linux-x64.tar.gz与用户实际文件完全一致。3.1 解压JDK到指定目录JDK安装包已上传至/opt/modules目录用户实际路径执行以下命令解压并重命名方便后续配置环境变量# 进入JDK安装包所在目录cd /opt/modules# 解压JDK到/opt/installs目录tar -zxvf jdk-8u171-linux-x64.tar.gz -C /opt/installs/# 进入安装目录重命名JDK文件夹简化路径避免版本号繁琐cd /opt/installsmv jdk1.8.0_171 jdk1.8避坑提示解压时不要漏写-C /opt/installs/否则会解压到当前目录/opt/modules导致路径错误重命名为jdk1.8与后续环境变量配置一致。3.2 配置JDK环境变量hadoop11先配置后续分发#配置全局环境变量让所有用户都能使用JDK编辑/etc/profile文件vi /etc/profile#在文件末尾添加以下内容复制粘贴完全贴合用户环境变量export JAVA_HOME/opt/installs/jdk1.8 export PATH$PATH:$JAVA_HOME/bin#保存退出后执行以下命令使环境变量生效source /etc/profile验证执行java -version出现以下信息即为成功java version 1.8.0_171 Java(TM) SE Runtime Environment (build 1.8.0_171-b11) Java HotSpot(TM) 64-Bit Server VM (build 25.171-b11, mixed mode)四、安装Hadoop仅在hadoop11执行后续分发到其他节点Hadoop安装包为hadoop-3.1.4.tar.gz同样上传至/opt/modules目录执行以下步骤解压、配置。4.1 解压Hadoop到指定目录# 进入Hadoop安装包所在目录cd /opt/modules# 解压Hadoop到/opt/installs目录tar -zxvf hadoop-3.1.4.tar.gz -C /opt/installs/# 进入安装目录重命名Hadoop文件夹简化路径cd /opt/installs4.2 配置Hadoop环境变量hadoop11先配置后续分发继续编辑/etc/profile文件添加Hadoop环境变量与JDK环境变量放在一起mv hadoop-3.1.4 hadoop3.1.4在JDK环境变量下方添加以下内容复制粘贴贴合用户实际配置vi /etc/profileexport HADOOP_HOME/opt/installs/hadoop3.1.4 export PATH$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin保存退出后重新生效环境变量source /etc/profile验证执行hadoop version出现Hadoop 3.1.4版本信息即为成功。五、配置免密登录仅在hadoop11执行实现无密码访问其他节点Hadoop集群启动时NameNode需要无密码访问DataNode节点因此需要配置hadoop11到自身、hadoop12、hadoop13的免密登录步骤如下# 生成密钥对一路回车不设置密码ssh-keygen -t rsa# 分发公钥到hadoop11自身免密hadoop12,hadoop13ssh-copy-id hadoop11ssh-copy-id hadoop12ssh-copy-id hadoop13避坑提示分发公钥时需要输入对应节点的root密码输入时不显示直接输入后回车即可如果执行ssh-copy-id报错检查hosts配置是否正确以及防火墙是否关闭。验证执行ssh hadoop12在hadoop11上执行无需输入密码即可登录到hadoop12即为成功执行exit可退出登录。六、修改Hadoop核心配置文件仅在hadoop11执行关键步骤Hadoop的核心配置文件位于/opt/installs/hadoop3.1.4/etc/hadoop目录下共需要修改6个文件所有配置均贴合用户环境直接复制粘贴即可无需修改任何参数。先进入配置目录cd /opt/installs/hadoop3.1.4/etc/hadoop6.1 配置hadoop-env.sh指定JDK路径和用户该文件用于配置Hadoop运行的环境变量主要指定JDK路径和运行用户避免权限报错vi hadoop-env.sh在文件末尾添加以下内容复制粘贴与用户JDK路径一致# 1. 指定 JDK 安装路径必须配置Hadoop 是 Java 写的 export JAVA_HOME/opt/installs/jdk1.8 # 2. 让 HDFS 的 3 个服务允许用 root 用户运行 export HDFS_NAMENODE_USERroot # 主节点NameNode用 root 启动 export HDFS_DATANODE_USERroot # 数据节点DataNode用 root 启动 export HDFS_SECONDARYNAMENODE_USERroot # 备用主节点用 root 启动 # 3. 让 YARN 的 2 个服务允许用 root 用户运行 export YARN_RESOURCEMANAGER_USERroot # 资源调度用 root 启动 export YARN_NODEMANAGER_USERroot # 节点管理用 root 启动保存退出即可。6.2 配置core-site.xml核心配置指定NameNode地址和临时目录vi core-site.xml将文件中默认的configuration/configuration标签替换为以下内容复制粘贴!-- 配置文件开始 -- configuration !-- 第1个配置HDFS 通信地址 -- property !-- 配置项名称HDFS 默认文件系统 -- namefs.defaultFS/name !-- 配置值HDFS 主节点地址 端口 -- valuehdfs://hadoop11:9000/value /property !-- 第2个配置Hadoop 临时数据目录 -- property !-- 配置项名称临时文件目录 -- namehadoop.tmp.dir/name !-- 配置值数据存放路径 -- value/opt/installs/hadoop3.1.4/data/tmp/value /property !-- 配置文件结束 -- /configuration6.3 配置hdfs-site.xmlHDFS相关配置副本数、SecondaryNameNode地址vi hdfs-site.xml替换为以下内容复制粘贴configuration !-- HDFS 数据副本数量设置为 3表示每个数据块会备份 3 份 -- property namedfs.replication/name value3/value /property !-- 配置 SecondaryNameNode备用名称节点的地址和端口 -- property namedfs.namenode.secondary.http-address/name valuehadoop12:50090/value /property /configuration6.4 配置workers指定DataNode节点旧版本叫slaves该文件用于指定Hadoop集群中的DataNode节点Hadoop启动时会自动在这些节点上启动DataNode进程vi workers删除文件中默认的localhost添加以下内容复制粘贴hadoop11 hadoop12 hadoop13避坑提示workers文件中不能有空格、空行否则会导致DataNode启动失败每一行一个节点名称与hosts文件中的主机名一致。七、分发JDK和Hadoop到其他节点仅在hadoop11执行hadoop11已经完成JDK、Hadoop的安装和配置现在将JDK、Hadoop以及环境变量文件分发到hadoop12和hadoop13避免重复操作7.1 分发JDKscp -r /opt/installs/jdk1.8 hadoop12:/opt/installs/scp -r /opt/installs/jdk1.8 hadoop13:/opt/installs7.2 分发Hadoopscp -r /opt/installs/hadoop3.1.4 hadoop12:/opt/installs/scp -r /opt/installs/hadoop3.1.4 hadoop13:/opt/installs/7.3 分发环境变量文件/etc/profilescp /etc/profile hadoop12:/etc/scp /etc/profile hadoop13:/etc/7.4 生效其他节点的环境变量分别在hadoop12和hadoop13上执行以下命令使环境变量生效source /etc/profile验证在hadoop12上执行java -version和hadoop version均能正常显示版本信息即为成功。八、格式化HDFS仅在hadoop11执行仅执行一次HDFS首次启动前需要格式化NameNode初始化元数据相当于给HDFS“格式化磁盘”注意仅执行一次后续启动集群无需再次执行否则会丢失所有数据hdfs namenode -format执行后出现以下信息包含“successfully formatted”即为格式化成功INFO common.Storage: Storage directory /opt/installs/hadoop3.1.4/data/tmp/dfs/name has been successfully formatted.避坑提示如果格式化失败检查core-site.xml中的hadoop.tmp.dir路径是否正确以及JDK环境变量是否配置正确如果重复格式化需要删除所有节点的/opt/installs/hadoop3.1.4/data目录重新执行格式化。九、启动Hadoop集群仅在hadoop11执行格式化成功后即可启动Hadoop集群启动HDFS执行以下命令9.1 启动HDFSstart-dfs.sh启动过程中会自动在对应节点上启动相关进程无需手动在其他节点操作。十、验证集群是否启动成功关键步骤集群启动后需要分别在3台节点上查看进程以及通过Web页面验证确保所有进程正常运行。10.1 查看进程jps命令在每台节点上执行jps命令查看对应的进程是否存在与集群规划一致即为成功。1. hadoop11节点应出现2个进程NameNode DataNode2. hadoop12节点应出现2个进程DataNode SecondaryNameNode3. hadoop13节点应出现1个进程DataNode避坑提示如果某个进程缺失检查对应的配置文件是否正确或者执行stop-dfs.sh和stop-yarn.sh停止集群重新启动。10.2 Web页面验证浏览器访问Hadoop提供了Web页面用于查看集群状态在浏览器中输入以下地址确保本地能访问集群节点1. HDFS Web页面查看NameNode和DataNode状态http://hadoop11:9870验证页面中“Live DataNodes”显示为3即为DataNode全部启动成功。JDK版本jdk-8u171-linux-x64.tar.gzHadoop版本hadoop-3.1.4.tar.gz安装包路径/opt/modules所有软件压缩包均安装在此目录安装路径/opt/installs所有软件均安装在此目录节点数量3台hadoop11、hadoop12、hadoop13IP对应192.168.1.11/12/13环境变量已固定配置贴合用户实际无需额外调整fs.defaultFS指定HDFS的NameNode节点为hadoop11端口为9000Hadoop3.x默认端口。hadoop.tmp.dir指定Hadoop的临时目录避免默认临时目录/tmp重启后丢失数据。dfs.replication指定HDFS数据副本数3台节点对应副本数3保证数据高可用。dfs.namenode.secondary.http-address指定SecondaryNameNode节点为hadoop12端口50090用于辅助NameNode防止元数据丢失。问题1启动集群时DataNode启动失败jps查看无DataNode进程 解决检查workers文件是否正确无空格、空行hosts配置是否正确以及Hadoop配置文件中的路径是否正确。问题2格式化HDFS时报错提示“JAVA_HOME is not set and could not be found” 解决检查hadoop-env.sh中的JAVA_HOME配置是否正确与实际JDK路径一致重新生效环境变量。问题3Web页面无法访问 解决检查防火墙是否关闭以及集群节点的IP是否能被本地访问。问题4免密登录失败提示“Permission denied” 解决重新生成密钥对重新分发公钥确保输入的节点密码正确以及hosts配置正确。

更多文章