

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# Amazon EMR クラスターオペレーション中の VPC エラー
<a name="emr-troubleshoot-error-vpc"></a>

Amazon EMR の VPC 設定で一般的なエラーは次のとおりです。

**Topics**
+ [無効なサブネット設定](#emr-troubleshoot-error-gateway)
+ [不明な DHCP オプション設定](#emr-troubleshoot-error-dhcp)
+ [権限エラー](#emr-troubleshoot-error-denied)
+ [`START_FAILED` になるエラー](#emr-troubleshoot-error-vpc-dns)
+ [クラスターが `Terminated with errors` になり、NameNode が起動に失敗する](#emr-troubleshoot-namenode-dns)

## 無効なサブネット設定
<a name="emr-troubleshoot-error-gateway"></a>

 [**Cluster Details**] ページの [**Status**] フィールドに、次のようなエラーが表示されます。

`The subnet configuration was invalid: Cannot find route to InternetGateway in main RouteTable rtb-id for vpc vpc-id.`

この問題を解決するには、インターネットゲートウェイを作成し、VPC に接続する必要があります。詳細については、「[インターネットゲートウェイを VPC に追加する](https://docs.aws.amazon.com/AmazonVPC/latest/UserGuide/VPC_Internet_Gateway.html)」を参照してください。

または、[**Enable DNS resolution**] および [**Enable DNS hostname support**] を有効にした状態で、VPC を設定したことを検証します。詳細については、「[Using DNS with Your VPC](https://docs.aws.amazon.com/AmazonVPC/latest/UserGuide/vpc-dns.html)」を参照してください。

## 不明な DHCP オプション設定
<a name="emr-troubleshoot-error-dhcp"></a>

クラスターのシステムログ（syslog）に次のようなエラーとともにステップの失敗が表示されます。

` ERROR org.apache.hadoop.security.UserGroupInformation (main): PriviledgedActionException as:hadoop (auth:SIMPLE) cause:java.io.IOException: org.apache.hadoop.yarn.exceptions.ApplicationNotFoundException: Application with id 'application_id' doesn't exist in RM. `

または 

`ERROR org.apache.hadoop.streaming.StreamJob (main): Error Launching job : org.apache.hadoop.yarn.exceptions.ApplicationNotFoundException: Application with id 'application_id' doesn't exist in RM.`

この問題を解決するには、パラメータが以下の値に設定されている DHCP オプション設定を含む VPC を設定する必要があります。

**注記**  
 AWS GovCloud (米国西部) リージョンを使用する場合は、次の例で使用されている値**us-gov-west-1.compute.internal**の代わりに domain-name を に設定します。
+ **domain-name** = **ec2.internal**

  リージョンが米国東部 (バージニア北部) の場合は、**ec2.internal** を使用します。その他のリージョンについては、*region-name***.compute.internal** を使用します。たとえば、us-west-2 では、**domain-name**=**us-west-2.compute.internal** を使用します。
+ **domain-name-servers** = **AmazonProvidedDNS**

詳細については、「[DHCP オプションセット](https://docs.aws.amazon.com/AmazonVPC/latest/UserGuide/VPC_DHCP_Options.html)」を参照してください。

## 権限エラー
<a name="emr-troubleshoot-error-denied"></a>

ステップの `stderr` ログ内のエラーは、Simple Storage Service (Amazon S3) リソースに適切な権限がないことを示します。これは 403 エラーで、エラーは以下のようになっています。

```
Exception in thread "main" com.amazonaws.services.s3.model.AmazonS3Exception: Access Denied (Service: Amazon S3; Status Code: 403; Error Code: AccessDenied; Request ID: REQUEST_ID
```

ActionOnFailure を `TERMINATE_JOB_FLOW` に設定した場合、クラスターが `SHUTDOWN_COMPLETED_WITH_ERRORS` の状態で終了します。

この問題をトラブルシューティングする方法には、次のようなものがあります。
+ VPC 内で Simple Storage Service (Amazon S3) バケットポリシーを使用している場合、すべてのバケットへのアクセスを許可する必要があります。このためには、VPC エンドポイントを作成し、その作成時に [ポリシー] オプションの下で **[Allow all]** (すべて許可) を選択します。
+ S3 リソースに関連付けられたすべてのポリシーに、クラスターを起動する VPC が含まれていることを確認します。
+ クラスターから次のコマンドを実行して、バケットにアクセスできることを確認します。

  ```
  hadoop fs -copyToLocal s3://path-to-bucket /tmp/
  ```
+ より詳しいデバッグ情報を取得するには、`log4j.logger.org.apache.http.wire` ファイルの `DEBUG` パラメータを `/home/hadoop/conf/log4j.properties` に設定します。クラスターからバケットへのアクセスを試行してから、`stderr` ログファイルを確認します。ログファイルで詳細情報を確認できます。

  ```
  Access denied for getting the prefix for bucket - us-west-2.elasticmapreduce with path samples/wordcount/input/
  15/03/25 23:46:20 DEBUG http.wire: >> "GET /?prefix=samples%2Fwordcount%2Finput%2F&delimiter=%2F&max-keys=1 HTTP/1.1[\r][\n]"
  15/03/25 23:46:20 DEBUG http.wire: >> "Host: us-west-2.elasticmapreduce.s3.amazonaws.com[\r][\n]"
  ```

## `START_FAILED` になるエラー
<a name="emr-troubleshoot-error-vpc-dns"></a>

AMI 3.7.0 より前のバージョンでは、ホスト名が指定された VPC の場合、Amazon EMR はサブネットの内部ホスト名を `ip-X.X.X.X.customdomain.com.tld` のようにカスタムドメインアドレスでマッピングします。例えば、ホスト名が `ip-10.0.0.10` で、VPC のドメイン名オプションが customdomain.com に設定されている場合、Amazon EMR でマッピングされたホスト名は `ip-10.0.1.0.customdomain.com` になります。エントリは `/etc/hosts` に追加され、ホスト名を解決して 10.0.0.10 にします。この動作は AMI 3.7.0 で変更され、Amazon EMR は VPC の DHCP 設定を全面的に優先するようになりました。以前は、お客様は、ホスト名のマッピングを指定するブートストラップアクションも使用できました。

この動作を維持するには、DNS を提供し、カスタムドメインに必要な解決セットアップを転送する必要があります。

## クラスターが `Terminated with errors` になり、NameNode が起動に失敗する
<a name="emr-troubleshoot-namenode-dns"></a>

カスタム DNS ドメイン名を使用する VPC で EMR クラスターを起動すると、コンソールに次のエラーメッセージが表示されてクラスターで障害が発生することがあります。

```
Terminated with errors  On the master instance(instance-id), bootstrap action 1 returned a  non-zero return code
```

障害は、NameNode が起動できないために発生します。これにより、NameNode ログに次のエラーが記録されます。このログの Simple Storage Service (Amazon S3) の URI 形式は `s3://amzn-s3-demo-bucket/logs/cluster-id/daemons/master instance-id/hadoop-hadoop-namenode-master node hostname.log.gz` です。

```
2015-07-23 20:17:06,266 WARN
      org.apache.hadoop.hdfs.server.namenode.FSNamesystem (main): Encountered  exception
      loading fsimage  java.io.IOException: NameNode is not formatted.      
      at
      org.apache.hadoop.hdfs.server.namenode.FSImage.recoverTransitionRead(FSImage.java:212)
           at
      org.apache.hadoop.hdfs.server.namenode.FSNamesystem.loadFSImage(FSNamesystem.java:1020)
           at
      org.apache.hadoop.hdfs.server.namenode.FSNamesystem.loadFromDisk(FSNamesystem.java:739)
           at
      org.apache.hadoop.hdfs.server.namenode.NameNode.loadNamesystem(NameNode.java:537)
           at
      org.apache.hadoop.hdfs.server.namenode.NameNode.initialize(NameNode.java:596)      
      at  org.apache.hadoop.hdfs.server.namenode.NameNode.<init>(NameNode.java:765)
           at
      org.apache.hadoop.hdfs.server.namenode.NameNode.<init>(NameNode.java:749)      
      at
      org.apache.hadoop.hdfs.server.namenode.NameNode.createNameNode(NameNode.java:1441)
           at
      org.apache.hadoop.hdfs.server.namenode.NameNode.main(NameNode.java:1507)
```

これは、 AWSが提供する DNS サーバーとカスタムユーザーが提供する DNS サーバーの両方を利用する VPC で EMR クラスターを起動するときに、EC2 インスタンスに完全修飾ドメイン名のセットが複数存在する可能性があるという潜在的な問題が原因です。ユーザーが提供する DNS サーバーが、EMR クラスターでノードの指定に使用される A レコードのポインター（PTR）レコードを提供しない場合、この方法で設定するとクラスターが起動に失敗します。解決策として、EC2 インスタンスが VPC 内のいずれかのサブネットで起動されるときに作成される A レコードにごとに PTR レコードを 1 つ追加できます。