クリーム色の背景、色付き表示、高コントラスト、大きな文字のほうが読みやすいですか?配色と文字を選ぶと、すべてのページに一度で反映されます。

無料レッスン

Hadoop の基本

レッスン全文をここで読めます。無料アカウントを作成すると、実際のラボで実践できます。

コンテナラボ読了目安 9分コマンド6個

このレッスンですること

Hadoop は、とても大きなファイルをブロックに切り分けて、たくさんのマシンに散らして置き、ブロックのある場所でそのまま処理します。HDFS がそのファイルシステムです。どのファイルがどのブロックでできているかを知っている NameNode と、ブロックを持っている DataNode でできています。MapReduce は処理のやり方で、各マシンが自分の分を数え、その数を足し合わせます。

ラボは、NameNode と DataNode が1台ずつある小さなクラスター(何台かのマシンをまとめたもの)です。ファイルを入れて、読み返し、単語数え(ワードカウント)の結果を見ます。

始める前に

メモ

このレッスンの上のバーでラボを起動を押し、動き出したと表示されるまで待ってください。サービスは namenode、datanode、resourcemanager、nodemanager、client で、互いにその名前で見つけ合います。下の実行ボタンは、コマンドをラボのターミナルに、同じセッションの中で順番に入力してくれます。入力の様子を見たり、自分でコマンドを打ったりするときは、バーのターミナルを開く(新しいタブ)を押します。

1. HDFS にファイルを入れよう

最初のコマンドは、自分のターミナルにある1つのファイルに、1文を書き込みます。2つめのコマンドで、それを HDFS に送ります。まず NameNode に聞くと、DataNode のアドレスが返ってきます。curl は -L がついているのでそのアドレスについて行き、そこへバイトを送ります。うまくいくと何も表示されません。/user/lab/mine というフォルダはまだなかったので、HDFS が作りました。

コマンド
echo 'one fish two fish red fish blue fish' > /tmp/fish.txt

ここでは表示のみで、実行されません。無料アカウントを作成すると、実行ボタンで自分のラボのターミナルに入力できます。

コマンド
curl -s -L -X PUT -T /tmp/fish.txt 'http://namenode:9870/webhdfs/v1/user/lab/mine/fish.txt?op=CREATE&user.name=lab'

ここでは表示のみで、実行されません。無料アカウントを作成すると、実行ボタンで自分のラボのターミナルに入力できます。

2. 一覧を見て、読み返そう

最初のコマンドはフォルダの中身を一覧にします。答えは JSON で、fish.txt について "length":37(文と行末の改行を合わせた長さ)と "replication":1 が出ます。DataNode が1台なので、各ブロックのコピーは1つです。2つめのコマンドはファイルを読み返して、文を表示します。同じファイルは、ブラウザで開く NameNode のページの Utilities(便利な機能)、Browse the file system(ファイルシステムを見る)でも見られます。

コマンド
curl -s 'http://namenode:9870/webhdfs/v1/user/lab/mine?op=LISTSTATUS'

ここでは表示のみで、実行されません。無料アカウントを作成すると、実行ボタンで自分のラボのターミナルに入力できます。

コマンド
curl -s -L 'http://namenode:9870/webhdfs/v1/user/lab/mine/fish.txt?op=OPEN'

ここでは表示のみで、実行されません。無料アカウントを作成すると、実行ボタンで自分のラボのターミナルに入力できます。

3. 単語数えの結果を読もう

ラボが起動したとき、クラスターは Hadoop に付いている単語数えを、サンプルの文に対して実行し、結果を HDFS に残しました。最初のコマンドでそれを表示します。単語ごとに1行で、単語とその回数が出ます。the は 4、dog と fox は 2 です。2つめのコマンドは、ジョブがどうなったかを ResourceManager に聞いて、"finalStatus":"SUCCEEDED" と表示します。あなたのターミナルには hadoop コマンドがないので、自分のファイルの単語数えを始めることはできません。このレッスンでは、ラボがすでに作った結果を読みます。

コマンド
curl -s -L 'http://namenode:9870/webhdfs/v1/user/lab/wordcount-out/part-r-00000?op=OPEN'

ここでは表示のみで、実行されません。無料アカウントを作成すると、実行ボタンで自分のラボのターミナルに入力できます。

コマンド
curl -s http://resourcemanager:8088/ws/v1/cluster/apps | grep -o '"finalStatus":"[A-Z]*"'

ここでは表示のみで、実行されません。無料アカウントを作成すると、実行ボタンで自分のラボのターミナルに入力できます。

先生へ

ヒント

このレッスンは、ラボで進めるレッスンの小さな例です。手順と実行ボタンがレッスンで、ラボは生徒ひとりひとりのコピーです。ラボはサービスが5つで、ボリュームはありません。自動採点はありません。生徒は、HDFS に入れたファイルのパス、そのファイルから作った単語数えの行、そして NameNode と DataNode がそれぞれ何をするかの一文を提出します。文章は生徒がそれぞれ選ぶので、答えは人によって違います。ご自分のモジュールにコピーして変更するか、レッスンビルダーのラボメニューから一から作ってください。

このラボとソースについて: Hadoop ラボ:HDFS と MapReduce、ファイルを置き、単語数を読む

授業で教えていますか?これらのレッスンを生徒に割り当て、採点と生徒ごとのラボを使えます。