1

今、db テーブルからデータをエクスポートし、hdfs に書き込もうとしています。

問題は、名前ノードがボトルネックになるかどうかです。ノードキャッシュにスライス(64MB)を指定してからデータノードに渡す仕組みはどうですか?

hdfsを書くよりも良い方法はありますか? 並列処理を利用していないと思うからです。

ありがとう:)

4

1 に答える 1

2

Sqoop の使用を検討しましたか。Sqoop を使用して、JDBC をサポートする任意の DB からデータを抽出し、HDFS に配置できます。

http://www.cloudera.com/blog/2009/06/introducing-sqoop/

Sqoop インポート コマンドは、実行するマップ ジョブの数を取得します (デフォルトは 1 です)。また、作業を並列化する (マップ タスク > 1) 間、分割列を指定するか、Sqoop がテーブルのシーケンス キーに基づいて推測します。各マップ ファイルは、ディレクトリ内の結果用に個別のファイルを作成します。膨大な数のファイルが大量に作成されない限り、NN はボトルネックにはなりません (NN はファイルに関するメタデータをメモリに保持します)。

Sqoop は、ソース DB (Oracle、MySQL など) を解釈し、JDBC チャネルの代わりに mysqldump や import などの DB 固有のツールを使用してパフォーマンスを向上させることもできます。

于 2011-06-10T08:35:19.570 に答える