

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 串流 Amazon EMR 叢集錯誤
<a name="emr-troubleshoot-error-streaming"></a>

 您通常可以在 `syslog` 檔案中發現串流錯誤的原因。從 **Steps (步驟)** 窗格即可連結至該訊息。

以下是串流叢集常見的錯誤。

**Topics**
+ [傳送至映射器的資料格式是否錯誤？](#emr-troubleshoot-error-streaming-1)
+ [您的指令碼是否逾時？](#emr-troubleshoot-error-streaming-2)
+ [您是否使用無效串流引數來進行傳遞？](#invalidarg)
+ [您的指令碼結束時是否有發生錯誤？](#emr-troubleshoot-error-streaming-3)

## 傳送至映射器的資料格式是否錯誤？
<a name="emr-troubleshoot-error-streaming-1"></a>

 如果是這種情況，請尋找在任務嘗試日誌的失敗任務嘗試中 `syslog` 檔案中的錯誤訊息。如需詳細資訊，請參閱[檢視 Amazon EMR 日誌檔案](emr-manage-view-web-log-files.md)。

## 您的指令碼是否逾時？
<a name="emr-troubleshoot-error-streaming-2"></a>

 映射器或縮減器指令碼的預設逾時為 600 秒。如果您的指令碼所耗時間超過此值，任務嘗試將會失敗。您可以透過檢查在任務嘗試日誌的失敗任務嘗試中的 `syslog` 檔案來確認是否為此狀況。如需詳細資訊，請參閱[檢視 Amazon EMR 日誌檔案](emr-manage-view-web-log-files.md)。

 您可以透過為 `mapred.task.timeout` 組態設定設定新的值來變更時間限制。此設定會指定一個毫秒數，若一個任務在經該時間後沒有讀取輸入、寫入輸出、或更新其狀態字串，Amazon EMR 便會終止該任務。您可以透過傳遞額外的串流引數 `-jobconf mapred.task.timeout=800000` 來更新這個值。

## 您是否使用無效串流引數來進行傳遞？
<a name="invalidarg"></a>

 Hadoop 串流僅支援以下引數。如果您是使用如下所示以外的引數來進行傳遞，叢集將會失敗。

```
 1. -blockAutoGenerateCacheFiles 
 2. -cacheArchive 
 3. -cacheFile 
 4. -cmdenv 
 5. -combiner 
 6. -debug 
 7. -input 
 8. -inputformat
 9. -inputreader 
10. -jobconf 
11. -mapper
12. -numReduceTasks
13. -output 
14. -outputformat 
15. -partitioner
16. -reducer
17. -verbose
```

 此外，Hadoop 串流只能辨識使用 Java 語法 (也就是以單一連字號為開頭) 傳遞的引數。如果您使用以雙連字號為開頭的引數來進行傳遞，叢集將會失敗。

## 您的指令碼結束時是否有發生錯誤？
<a name="emr-troubleshoot-error-streaming-3"></a>

 如果您的映射器或縮減器指令碼結束時出現錯誤，您可以找到在失敗任務嘗試中任務嘗試日誌的 `stderr` 檔案中找到該錯誤。如需詳細資訊，請參閱[檢視 Amazon EMR 日誌檔案](emr-manage-view-web-log-files.md)。