Hadoop mapreduce プログラミング モデルでは、ファイルを処理しているとき、ファイルを HDFS ファイル システムに保持することは必須ですか、それとも他のファイル システムにファイルを保持しても、mapreduce プログラミング モデルの利点は得られますか?
3 に答える
マッパーは、 の実装から入力データを読み取りますInputFormat
。ほとんどの実装はFileInputFormat
、ローカル マシンまたは HDFS からデータを読み取る から派生しています。(デフォルトでは、データは HDFS から読み取られ、mapreduce ジョブの結果も HDFS に保存されます。) HDFSInputFormat
ではない別のデータ ソースからデータを読み取る場合は、カスタム を記述できます。
TableInputFormat
HBase からデータ レコードを直接読み取りDBInputFormat
、リレーショナル データベースのデータにアクセスします。特定のポートでネットワークを介して各マシンにデータがストリーミングされるシステムを想像することもできます。はInputFormat
ポートからデータを読み取り、それを解析してマッピング用の個々のレコードにします。
ただし、あなたの場合、単一または複数のサーバー上の ext4-filesystem にデータがあります。Hadoop 内でこのデータに便利にアクセスするには、最初に HDFS にコピーする必要があります。このようにして、ファイル チャンクが並行して処理されるときに、データの局所性を活用できます。
Yahoo!のチュートリアルを読むことを強くお勧めします。詳細については、このトピックを参照してください。mapreduce 処理のログ ファイルの収集については、Flumeも参照してください。
ファイルを別の場所に保持することはできますが、データの局所性の利点が失われます。例えば。AWS を使用している場合は、ファイルを S3 に保存し、Map-reduce コード、Pig、Hive などから直接アクセスできます。
Apache Haddop を使用するには、HDFS (hadoop ファイル システム) にファイルが必要です。AWS S3 のように HDFS にはさまざまな抽象タイプがありますが、これらはすべて基本レベルの HDFS ストレージです。
HDFS はクラスターに沿ってデータを分散するため、データは HDFS にある必要があります。マッピング フェーズでは、各 Mapper はそのノードに保存されているデータを調べてから、指定されたチャンクのレデューサー コードを実行している適切なノードにデータを送信します。
HDFS を使用しないと、Hadoop MapReduce を使用できません。