Amazon EMR クラスターに接続できません。
簡単な説明
EMR クラスターに接続できない一般的な理由は次のとおりです。
- セキュリティグループルールにアクセス許可の問題があります。
- プライベートサブネットにプロビジョニングされたクラスターのネットワーク設定が正しくありません。
- クラスター認証の設定に問題があります。
- クラスターノードにリソースの制約があります。
- Amazon EMR サービスデーモンが停止しました。
解決方法
Amazon EMR セキュリティグループのルール
1. セキュリティグループのルールが正しいことを確認します。詳細については、「Amazon EMR マネージドセキュリティグループでの作業」を参照してください。
2. ポート 8443 の TCP が許可されていることを確認します。ポート 8443 により、クラスターマネージャーはクラスターマスターノードと通信できます。
3. SSH 経由でクラスターに接続しようとしている場合は、ポート 22 の SSH が許可されていることを確認します。
4. 外部のユーザーまたはアプリケーションが EMR クラスターにアクセスできない場合は、マネージドセキュリティグループに設定されている関連ルールを検証してください。また、他のセキュリティグループのルールも検証してください。
プライベートサブネット内の EMR クラスター
プライベートサブネット内の EMR クラスターについては、前のセクションで説明した項目に加えて、次の点を確認してください。
1. サービスアクセス用のマネージドセキュリティグループが追加されていることを確認します。ルールによってクラスターマネージャーがクラスターノードと通信できることを確認します。詳細については、「サービスアクセスの Amazon EMR マネージドセキュリティグループ (プライベートサブネット)」を参照してください。
2. 踏み台ホストを使用していて、踏み台ホスト経由で Amazon EMR にアクセスできない場合は、次の操作を行います。
- 踏み台ホストのセキュリティグループで、クライアントシステムからのインバウンドトラフィックが許可されていることを確認します。
- EMR クラスターセキュリティグループで、踏み台ホストからのインバウンドトラフィックが許可されていることを確認します。
ネットワーク構成の設定はさまざまであるため、エンドツーエンド接続がブラックホールなしで正しく設定されていることを確認してください。
認証方法
認証が正しく設定されていることを確認するには、次の操作を行います。
1. 認証に Amazon Elastic Compute Cloud (Amazon EC2) キーペアを使用する場合は、そのキーペアが正しく作成および設定されていることを確認します。詳細については、「SSH 認証情報に Amazon EC2 キーペアを使用する」を参照してください。
2. 認証に Kerberos を使用する場合は、正しく設定されていることを確認してください。詳細については、「Kerberos 認証を使用する」を参照してください。
クラスターノードにおけるリソースの制約
1. 基盤となるマスターノードが実行状態であり、終了していないことを確認します。
2. マスターノードのインスタンス状態ログをチェックして、リソースがどのように使用されているかを確認します。
次のコマンドを実行して、CPU のトップユーザーを確認します。
ps auxwww --sort -%cpu | head -10
次のコマンドを実行して、カーネルのパフォーマンスを確認します。
dmesg | tail -n 25
次のコマンドを実行して、メモリ使用量を確認します。
free -m
次のコマンドを実行して、ディスク使用量を確認します。
df -h
EMR クラスターデーモン
マスターノードのインスタンスコントローラー (I/C) は、クラスターノードで実行されるデーモンです。インスタンスコントローラーは Amazon EMR コントロールプレーンとクラスターの残りの部分と通信します。次のコマンドを実行して、実行状態であることを確認します。
次のコマンドを実行して、インスタンスコントローラーのステータスを確認します。
sudo systemctl status instance-controller
次のコマンドを実行してインスタンスコントローラーを開始します。
sudo systemctl start instance-controller