ハドープ Yarn を使ったデートピア

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

はじめに

情報が純粋な知識の流れのように流れる空想的な国、デートピアに住んでいた奇妙な存在、デーティナがいました。デーティナの唯一の目的は、データの世界の複雑な仕組みを理解し、その可能性を引き出すことでした。ある日、デーティナは膨大な量のデータを処理することができる強力なツール、ハドープと呼ばれる神秘的な力に出会いました。しかし、その機能を最大限に引き出すには、デーティナは Yarn コマンドを実行し、jar ファイルを操作する技術を習得する必要がありました。

この実験の目的は、ハドープエコシステム内で Yarn コマンドと jar ファイルを利用するプロセスを通じてデーティナを案内することです。この実験を完了することで、デーティナは効率的にアプリケーションを管理して実行するために必要なスキルを身につけ、デートピアの国でハドープの真の可能性を解き放つことができます。

ハドープ環境の探索

このステップでは、ハドープ環境に慣れ親しみ、すべての必要なコンポーネントが適切に構成されていることを確認します。

まず、hadoop ユーザーに切り替えます。

su - hadoop

次に、ハドープのバージョンを確認します。

hadoop version

以下のような出力が表示されるはずです。

Hadoop 3.3.6
...

利用可能な jar ファイルの一覧表示

このステップでは、ハドープ環境において利用可能な jar ファイルを一覧表示する方法を学びます。これらの jar ファイルには、Yarn コマンドを使用して実行できる事前に構築されたアプリケーションとユーティリティが含まれています。

ls $HADOOP_HOME/share/hadoop/mapreduce/*.jar

出力には、$HADOOP_HOME/share/hadoop/mapreduce ディレクトリにある jar ファイルの一覧が表示されます。これらの jar ファイルは、Yarn コマンドとともに様々なアプリケーションとユーティリティを実行するために使用できます。

/home/hadoop/hadoop/share/hadoop/mapreduce/hadoop-mapreduce-client-app-3.3.6.jar
/home/hadoop/hadoop/share/hadoop/mapreduce/hadoop-mapreduce-client-common-3.3.6.jar
/home/hadoop/hadoop/share/hadoop/mapreduce/hadoop-mapreduce-client-core-3.3.6.jar
...

Yarn を使って jar ファイルを実行する

このステップでは、yarn jar コマンドを使って jar ファイルを実行する方法を学びます。例として hadoop-mapreduce-examples jar ファイルを使用します。

さて、hadoop-mapreduce-examples jar から WordCount の例を実行します。

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

ヒントhadoop fs -cat /home/hadoop/input/* でファイルの内容を読むことができます。

入力ファイルの内容:

hello world
hello labex
hello Hadoop
hello Java

上記のコマンドでは、jar ファイル hadoop-mapreduce-examples-3.3.6.jar、実行するアプリケーション wordcount、入力および出力パス /home/hadoop/input および /home/hadoop/output をそれぞれ指定しています。

コマンドを実行した後、以下に似た出力が表示されるはずです。

hadoop:~/ $ hadoop fs -cat /home/hadoop/output/*                     [19:54:17]
Hadoop 1
Java 1
hello 4
labex 1
world 1

Yarn アプリケーションの監視

このステップでは、様々なコマンドを使って Yarn アプリケーションを監視および管理する方法を学びます。

実行中の Yarn アプリケーションを一覧表示する:

yarn application -list

端末の例の出力:

UBMITTED, ACCEPTED, RUNNING, FINISHED, FAILED, KILLED] and tags: []):1
                Application-Id     Application-Name     Application-Type       User      Queue              State        Final-State        Progress                        Tracking-URL
application_1711070937750_0001           word count            MAPREDUCE     hadoop    default           FINISHED          SUCCEEDED            100% http://iZj6cdxwclh8pms0k1vyyhZ:19888/jobhistory/job/job_1711070937750_0001

アプリケーションの状態を取得する

yarn application -status <application_id>

端末の例の出力:

hadoop:~/ $ yarn application -status application_1711070937750_0001   [9:31:46]
2024-03-22 09:33:12,186 INFO client.DefaultNoHARMFailoverProxyProvider: Connecting to ResourceManager at /0.0.0.0:8032
2024-03-22 09:33:12,521 INFO conf.Configuration: resource-types.xml not found
2024-03-22 09:33:12,522 INFO resource.ResourceUtils: Unable to find'resource-types.xml'.
Application Report :
 Application-Id : application_1711070937750_0001
 Application-Name : word count
 Application-Type : MAPREDUCE
 User : hadoop
 Queue : default
 Application Priority : 0
 Start-Time : 1711071042168
 Finish-Time : 1711071057334

実行中のアプリケーションを終了する

yarn application -kill <application_id>

端末の例の出力:

hadoop:~/ $ yarn application -kill application_1711070937750_0001     [9:33:14]
2024-03-22 09:34:45,075 INFO client.DefaultNoHARMFailoverProxyProvider: Connecting to ResourceManager at /0.0.0.0:8032
Application application_1711070937750_0001 has already finished

ヒントyarn application -list -appStates ALL ですべてのアプリケーションを一覧表示できます。

yarn application コマンドを使うと、Yarn アプリケーションを一覧表示、監視、管理できます。それぞれのサブコマンドを使って、アプリケーションの状態を取得したり、実行中のアプリケーションを終了させることもできます。

まとめ

この実験では、私たちはデータの世界であるデートピアを旅しました。好奇心旺盛な存在であるデーティナは、ハドープの Yarn コマンドと jar ファイルの真の可能性を解き明かそうとしました。この実験を完了することで、デーティナは利用可能な jar ファイルを一覧表示し、yarn jarコマンドを使ってアプリケーションを実行し、Yarn アプリケーションを監視および管理するという貴重なスキルを身につけました。

実践的な演習を通じて、デーティナはハドープ環境を操り、WordCount のような事前に構築されたアプリケーションを実行し、様々な Yarn コマンドを使って実行中のアプリケーションを監視する方法を学びました。これらのスキルは、デーティナにハドープの力を引き出す力を与えるだけでなく、データの世界のさらなる探求と習得のための基盤を築きます。

この実験は、私に技術的な概念を空想的な物語と融合させた魅力的で情報に富んだ学習体験を作り出すことを求めました。架空の世界と身近なキャラクターをデザインすることで、特に初心者にとって学習プロセスをより楽しくてアクセスしやすくすることを目指しました。また、スムーズな学習の旅を保証するために、明確な指示、サンプルコードの断片、詳細な説明を提供することに焦点を当てました。