本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
步驟 6:檢閱 Amazon EMR叢集的組態設定
組態設定會指定叢集執行方式的詳細資訊,例如重試任務的次數,以及可用於排序的記憶體量。當您使用 Amazon 啟動叢集時EMR,除了標準 Hadoop 組態設定之外,還有 Amazon EMR特定的設定。組態設定是存放在叢集的主節點。您可以檢查組態設定,以確保叢集擁有為了可有效執行而所需的資源。
Amazon EMR會定義用來啟動叢集的預設 Hadoop 組態設定。這些值是以您為叢集指定的 AMI和執行個體類型為基礎。您可以使用引導操作或透過在任務執行參數中指定新的值來從預設值修改組態設定。如需詳細資訊,請參閱建立引導動作以使用 Amazon EMR叢集安裝其他軟體。若要判斷引導操作是否已變更組態設定,請檢查引導操作日誌。
Amazon 會EMR記錄用於執行每個任務的 Hadoop 設定。日誌資料會儲存在名為 的主節點/mnt/var/log/hadoop/history/
目錄job_
下的檔案中,其中 job-id
_conf.xmljob-id
被任務的識別符取代。如果您已啟用日誌封存,此資料會複製到 logs/
資料夾中的 Amazon S3,其中 date
/jobflow-id
/jobsdate
是任務執行的日期,以及 jobflow-id
是叢集的識別符。
以下 Hadoop 任務組態設定特別適用於研究效能問題。如需 Hadoop 組態設定以及這些設定如何影響 Hadoop 行為的詳細資訊,請移至 http://hadoop.apache.org/docs/
警告
-
如果單一節點故障,在節點少於四個的叢集上
dfs.replication
設定為 1,可能會導致HDFS資料遺失。建議您對生產工作負載使用至少具有四個核心節點的叢集。 -
Amazon EMR不允許叢集在 下擴展核心節點
dfs.replication
。例如,如果dfs.replication = 2
,核心節點的最小數量為 2。 -
當您使用受管擴展即自動擴展,或選擇手動調整叢集大小時,建議您將
dfs.replication
設定為 2 或更高。
組態設定 | 描述 |
---|---|
dfs.replication | 複製單一區塊 (如硬碟區塊) 的HDFS節點數量,以產生RAID類似 的環境。決定包含區塊複本的HDFS節點數量。 |
io.sort.mb | 可用於排序的記憶體總數。這個值應該是 10 乘以 io.sort.factor。此設定還可用於計算任務節點所用的記憶體總數,方法是將 io.sort.mb 乘以 mapred.tasktracker.ap.tasks.maximum 來計算而得。 |
io.sort.spill.percent | 此值會在排序時用到,在該時間點會開始使用磁碟,因為配置的排序記憶體即將用盡。 |
mapred.child.java.opts | 已廢除。改用 mapred.map.child.java.opts 和 mapred.reduce.child.java.opts。Java 選項在啟動JVM任務以在其中執行時 TaskTracker 會使用 。設定最大記憶體大小的常見參數為 "-Xmx"。 |
mapred.map.child.java.opts | Java 選項在啟動 JVM 時 TaskTracker ,會在其中執行地圖任務。設定最大記憶體堆積大小的常見參數為 "-Xmx"。 |
mapred.map.tasks.speculative.execution | 決定相同任務的映射任務嘗試是否會平行啟動。 |
mapred.reduce.tasks.speculative.execution | 決定相同任務的縮減任務嘗試是否會平行啟動。 |
mapred.map.max.attempts | 映射任務可以嘗試的次數上限。如果所有次數皆失敗,那麼會將映射任務標示為失敗。 |
mapred.reduce.child.java.opts | Java 選項會在啟動 時 TaskTracker ,JVM使用 來執行減少任務。設定最大記憶體堆積大小的常見參數為 "-Xmx"。 |
mapred.reduce.max.attempts | 縮減任務可以嘗試的次數上限。如果所有次數皆失敗,那麼會將映射任務標示為失敗。 |
mapred.reduce.slowstart.completed.maps | 在嘗試縮減任務前應完成的映射任務數。等待時間不足可能會在嘗試時導致「擷取失敗太多次」錯誤。 |
mapred.reuse.jvm.num.tasks | 任務會在單一 中執行JVM。指定可以重複使用相同 的任務數量JVM。 |
mapred.tasktracker.map.tasks.maximum | 映射期間每一任務節點可平行執行的最大任務數。 |
mapred.tasktracker.reduce.tasks.maximum | 縮減期間每一任務節點可平行執行的最大任務數。 |
如果叢集任務需要使用大量記憶體,您可以讓每個核心節點使用較少的任務,並降低任務追蹤器堆積大小來增強效能。