Hadoop 3.3.6 单机伪分布式部署:Ubuntu 22.04 下 5 个核心配置文件详解 📅 2026/7/12 3:28:00 Hadoop 3.3.6 单机伪分布式部署Ubuntu 22.04 下 5 个核心配置文件详解1. 环境准备与基础配置在开始Hadoop 3.3.6的伪分布式部署前我们需要确保系统环境满足基本要求。Ubuntu 22.04 LTS作为稳定的Linux发行版是理想的运行平台。以下是需要完成的准备工作系统要求至少4GB内存8GB以上更佳50GB可用磁盘空间Java 8或11推荐OpenJDK 11SSH服务首先安装必要的软件包sudo apt update sudo apt install -y openjdk-11-jdk ssh pdsh配置Java环境变量编辑~/.bashrc文件添加以下内容export JAVA_HOME/usr/lib/jvm/java-11-openjdk-amd64 export PATH$PATH:$JAVA_HOME/bin验证Java安装java -version接下来设置SSH免密登录ssh-keygen -t rsa -P -f ~/.ssh/id_rsa cat ~/.ssh/id_rsa.pub ~/.ssh/authorized_keys chmod 600 ~/.ssh/authorized_keys测试SSH连接ssh localhost2. Hadoop安装与基础配置从Apache官网下载Hadoop 3.3.6并解压wget https://archive.apache.org/dist/hadoop/common/hadoop-3.3.6/hadoop-3.3.6.tar.gz tar -xzvf hadoop-3.3.6.tar.gz -C /usr/local cd /usr/local sudo mv hadoop-3.3.6 hadoop sudo chown -R $USER:$USER hadoop配置Hadoop环境变量在~/.bashrc中添加export HADOOP_HOME/usr/local/hadoop export PATH$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin export HADOOP_CONF_DIR$HADOOP_HOME/etc/hadoop export HADOOP_MAPRED_HOME$HADOOP_HOME export HADOOP_COMMON_HOME$HADOOP_HOME export HADOOP_HDFS_HOME$HADOOP_HOME export YARN_HOME$HADOOP_HOME应用配置并验证source ~/.bashrc hadoop version3. 核心配置文件详解3.1 core-site.xml配置core-site.xml是Hadoop的核心配置文件定义了全局参数。创建或编辑$HADOOP_HOME/etc/hadoop/core-site.xmlconfiguration !-- 定义HDFS的默认文件系统URI -- property namefs.defaultFS/name valuehdfs://localhost:9000/value /property !-- Hadoop临时文件存储目录 -- property namehadoop.tmp.dir/name value/usr/local/hadoop/tmp/value /property !-- 启用WebHDFS服务 -- property namehadoop.http.staticuser.user/name value$(whoami)/value /property !-- 文件系统回收站设置 -- property namefs.trash.interval/name value1440/value /property /configuration关键参数说明fs.defaultFS定义HDFS的默认访问地址和端口hadoop.tmp.dir指定Hadoop临时文件目录确保该目录存在并有写权限fs.trash.interval设置文件删除后保留在回收站中的时间分钟3.2 hdfs-site.xml配置hdfs-site.xml专门用于HDFS相关配置。编辑$HADOOP_HOME/etc/hadoop/hdfs-site.xmlconfiguration !-- 数据块副本数量 -- property namedfs.replication/name value1/value /property !-- NameNode元数据存储路径 -- property namedfs.namenode.name.dir/name valuefile://${hadoop.tmp.dir}/dfs/name/value /property !-- DataNode数据存储路径 -- property namedfs.datanode.data.dir/name valuefile://${hadoop.tmp.dir}/dfs/data/value /property !-- 启用Web UI访问 -- property namedfs.webhdfs.enabled/name valuetrue/value /property !-- NameNode Web UI访问地址 -- property namedfs.namenode.http-address/name value0.0.0.0:9870/value /property !-- 启用权限检查 -- property namedfs.permissions/name valuefalse/value /property /configuration关键参数说明dfs.replication在伪分布式模式下设置为1生产环境通常为3dfs.namenode.name.dirNameNode存储文件系统元数据的位置dfs.webhdfs.enabled启用HTTP REST API访问HDFS3.3 mapred-site.xml配置mapred-site.xml负责MapReduce框架的配置。编辑$HADOOP_HOME/etc/hadoop/mapred-site.xmlconfiguration !-- 指定MapReduce运行框架 -- property namemapreduce.framework.name/name valueyarn/value /property !-- MapReduce应用主节点地址 -- property namemapreduce.jobhistory.address/name valuelocalhost:10020/value /property !-- MapReduce历史服务器Web UI地址 -- property namemapreduce.jobhistory.webapp.address/name valuelocalhost:19888/value /property !-- Map任务内存限制 -- property namemapreduce.map.memory.mb/name value1536/value /property !-- Reduce任务内存限制 -- property namemapreduce.reduce.memory.mb/name value3072/value /property /configuration关键参数说明mapreduce.framework.name设置为yarn以使用YARN资源管理器内存参数应根据实际机器配置调整避免OOM错误3.4 yarn-site.xml配置yarn-site.xml配置YARN资源管理器。编辑$HADOOP_HOME/etc/hadoop/yarn-site.xmlconfiguration !-- 指定ResourceManager地址 -- property nameyarn.resourcemanager.hostname/name valuelocalhost/value /property !-- NodeManager上运行的附属服务 -- property nameyarn.nodemanager.aux-services/name valuemapreduce_shuffle/value /property !-- ResourceManager Web UI地址 -- property nameyarn.resourcemanager.webapp.address/name valuelocalhost:8088/value /property !-- 启用日志聚合 -- property nameyarn.log-aggregation-enable/name valuetrue/value /property !-- 日志保留时间 -- property nameyarn.log-aggregation.retain-seconds/name value86400/value /property !-- 禁用虚拟内存检查 -- property nameyarn.nodemanager.vmem-check-enabled/name valuefalse/value /property /configuration关键参数说明yarn.nodemanager.aux-services必须设置为mapreduce_shuffle以支持MapReduceyarn.log-aggregation-enable启用日志聚合便于调试3.5 hadoop-env.sh配置hadoop-env.sh设置Hadoop运行环境变量。编辑$HADOOP_HOME/etc/hadoop/hadoop-env.sh# 设置Java安装路径 export JAVA_HOME/usr/lib/jvm/java-11-openjdk-amd64 # Hadoop日志目录 export HADOOP_LOG_DIR/usr/local/hadoop/logs # 设置Hadoop PID文件目录 export HADOOP_PID_DIR/usr/local/hadoop/pids # 设置Hadoop堆内存大小 export HADOOP_HEAPSIZE_MAX1024m # 启用远程调试 # export HADOOP_OPTS-agentlib:jdwptransportdt_socket,servery,suspendn,address5005注意在生产环境中应根据服务器配置适当调整HADOOP_HEAPSIZE_MAX参数4. 系统启动与验证4.1 格式化HDFS首次启动前需要格式化NameNodehdfs namenode -format成功格式化后应看到类似输出Storage directory /usr/local/hadoop/tmp/dfs/name has been successfully formatted4.2 启动Hadoop服务使用以下脚本启动所有服务start-dfs.sh start-yarn.sh mr-jobhistory-daemon.sh start historyserver验证服务是否正常运行jps应看到以下关键进程NameNode DataNode ResourceManager NodeManager SecondaryNameNode JobHistoryServer Jps4.3 验证部署HDFS验证hdfs dfs -mkdir -p /user/$(whoami) hdfs dfs -put $HADOOP_HOME/etc/hadoop/*.xml /user/$(whoami)/input hdfs dfs -ls /user/$(whoami)/inputMapReduce验证hadoop jar $HADOOP_HOME/share/hadoop/mapreduce/hadoop-mapreduce-examples-3.3.6.jar wordcount /user/$(whoami)/input /user/$(whoami)/output查看结果hdfs dfs -cat /user/$(whoami)/output/*Web UI访问NameNode: http://localhost:9870ResourceManager: http://localhost:8088JobHistory: http://localhost:198885. 高级配置与优化5.1 性能调优参数在hdfs-site.xml中添加以下性能相关配置property namedfs.blocksize/name value128m/value /property property nameio.file.buffer.size/name value131072/value /property property namedfs.datanode.max.xcievers/name value4096/value /property5.2 YARN资源管理优化yarn-site.xml资源配置property nameyarn.nodemanager.resource.memory-mb/name value8192/value /property property nameyarn.scheduler.maximum-allocation-mb/name value6144/value /property property nameyarn.nodemanager.resource.cpu-vcores/name value4/value /property5.3 安全配置启用简单认证在core-site.xml中添加property namehadoop.http.authentication.type/name valuesimple/value /property property namehadoop.http.filter.initializers/name valueorg.apache.hadoop.security.AuthenticationFilterInitializer/value /property5.4 日志配置配置日志级别编辑$HADOOP_HOME/etc/hadoop/log4j.properties# 设置NameNode日志级别为INFO log4j.logger.org.apache.hadoop.hdfs.server.namenodeINFO # 设置DataNode日志级别为WARN log4j.logger.org.apache.hadoop.hdfs.server.datanodeWARN # 启用滚动日志 log4j.appender.RFAorg.apache.log4j.RollingFileAppender6. 常见问题解决问题1端口冲突解决方案检查端口占用netstat -tulnp | grep 端口号修改冲突端口配置问题2磁盘空间不足解决方案清理临时文件hdfs dfsadmin -report扩展磁盘空间或调整数据目录问题3Web UI无法访问解决方案检查防火墙设置sudo ufw status开放必要端口sudo ufw allow 9870/tcp问题4权限问题解决方案确保所有服务以相同用户运行检查文件权限hdfs dfs -ls /临时禁用权限检查仅测试环境property namedfs.permissions.enabled/name valuefalse/value /property7. 维护与管理脚本创建启动/停止脚本hadoop-cluster.sh#!/bin/bash case $1 in start) echo Starting Hadoop cluster... start-dfs.sh start-yarn.sh mr-jobhistory-daemon.sh start historyserver ;; stop) echo Stopping Hadoop cluster... mr-jobhistory-daemon.sh stop historyserver stop-yarn.sh stop-dfs.sh ;; status) jps ;; *) echo Usage: $0 {start|stop|status} exit 1 ;; esac赋予执行权限并使用chmod x hadoop-cluster.sh ./hadoop-cluster.sh start8. 数据备份与恢复NameNode元数据备份# 手动备份 hdfs dfsadmin -fetchImage ~/namenode_backup # 配置自动备份在hdfs-site.xml中 property namedfs.namenode.name.dir/name valuefile://${hadoop.tmp.dir}/dfs/name,file:///backup/dfs/name/value /property数据导出/导入# 导出HDFS数据到本地 hadoop fs -copyToLocal /hdfs/path /local/path # 从本地导入数据 hadoop fs -copyFromLocal /local/path /hdfs/path9. 监控与性能分析使用Hadoop自带工具# HDFS健康状况 hdfs dfsadmin -report # 磁盘使用情况 hdfs dfs -df -h # YARN应用列表 yarn application -list配置Ganglia监控安装Ganglia监控组件在hadoop-metrics2.properties中配置*.sink.ganglia.classorg.apache.hadoop.metrics2.sink.ganglia.GangliaSink31 *.sink.ganglia.period10 namenode.sink.ganglia.serverslocalhost:8649 datanode.sink.ganglia.serverslocalhost:864910. 升级与迁移版本升级步骤备份配置和数据停止所有Hadoop服务安装新版本到不同目录迁移配置文件启动服务并验证数据迁移工具# 使用DistCp跨集群复制 hadoop distcp hdfs://old-cluster:8020/path hdfs://new-cluster:8020/path在实际使用中发现伪分布式模式虽然方便开发测试但某些性能指标与完全分布式环境存在差异特别是在网络IO和磁盘吞吐方面。建议在性能测试时使用与生产环境相似的配置。