配置Hadoop集群-集群配置

以下是 Hadoop 集群的核心配置步骤,基于之前的免密登录和文件同步基础,完成 Hadoop 分布式环境的搭建:

1. 集群规划

假设集群包含 3 个节点:

  • master:NameNode、ResourceManager
  • slave1:DataNode、NodeManager
  • slave2:DataNode、NodeManager

2. 核心配置文件

master 节点 上编辑 Hadoop 配置文件(路径:/opt/hadoop/etc/hadoop):

2.1 core-site.xml

配置 HDFS 的默认文件系统和临时目录:

xml

复制代码
<configuration>
  <property>
    <name>fs.defaultFS</name>
    <value>hdfs://master:9000</value>
  </property>
  <property>
    <name>hadoop.tmp.dir</name>
    <value>/opt/hadoop/data/tmp</value>
  </property>
</configuration>
2.2 hdfs-site.xml

配置 HDFS 的副本数和数据存储路径:

xml

复制代码
<configuration>
  <property>
    <name>dfs.replication</name>
    <value>2</value>  <!-- 数据副本数,应小于等于DataNode数量 -->
  </property>
  <property>
    <name>dfs.namenode.name.dir</name>
    <value>file:/opt/hadoop/data/namenode</value>
  </property>
  <property>
    <name>dfs.datanode.data.dir</name>
    <value>file:/opt/hadoop/data/datanode</value>
  </property>
  <property>
    <name>dfs.webhdfs.enabled</name>
    <value>true</value>
  </property>
</configuration>
2.3 mapred-site.xml

配置 MapReduce 运行在 YARN 上:

xml

复制代码
<configuration>
  <property>
    <name>mapreduce.framework.name</name>
    <value>yarn</value>
  </property>
  <property>
    <name>mapreduce.application.classpath</name>
    <value>$HADOOP_MAPRED_HOME/share/hadoop/mapreduce/*:$HADOOP_MAPRED_HOME/share/hadoop/mapreduce/lib/*</value>
  </property>
</configuration>
2.4 yarn-site.xml

配置 YARN 的资源调度器和 NodeManager:

xml

复制代码
<configuration>
  <property>
    <name>yarn.resourcemanager.hostname</name>
    <value>master</value>
  </property>
  <property>
    <name>yarn.nodemanager.aux-services</name>
    <value>mapreduce_shuffle</value>
  </property>
  <property>
    <name>yarn.nodemanager.env-whitelist</name>
    <value>JAVA_HOME,HADOOP_COMMON_HOME,HADOOP_HDFS_HOME,HADOOP_CONF_DIR,CLASSPATH_PREPEND_DISTCACHE,HADOOP_YARN_HOME,HADOOP_MAPRED_HOME</value>
  </property>
</configuration>
2.5 workers(原 slaves 文件)

指定 DataNode 和 NodeManager 所在的从节点:

plaintext

复制代码
slave1
slave2

3. 同步配置到所有节点

使用之前的同步脚本将配置分发到所有节点:

bash

复制代码
/opt/hadoop/bin/sync_hadoop.sh etc/hadoop/

4. 初始化 HDFS

master 节点上执行:

bash

复制代码
# 创建必要目录
mkdir -p /opt/hadoop/data/{tmp,namenode,datanode}

# 格式化NameNode(首次启动前执行)
hdfs namenode -format

5. 启动集群

master 节点上执行:

bash

复制代码
# 启动HDFS服务
start-dfs.sh

# 启动YARN服务
start-yarn.sh

# 查看进程状态
jps

预期看到的进程:

  • master:NameNode、ResourceManager、SecondaryNameNode
  • slave1/slave2:DataNode、NodeManager

6. 验证集群

6.1 Web 界面访问
6.2 命令行测试

bash

复制代码
# 创建测试目录
hdfs dfs -mkdir /test

# 上传文件
hdfs dfs -put /etc/hosts /test/

# 查看文件列表
hdfs dfs -ls /test

# 运行MapReduce示例
yarn jar $HADOOP_HOME/share/hadoop/mapreduce/hadoop-mapreduce-examples-*.jar pi 10 100

7. 配置优化建议

内存分配优化

yarn-site.xml中添加:

xml

复制代码
<property>
  <name>yarn.nodemanager.resource.memory-mb</name>
  <value>8192</value>  <!-- 每个NodeManager可用内存(MB) -->
</property>
<property>
  <name>yarn.scheduler.maximum-allocation-mb</name>
  <value>4096</value>  <!-- 单个容器最大内存(MB) -->
</property>
Java 堆内存优化

hadoop-env.sh中添加:

bash

复制代码
export HADOOP_NAMENODE_OPTS="-Xmx4g"
export HADOOP_DATANODE_OPTS="-Xmx2g"

8. 常见问题排查

  1. NameNode 启动失败 :检查/opt/hadoop/data/namenode目录权限
  2. DataNode 未注册 :确保所有节点的clusterID一致(查看data/namenode/current/VERSION
  3. YARN 任务无法运行:检查 NodeManager 日志,确认内存配置是否合理

完成以上配置后,你的 Hadoop 集群将具备分布式存储(HDFS)和计算(MapReduce/YARN)能力。

分享

相关推荐
aGdF8E3gQ19 小时前
【Application Insights】采样率对Function App日志收集的影响和解决方法
python·flask·wpf
程序员-Benothing1 天前
如何实现高并发系统订单30分钟自动关闭?
开发语言·c#·wpf
一水2 天前
Redis实战:一个AI工作流系统里的五个应用场景,从传参到限流的完整链路
数据库·redis·wpf
dalong102 天前
WPF:3D甜甜圈
3d·c#·wpf·甜甜圈
别催小唐敲代码2 天前
ROS2从入门到实战:去中心化机器人操作系统详解
wpf·ros2
脚踏实地皮皮晨3 天前
003006001_WrapPanel控件
开发语言·c#·.net·wpf·visual studio
脚踏实地皮皮晨3 天前
003005002_WPF StackPanel 基类官方类定义逐行深度解析
开发语言·windows·算法·c#·wpf·visual studio
脚踏实地皮皮晨3 天前
003004002_UniformGrid控件的使用方法
开发语言·c#·.net·wpf·visual studio
脚踏实地皮皮晨4 天前
003003002_WPF Grid 基类官方类定义逐行深度解析
开发语言·windows·算法·c#·wpf·visual studio
脚踏实地皮皮晨5 天前
003002004_WPF Panel 基类 官方类定义
开发语言·windows·算法·c#·wpf·visual studio