本ページでは、MapReduce を使用して JindoFileSystem (JindoFS) でデータの読み取りと書き込みをする方法について説明します。

JindoFS の設定

たとえば、emr-jfs という名前の名前空間は、次の設定で作成されています。

  • jfs.namespaces = emr-jfs
  • jfs.namespaces.emr-jfs.uri = oss://oss-bucket/oss-dir
  • jfs.namespaces.emr-jfs.mode = block

MapReduce の紹介

通常、Hadoop MapReduce ジョブは、Hadoop Distributed File System (HDFS) を介してデータの読み取りと書き込みを行います。 JindoFS は HDFS と互換性があります。 MapReduce ジョブの入力ディレクトリと出力ディレクトリを JindoFS のディレクトリに設定することができます。 この場合、MapReduce ジョブは JindoFS でデータの読み取りおよび書き込みをすることができます。

Hadoop MapReduce は、アプリケーションを簡単に書き込むためのソフトウェアフレームワークです。 Hadoop MapReduce に基づくアプリケーションは、マルチテラバイトのデータセットを、信頼性が高くフォールトトレラントな方法で数千のノードで構成される大きなクラスターにおいて、並列して処理することができます。 MapReduce ジョブは通常、入力データセットを独立したブロックに分割し、マップタスクによって並列して処理されます。 MapReduce フレームワークは、マップタスクの出力をソートし、ソートされた出力を書き込んでタスクを削減します。 ジョブの入力と出力の両方がファイルシステムに格納されます。 MapReduce フレームワークは、タスクのスケジュール、タスクの監視、および失敗したタスクの再実行を担当します。

ジョブの入出力

アプリケーションでは、MapReduce ジョブの入力ディレクトリと出力ディレクトリが指定されています。 map 関数と reduce 関数は、適切なメソッドまたは抽象クラスに基づいて実装されます。 Hadoop ジョブクライアントは MapReduce ジョブとその設定を ResourceManager に送信します。 ResourceManager がタスクをスケジュールします。 この場合、MapReduce ジョブの入力ディレクトリと出力ディレクトリを JindoFS のディレクトリに変更して、JindoFS のデータを読み取りおよび書き込みすることができます。

次の例は、MapReduce ジョブの入力ディレクトリと出力ディレクトリを変更して、JindoFS でデータを読み取りおよび書き込みする方法を示しています。

  • Teragen

    この MapReduce ジョブでは、Teragen を使用して、指定したディレクトリの指定した行数でデータを生成します。

    hadoop jar /usr/lib/hadoop-current/share/hadoop/mapreduce/hadoop-mapreduce-examples-*.jar teragen <num rows> <output dir>

    JindoFS にデータを書き込むには、出力ディレクトリを JindoFS のディレクトリに置き換えます。

    hadoop jar /usr/lib/hadoop-current/share/hadoop/mapreduce/hadoop-mapreduce-examples-*.jar teragen 100000 jfs://emr-jfs/teragen_data_0
  • Terasort

    この MapReduce ジョブでは、Terasort を使用して、指定した入力ディレクトリのデータをソートして、指定した出力ディレクトリにソートしたデータを書き込みます。

    hadoop jar /usr/lib/hadoop-current/share/hadoop/mapreduce/hadoop-mapreduce-examples-*.jar terasort <in> <out>

    JindoFS でデータを処理するには、入力ディレクトリと出力ディレクトリを JindoFS のディレクトリに置き換えます。

    hadoop jar /usr/lib/hadoop-current/share/hadoop/mapreduce/hadoop-mapreduce-examples-*.jar terasort jfs://emr-jfs/teragen_data_0/ jfs://emr-jfs/terasort_data_0