本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
調整映射器
Hive 啟動 Hadoop 任務時,此任務會由一或多個映射器任務處理。假設 DynamoDB 資料表擁有足夠的輸送容量,您可以修改叢集中的映射器數目,潛在地改善效能。
注意
在 Hadoop 任務中使用的映射器任務數目會受到輸入分割影響,其中 Hadoop 會將資料細分成邏輯區塊。如果 Hadoop 未執行足夠的輸入分割,則您的寫入作業可能會無法使用 DynamoDB 資料表中所有可用的寫入輸送量。
增加映射器的數目
Amazon EMR 中的每個映射器都有每秒 1 MiB 的最大讀取率。叢集中的映射器數目視叢集中的節點大小而定。(如需節點大小和每個節點映射器數目的相關資訊,請參閱《Amazon EMR 開發人員指南》中的任務組態。)
如果您的 DynamoDB 資料表擁有足夠的讀取輸送量,您可以執行下列其中一項操作來嘗試增加映射器的數目:
-
增加叢集中節點的大小。例如,如果您的叢集正在使用 m1.large 節點 (每個節點有三個映射器),則可以嘗試升級至 m1.xlarge 節點 (每個節點有八個映射器)。
-
增加叢集中節點的數目。例如,如果您有 m1.xlarge 節點的三節點叢集,則可用的映射器總共有 24 個。如果將叢集 (擁有相同類型的節點) 大小加倍,則會有 48 個映射器。
您可以使用 AWS Management Console 來管理叢集中節點的大小或數目。(您可能需要重新啟動叢集,才能讓這些變更生效。)
另一種增加映射器數目的方式,便是修改 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 處理查詢時,從 DynamoDB 資料表讀取時,產生的 Hadoop 作業使用不會超過 dynamodb.max.map.tasks
。