0

非常に広いエリアの数値標高モデル データを生成したいと考えています。少なくとも 18 x 10^12 サンプル。これらのデータを生成するには、開始位置、ドメインのサイズ、および解像度のみが必要です。

例えば

入力:

ORIGIN_LAT=33.663901;ORIGIN_LON=-117.894687;ORIGIN_DEPTH =0.000000
SIZE_DOMAIN_LAT=4000.000000;SIZE_DOMAIN_LON=4000.000000;SIZE_DOMAIN_DEPTH =1600.000000

出力:

-117.894687,  33.663901, 0.000000  

-117.894687 ,    33.663901 ,     -200.000000 

-117.894687     , 33.663901 ,    -300.000000 

-117.894687 ,    33.663901  , -400.000000 

-117.894687     , 33.663901 ,    -500.000000 

-117.894687 ,    33.663901 ,     -600.000000 

-117.894687     , 33.663901     , -700.000000 

-117.894687 ,    33.663901  , -800.000000 

-117.894687     , 33.663901     , -900.000000 

-117.894687 ,    33.663901 ,     -1000.000000

.....................

したがって、ワーカー ノードよりも多くのマップ タスクを取得する方法を考えています。入力は非常に小さいファイルです。

概念を誤解したかどうかはわかりませんが、プログラムが1つのノードで実行されている場合、クラスターを使用する必要はなく、ここではデータを生成するマップフェーズのみが使用され、ゼロリデューサーを使用しています.

実際、私はこれらのデータを別の MR プログラムで分析していますが、現在外部プログラムでデータを生成していますが、効率的ではありません。したがって、これらのデータを MR プログラムで生成する必要があります。

クラスターに 5 つのノードがあり、入力ファイルのサイズが非常に小さいため、少なくとも 5 つのマップ タスクを生成できません。MR 並列処理を使用してこれらのデータを生成する方法は?

1 ソリューション

map() で大きな領域をいくつかのサブ領域に分割し、それらをレデューサーに割り当てます。

4

2 に答える 2

0

パラメーターmapred.reduce.tasksは Hadoop フレームワークに多数のマップ タスクを作成するように要求しますが、動作は保証されません。したがって、マップ タスクの数は、一般的な数式に依存する入力分割の数によって決まります。ジョブクライアントがテキストファイルの入力分割を計算する方法に関するリンクは次のとおりです

Hadoop 計算でのジョブ クライアントの方法

上記の説明では、小さい入力ファイルに対してより多くのマップ タスクを作成する必要がある場合。これらのアプローチのいずれかに従う必要がある場合があります。

  1. 入力ファイルを 5 つの小さな入力ファイルに分割して、5 ノード クラスタに対して少なくとも 5 つのマップ タスクが作成されるようにします。

  2. mapred.min.split.sizeやなどのパラメーターを調整してdfs.block.size、入力ファイルに対してより多くのマップ タスクが作成されるようにします。

于 2013-04-30T15:11:55.017 に答える