

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# ストリーミングでのデータ処理
<a name="UseCase_Streaming"></a>

Hadoop ストリーミングは、Hadoop に付属しているユーティリティの 1 つです。Java 以外の言語で MapReduce 実行可能ファイルを作成できるようになります。JAR ファイルの形式でストリーミングが実装されるため、Amazon EMR API から、またはコマンドラインから標準のJAR ファイルの用に実行できます。

このセクションでは、Amazon EMR でストリーミングを使用する方法について説明します。

**注記**  
Apache Hadoop Streaming は独立したツールです。そのため、ここでは、その関数とパラメータすべてを説明するわけではありません。Hadoop Streaming の詳細については、[http://hadoop.apache.org/docs/stable/hadoop-streaming/HadoopStreaming.html](http://hadoop.apache.org/docs/stable/hadoop-streaming/HadoopStreaming.html) を参照してください。

## Hadoop ストリーミングユーティリティの使用
<a name="HadoopStreamCommands"></a>

このセクションでは、Hadoop のストリーミングユーティリティの使用方法について説明します。


**Hadoop プロセス**  

|  |  | 
| --- |--- |
| 1 | 自由にプログラム言語を選択して、実行可能なマッパーとリデューサーを作成します。<br />Hadoop のドキュメントの指示に従ってストリーミング実行ファイルを書いてください。プログラムは、標準出力による標準入出力データからの入力を読み取れるようにする必要があります。デフォルトでは、入出力の各行は 1 つのレコードに対応し、各行の最初のタブはキーと値を区切ります。 | 
| 2 | ローカルで実行ファイルをテストしてから、Amazon S3 へアップロードします。 | 
| 3 | Amazon EMR コマンドラインインターフェイスまたは Amazon EMR コンソールを使用してアプリケーションを実行します。 | 

各マッパースクリプトは、 クラスター内の独立したプロセスとして実行されます。各リデューサー実行ファイルは、マッパー実行ファイルの出力をジョブフローによるデータ出力にします。

`input`、`output`、`mapper`、および `reducer` パラメータは、ほとんどのストリーミングアプリケーションで必要とされます。以下の表は、これらのパラメータと他のオプションパラメータついて説明します。


| パラメータ | 説明 | 必須 | 
| --- | --- | --- | 
| -input | Amazon S3 上の入力データの場所。<br />タイプ: 文字列<br />デフォルト: なし<br />制約: URI。プロトコルの指定がなければ、クラスターのデフォルトファイルシステムが使用されます。 | はい | 
| -output | Amazon EMR が処理されたデータをアップロードする Amazon S3 上の場所。<br />タイプ: 文字列<br />デフォルト: なし<br />制約: URI<br />デフォルト: 場所の指定がなければ、Amazon EMR は `input` で指定された場所にデータをアップロードします。 | はい | 
| -mapper | マッパー実行ファイルの名前。<br />タイプ: 文字列<br />デフォルト: なし | はい | 
| -reducer | リデューサー実行ファイルの名前。<br />タイプ: 文字列<br />デフォルト: なし | はい | 
| -cacheFile | （主としてパフォーマンス向上のために）Hadoop がローカル作業ディレクトリにコピーするファイルが格納されている Amazon S3 の場所。<br />タイプ: 文字列<br />デフォルト: なし<br />制約: [URI]\#[作業ディレクトリに作成するシンボリックリンク名]  | いいえ | 
| -cacheArchive | 作業ディレクトリに抽出する JAR ファイル<br />タイプ: 文字列<br />デフォルト: なし<br />制約: [URI]\#[作業ディレクトリに作成するシンボリックリンクディレクトリ名  | いいえ | 
| -combiner | 結果の結合<br />タイプ: 文字列<br />デフォルト: なし<br />制約: Java クラス名 | いいえ | 

次のコード例は、Python で作成されたマッパーの実行可能ファイルです。このスクリプトは WordCount サンプルアプリケーションの一部です。

```
 1. #!/usr/bin/python
 2. import sys
 3. 
 4. def main(argv):
 5.   line = sys.stdin.readline()
 6.   try:
 7.     while line:
 8.       line = line.rstrip()
 9.       words = line.split()
10.       for word in words:
11.         print "LongValueSum:" + word + "\t" + "1"
12.       line = sys.stdin.readline()
13.   except "end of file":
14.     return None
15. if __name__ == "__main__":
16.   main(sys.argv)
```