本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
串流 Amazon EMR叢集錯誤
您通常可以在 syslog
檔案中發現串流錯誤的原因。從 Steps (步驟) 窗格即可連結至該訊息。
以下是串流叢集常見的錯誤。
傳送至映射器的資料格式是否錯誤?
如果是這種情況,請尋找在任務嘗試日誌的失敗任務嘗試中 syslog
檔案中的錯誤訊息。如需詳細資訊,請參閱檢視 Amazon EMR日誌檔案。
您的指令碼是否逾時?
映射器或縮減器指令碼的預設逾時為 600 秒。如果您的指令碼所耗時間超過此值,任務嘗試將會失敗。您可以透過檢查在任務嘗試日誌的失敗任務嘗試中的 syslog
檔案來確認是否為此狀況。如需詳細資訊,請參閱檢視 Amazon EMR日誌檔案。
您可以透過為 mapred.task.timeout
組態設定設定新的值來變更時間限制。此設定指定 Amazon EMR將終止未讀取輸入、寫入輸出或更新其狀態字串的任務的毫秒數。您可以透過傳遞額外的串流引數 -jobconf
mapred.task.timeout=800000
來更新這個值。
您是否使用無效串流引數來進行傳遞?
Hadoop 串流僅支援以下引數。如果您是使用如下所示以外的引數來進行傳遞,叢集將會失敗。
-blockAutoGenerateCacheFiles -cacheArchive -cacheFile -cmdenv -combiner -debug -input -inputformat -inputreader -jobconf -mapper -numReduceTasks -output -outputformat -partitioner -reducer -verbose
此外,Hadoop 串流只能辨識使用 Java 語法 (也就是以單一連字號為開頭) 傳遞的引數。如果您使用以雙連字號為開頭的引數來進行傳遞,叢集將會失敗。
您的指令碼結束時是否有發生錯誤?
如果您的映射器或縮減器指令碼結束時出現錯誤,您可以找到在失敗任務嘗試中任務嘗試日誌的 stderr
檔案中找到該錯誤。如需詳細資訊,請參閱檢視 Amazon EMR日誌檔案。