配置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)能力。

分享

相关推荐
FuckPatience2 天前
WPF 具有跨线程功能的UI元素
wpf
诗仙&李白2 天前
HEFrame.WpfUI :一个现代化的 开源 WPF UI库
ui·开源·wpf
He BianGu2 天前
【笔记】在WPF中Binding里的详细功能介绍
笔记·wpf
He BianGu2 天前
【笔记】在WPF中 BulletDecorator 的功能、使用方式并对比 HeaderedContentControl 与常见 Panel 布局的区别
笔记·wpf
123梦野3 天前
WPF——效果和可视化对象
wpf
He BianGu3 天前
【笔记】在WPF中Decorator是什么以及何时优先考虑 Decorator 派生类
笔记·wpf
时光追逐者4 天前
一款专门为 WPF 打造的开源 Office 风格用户界面控件库
ui·开源·c#·.net·wpf
He BianGu4 天前
【笔记】介绍 WPF XAML 中 Binding 的 StringFormat详细功能
笔记·wpf
Rotion_深5 天前
C# WPF使用线程池运行Action方法
c#·wpf·线程池
攻城狮CSU5 天前
WPF 深入系列.2.布局系统.尺寸属性
wpf