Hadoopのシリーズ(2) - Cluster ExplorerのYARN

、Hadoopの糸の紹介

YARNアパッチ(もう一つのリソース交渉)が導入されたクラスタリソース管理システムのHadoop 2.0です。ユーザーはYARNによるサービスフレームワークYARN、一元管理や資源の配分の様々な上に展開することができます。

二、YARNアーキテクチャ

1.のResourceManager

ResourceManager通常、後で別のマシン上で実行中のバックグラウンド・プロセスの形で、それは全体のメインクラスタリソースコーディネーターと管理者があります。ResourceManager責任のユーザによって提出されたすべてのアプリケーションにリソースを割り当てるために、それは情報アプリケーション優先度キューの容量、ACLは、場所やその他のデータに基づいており、セキュアなマルチテナントモード、スケジュールクラスタ流通戦略を開発するために、意思決定を行い、その後、共有します資源。

2.ノードマネージャ

NodeManager糸は、クラスタ・マネージャ内の各ノードに対して特異的です。ノードの健康をすべてのコンテナ、リソース監視のライフサイクル内のノードを管理し、追跡するための責任。次のように:

  • スタートアップResourceManagerと定期を待って、ハートビートメッセージ・レジスタを送信するResourceManager命令と、
  • メンテナンスContainerのライフサイクル、モニタContainerリソースの使用状況。
  • 依存関係の管理タスクはによると、運転に関連しApplicationMaster始め、ニーズContainerのローカルコピーへのプログラムのニーズとその依存関係の前に。

3. ApplicationMaster

ユーザーがアプリケーションを送信すると、糸は軽量プロセスを起動しますApplicationMasterApplicationMaster調整する責任ResourceManager、およびを通じてリソースをNodeManager監視コンテナリソースの使用、それはまた、モニタリングとフォールトトレラントなタスクを担当しています。次のように:

  • 動的なコンピューティングリソース要件を決定するために、アプリケーションの動作状態に応じ。
  • ResourceManagerアプリケーションの監視、リソースアプリケーションリソースの使用;
  • タスクのステータスと進行状況を追跡、情報とアプリケーションの使用状況レポートリソースを進めます。
  • フォールトトレラントタスクを担当。

4.含まれ

Container糸は、そのリソースの抽象化は、そうでメモリ、CPU、ディスク、ネットワークとして、ノード上の多次元リソースをカプセル化です。RMへのAMのアプリケーションリソースは、AMの復帰のためのRMリソースがされるとContainer表現します。各タスクを割り当てられた糸はContainer、タスクのみを使用することができますContainer説明リソースを。ApplicationMasterあなたはできるContainer内のタスクのいずれかのタイプを実行します。例えば、MapReduce ApplicationMasterコンテナマップを開始するか、またはタスクを軽減するための要求は、Giraph ApplicationMasterGiraphにタスクを実行するためのコンテナを要求します。

三、糸は簡単な作品

  1. Client 糸にジョブを送信します。

  2. Resource Manager選択Node Manager、開始Container及び実行Application Master例。

  3. Application Masterする実際の必要に応じてResource Manager追加の要求Containerリソースを(ジョブが小さい場合には、アプリケーションマネージャは、独自のタスクJVMで実行することを選択します)。

  4. Application Master取得することによってContainer、分散コンピューティングリソース。

四、詳細にYARN作品

1.ジョブのサブミット

クライアントは、クラスタ全体にMapReduceジョブ(ステップ1)を提出し、job.waitForCompletionメソッドを呼び出します。リソースマネージャ(ステップ2)によって割り当てられた新たなジョブID(アプリケーションID)。検証クライアントジョブ出力ジョブ、分割入力を計算し、HDFSのコピー(ステップ3)〜(JARパッケージ、プロファイル、スプリット情報を含む)は、ジョブのリソース。最後に、submitApplicationエクスプローラ()を呼び出して、ジョブ(ステップ4)を提出します。

2.ジョブの初期化

当资源管理器收到 submitApplciation() 的请求时, 就将该请求发给调度器 (scheduler), 调度器分配 container, 然后资源管理器在该 container 内启动应用管理器进程, 由节点管理器监控 (第 5 步)。

MapReduce 作业的应用管理器是一个主类为 MRAppMaster 的 Java 应用,其通过创造一些 bookkeeping 对象来监控作业的进度, 得到任务的进度和完成报告 (第 6 步)。然后其通过分布式文件系统得到由客户端计算好的输入 split(第 7 步),然后为每个输入 split 创建一个 map 任务, 根据 mapreduce.job.reduces 创建 reduce 任务对象。

3. 任务分配

如果作业很小, 应用管理器会选择在其自己的 JVM 中运行任务。

如果不是小作业, 那么应用管理器向资源管理器请求 container 来运行所有的 map 和 reduce 任务 (第 8 步)。这些请求是通过心跳来传输的, 包括每个 map 任务的数据位置,比如存放输入 split 的主机名和机架 (rack),调度器利用这些信息来调度任务,尽量将任务分配给存储数据的节点, 或者分配给和存放输入 split 的节点相同机架的节点。

4. 任务运行

当一个任务由资源管理器的调度器分配给一个 container 后,应用管理器通过联系节点管理器来启动 container(第 9 步)。任务由一个主类为 YarnChild 的 Java 应用执行, 在运行任务之前首先本地化任务需要的资源,比如作业配置,JAR 文件, 以及分布式缓存的所有文件 (第 10 步。 最后, 运行 map 或 reduce 任务 (第 11 步)。

YarnChild 运行在一个专用的 JVM 中, 但是 YARN 不支持 JVM 重用。

5. 进度和状态更新

YARN 中的任务将其进度和状态 (包括 counter) 返回给应用管理器, 客户端每秒 (通 mapreduce.client.progressmonitor.pollinterval 设置) 向应用管理器请求进度更新, 展示给用户。

6. 作业完成

除了向应用管理器请求作业进度外, 客户端每 5 分钟都会通过调用 waitForCompletion() 来检查作业是否完成,时间间隔可以通过 mapreduce.client.completion.pollinterval 来设置。作业完成之后, 应用管理器和 container 会清理工作状态, OutputCommiter 的作业清理方法也会被调用。作业的信息会被作业历史服务器存储以备之后用户核查。

五、提交作业到YARN上运行

这里以提交 Hadoop Examples 中计算 Pi 的 MApReduce 程序为例,相关 Jar 包在 Hadoop 安装目录的 share/hadoop/mapreduce 目录下:

# 提交格式: hadoop jar jar包路径 主类名称 主类参数
# hadoop jar hadoop-mapreduce-examples-2.6.0-cdh5.15.2.jar pi 3 3

参考资料

  1. 初步掌握 Yarn 的架构及原理

  2. Apache Hadoop 2.9.2 > Apache Hadoop YARN

更多大数据系列文章可以参见 GitHub 开源项目大数据入门指南

おすすめ

転載: www.cnblogs.com/heibaiying/p/11306842.html