メニュー
Amazon DynamoDB
開発者ガイド (API Version 2012-08-10)

マッパーの調整

Hive が Hadoop ジョブが起動すると、ジョブは 1 つ以上のマッパータスクによって処理されます。DynamoDB テーブルに十分なスループット容量があると仮定して、クラスター内のマッパーの数を調整すると、パフォーマンスが向上する可能性があります。

注記

Hadoop ジョブで使用されるマッパーの数は、Hadoop がデータを論理ブロックに分割する入ロ分割によって左右されます。Hadoop が十分な入力分割を実行しないと、書き込みオペレーションは DynamoDB テーブルで利用可能なすべての書き込みスループットを処理できない可能性があります。

マッパーの数を増やす

Amazon EMR の各マッパーの最大読み取りレートは毎秒 1 MiB です。クラスターにあるマッパーの数は、クラスターのノードのサイズによって決まります。(ノードサイズとノードあたりのマッパーの数については、Amazon EMR 開発者ガイドにあるタスクの設定を参照してください。)

DynamoDB テーブルに十分な読み取りスループット容量がある場合、次のいずれかの方法でマッパーの数を増やしてみることができます。

  • クラスターのノードのサイズを拡張する。たとえば、クラスターで m1.large ノード (ノードあたり 3 つのマッパー) を使用している場合、m1.xlarge ノード (ノードあたり 8 つのマッパー) にアップグレードすることを検討できます。

  • クラスターのノード数を増やす。たとえば、m1.xlarge ノードの 3 ノードクラスターを使用している場合、合計 24 のマッパーがあります。同じタイプのノードでクラスターのサイズを 2 倍にすると、マッパーは 48 になります。

AWS マネジメントコンソール を使用して、lクラスター内のノードの数またはサイズを管理できます。(変更を有効にするには、場合によってはクラスターを再起動する必要があります。)

マッパーの数を増やすもう 1 つの方法は、mapred.tasktracker.map.tasks.maximum Hadoop 設定パラメーターを変更することです。(これは Hadoop パラメーターで、Hive パラメーターではありません。コマンドプロンプトからインタラクティブに変更することはできません。)mapred.tasktracker.map.tasks.maximum の値を増やすと、ノードのサイズや数を増やさずに、マッパーの数を増やすことができます。ただし、値が大きすぎると、クラスターノードのメモリが不足する可能性があります。

Amazon EMR クラスターを最初に起動するときに mapred.tasktracker.map.tasks.maximum の値をブートストラップアクションとして設定します。詳細については、Amazon EMR 管理ガイド(オプション) 追加のソフトウェアをインストールするためのブートストラップアクションの作成を参照してください。

マッパーの数を減らす

SELECT ステートメントを使用して DynamoDB にマッピングする外部 Hive テーブルからデータを選択する場合、Hadoop のジョブは、クラスター内のマッパー数の上限まで、必要な数のタスクを使用できます。このシナリオでは、長時間の Hive クエリが、DynamoDB テーブルにプロビジョニングされたすべての読み取り容量を使い切り、他のユーザーにマイナスの影響を与える可能性があります。

dynamodb.max.map.tasks パラメーターを使用して、マップタスクの上限を設定できます。

SET dynamodb.max.map.tasks=1

この値は、1 以上にする必要があります。Hive がクエリを処理すると、Hadoop のジョブでは、DynamoDB テーブルからの読み取りで dynamodb.max.map.tasks より多くは使用しません。