VPC エラー - Amazon EMR

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

VPC エラー

以下のエラーは、Amazon VPCの設定に共通ですEMR。

無効なサブネット設定

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

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

この問題を解決するには、インターネットゲートウェイを作成して にアタッチする必要がありますVPC。詳細については、「インターネットゲートウェイを に追加するVPC」を参照してください。

または、 VPCで DNS解決の有効化DNSホスト名のサポートの有効化が有効になっていることを確認します。詳細については、「 DNSで を使用するVPC」を参照してください。

欠落しているDHCPオプションセット

クラスターのシステムログ(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「オプションセット」を参照してください。

権限エラー

ステップの 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

この問題をトラブルシューティングする方法には、次のようなものがあります。

  • 内で Amazon S3 バケットポリシーを使用している場合はVPC、エンドポイントを作成し、VPCエンドポイントの作成時にポリシーオプションですべて許可を選択して、すべてのバケットへのアクセスを許可してください。

  • 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 になるエラー

AMI 3.7.0 より前のバージョンでは、ホスト名VPCsが指定されている の場合、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 にします。この動作は 3.7.0 AMI で変更され、Amazon は DHCPの設定VPCを完全にEMR尊重するようになりました。以前は、お客様は、ホスト名のマッピングを指定するブートストラップアクションも使用できました。

この動作を維持する場合は、カスタムドメインに必要な DNSおよび 転送解像度設定を指定する必要があります。

クラスターTerminated with errorsと の起動に NameNode 失敗する

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

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

失敗は、 が起動 NameNode できないことが原因です。これにより、Amazon S3 の形式URIが である NameNode ログに次のエラーが表示されますs3://mybucket/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)

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