■ はじめに
めちゃくちゃハマったトラブルについて、まとめる。
目次
【1】トラブル概要 1)発生環境 2)現象補足 【2】エラー内容 1)EMR Step内のエラー内容 2)Tracking URL からのエラー情報 【3】原因 【4】解決案
【1】トラブル概要
EMR 内で、INSERTの実行した際に、以下「エラー内容」が表示される。 なお、INSERT対象が、外部・内部テーブルに関わらず、Failする
INSERT文
set hive.execution.engine=mr; INSERT OVERWRITE TABLE sample_db.sample_table PARTITION (created_at='2022-05-14') SELECT 'x0001' , 'Mike' ;
1)発生環境
* EMR : v5.29.0
2)現象補足
なお、以下は可能。 ~~~~ * SELECT * CREATE/DROP TABLE * Master ->S3間 の ファイルコピー * Master/Slave間 の pingコマンド ~~~~ * エラー内容「BlockMissingException: Could not obtain block: BP」を 検索した際によく出てくる「dfs.client.use.datanode.hostname=true」では 現象は変わらなかった。
https://stackoverflow.com/questions/48107616/hadoop-blockmissingexception
【2】エラー内容
* 普通は、エラー内容をヒントに解決できるのだが 今回は、そうではなかった。 (だからこそ、ハマったのだが、、、)
1)EMR Step内のエラー内容
Start Job = job_xxxxx, Tracking URL = http://ip-xx.xx.xx.xx.us-west-1.compute.internal:20888/proxy/application_xxxx Kill Command - /usr/lib/hadoop/bin/hadoop job -kill job_xxxxx ・・・略・・・ Ended Job = job_xxxxx with errors Error during job, obtaining debuggin information... FAILED: Execution Error, return code 2 from org.apache.hadoop.hive.ql.exec.mr.MapRedTask ・・・略・・・ run query fail. Command exiting with ret: '2'
2)Tracking URL からのエラー情報
Diagnostics: org.apache.hadoop.hdfs.BlockMissingException: Could not obtain block: BP-XXXXXX-10.3.20.155-XXXXXX:blk_XXXXXX_XXX file=/tmp/hadoop-yarn/staging/hadoop/.staging/job_xxxxx/libjars/aws0glue-datacatalog-hive2-client.jar ・・・略 at java.lang.Thread.run(Thread.java:XXX) For more detailed output, check the application tracking page: http://... Failing the application.
補足:「Tracking URL からのエラー情報」
https://dk521123.hatenablog.com/entry/2022/05/11/135632
の「【3】EMR上で Web UI へのアクセス」を参照。 (そのため、EMRは立ち上げっぱなしにしておく必要がある)
【3】原因
* Outbound でブロッキングしていたため => もし、同じ現象・近しい現象だった場合、 自身のセキュリティグループのInbound/Outboundを 以下の公式ドキュメントの内容と比較して不備がないかを 確認してみるといいかも
https://docs.aws.amazon.com/ja_jp/emr/latest/ManagementGuide/emr-man-sec-groups.html
【4】解決案
https://docs.aws.amazon.com/ja_jp/emr/latest/ManagementGuide/emr-man-sec-groups.html
を参考に「0.0.0.0/0:All」にした。 => Outboundをもっと厳しくしたい場合は、 現象発生が解決した後に、 AWS公式ドキュメントを参考に徐々に制限していけばいい * ちなみに、以下の関連記事も このトラブルを解決する一環として書いた
Amazon EMR ~ ネットワーク周り ~
https://dk521123.hatenablog.com/entry/2022/05/13/155755
関連記事
Amazon EMR ~ 入門編 ~
https://dk521123.hatenablog.com/entry/2020/02/20/230519
Amazon EMR ~ 基本編 ~
https://dk521123.hatenablog.com/entry/2020/05/27/175610
Amazon EMR に関するトラブル
https://dk521123.hatenablog.com/entry/2020/08/05/144724
起動中の EMR に Session Manager を使って入る
https://dk521123.hatenablog.com/entry/2022/05/11/135632
Amazon EMR ~ ネットワーク周り ~
https://dk521123.hatenablog.com/entry/2022/05/13/155755
Hadoop ~ 基本編 / HDFS ~
https://dk521123.hatenablog.com/entry/2022/05/01/000000