【AWS】Amazon EMR ~ 基本編 ~

■ はじめに

https://dk521123.hatenablog.com/entry/2020/02/20/230519

の続き。
Amazon EMR (Elastic MapReduce) を動かしてみたり、
基本的なことを学ぶ。

目次

【1】EMRのクラスタを起動する
【2】EMRでHIVEを実行する
【3】EMRのログ
【4】EMRの全体構成
【5】EMRを起動してからの流れ

【1】EMRのクラスタを起動する

https://dev.classmethod.jp/articles/sample-emr-spark/

が分かりやすい。以下、一例。

1)EC2のキーペアを用意する
2)EMRのクラスタを作成する
 ⇒ 起動したクラスタに接続するには、
  以下「【2】EMRでHIVEを実行する」を参照。

【2】EMRでHIVEを実行する

以下、一例。

1)EC2に接続する
2)SSHでEMRに接続する
3)HIVEコマンドを実行する

1)EC2に接続する

SSHでも Session Manager でもいいので、
EMRに接続可能なEC2にログインする

2)SSHでEMRに接続する

ssh hadoop@EMRDNS

※「EMRDNS」は、EMRの「マスターパブリックDNS」で表示されているものを指定

ファイル転送が必要な場合

# scp -i [EMR接続用Publicキー] [EMR User]@[Host Name]:
scp hello_world.hql -i public_key_for_emr.pem hadoop@ip-XXX-XXX-XXX-XXXlus-west-1.compute.internal:

SSH接続

# ssh -i [EMR接続用Publicキー] [EMR User]@[Host Name]
ssh -i public_key_for_emr.pem hadoop@ip-XXX-XXX-XXX-XXXlus-west-1.compute.internal

SSH / SCPコマンドについては、以下の関連記事を参照のこと。

ssh コマンド / scp コマンド
https://dk521123.hatenablog.com/entry/2017/12/09/231200

3)HIVEコマンドを実行する

ファイルを実行

hive -f hello_world.hql

hiveインタラクティブシェルから実行
https://www.atmarkit.co.jp/ait/articles/1701/01/news022.html

hive
hive> SHOW DATABASE;
hive> USE sample_db;
hive> SHOW TABLES;
hive> exit;

補足:hiveについて

hive に関する詳細は、以下の関連記事などを参照のこと。

https://dk521123.hatenablog.com/entry/2020/02/25/231235
https://dk521123.hatenablog.com/entry/2020/06/02/183823

【3】EMRのログ

以下の公式サイトのページを参照。

https://docs.aws.amazon.com/ja_jp/emr/latest/ManagementGuide/emr-manage-view-web-log-files.html
https://aws.amazon.com/jp/premiumsupport/knowledge-center/logs-hive-queries-amazon-emr/

【4】EMRの全体構成

EMRは起動時にEC2インスタンスを起動するが、
以下の3つのグループのいずれかに属する

1)EMRマスターノード
2)EMRコアノード
3)EMRタスクノード

1)EMRマスターノード

* ジョブフロー全体の構成管理などを行う
* ジョブフローの中で必ず1台のみ起動する

2)EMRコアノード

* DataNode(HDFS)を持っており、実際にデータを読み込みつつデータ処理を行う
* ひとつのジョブフローに対して複数存在可能

3)EMRタスクノード

* データは持たないがデータ処理のためにリソース提供することが可能
* 0..* で存在(ない、単数、複数)

【5】EMRを起動してからの流れ

EMRを起動してからの流れは以下の通り。

1)ジョブフロー(※A)が起動
2)そのジョブフローは...
 2-1)ユーザからデータ処理の指示を受け取る
 2-1)ステップ(※B)を起動して作業指示を出す
 2-3)進捗状況をステータス(※C)として報告

https://www.atmarkit.co.jp/ait/articles/1701/01/news018_5.html
※A:ジョブフロー とは?

* 一連の処理

※B:ステップ とは?

ジョブフローの中で実行されるそれぞれの処理
 => ひとつのHadoopジョブ

※C:ステータス について

STARTING:EC2インスタンスの起動やHadoopクラスタの構築
BOOTSTRAPPING:Hadoopクラスタの環境構成のカスタマイズなどを行う
RUNNING:ステップ処理が実行されている
WAITING:ジョブフローが作業指示を待っている
SHUTTING_DOWN:ジョブフローがHadoopクラスタを終了している
TERMINATED:ジョブフローが完了している

関連記事

Amazon EMR ~ 入門編 ~
https://dk521123.hatenablog.com/entry/2020/02/20/230519
Amazon EMR ~ boto3 編 ~
https://dk521123.hatenablog.com/entry/2020/06/24/173334
Amazon EMR ~ AWS Glueとの連携 ~
https://dk521123.hatenablog.com/entry/2020/11/12/113312
Amazon EMR ~ EMRFS ~
https://dk521123.hatenablog.com/entry/2020/11/13/145545
Amazon EMR ~ EMR内部 から SES で Email を送る ~
https://dk521123.hatenablog.com/entry/2021/07/09/115553
Amazon EMR に関するトラブル
https://dk521123.hatenablog.com/entry/2020/08/05/144724
Amazon EMR の クローン 時の トラブル
https://dk521123.hatenablog.com/entry/2021/08/19/113707
Amazon Redshift ~ 入門編 ~
https://dk521123.hatenablog.com/entry/2020/02/22/002139
Hive / HiveQL ~ 入門編 ~
https://dk521123.hatenablog.com/entry/2020/02/25/231235
Hive / HiveQL ~ 基本編 ~
https://dk521123.hatenablog.com/entry/2020/06/02/183823
Hive / HiveQL ~ あれこれ編 ~
https://dk521123.hatenablog.com/entry/2020/03/04/225943
Hive に関するトラブルシューティング
https://dk521123.hatenablog.com/entry/2020/11/20/174039
Hive / Partition に関するトラブルシューティング
https://dk521123.hatenablog.com/entry/2020/05/28/175428
ssh コマンド / scp コマンド
https://dk521123.hatenablog.com/entry/2017/12/09/231200
SSHクライアント
https://dk521123.hatenablog.com/entry/2019/10/18/233543