6

Sqoop バージョン 1.4.2 と Oracle データベースを使用しています。

Sqoop コマンドの実行時。たとえば、次のようにします。

./sqoop import                               \
    --fs <name node>                         \
    --jt <job tracker>                       \
    --connect <JDBC string>                  \
    --username <user> --password <password>  \
    --table <table> --split-by <cool column> \
    --target-dir <where>                     \
    --verbose --m 2

--mを指定できます- Sqoop に実行させたい並列タスクの数 (同時にデータベースにアクセスしている可能性もあります)。./sqoop エクスポートでも同じオプションを使用できます <...>

使用するタスクの最適な数を推測するのに役立つヒューリスティック (おそらくデータのサイズに基づく) はありますか?

ありがとうございました!

4

2 に答える 2

6

これは O'Reilly Media の Apache Sqoop Cookbook から引用したもので、最も論理的な答えのようです。

マッパーの最適な数は、多くの変数によって異なります。データベースの種類、データベース サーバーに使用されるハードウェア、およびデータベースが処理する必要がある他の要求への影響を考慮する必要があります。すべてのシナリオで機能するマッパーの最適な数はありません。代わりに、環境とユースケースに最適な並列度を見つけるために実験することをお勧めします。多数のマッパーから始めて徐々に減少していくよりも、少数のマッパーから始めてゆっくりと増やしていくことをお勧めします。

于 2014-01-31T20:17:11.667 に答える
0

「Hadoop: The Definitive Guide」では、各 Tasktracker で最大 map/reduce タスクを設定するときに、プロセッサとそのコアを考慮してクラスターのタスク数を定義すると説明しているので、同じロジックをこれに適用し、プロセッサで実行できるプロセスの数 (HyperTreading、コアのカウント) を確認し、 --m をこの値 - 1 に設定します (エクスポート中にポップアップする可能性のある他のタスクのために 1 つを開いたままにしておきます)。大規模なデータセットがあり、タイムリーにエクスポートを実行したい場合のみです。

大きなデータセットがない場合は、出力が --m ファイル数の値になることに注意してください。したがって、100 行のテーブルをエクスポートする場合は、 --m を 1 に設定してすべてを保持することをお勧めします。 1 つのファイルにローカライズされたデータ。

于 2013-05-18T01:41:36.703 に答える