1. 环境准备与基础配置搭建Hadoop完全分布式集群前需要做好充分的环境准备工作。我建议使用3台配置相同的CentOS 7虚拟机作为集群节点分别命名为bigdata01、bigdata02和bigdata03。每台虚拟机建议分配至少4GB内存和2个CPU核心存储空间不少于50GB。这样的配置可以保证基本的Hadoop功能正常运行同时留有一定的性能余量。首先需要在所有节点上安装JDK 8这是运行Hadoop的必要条件。我通常会把JDK安装在/opt/module目录下这样便于统一管理。安装完成后记得配置JAVA_HOME环境变量这个变量在后续的Hadoop配置中会频繁使用。你可以通过运行java -version来验证JDK是否安装成功。网络配置是另一个关键点。我遇到过很多集群问题都是由于网络配置不当引起的。建议为每个节点设置静态IP并在/etc/hosts文件中添加所有节点的IP和主机名映射。这样能避免DNS解析带来的问题提高集群的稳定性。配置完成后记得用ping命令测试节点间的网络连通性。提示在配置过程中建议使用root用户操作避免权限问题。但在生产环境中应该创建专门的Hadoop用户并配置适当的权限。防火墙和SELinux可能会干扰Hadoop集群的正常通信特别是在节点间的数据传输时。我通常会选择关闭防火墙和SELinux或者至少配置适当的规则允许Hadoop相关端口的通信。你可以使用以下命令查看防火墙状态systemctl status firewalld如果防火墙处于活动状态可以使用systemctl stop firewalld临时关闭或者用systemctl disable firewalld永久禁用。对于SELinux可以编辑/etc/selinux/config文件将SELINUX的值改为disabled然后重启系统生效。2. Hadoop安装与基础配置Hadoop的安装过程相对简单但有几个细节需要注意。我建议从Apache官网下载Hadoop 3.1.3的二进制包这样可以避免从源码编译的麻烦。下载完成后将压缩包上传到主节点(bigdata01)的/opt/software目录下。解压Hadoop包时我习惯使用-C参数指定解压目标目录tar -zxvf hadoop-3.1.3.tar.gz -C /opt/module/解压完成后为了方便后续操作我会将目录重命名为hadoopmv /opt/module/hadoop-3.1.3 /opt/module/hadoop接下来需要配置环境变量。编辑/etc/profile文件在末尾添加以下内容export HADOOP_HOME/opt/module/hadoop export PATH$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin保存后执行source /etc/profile使配置生效。现在可以运行hadoop version命令验证安装是否成功。如果看到Hadoop版本信息输出说明基础安装已经完成。SSH免密登录是Hadoop集群管理的关键配置。我建议先在每个节点上生成SSH密钥对ssh-keygen -t rsa -P 然后将公钥复制到所有节点包括自己ssh-copy-id bigdata01 ssh-copy-id bigdata02 ssh-copy-id bigdata03配置完成后测试从主节点到其他节点的SSH连接是否不需要密码。这一步非常重要因为Hadoop的启动脚本依赖于SSH免密登录来启动各个节点上的服务。3. Hadoop核心配置文件详解Hadoop的配置主要集中在四个核心文件中core-site.xml、hdfs-site.xml、yarn-site.xml和mapred-site.xml。这些文件位于$HADOOP_HOME/etc/hadoop目录下。我会逐一解释每个文件的关键配置项。首先是core-site.xml这是Hadoop的核心配置文件。最重要的配置是fs.defaultFS它指定了HDFS的默认文件系统URI。在我的配置中设置为hdfs://bigdata01:9000表示使用bigdata01作为NameNode端口为9000。另一个重要配置是hadoop.tmp.dir指定Hadoop临时文件目录。我通常会设置为/opt/module/hadoop/dfs/tmp/。configuration property namefs.defaultFS/name valuehdfs://bigdata01:9000/value /property property namehadoop.tmp.dir/name value/opt/module/hadoop/dfs/tmp/value /property /configurationhdfs-site.xml文件负责HDFS相关配置。dfs.replication设置文件块的副本数通常设置为3与节点数相同。dfs.namenode.name.dir和dfs.datanode.data.dir分别指定NameNode和DataNode的存储目录。我建议将这些目录放在独立的磁盘分区上以提高IO性能。configuration property namedfs.replication/name value3/value /property property namedfs.namenode.name.dir/name value/opt/module/hadoop/dfs/name/value /property property namedfs.datanode.data.dir/name value/opt/module/hadoop/dfs/data/value /property /configurationyarn-site.xml配置YARN资源管理器。yarn.nodemanager.aux-services必须设置为mapreduce_shuffle这是MapReduce运行所需的。yarn.resourcemanager.hostname指定ResourceManager运行的主机我设置为bigdata01。另外两个关于内存检查的配置在开发环境中可以设为false以避免内存不足的问题。configuration property nameyarn.nodemanager.aux-services/name valuemapreduce_shuffle/value /property property nameyarn.resourcemanager.hostname/name valuebigdata01/value /property property nameyarn.nodemanager.pmem-check-enabled/name valuefalse/value /property property nameyarn.nodemanager.vmem-check-enabled/name valuefalse/value /property /configurationmapred-site.xml配置MapReduce框架。mapreduce.framework.name必须设置为yarn表示使用YARN来运行MapReduce作业。其他三个环境变量配置确保MapReduce能够找到Hadoop的安装路径。configuration property namemapreduce.framework.name/name valueyarn/value /property property nameyarn.app.mapreduce.am.env/name valueHADOOP_MAPRED_HOME/opt/module/hadoop/value /property property namemapreduce.map.env/name valueHADOOP_MAPRED_HOME/opt/module/hadoop/value /property property namemapreduce.reduce.env/name valueHADOOP_MAPRED_HOME/opt/module/hadoop/value /property /configuration4. 集群部署与验证完成所有配置后需要将Hadoop安装目录和配置文件同步到所有从节点。我使用scp命令来完成这个任务scp -r /opt/module/hadoop bigdata02:/opt/module/ scp -r /opt/module/hadoop bigdata03:/opt/module/ scp /etc/profile bigdata02:/etc/ scp /etc/profile bigdata03:/etc/同步完成后记得在每个从节点上执行source /etc/profile使环境变量生效。同时检查从节点上的JAVA_HOME和HADOOP_HOME环境变量是否正确设置。接下来是初始化HDFS。这个步骤只需要在主节点上执行hdfs namenode -format这个命令会创建NameNode的存储目录并初始化HDFS的文件系统元数据。格式化成功后你会看到Successfully formatted的消息。需要注意的是格式化操作会清除HDFS上的所有数据所以生产环境中要谨慎使用。启动Hadoop集群使用start-all.sh脚本start-all.sh这个脚本会依次启动HDFS和YARN的各个组件。启动完成后可以使用jps命令检查每个节点上运行的Java进程。在主节点上你应该看到NameNode、ResourceManager等进程在从节点上应该看到DataNode和NodeManager进程。为了进一步验证集群是否正常工作可以运行一个简单的MapReduce作业hadoop jar $HADOOP_HOME/share/hadoop/mapreduce/hadoop-mapreduce-examples-3.1.3.jar pi 10 100这个命令会计算π的近似值如果作业能够顺利完成并输出结果说明集群配置正确。你还可以通过浏览器访问HDFS的Web界面(http://bigdata01:9870)和YARN的Web界面(http://bigdata01:8088)来直观地查看集群状态。5. 常见问题排查与优化建议在实际部署过程中可能会遇到各种问题。根据我的经验大多数问题都与配置错误或环境问题有关。如果某个节点上的服务没有启动首先检查对应节点的日志文件它们通常位于$HADOOP_HOME/logs目录下。内存配置是另一个常见的问题源。Hadoop默认的内存配置可能不适合你的环境特别是当物理内存较小时。你可以在yarn-site.xml中调整以下参数property nameyarn.nodemanager.resource.memory-mb/name value2048/value /property property nameyarn.scheduler.maximum-allocation-mb/name value2048/value /property property namemapreduce.map.memory.mb/name value1024/value /property property namemapreduce.reduce.memory.mb/name value1024/value /property对于性能优化我建议考虑以下几点首先确保数据目录配置在独立的磁盘上避免IO竞争其次根据工作负载特点调整HDFS的块大小和副本数最后合理配置YARN的资源分配参数避免资源浪费或不足。安全方面虽然我们在测试环境中使用了root用户但在生产环境中应该创建专门的Hadoop用户并配置适当的文件权限。同时考虑启用Hadoop的安全特性如Kerberos认证特别是在多租户环境中。
Hadoop 3.1.3 完全分布式集群部署实战指南
1. 环境准备与基础配置搭建Hadoop完全分布式集群前需要做好充分的环境准备工作。我建议使用3台配置相同的CentOS 7虚拟机作为集群节点分别命名为bigdata01、bigdata02和bigdata03。每台虚拟机建议分配至少4GB内存和2个CPU核心存储空间不少于50GB。这样的配置可以保证基本的Hadoop功能正常运行同时留有一定的性能余量。首先需要在所有节点上安装JDK 8这是运行Hadoop的必要条件。我通常会把JDK安装在/opt/module目录下这样便于统一管理。安装完成后记得配置JAVA_HOME环境变量这个变量在后续的Hadoop配置中会频繁使用。你可以通过运行java -version来验证JDK是否安装成功。网络配置是另一个关键点。我遇到过很多集群问题都是由于网络配置不当引起的。建议为每个节点设置静态IP并在/etc/hosts文件中添加所有节点的IP和主机名映射。这样能避免DNS解析带来的问题提高集群的稳定性。配置完成后记得用ping命令测试节点间的网络连通性。提示在配置过程中建议使用root用户操作避免权限问题。但在生产环境中应该创建专门的Hadoop用户并配置适当的权限。防火墙和SELinux可能会干扰Hadoop集群的正常通信特别是在节点间的数据传输时。我通常会选择关闭防火墙和SELinux或者至少配置适当的规则允许Hadoop相关端口的通信。你可以使用以下命令查看防火墙状态systemctl status firewalld如果防火墙处于活动状态可以使用systemctl stop firewalld临时关闭或者用systemctl disable firewalld永久禁用。对于SELinux可以编辑/etc/selinux/config文件将SELINUX的值改为disabled然后重启系统生效。2. Hadoop安装与基础配置Hadoop的安装过程相对简单但有几个细节需要注意。我建议从Apache官网下载Hadoop 3.1.3的二进制包这样可以避免从源码编译的麻烦。下载完成后将压缩包上传到主节点(bigdata01)的/opt/software目录下。解压Hadoop包时我习惯使用-C参数指定解压目标目录tar -zxvf hadoop-3.1.3.tar.gz -C /opt/module/解压完成后为了方便后续操作我会将目录重命名为hadoopmv /opt/module/hadoop-3.1.3 /opt/module/hadoop接下来需要配置环境变量。编辑/etc/profile文件在末尾添加以下内容export HADOOP_HOME/opt/module/hadoop export PATH$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin保存后执行source /etc/profile使配置生效。现在可以运行hadoop version命令验证安装是否成功。如果看到Hadoop版本信息输出说明基础安装已经完成。SSH免密登录是Hadoop集群管理的关键配置。我建议先在每个节点上生成SSH密钥对ssh-keygen -t rsa -P 然后将公钥复制到所有节点包括自己ssh-copy-id bigdata01 ssh-copy-id bigdata02 ssh-copy-id bigdata03配置完成后测试从主节点到其他节点的SSH连接是否不需要密码。这一步非常重要因为Hadoop的启动脚本依赖于SSH免密登录来启动各个节点上的服务。3. Hadoop核心配置文件详解Hadoop的配置主要集中在四个核心文件中core-site.xml、hdfs-site.xml、yarn-site.xml和mapred-site.xml。这些文件位于$HADOOP_HOME/etc/hadoop目录下。我会逐一解释每个文件的关键配置项。首先是core-site.xml这是Hadoop的核心配置文件。最重要的配置是fs.defaultFS它指定了HDFS的默认文件系统URI。在我的配置中设置为hdfs://bigdata01:9000表示使用bigdata01作为NameNode端口为9000。另一个重要配置是hadoop.tmp.dir指定Hadoop临时文件目录。我通常会设置为/opt/module/hadoop/dfs/tmp/。configuration property namefs.defaultFS/name valuehdfs://bigdata01:9000/value /property property namehadoop.tmp.dir/name value/opt/module/hadoop/dfs/tmp/value /property /configurationhdfs-site.xml文件负责HDFS相关配置。dfs.replication设置文件块的副本数通常设置为3与节点数相同。dfs.namenode.name.dir和dfs.datanode.data.dir分别指定NameNode和DataNode的存储目录。我建议将这些目录放在独立的磁盘分区上以提高IO性能。configuration property namedfs.replication/name value3/value /property property namedfs.namenode.name.dir/name value/opt/module/hadoop/dfs/name/value /property property namedfs.datanode.data.dir/name value/opt/module/hadoop/dfs/data/value /property /configurationyarn-site.xml配置YARN资源管理器。yarn.nodemanager.aux-services必须设置为mapreduce_shuffle这是MapReduce运行所需的。yarn.resourcemanager.hostname指定ResourceManager运行的主机我设置为bigdata01。另外两个关于内存检查的配置在开发环境中可以设为false以避免内存不足的问题。configuration property nameyarn.nodemanager.aux-services/name valuemapreduce_shuffle/value /property property nameyarn.resourcemanager.hostname/name valuebigdata01/value /property property nameyarn.nodemanager.pmem-check-enabled/name valuefalse/value /property property nameyarn.nodemanager.vmem-check-enabled/name valuefalse/value /property /configurationmapred-site.xml配置MapReduce框架。mapreduce.framework.name必须设置为yarn表示使用YARN来运行MapReduce作业。其他三个环境变量配置确保MapReduce能够找到Hadoop的安装路径。configuration property namemapreduce.framework.name/name valueyarn/value /property property nameyarn.app.mapreduce.am.env/name valueHADOOP_MAPRED_HOME/opt/module/hadoop/value /property property namemapreduce.map.env/name valueHADOOP_MAPRED_HOME/opt/module/hadoop/value /property property namemapreduce.reduce.env/name valueHADOOP_MAPRED_HOME/opt/module/hadoop/value /property /configuration4. 集群部署与验证完成所有配置后需要将Hadoop安装目录和配置文件同步到所有从节点。我使用scp命令来完成这个任务scp -r /opt/module/hadoop bigdata02:/opt/module/ scp -r /opt/module/hadoop bigdata03:/opt/module/ scp /etc/profile bigdata02:/etc/ scp /etc/profile bigdata03:/etc/同步完成后记得在每个从节点上执行source /etc/profile使环境变量生效。同时检查从节点上的JAVA_HOME和HADOOP_HOME环境变量是否正确设置。接下来是初始化HDFS。这个步骤只需要在主节点上执行hdfs namenode -format这个命令会创建NameNode的存储目录并初始化HDFS的文件系统元数据。格式化成功后你会看到Successfully formatted的消息。需要注意的是格式化操作会清除HDFS上的所有数据所以生产环境中要谨慎使用。启动Hadoop集群使用start-all.sh脚本start-all.sh这个脚本会依次启动HDFS和YARN的各个组件。启动完成后可以使用jps命令检查每个节点上运行的Java进程。在主节点上你应该看到NameNode、ResourceManager等进程在从节点上应该看到DataNode和NodeManager进程。为了进一步验证集群是否正常工作可以运行一个简单的MapReduce作业hadoop jar $HADOOP_HOME/share/hadoop/mapreduce/hadoop-mapreduce-examples-3.1.3.jar pi 10 100这个命令会计算π的近似值如果作业能够顺利完成并输出结果说明集群配置正确。你还可以通过浏览器访问HDFS的Web界面(http://bigdata01:9870)和YARN的Web界面(http://bigdata01:8088)来直观地查看集群状态。5. 常见问题排查与优化建议在实际部署过程中可能会遇到各种问题。根据我的经验大多数问题都与配置错误或环境问题有关。如果某个节点上的服务没有启动首先检查对应节点的日志文件它们通常位于$HADOOP_HOME/logs目录下。内存配置是另一个常见的问题源。Hadoop默认的内存配置可能不适合你的环境特别是当物理内存较小时。你可以在yarn-site.xml中调整以下参数property nameyarn.nodemanager.resource.memory-mb/name value2048/value /property property nameyarn.scheduler.maximum-allocation-mb/name value2048/value /property property namemapreduce.map.memory.mb/name value1024/value /property property namemapreduce.reduce.memory.mb/name value1024/value /property对于性能优化我建议考虑以下几点首先确保数据目录配置在独立的磁盘上避免IO竞争其次根据工作负载特点调整HDFS的块大小和副本数最后合理配置YARN的资源分配参数避免资源浪费或不足。安全方面虽然我们在测试环境中使用了root用户但在生产环境中应该创建专门的Hadoop用户并配置适当的文件权限。同时考虑启用Hadoop的安全特性如Kerberos认证特别是在多租户环境中。