忍者の資源管理の達人

HadoopBeginner
オンラインで実践に進む

はじめに

旭日の輝く古代の地、富士山の雄大な峰々の間にひっそりとした忍者の村が栄えていた。ここでは、忍びやかさ、精密さ、機知に富んだ技術が磨き上げられ、完璧なものになっていた。この村のエリートの仲間の中には、有名な忍者武器の達人である雪が立っていた。

雪の鍛冶屋は見るものを魅了するもので、彼女の揺るぎない献身と独創性の証であった。最良の鋼から、彼女はエアを容易に切り裂くことができるブレード、ピンポイントの精度で的を射止めることができる手裏剣、最も丈夫な鎧さえも貫き通すことができる苦無を作り出した。

しかし、雪の真の腕前は彼女の職人技術だけでなく、村の資源を管理する能力にもあった。忍者一族が成長するにつれて、武器や装備の需要も増え、雪は彼らが必要なときに必要なツールにアクセスできるように、すべての忍者に確保することを任されることになった。

この追求の中で、雪は Hadoop Resource Manager の力を発見した。これは、村の資源を効率的に割り当てて管理し、すべての忍者の任務が成功するようにする強力なツールである。

Hadoop リソースマネージャを理解する

このステップでは、Hadoop Resource Manager の基本と、Hadoop エコシステムにおけるその役割について掘り下げます。

まず、デフォルトユーザを切り替えます。

su - hadoop

Hadoop Resource Manager は、Hadoop の YARN (Yet Another Resource Negotiator) アーキテクチャの重要なコンポーネントです。クラスタの計算リソースを管理し、利用可能なノード全体にアプリケーションをスケジューリングする責任があります。

まずは、Resource Manager のアーキテクチャを見てみましょう。

+------------------+
|  Resource Manager|
+------------------+
|  Scheduler       |
|  ApplicationsMaster
|  NodeManager     |
+------------------+

Resource Manager は主に 3 つのコンポーネントで構成されています。

  1. Scheduler:このコンポーネントは、事前に定義されたスケジューリング ポリシーに基づいて、さまざまな実行中のアプリケーションにリソースを割り当てる責任があります。
  2. ApplicationsManager:このコンポーネントは、ジョブの提出を受け付け、ApplicationMaster を実行するための最初のコンテナを交渉し、失敗時に ApplicationMaster コンテナを再起動するサービスを提供します。
  3. NodeManager:このコンポーネントは、クラスタ内の各ノードで実行され、Scheduler によって割り当てられたコンテナの起動と監視を担当します。

Resource Manager の機能をよりよく理解するために、簡単な例を見てみましょう。

クラスタにサンプルの MapReduce ジョブを送信します。

yarn jar /home/hadoop/hadoop/share/hadoop/mapreduce/hadoop-mapreduce-examples-3.3.6.jar pi 16 1000000

ジョブの状態を確認します。

yarn application -list

出力は以下のようになるはずです。

2024-03-23 22:48:44,206 INFO client.DefaultNoHARMFailoverProxyProvider: Connecting to ResourceManager at /0.0.0.0:8032
Total number of applications (application-types: [], states: [SUBMITTED, ACCEPTED, RUNNING] and tags: []):1
                Application-Id     Application-Name     Application-Type       User      Queue              State        Final-State        Progress                        Tracking-URL
application_1711205220447_0001      QuasiMonteCarlo            MAPREDUCE     hadoop    default            RUNNING          UNDEFINED

この例では、yarn コマンドを使用してクラスタに MapReduce ジョブを送信します。Resource Manager はジョブ要求を受け取り、ジョブを実行するために必要なリソース (コンテナ) を割り当てます。その後、提供されたコマンドを使用してジョブの状態を確認し、ログを表示することができます。

リソースマネージャの設定

このステップでは、忍者の村の特定のニーズに合うようにリソースマネージャを設定する方法を探ります。

リソースマネージャの動作は、さまざまな設定プロパティを通じてカスタマイズできます。これらのプロパティは通常、Hadoop 設定ディレクトリ (/home/hadoop/hadoop/etc/hadoop) にある yarn-site.xml ファイルに設定されます。

yarn の設定ファイルを見て、追加の設定をいくつか追加しましょう。

vim /home/hadoop/hadoop/etc/hadoop/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.maximum-allocation-mb</name>
    <value>8192</value>
  </property>

  <!-- 各コンテナの最小および最大の仮想コア数を設定する -->
  <property>
    <name>yarn.scheduler.minimum-allocation-vcores</name>
    <value>1</value>
  </property>
  <property>
    <name>yarn.scheduler.maximum-allocation-vcores</name>
    <value>4</value>
  </property>

この設定ファイルでは、次のプロパティを設定しています。

  • yarn.resourcemanager.scheduler.class:使用するスケジューリング ポリシーを指定します。この場合、Fair Scheduler を使用しており、アプリケーション間で公平にリソースが割り当てられるようになっています。
  • yarn.scheduler.maximum-allocation-mb:単一のコンテナに割り当てることができる最大メモリ量 (メガバイト) を設定します。
  • yarn.scheduler.minimum-allocation-vcores および yarn.scheduler.maximum-allocation-vcores:それぞれ、コンテナに割り当てることができる最小および最大の仮想コア数を定義します。

これらの設定変更を適用するには、Hadoop サービスを再起動する必要があります。

アプリケーションの監視と管理

このステップでは、Resource Manager を使用して Hadoop クラスタ上で実行されているアプリケーションを監視および管理する方法を学びます。

Resource Manager は、クラスタのリソースと実行中のアプリケーションを監視および管理するためのウェブ ユーザ インターフェイス (UI) を提供します。Resource Manager UI にアクセスするには、ウェブ ブラウザを開き、http://<resource-manager-hostname>:8088 に移動します。

Resource Manager UI では、クラスタ、ノード、アプリケーションに関する情報を提供するさまざまなセクションが表示されます。主な機能は以下のとおりです。

  1. クラスタ メトリクス:このセクションでは、利用可能な総リソース、実行中のアプリケーションの数、リソースの利用率など、クラスタ全体のメトリクスが表示されます。
  2. ノード マネージャ:このセクションには、クラスタ内のすべてのアクティブなノード マネージャが一覧表示され、その状態、利用可能なリソース、実行中のコンテナも表示されます。
  3. 実行中のアプリケーション:このセクションでは、現在実行中のアプリケーション、その進捗状況、リソース使用状況、その他の詳細が表示されます。
  4. アプリケーション履歴:このセクションでは、完了したアプリケーションの履歴が表示され、そのログやメトリクスも含まれます。

Resource Manager UI を使用してアプリケーションを管理する方法を示すために、新しいアプリケーションをクラスタに送信しましょう。

## クラスタに WordCount ジョブを送信する
yarn jar /home/hadoop/hadoop/share/hadoop/mapreduce/hadoop-mapreduce-examples-3.3.6.jar wordcount /home/hadoop/input /home/hadoop/output

このスクリプトは、クラスタに WordCount MapReduce ジョブを送信します。スクリプトを実行する前に、入力ディレクトリを作成し、その中にいくつかのテキスト ファイルを配置することを確認してください。

hdfs dfs -mkdir -p /home/hadoop/input
hdfs dfs -put /home/hadoop/hello.txt /home/hadoop/input

ジョブを送信した後、その進捗状況を監視し、Resource Manager UI から管理することができます。ジョブのログを表示し、必要に応じてジョブをキャンセルしたり、ジョブが完了したら出力ディレクトリを確認したりすることができます。

入力ファイルの内容を表示する:

hadoop:~/ $ hadoop fs -cat /home/hadoop/input/*                      [22:56:37]
hello labex
hello hadoop
hello spark
hello flink

出力ファイルの内容を表示する:

hadoop:~/ $ hadoop fs -cat /home/hadoop/output/*                     [22:57:37]
flink 1
hadoop 1
hello 4
labex 1
spark 1

まとめ

この実験では、Hadoop クラスタにおける効率的なリソース割り当てと管理を可能にする強力なツールである Hadoop Resource Manager を探りました。Resource Manager のアーキテクチャを掘り下げ、特定のニーズに合うように設定する方法を学び、クラスタ上で実行されているアプリケーションを監視および管理するさまざまな技術を発見しました。

忍者の武器職人の達人である雪の旅を通じて、Resource Manager がすべての忍者が成功した任務に必要なツールにアクセスできるようにするための変革的な力を目の当たりにしました。雪が資源管理の技術を習得したように、私たちも Hadoop Resource Manager の機能を活用して、ビッグ データ処理のワークフローを最適化することができます。

この実験は、Resource Manager を通じた実践的な経験だけでなく、Hadoop エコシステムとその多用途なコンポーネントに対するより深い理解を植え付けました。資源管理と効率的なスケジューリングの原則を受け入れることで、私たちはデータ処理の能力の新しい分野を開拓し、最も手ごわいビッグ データの課題にも対処することができます。