ubuntu

Ubuntu HDFS任务调度如何配置

小樊
43
2025-09-29 22:25:09
栏目: 智能运维

Ubuntu下HDFS任务调度配置指南

一、前提准备

在配置HDFS任务调度前,需完成以下基础步骤:

  1. 安装Hadoop:从Apache官网下载Hadoop并解压至Ubuntu服务器,配置JAVA_HOME等环境变量(需提前安装JDK 8+)。
  2. 配置HDFS核心参数:编辑$HADOOP_HOME/etc/hadoop/core-site.xml(设置fs.defaultFShdfs://namenode-host:9000)、hdfs-site.xml(设置dfs.replication副本数、dfs.namenode.name.dir NameNode数据目录等)。
  3. 启动HDFS集群:执行hdfs namenode -format格式化NameNode,再通过start-dfs.sh启动NameNode和DataNode服务,使用jps命令验证进程是否正常运行。

二、YARN资源调度配置(HDFS任务调度的核心)

HDFS的任务调度依赖YARN(Yet Another Resource Negotiator)实现,需通过修改yarn-site.xml配置调度器类型及参数:

1. 选择调度器类型

YARN支持三种主流调度器,根据集群需求选择:

2. 配置Capacity Scheduler(示例)

若选择容量调度器,需在yarn-site.xml中添加以下配置:

<property>
  <name>yarn.resourcemanager.scheduler.class</name>
  <value>org.apache.hadoop.yarn.server.resourcemanager.scheduler.capacity.CapacityScheduler</value>
</property>
<property>
  <name>yarn.scheduler.capacity.root.queues</name>
  <value>default,high_priority</value> <!-- 定义队列(如default、high_priority) -->
</property>
<property>
  <name>yarn.scheduler.capacity.root.default.capacity</name>
  <value>70</value> <!-- default队列占70%资源 -->
</property>
<property>
  <name>yarn.scheduler.capacity.root.high_priority.capacity</name>
  <value>30</value> <!-- high_priority队列占30%资源 -->
</property>
<property>
  <name>yarn.scheduler.capacity.root.default.user-limit-factor</name>
  <value>1</value> <!-- 单个用户最多使用队列资源的100% -->
</property>

配置完成后,重启YARN服务使生效:stop-yarn.sh && start-yarn.sh

3. 配置Fair Scheduler(示例)

若选择公平调度器,需在yarn-site.xml中添加:

<property>
  <name>yarn.resourcemanager.scheduler.class</name>
  <value>org.apache.hadoop.yarn.server.resourcemanager.scheduler.fair.FairScheduler</value>
</property>
<property>
  <name>yarn.scheduler.fair.allocation.file</name>
  <value>/path/to/fair-scheduler.xml</value> <!-- 指向自定义分配文件 -->
</property>

然后在fair-scheduler.xml中定义队列及资源分配规则:

<allocations>
  <queue name="default">
    <weight>0.7</weight> <!-- 权重(对应资源比例) -->
    <minResources>1024mb,1vcores</minResources> <!-- 最小资源保障 -->
  </queue>
  <queue name="high_priority">
    <weight>0.3</weight>
    <minResources>512mb,1vcores</minResources>
  </queue>
</allocations>

同样需重启YARN服务。

三、定时任务触发HDFS操作(可选扩展)

若需定期执行HDFS任务(如数据上传、MapReduce作业),可通过Cron Job实现:

  1. 编写Shell脚本:例如upload_to_hdfs.sh,内容如下:
#!/bin/bash
source /etc/profile  # 加载Hadoop环境变量
data_date=$(date +%Y%m%d)
hdfs dfs -put /local/data/$data_date/*.txt /hdfs/target/$data_date/  # 上传本地数据到HDFS
hadoop jar /path/to/job.jar com.example.WordCount /hdfs/target/$data_date/ /hdfs/output/$data_date/  # 执行MapReduce作业
  1. 赋予执行权限chmod +x upload_to_hdfs.sh
  2. 添加Cron Job:执行crontab -e,添加定时规则(如每天凌晨2点执行):
0 2 * * * /path/to/upload_to_hdfs.sh >> /var/log/hdfs_task.log 2>&1

此配置会每天自动执行数据上传和MapReduce任务,日志输出至/var/log/hdfs_task.log

四、验证与监控

  1. 验证配置是否生效:提交一个测试作业(如hadoop jar /path/to/job.jar),通过yarn application -list查看任务是否被正确调度到目标队列。
  2. 监控集群状态:通过YARN ResourceManager Web界面(默认http://resourcemanager-host:8088)查看资源使用情况、任务队列状态;通过HDFS Web界面(默认http://namenode-host:9870)查看HDFS存储状态。

通过以上步骤,可在Ubuntu环境下完成HDFS任务调度的配置,实现资源合理分配与任务自动化执行。需根据集群规模(如节点数量、资源容量)和业务需求(如多租户、批处理优先级)调整调度策略参数。

0
看了该问题的人还看了