

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

# EMR 叢集無法佈建
<a name="emr-ranger-troubleshooting-cluster-failed"></a>

有幾個可能導致 Amazon EMR 叢集無法啟動的原因。以下是診斷問題的幾種方法。

**檢查 EMR 佈建記錄**

Amazon EMR 使用 Puppet 在叢集上安裝和設定應用程式。查看日誌將提供有關在叢集佈建階段是否存在任何錯誤的詳細資訊。如果將日誌設定為推送至 S3，則可以在叢集或 S3 上存取日誌。

日誌儲存在磁碟上的 `/var/log/provision-node/apps-phase/0/{UUID}/puppet.log` 和 `s3://<LOG LOCATION>/<CLUSTER ID>/node/<EC2 INSTANCE ID>/provision-node/apps-phase/0/{UUID}/puppet.log.gz.`

**常見錯誤訊息**


| 錯誤訊息 | 原因 | 
| --- | --- | 
| Puppet (err): Systemd start for emr-record-server failed\! journalctl log for emr-record-server: | EMR 記錄伺服器無法啟動。請參閱下面的 EMR 記錄伺服器日誌。 | 
| Puppet (err): Systemd start for emr-record-server failed\! journalctl log for emrsecretagent: | EMR 機密代理程式無法啟動。請參閱下面的「檢查機密代理程式日誌」。 | 
| /Stage[main]/Ranger\_plugins::Ranger\_hive\_plugin/Ranger\_plugins::Prepare\_two\_way\_tls[configure 2-way TLS in Hive plugin]/Exec[create keystore and truststore for Ranger Hive plugin]/returns (notice): 140408606197664:error:0906D06C:PEM routines:PEM\_read\_bio:no start line:pem\_lib.c:707:Expecting: ANY PRIVATE KEY | Secret Manager 中 Apache Ranger 外掛程式憑證的私有 TLS 憑證格式不正確或不是私有憑證。如需憑證格式，請參閱 [Apache Ranger 與 Amazon EMR 整合的 TLS 憑證](emr-ranger-admin-tls.md)。 | 
| /Stage[main]/Ranger\_plugins::Ranger\_s3\_plugin/Ranger\_plugins::Prepare\_two\_way\_tls[configure 2-way TLS in Ranger s3 plugin]/Exec[create keystore and truststore for Ranger amazon-emr-s3 plugin]/returns (notice): An error occurred (AccessDeniedException) when calling the GetSecretValue operation: User: arn:aws:sts::XXXXXXXXXXX:assumed-role/EMR\_EC2\_DefaultRole/i-XXXXXXXXXXXX is not authorized to perform: secretsmanager:GetSecretValue on resource: arn:aws:secretsmanager:us-east-1:XXXXXXXXXX:secret:AdminServer-XXXXX | EC2 執行個體設定檔角色沒有從機密代理程式擷取 TLS 憑證的正確許可。 | 

**檢查機密代理程式日誌**

機密代理程式日誌位於 EMR 節點上的 `/emr/secretagent/log/` 或 S3 的 `s3://<LOG LOCATION>/<CLUSTER ID>/node/<EC2 INSTANCE ID>/daemons/secretagent/` 目錄中。

**常見錯誤訊息**


| 錯誤訊息 | 原因 | 
| --- | --- | 
| Exception in thread "main" com.amazonaws.services.securitytoken.model.AWSSecurityTokenServiceException: User: arn:aws:sts::XXXXXXXXXXXX:assumed-role/EMR\_EC2\_DefaultRole/i-XXXXXXXXXXXXXXX is not authorized to perform: sts:AssumeRole on resource: arn:aws:iam::XXXXXXXXXXXX:role/\*RangerPluginDataAccessRole\* (Service: AWSSecurityTokenService; Status Code: 403; Error Code: AccessDenied; Request ID: XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX; Proxy: null) | 上面的例外狀況意味著 EMR EC2 執行個體設定檔角色沒有擔任 **RangerPluginDataAccessRole** 角色的許可。請參閱 [用於與 Apache Ranger 進行原生整合的 IAM 角色](emr-ranger-iam.md)。 | 
| ERROR qtp54617902-149: Web App Exception Occurred<br />javax.ws.rs.NotAllowedException: HTTP 405 Method Not Allowed | 可以安全地忽略這些錯誤。 | 

**檢查記錄伺服器日誌 (適用於 SparkSQL)**

EMR 記錄伺服器日誌位於 EMR 節點上的 /var/log/emr-record-server/，或可在 S3 的 s3://<LOG LOCATION>/<CLUSTER ID>/node/<EC2 INSTANCE ID>/daemons/emr-record-server/ 目錄中找到。

**常見錯誤訊息**


| 錯誤訊息 | 原因 | 
| --- | --- | 
| InstanceMetadataServiceResourceFetcher:105 - [] Fail to retrieve token com.amazonaws.SdkClientException: Failed to connect to service endpoint  | EMR 機密代理程式無法啟動或出現問題。檢查機密代理程式日誌是否有錯誤，及檢查 puppet 指令碼以確定是否有任何佈建錯誤。 | 