首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

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

以敏捷方式将单节点集群从 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,现在可以扩展到数万个节点。
返回列表