Hadoop Hadoop YARN 基本セットアップ

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

はじめに

未来派のロボット工場では、最先端技術が精密工学と出会います。あなたはロボット保守技術者の役割を担っています。主な目標は、工場の複雑なネットワーク内のコンピューティング リソースの効率的な割り当てと管理を行うことです。このネットワークはロボットの認知機能を動力にし、並外れた精度と速度で複雑なタスクを実行できるようにします。

工場のコンピューティング インフラストラクチャは、Hadoop エコシステム、特に YARN (Yet Another Resource Negotiator) コンポーネントに依存しています。あなたの目標は、Hadoop YARN の基本的なセットアップを身につけることで、工場の計算負荷を複数のノードにシームレスに分散して管理し、最適なパフォーマンスとリソース利用率を保証することです。

YARN アーキテクチャを調べる

このステップでは、YARN アーキテクチャとその主要なコンポーネントを調べ、Hadoop エコシステム内でリソースを管理および割り当てる方法を理解するための基礎を築きます。

YARN アーキテクチャは 2 つの主要なコンポーネントで構成されています。

  1. ResourceManager (RM): ResourceManager は、クラスタ全体で利用可能なリソース (CPU、メモリなど) を仲裁および割り当てる中央の権限として機能します。2 つのコンポーネントで構成されています。

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

YARN アーキテクチャをよりよく理解するために、Hadoop の設定ディレクトリに移動して、関連する設定ファイルを調べましょう。

しかし、まず最初にユーザーを切り替える必要があります。

su - hadoop

Hadoop の設定ディレクトリに移動します。

cd /home/hadoop/hadoop/etc/hadoop/

vim ツールで yarn-site.xml ファイルを開きます。

<configuration>
  <property>
    <name>yarn.nodemanager.aux-services</name>
    <value>mapreduce_shuffle</value>
  </property>
  <property>
    <name>yarn.nodemanager.aux-services.mapreduce.shuffle.class</name>
    <value>org.apache.hadoop.mapred.ShuffleHandler</value>
  </property>
</configuration>

この設定ファイルでは、NodeManager 用に mapreduce_shuffle 補助サービスが有効になっていることがわかります。このサービスは、MapReduce ジョブのシャッフル操作を管理し、マップとリデュース フェーズ間の効率的なデータ転送を確保します。

YARN サービスを起動する

これまで YARN アーキテクチャとその設定を調べましたので、Hadoop クラスタ上で YARN サービスを起動しましょう。

まず、次のコマンドを使用して YARN サービスを起動します。

start-yarn.sh

このスクリプトは、クラスタ内の適切なノード上で ResourceManagerNodeManager デーモンを起動します。

次のコマンドを使用して YARN サービスのプロセスを表示します。

jps

出力には NodeManagerResourceManager サービスが表示されるはずです。

次のコマンドを使用して YARN サービスの状態を確認できます。

yarn node -list

このコマンドは、クラスタ内のアクティブな NodeManager の一覧と、その状態と利用可能なリソースを表示します。

2024-03-17 19:27:30,108 INFO client.DefaultNoHARMFailoverProxyProvider: Connecting to ResourceManager at /0.0.0.0:8032
Total Nodes:1
         Node-Id      Node-State Node-Http-Address Number-of-Running-Containers
iZj6cdofomqja8ye7wk8kzZ:43689         RUNNING iZj6cdofomqja8ye7wk8kzZ:8042                            0

上記の出力では、1 つのアクティブな NodeManager が実行されていることがわかります。

YARN ジョブを提出する

YARN サービスが起動して実行されているので、YARN のリソース割り当てとスケジューリング機能をテストするためにサンプル ジョブを提出しましょう。

まず、Hadoop ファイル システムに、単語数を数えるためのテキスト コンテンツが含まれる input.txt という名前の入力テキスト ファイルを用意します。

echo -e "Hello World\nHello Hadoop\nYARN is cool" > input.txt
hadoop fs -put input.txt /input.txt

次に、サンプル プログラムの JAR ファイルは、通常 $HADOOP_HOME/share/hadoop/mapreduce/hadoop-mapreduce-examples-3.3.6.jar にある Hadoop インストール ディレクトリにあります。この JAR ファイルを使用して、単語数カウント プログラムを実行できます。

yarn jar /home/hadoop/hadoop/share/hadoop/mapreduce/hadoop-mapreduce-examples-3.3.6.jar wordcount /input.txt /output

このコマンドは、MapReduce ジョブを YARN ResourceManager に提出します。ResourceManager は、利用可能な NodeManager 全体にリソースを割り当て、ジョブをスケジュールします。

ジョブが完了すると、/output ディレクトリに出力を表示できます。

hdfs dfs -cat /output/part-r-00000

これにより、単語数カウントの出力が表示されるはずです。

Hadoop 1
Hello 2
World 1
YARN 1
cool 1
is 1

まとめ

この実験では、YARN アーキテクチャとその主要なコンポーネントを調べ、YARN サービスを構成および起動する方法を学び、YARN クラスタにサンプル MapReduce ジョブを提出しました。この実験を完了することで、Hadoop YARN の基本的なセットアップと操作に関する実践的な経験を得ることができ、分散環境で効率的にコンピューティング リソースを管理および割り当てることができるようになりました。

この実験は、YARN に関する実際的な理解だけでなく、現代のコンピューティング インフラストラクチャにおけるリソース管理とスケジューリングの重要性を強調しています。未来派の工場でロボット保守技術者として、これらのスキルを習得することで、工場のコンピューティング リソースのパフォーマンスと効率を最適化し、ロボットの円滑で信頼性の高い運用を保証する力を得ることができます。