尧图网站设计 尧图网站设计YAOTU DESIGN
ARTICLE DETAIL

资讯详情

深耕网站设计与一线实操的经验洞察。

Linux下Hadoop 2.9.2伪分布式环境搭建教程

Linux下Hadoop 2.9.2伪分布式环境搭建教程 1. Linux下Hadoop 2.9.2单节点伪分布式环境搭建指南在数据处理领域Hadoop作为分布式系统基础架构的老将至今仍在众多企业的数据仓库和批处理系统中扮演重要角色。虽然云原生时代涌现了Spark、Flink等新框架但掌握Hadoop环境搭建仍然是每个大数据工程师的必修课。今天我将带你在Linux系统上完成Hadoop 2.9.2单节点伪分布式环境的完整部署这个版本虽然不算最新但稳定性经过长期验证非常适合学习HDFS和MapReduce的核心机制。伪分布式模式是初学者理解Hadoop工作原理的最佳切入点——它在单个节点上模拟完整的分布式环境所有守护进程NameNode、DataNode、ResourceManager等都运行在同一台机器上既避免了真实集群的复杂配置又保留了Hadoop的核心特性。通过这次实践你不仅能掌握Hadoop的基础架构还能为后续真正的分布式集群部署打下坚实基础。提示本教程基于Ubuntu 20.04 LTS系统但同样适用于CentOS等主流Linux发行版关键步骤会标注不同系统的差异点。1.1 环境准备与前置条件在开始之前我们需要确保系统满足以下要求至少4GB内存8GB以上更佳50GB可用磁盘空间已安装Java 8Hadoop 2.x系列对Java 8兼容性最佳配置好SSH免密登录首先验证Java环境java -version # 应显示类似openjdk version 1.8.0_312如果未安装Java在Ubuntu上执行sudo apt update sudo apt install openjdk-8-jdkCentOS系统则使用sudo yum install java-1.8.0-openjdk-devel接着配置SSH免密登录——这是Hadoop节点间通信的基础ssh-keygen -t rsa -P -f ~/.ssh/id_rsa cat ~/.ssh/id_rsa.pub ~/.ssh/authorized_keys chmod 600 ~/.ssh/authorized_keys # 测试是否成功 ssh localhost1.2 Hadoop安装包获取与解压从Apache镜像站下载Hadoop 2.9.2二进制包wget https://archive.apache.org/dist/hadoop/common/hadoop-2.9.2/hadoop-2.9.2.tar.gz验证文件完整性可选但推荐echo e0a553e260b6f76a1a6bfb554e0e5f44 hadoop-2.9.2.tar.gz | md5sum -c解压到/usr/local目录并创建符号链接sudo tar -xzf hadoop-2.9.2.tar.gz -C /usr/local cd /usr/local sudo ln -s hadoop-2.9.2 hadoop sudo chown -R $USER:$USER hadoop-2.9.22. Hadoop环境配置详解2.1 系统环境变量配置编辑~/.bashrc文件添加以下内容export HADOOP_HOME/usr/local/hadoop export PATH$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin export JAVA_HOME$(readlink -f /usr/bin/java | sed s:bin/java::) export HADOOP_CONF_DIR$HADOOP_HOME/etc/hadoop使配置生效source ~/.bashrc2.2 核心配置文件修改进入$HADOOP_CONF_DIR目录需要修改以下关键文件2.2.1 hadoop-env.sh设置JAVA_HOME确保取消注释export JAVA_HOME$(readlink -f /usr/bin/java | sed s:bin/java::)2.2.2 core-site.xml配置HDFS地址和临时目录configuration property namefs.defaultFS/name valuehdfs://localhost:9000/value /property property namehadoop.tmp.dir/name value/home/$USER/hadoop/tmp/value /property /configuration2.2.3 hdfs-site.xml配置副本数伪分布式设为1configuration property namedfs.replication/name value1/value /property property namedfs.namenode.name.dir/name value/home/$USER/hadoop/namenode/value /property property namedfs.datanode.data.dir/name value/home/$USER/hadoop/datanode/value /property /configuration2.2.4 mapred-site.xml从模板创建并配置cp mapred-site.xml.template mapred-site.xml内容修改为configuration property namemapreduce.framework.name/name valueyarn/value /property /configuration2.2.5 yarn-site.xml配置YARN资源管理configuration property nameyarn.nodemanager.aux-services/name valuemapreduce_shuffle/value /property property nameyarn.nodemanager.aux-services.mapreduce.shuffle.class/name valueorg.apache.hadoop.mapred.ShuffleHandler/value /property /configuration3. Hadoop集群初始化与启动3.1 格式化HDFS这是关键的一步操作注意仅在首次部署时执行hdfs namenode -format成功时会看到Storage directory /home/[user]/hadoop/namenode has been successfully formatted的提示。警告重复执行格式化会导致原有数据丢失只有在需要完全重置集群时才应执行此操作。3.2 启动HDFS守护进程启动NameNode和DataNodestart-dfs.sh验证进程是否正常运行jps # 应看到至少有以下进程 # NameNode # DataNode # SecondaryNameNode3.3 启动YARN资源管理器启动ResourceManager和NodeManagerstart-yarn.sh再次检查进程jps # 新增进程 # ResourceManager # NodeManager3.4 Web界面验证Hadoop提供了直观的Web UIHDFS状态http://localhost:50070YARN资源管理http://localhost:8088如果无法访问请检查防火墙设置sudo ufw allow 50070 sudo ufw allow 80884. 运行测试与问题排查4.1 基础功能测试创建HDFS目录并上传测试文件hdfs dfs -mkdir -p /user/$USER/input hdfs dfs -put $HADOOP_HOME/etc/hadoop/*.xml /user/$USER/input运行Hadoop自带的wordcount示例hadoop jar $HADOOP_HOME/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.9.2.jar wordcount /user/$USER/input /user/$USER/output查看结果hdfs dfs -cat /user/$USER/output/part-r-000004.2 常见问题解决方案问题1启动时报Connection refused可能原因SSH免密登录未配置成功端口被占用解决方案# 重新配置SSH ssh-keygen -t rsa -P -f ~/.ssh/id_rsa cat ~/.ssh/id_rsa.pub ~/.ssh/authorized_keys chmod 600 ~/.ssh/authorized_keys # 检查端口占用 netstat -tulnp | grep 9000问题2Web界面无法访问可能原因防火墙限制绑定IP错误解决方案# 检查绑定IP grep -A1 fs.defaultFS $HADOOP_CONF_DIR/core-site.xml # 应为localhost或127.0.0.1 # 临时关闭防火墙测试用 sudo systemctl stop firewalld # CentOS sudo ufw disable # Ubuntu问题3磁盘空间不足Hadoop默认会在/tmp目录创建临时文件可能导致inode耗尽解决方案# 修改hadoop.tmp.dir指向有足够空间的目录 # 并确保所有相关目录权限正确 sudo mkdir /mnt/hadoop_tmp sudo chown $USER:$USER /mnt/hadoop_tmp5. 生产环境注意事项虽然这是伪分布式环境但了解生产环境的配置差异很重要5.1 关键参数调优参数伪分布式值生产环境建议值说明dfs.replication13HDFS副本数yarn.nodemanager.resource.memory-mb默认物理内存的80%NodeManager可用内存mapreduce.map.memory.mb10244096单个Map任务内存mapreduce.reduce.memory.mb10248192单个Reduce任务内存5.2 日志管理Hadoop日志默认存放在$HADOOP_HOME/logs目录生产环境建议配置logrotate定期归档将日志集中收集到ELK等系统设置合理的日志级别通过log4j.properties查看特定守护进程日志# NameNode日志 tail -f $HADOOP_HOME/logs/hadoop-$USER-namenode-$(hostname).log # ResourceManager日志 tail -f $HADOOP_HOME/logs/yarn-$USER-resourcemanager-$(hostname).log5.3 安全配置建议虽然单节点环境安全性要求不高但良好的习惯应该从开发环境培养为Hadoop创建专用用户而非直接使用root定期备份namenode元数据hdfs dfsadmin -fetchImage /backup/namenode_image配置HDFS权限默认是宽松的hdfs dfs -chmod 700 /user/$USER6. 环境维护与日常操作6.1 启停脚本封装创建便捷的管理脚本~/hadoop-admin.sh#!/bin/bash case $1 in start) start-dfs.sh start-yarn.sh ;; stop) stop-yarn.sh stop-dfs.sh ;; restart) stop-yarn.sh stop-dfs.sh start-dfs.sh start-yarn.sh ;; *) echo Usage: $0 {start|stop|restart} exit 1 esac赋予执行权限chmod x ~/hadoop-admin.sh6.2 数据管理技巧高效上传大量小文件# 先打包再上传 tar -czf data.tar.gz small_files/* hdfs dfs -put data.tar.gz /user/$USER/input/ # 或者在MapReduce中直接处理压缩文件 hadoop jar ... -Dmapreduce.map.input.fileinputformat.input.dir.recursivetrue监控HDFS空间使用hdfs dfsadmin -report hdfs dfs -du -h /user回收站配置默认禁用 在core-site.xml中添加property namefs.trash.interval/name value1440/value !-- 保留时间(分钟) -- /property6.3 性能监控工具内置命令# YARN应用列表 yarn application -list # 查看特定应用详情 yarn application -status ApplicationId使用Ganglia或Ambari进行可视化监控需要额外安装简易监控脚本示例#!/bin/bash echo HDFS hdfs dfsadmin -report | grep -E Live|Configured Capacity echo YARN yarn node -list | grep Total Nodes7. 升级与迁移考量虽然本教程使用Hadoop 2.9.2但了解版本差异很重要7.1 Hadoop 2.x与3.x主要区别特性Hadoop 2.9.2Hadoop 3.x最低Java版本Java 7Java 8HDFS纠删码不支持支持YARN时间线服务v1v2默认端口号多个大部分已更改7.2 数据迁移策略如果需要从伪分布式迁移到真实集群使用distcp跨集群复制hadoop distcp hdfs://source-cluster:8020/foo hdfs://target-cluster:8020/bar备份namenode元数据并恢复直接复制数据目录需停机7.3 版本升级步骤滚动升级生产环境推荐先升级备NameNode故障转移后升级原NameNode逐个升级DataNodes伪分布式环境升级更简单stop-yarn.sh stop-dfs.sh # 备份配置和数据 tar -czf hadoop-backup-$(date %F).tar.gz $HADOOP_HOME/etc $HADOOP_HOME/data # 安装新版本并迁移配置8. 学习路径建议完成伪分布式环境搭建后建议按以下顺序深入HDFS操作精通掌握所有hdfs dfs命令理解块存储机制练习权限管理和配额控制MapReduce开发编写WordCount的变种如统计字母频率实现二次排序学习Combiner优化YARN资源管理配置队列资源分配监控应用资源使用理解调度器差异FIFO/Capacity/Fair生态组件集成Hive数据仓库HBase数据库Spark计算框架我个人的经验是在伪分布式环境充分练习基础操作后再尝试3节点的小型真实集群部署会顺利很多。遇到问题时多查看日志$HADOOP_HOME/logs通常能快速定位原因。记住Hadoop的报错信息往往看起来吓人但大部分问题都有明确的解决方案。
返回列表