我正在 6 台机器上运行 Hadoop 作业(使用 Hadoop 0.20.2);其中一台机器是 namenode/辅助节点/作业跟踪器(主节点),其他 5 台机器都是数据节点/任务跟踪器(从节点)。该作业有超过 14,000 个地图,完成度超过 10%。当我浏览作业跟踪器作业详细信息页面时,我看到以下内容:
Status: Running
Started at: Tue Jul 05 18:12:44 PDT 2011
Running for: 66hrs, 5mins, 4sec
Job Cleanup: Pending
Black-listed TaskTrackers: 1
我登录到有问题的机器,可以看到任务跟踪器进程正在运行,但机器没有执行任何工作(top 命令显示 CPU 利用率 < 10%)。我已经用这些命令重新启动了任务跟踪器节点
./hadoop-daemon.sh stop tasktracker
./hadoop-daemon.sh start tasktracker
但节点仍在黑名单中,并且任务跟踪器正在运行,但机器仍未执行任何工作。
问题:有没有办法告诉 Hadoop 取消黑名单并将任务发送到节点?希望无需重新启动作业?
PS. 在作业开始时确认节点正在运行并执行任务。
答案1
在conf/hdfs-site.xml中放入以下配置:
<property>
<name>dfs.hosts</name>
<value>/full/path/to/whitelisted/node/file</value>
</property>
使用以下命令要求 Hadoop 根据配置刷新节点状态。
./bin/hadoop dfsadmin -refreshNodes