以敏捷方式将单节点集群从 MapReduce Version 1 迁移到 YARN (6)
 
- UID
- 1066743
|

以敏捷方式将单节点集群从 MapReduce Version 1 迁移到 YARN (6)
第 7 步. 重新运行之前失败的 WordCount 作业重新运行 WordCount 作业,如下所示。
清单 32. 重新运行 WordCount 作业1
2
3
| $ hadoop fs -rm -r output/wordcount/conf.yarn
$ hadoop jar /usr/lib/hadoop-mapreduce/hadoop-mapreduce-examples.jar
wordcount conf.yarn output/wordcount/conf.yarn
|
分析作业的运行情况。在设置中,NodeManager 可以使用 3 GB 内存来运行容器。为 MapReduce ApplicationMaster 启动一个 1-GB 容器。剩余 2 GB 分散在运行映射或缩减任务的容器中。因此,最多可以同时运行 4 个映射任务(4 x 512 MB = 2 GB)或两个映射任务和一个缩减任务(2 x 512 MB + 1,024 MB = 2 GB)。
图 9. 一个 MapReduce 作业,包含多个同时在 YARN 集群上运行的任务 在 ResourceManager 日志中(找到默认情况下位于 /var/log/hadoop-yarn/yarn-yarn-resourcemanager-*.log 中的日志),查看分配给该应用程序的容器的详细信息。
清单 33. 检查 ResourceManager 日志1
2
3
4
5
6
7
| 2014-03-26 08:56:54,934 INFO
org.apache.hadoop.yarn.server.resourcemanager.scheduler
.common.fica.FiCaSchedulerNode: Assigned container
container_1395788831923_0004_01_000007 of capacity
<memory:512, vCores:1> on host hakunamapdata:43466,
which currently has 5 containers, <memory:3072, vCores:5>
used and <memory:0, vCores:3> available
|
WordCount 应用程序应成功完成。检查部分输出,如下所示。
清单 34. 检查输出1
2
3
4
5
6
7
8
9
10
11
| $ hadoop fs -cat output/wordcount/conf.yarn/* | head -n 10
!= 3
"" 6
"". 4
"$JAVA_HOME" 2
"$YARN_HEAPSIZE" 1
"$YARN_LOGFILE" 1
"$YARN_LOG_DIR" 1
"$YARN_POLICYFILE" 1
"*" 17
"AS 13
|
迭代 N. 添加更多特性尽管有一个 YARN 集群在运行,但这个步骤仅仅是 Hadoop YARN 旅程的开始。您需要配置许多特性,还需要调整大量配置设置。所有这些特性的完整描述不属于本文的讨论范围,但这里,我们将重点介绍一些新特性:
- 启用应用程序日志聚合:在当前设置中,不能使用 Web UI 或命令行接口在应用程序结束后检查应用程序的日志(stdout、stderr 和 syslog)。此限制导致难以调试失败的应用程序。可启用日志聚合来解决该问题。
- 配置供 NodeManager 存储其本地化文件 (yarn.nodemanager.local-dirs) 和容器日志文件 (yarn.nodemanager.log-dirs) 的本地目录:在每个 JBOD 挂载点上指定一个目录,以便将负载分散在多个磁盘上。
- 配置并调整所选的调度程序:例如,使用 Capacity Scheduler(默认设置)或 Fair Scheduler。
- 启用 Uberization:选择此选项后,如果作业足够小,那么可以在 ApplicationMaster 的 JVM 内运行一个 MapReduce 作业的所有任务。对小型 MapReduce 作业使用此选项,可避免从 ResourceManager 请求容器并要求 NodeManagers 启动它们的开销。
- 后启用应用程序恢复:ResourceManager 可将与正在运行的应用程序和完成的任务相关的信息存储在 HDFS 中。如果重新启动了 ResourceManager,则会重新创建应用程序的状态并仅重新运行不完整的任务。
- 利用 :尽管这个 JIRA 特性仍在开发之中,但来自一些供应商的发行版中已提供了此特性。
- 设置设置磁盘数量的最小部分,以便 NodeManager 能正常地启动新容器:使用 yarn.nodemanager.disk-health-checker.min-healthy-disks。
- 使用 NodeManager 在脚本上运行健康检查的能力:NodeManager 可频繁地运行一段配置的脚本来检查节点的健康状况。
- 从虚拟 CPU 核心(以及内存)角度定义容器的大小
- 在 Resource Manager 上启用垃圾收集日志记录
结束语本文介绍了如何将一个单节点集群从 MRv1 迁移到 YARN,并解释了最重要的特性和配置设置。
尽管将一个生产集群从 MRv1 迁移到 YARN 是一个详细备案的流程,但它依然非常耗时而且容易出错。可以通过实现一种敏捷方法来简化此过程,对集群执行逐步迁移。验证设置的有效性的频率越高,花费在排除潜在问题上的时间就会越少。每次迭代之后,一定要确保集群能正常工作,用户可以将应用程序提交给它。通过使用敏捷流程,管理员能够在每次迭代之后暂时停止迁移过程,在以后方便的时候继续迁移。
无论是花费一天时间还是一天一夜的时间来迁移到 YARN,您都会注意到巨大的时间投资回报。在迁移之后,就可以看到 Hadoop 集群几乎完美的资源利用率(因为固定的插槽已被灵活且通用的容器取代),而且您可以在相同的硬件上运行许多类型的应用程序,比如 Giraph、Spark、Tez、Impala 等。通过迁移到 YARN,现在可以扩展到数万个节点。 |
|
|
|
|
|