はじめに
魔法に満ちたささやきの森の奥深く、木が風のメロディに合わせて踊る神秘的な世界に、ビロウという賢く慈悲深い魔女が住んでいました。彼女の小屋は森の真ん中に立ち、古代の知識と魔法の聖域でした。ビロウの使命は、森の世界の微妙なバランスを保ち、彼女の助言を求める人々を導くことでした。
ある日、エイデンという若い弟子がささやきの森に迷い込み、知恵と導きを求めていました。エイデンは、ビロウが強力なハドープクラスターを自在に操るという物語を聞いていました。この素晴らしい技術の方法を学ぶ決意をして、エイデンはビロウの小屋を探し出し、彼女の弟子になり、ハドープのノードマネージャーの秘密を解き明かしたいと思っていました。
ノードマネージャーの役割を探る
このステップでは、Hadoop YARN アーキテクチャにおけるノードマネージャーの役割について学びます。
ノードマネージャーは、Hadoop YARN(Yet Another Resource Negotiator)フレームワークの重要なコンポーネントです。Hadoop クラスタ内の個々のノードのリソース管理を担当しています。クラスタ内の各ノードは、ノードマネージャーのインスタンスを実行し、これがリソースマネージャーと通信してタスクを受け取り実行します。
ノードマネージャーの仕組みは以下の通りです。
- ノード登録:ノードマネージャーが起動すると、リソースマネージャーに自身を登録し、そのノード上の利用可能なリソース(CPU、メモリ、ディスクスペースなど)に関する情報を提供します。
- コンテナ管理:ノードマネージャーは、タスクのための孤立した実行環境であるコンテナの作成と管理を担当します。各コンテナには、リソースマネージャーによって定義された特定のリソース割り当てがあります。
- タスク実行:リソースマネージャーがノードにタスクを割り当てると、ノードマネージャーはコンテナを作成し、その中でタスクを起動します。ノードマネージャーはタスクの実行を監視し、その状態をリソースマネージャーに報告します。
- リソース監視:ノードマネージャーは、各コンテナとノードのリソース使用状況を継続的に監視し、タスクが割り当てられたリソースを超えて消費しないようにします。
- ヘルス監視:ノードマネージャーはまた、ノード自体のヘルス状態を監視し、ディスク障害やネットワーク接続問題などの問題をチェックします。ノードが不健全になると、ノードマネージャーはこれをリソースマネージャーに報告でき、それが適切なアクション(再起動やタスクの再スケジューリングなど)をとることができます。
ノードマネージャーの役割を調べるには、まずhadoopユーザーに切り替えましょう。
su - hadoop
次に、以下のコマンドを実行してノードマネージャーの状態を確認できます。
yarn node -status <Node-Id>
ヒント:yarn node -listコマンドで「Node-Id」を見つけることができます。
このコマンドは、稼働中のノードマネージャーに関する情報を表示します。そのアドレス、ノード上の利用可能なリソース、および現在稼働中のコンテナが含まれます。
hadoop:~/ $ yarn node -status iZj6c4hvgdd6j6qljtbxoaZ:39885 [21:53:30]
2024-03-23 21:54:08,741 INFO client.DefaultNoHARMFailoverProxyProvider: Connecting to ResourceManager at /0.0.0.0:8032
2024-03-23 21:54:09,119 INFO conf.Configuration: resource-types.xml not found
2024-03-23 21:54:09,128 INFO resource.ResourceUtils: Unable to find'resource-types.xml'.
Node Report :
Node-Id : iZj6c4hvgdd6j6qljtbxoaZ:39885
Rack : /default-rack
Node-State : RUNNING
Node-Http-Address : iZj6c4hvgdd6j6qljtbxoaZ:8042
Last-Health-Update : Sat 23/Mar/24 09:52:56:762CST
...
ノードマネージャーのログファイルを調べる
このステップでは、ノードマネージャーによって生成されるログファイルをどのように調べるかを学びます。これらのログファイルは、その操作や潜在的な問題に関する貴重な洞察を提供することができます。
ノードマネージャーのログファイルは、/home/hadoop/hadoop/logsディレクトリにあります。ここでは、これらのログにアクセスして表示する方法を説明します。
- まず、ログディレクトリに移動します。
cd /home/hadoop/hadoop/logs
- 利用可能なログファイルを一覧表示します。
ls
「nodemanager」に関するlogやoutのようなファイルが表示されるはずです。
- ログファイルの内容を表示するには、
nanoのようなテキストエディタやtailやlessのようなコマンドラインツールを使用できます。たとえば:
tail -n 100 hadoop-hadoop-nodemanager-iZj6c0nuyqgkz1limqj5htZ.log
このコマンドは、ノードマネージャーのログファイルの最後の 100 行を表示します。
...
2024-03-04 13:39:01,626 INFO org.apache.hadoop.yarn.server.nodemanager.NodeStatusUpdaterImpl: Registered with ResourceManager as iZj6c0nuyqgkz1limqj5htZ:41069 with total resource of <memory:8192, vCores:8>
...
ログファイルには、さまざまな種類の情報が含まれています。それには、以下が挙げられます。
- ノードマネージャーの起動とシャットダウンイベント
- コンテナの割り当てと起動
- リソースの使用状況と監視データ
- エラーメッセージと警告
ログファイルを調べることで、ノードマネージャーに関連する問題、たとえばコンテナの起動失敗、リソース競合、またはノードのヘルス問題などをトラブルシューティングすることができます。
ノードマネージャーのプロパティを構成する
このステップでは、ノードマネージャーのプロパティを構成して、その動作とリソース割り当てをカスタマイズする方法を学びます。
ノードマネージャーのプロパティは、通常/home/hadoop/hadoop/etc/hadoopディレクトリにあるyarn-site.xml構成ファイルで定義されています。ここでは、これらのプロパティを変更する方法を説明します。
- Hadoop の構成ディレクトリに移動します。
cd /home/hadoop/hadoop/etc/hadoop
- テキストエディタで
yarn-site.xmlファイルを開きます。
vim yarn-site.xml
yarn.nodemanager.resource.memory-mbプロパティを探します。これは、ノード上のコンテナに割り当てることができる物理メモリの最大量(メガバイト)を指定します。クラスタのメモリ要件に基づいてこの値を調整できます。
<property>
<name>yarn.nodemanager.resource.memory-mb</name>
<value>8192</value>
</property>
- もう一つ重要なプロパティは
yarn.nodemanager.resource.cpu-vcoresで、これはノード上のコンテナに割り当てることができる CPU コアの数を決定します。
<property>
<name>yarn.nodemanager.resource.cpu-vcores</name>
<value>8</value>
</property>
変更を加えた後、ファイルを保存してテキストエディタを終了します。
変更が反映されるように、ノードマネージャーを再起動する必要があります。
stop-yarn.sh
start-yarn.sh
これらのプロパティを調整することで、クラスタの要件とワークロードの特性に基づいてノードマネージャーにリソースを割り当てるように構成できます。
まとめ
この実験では、YARN フレームワークの重要なコンポーネントである Hadoop のノードマネージャーの世界を探りました。魔法に満ちたささやきの森を、賢い魔女のビロウが導きながら旅し、ノードマネージャーが Hadoop クラスタのリソース管理、タスク実行、ヘルス管理における役割を学びました。
手を動かしながら、ノードマネージャーの状態を調べ、そのログファイルを分析し、リソース割り当てをカスタマイズするためのプロパティを構成する実践的な経験を得ました。ノードマネージャーをマスターすることで、Hadoop エコシステム内で膨大な量のデータを効率的に処理する力を手に入れました。
この実験は、技術的なスキルだけでなく、データ処理の魔法の世界に対する深い理解を育てました。ビロウが森の世界の微妙なバランスを保つように、あなたは今、ノードマネージャーの力を活用し、Hadoop クラスタの最適なパフォーマンスと安定性を確保する知識を持っています。



