
1. 项目概述赫兹威客完全分布式Hadoop测试教程这个标题背后实际上是一个面向大数据开发初学者的实战指南。作为一名经历过无数次Hadoop集群搭建的老手我深知完全分布式环境配置过程中的各种坑。本文将带你从零开始手把手搭建一个真正可用的Hadoop 3.x完全分布式集群涵盖HDFS和YARN的核心配置要点。完全分布式与伪分布式最大的区别在于所有服务都运行在不同的物理节点上更接近生产环境。这对于想要真正掌握Hadoop集群管理的人来说是必经之路。我们将使用3台Ubuntu服务器作为实验环境1个NameNode 2个DataNode这种配置既能体现分布式特性又不会对硬件资源要求过高。2. 环境准备与基础配置2.1 硬件与系统要求建议使用以下配置最低要求3台Ubuntu 20.04 LTS服务器或虚拟机每台至少2核CPU/4GB内存/20GB存储所有节点在同一局域网内互相能ping通关闭所有节点的防火墙生产环境需单独配置安全组注意虚拟机环境下务必确保所有节点的时钟同步否则可能导致HDFS异常。建议安装ntp服务sudo apt update sudo apt install -y ntp2.2 系统级前置配置在所有节点上执行以下操作修改主机名并配置hosts文件# 在NameNode上 sudo hostnamectl set-hostname namenode # 在DataNode1上 sudo hostnamectl set-hostname datanode1 # 在DataNode2上 sudo hostnamectl set-hostname datanode2编辑/etc/hosts所有节点相同配置192.168.1.100 namenode 192.168.1.101 datanode1 192.168.1.102 datanode2配置SSH免密登录NameNode到所有DataNode# 在NameNode上生成密钥 ssh-keygen -t rsa -P -f ~/.ssh/id_rsa # 将公钥拷贝到各节点包括自己 ssh-copy-id namenode ssh-copy-id datanode1 ssh-copy-id datanode23. Hadoop安装与配置3.1 软件包准备建议使用国内镜像下载Hadoop官方源速度较慢wget https://mirrors.tuna.tsinghua.edu.cn/apache/hadoop/common/hadoop-3.3.4/hadoop-3.3.4.tar.gz tar -xzvf hadoop-3.3.4.tar.gz -C /opt/ mv /opt/hadoop-3.3.4 /opt/hadoop3.2 核心配置文件修改需要配置以下5个关键文件路径/opt/hadoop/etc/hadoop/hadoop-env.shexport JAVA_HOME/usr/lib/jvm/java-8-openjdk-amd64 export HDFS_NAMENODE_USERroot export HDFS_DATANODE_USERroot export HDFS_SECONDARYNAMENODE_USERroot export YARN_RESOURCEMANAGER_USERroot export YARN_NODEMANAGER_USERrootcore-site.xmlconfiguration property namefs.defaultFS/name valuehdfs://namenode:9000/value /property property namehadoop.tmp.dir/name value/opt/hadoop/tmp/value /property /configurationhdfs-site.xmlconfiguration property namedfs.replication/name value2/value /property property namedfs.namenode.name.dir/name value/opt/hadoop/hdfs/namenode/value /property property namedfs.datanode.data.dir/name value/opt/hadoop/hdfs/datanode/value /property /configurationyarn-site.xmlconfiguration property nameyarn.nodemanager.aux-services/name valuemapreduce_shuffle/value /property property nameyarn.resourcemanager.hostname/name valuenamenode/value /property /configurationmapred-site.xmlconfiguration property namemapreduce.framework.name/name valueyarn/value /property /configuration3.3 节点角色分配在workers文件中指定DataNode节点datanode1 datanode24. 集群启动与验证4.1 格式化HDFS仅在首次启动时执行在NameNode上hdfs namenode -format4.2 启动集群启动HDFSstart-dfs.sh启动YARNstart-yarn.sh4.3 服务验证检查进程是否正常# NameNode上应有 # NameNode # ResourceManager # DataNode上应有 # DataNode # NodeManager访问Web UIHDFS: http://namenode:9870YARN: http://namenode:8088运行测试作业hadoop jar /opt/hadoop/share/hadoop/mapreduce/hadoop-mapreduce-examples-3.3.4.jar pi 10 1005. 常见问题排查5.1 SSH连接问题症状启动时提示Permission denied 解决# 检查authorized_keys权限 chmod 600 ~/.ssh/authorized_keys chmod 700 ~/.ssh # 检查sshd配置 sudo vi /etc/ssh/sshd_config # 确保有以下配置 PubkeyAuthentication yes AuthorizedKeysFile .ssh/authorized_keys5.2 端口冲突症状服务启动失败日志显示端口被占用 解决# 查找占用端口的进程 netstat -tulnp | grep 9000 # 修改hadoop配置中使用其他端口5.3 磁盘空间不足症状DataNode启动后自动关闭 解决# 检查磁盘空间 df -h # 修改hdfs-site.xml中的存储路径 property namedfs.datanode.data.dir/name value/data/hadoop/datanode/value /property6. 性能调优建议6.1 内存配置调整根据服务器实际内存修改yarn-site.xmlproperty nameyarn.nodemanager.resource.memory-mb/name value8192/value !-- 8GB -- /property property nameyarn.scheduler.maximum-allocation-mb/name value8192/value /property6.2 HDFS块大小优化根据业务需求调整hdfs-site.xmlproperty namedfs.blocksize/name value268435456/value !-- 256MB -- /property6.3 压缩配置提高MapReduce效率在core-site.xml中添加property nameio.compression.codecs/name valueorg.apache.hadoop.io.compress.GzipCodec,org.apache.hadoop.io.compress.DefaultCodec/value /property7. 安全增强措施7.1 简单认证配置在core-site.xml中添加property namehadoop.http.filter.initializers/name valueorg.apache.hadoop.security.AuthenticationFilterInitializer/value /property property namehadoop.http.authentication.type/name valuesimple/value /property7.2 用户权限管理创建专用Hadoop用户sudo useradd hadoopuser sudo passwd hadoopuser修改目录权限sudo chown -R hadoopuser:hadoopgroup /opt/hadoop8. 集群维护操作8.1 安全重启步骤停止YARNstop-yarn.sh停止HDFSstop-dfs.sh按需更新配置后按4.2节步骤重新启动8.2 添加新节点在新节点上重复2.2和3.1-3.2节配置将新节点主机名加入workers文件刷新节点列表hdfs dfsadmin -refreshNodes yarn rmadmin -refreshNodes8.3 监控与日志关键日志路径NameNode: /opt/hadoop/logs/hadoop--namenode-.logDataNode: /opt/hadoop/logs/hadoop--datanode-.logResourceManager: /opt/hadoop/logs/yarn--resourcemanager-.log使用以下命令监控集群状态hdfs dfsadmin -report yarn node -list9. 生产环境建议经过测试环境验证后如需部署到生产环境建议考虑高可用方案配置ZooKeeper实现NameNode HA数据备份定期对NameNode元数据进行备份监控告警集成PrometheusGrafana监控集群指标资源隔离使用cgroups或Docker容器隔离资源滚动升级制定详细的升级和回滚方案我在实际运维中发现完全分布式集群的稳定性很大程度上取决于网络质量。建议生产环境使用万兆网络并配置网络冗余。另外定期检查磁盘健康状态HDFS对磁盘故障非常敏感。