LoginSignup
2
1

More than 3 years have passed since last update.

AWS認定ビッグデータ - 専門知識 勉強記~EMR~

Posted at

今回は EMR に関する勉強記録となる.なお,記事は適宜更新していく.

概要

EMRの層

  • Application:Hive,Pig,Sparketc
  • Batch : MapReduce
  • Interactive: Tez
  • In Memory: Spark,Flink
  • YARN: Cluster Resource Management
  • Storage:S3(EMRFS),HDFS

ビッグデータの中で、イベントプロセスとデータプロセスを担当
構成要素:分散処理基盤、分散処理アプリケーション

アーキテクチャ

マスター:コアとタスクを管理、F/O非対応、1つのみ。障害は滅多に発生しないけど、万が一を考えてデータはS3に退避するのが推奨。
コア:1つ以上のノード。データノードが動きローカルディスクがHDFS(インスタンスストア、EBS)が使われる。スレーブノードがダウンしてもじょ実行できる。コアノード追加可能。HDFS容量増加、CPU/MEM増設可能。
タスク:HDFSを持たない以外コアと一緒。RIやスポットを適用するならここ。

アプリケーションの特徴

分散処理系

  • Hadoop:文処理の基盤。YARN(リソース管理)+HDFS(分散ストレージ)の上で各種アプリが実行される。MapReduceもその1つ。多くのEMRアプリがYARNを使うのでほぼ必須
  • Hive:YARN上で実行される、分散SQL実行環境。実行エンジンとして、MapReduceなどが使える。S3のでーたをチョ憶説読み書き可能
  • Tez:YARN上でDAGを実行するのに最適化したエンジン・。Hiveの実行エンジンに指定するだけで、多くのHiveクエリが高速化する。
  • Spark:分散処理のフッレームワーク。インメモリなMapReduce。YARN上で実行でき、MapReduceよりも高速化かつ簡単に分散処理可能。Spark SQL、Spark Streaming、MLlib(機械学習)もできる
  • Flink:YARN上で実行でき、ストリーミング処理もバッチ処理もどちらも同一のランタイムで実行する
  • Presto:分散SQL実行エンジン。HDFSとS3など複数のデータソースのデータを処理できる。対話的に処理できる。
  • Pig:Pigは大規模データセットを処理するためのスクリプト言語(Pig Latin)であり、実行観光である。PigはHive同様、内部でMapperとReduceに置き換えてデータ処理を行う。Hadoopのシェルスクリプトのような動きができる。Pigはデータのグループと結合処理といったSQLのような処理も可能。
  • HBase:HDFS上に構築される分散KVS。スループットと大容量
  • Impale:SQL使ったインタラクティブ(対話的)アナアドホッククエリを行う。HadoopエコシステムのOSS。超並列処理(MPP)をMapReduceの代わりに使う。HBaseテーブルまたはHDFSのデータを素早く蹴りできる。
  • Hunk:EMRとS3のデータをインタラクティブに探索、分析、可視化してSplunk分析に活用できる

個別のアプリケーションのメモ

Hive

SQLを使ってデータ処理ができるHadoopアプリ
Hiveを使う場合、ジョブフロー起動時にアプリケーション構成を決める必要あり:2つ。バッチジョブフロー、インタラクティブジョブフロー
前者は、データ処理が終了すると処理結果をS3に格納し、ジョブフローは消滅する
後者は、データ処理が終了してもジョブフローは存在し、次の作業指示待ちになる
HiveでKinesisのデータを処理できる:Stream内のシャードごとにMapperがデータを読み出す(Kinesisの保存デーータをフルスキャン、DynamoDBのチェックポイントを使うと前回読み出したデータ移行のみ読み込める)

処理例
1、テーブル定義でHDFSやS3をソースに指定してサーバーにアップ
2、テーブル定義がメタデータ(マスターのMySQL)として保存される
3、定義したテーブルに対して処理を実行(SQL
4、テーブルのメタデータを取得
5、クラスタに処理を以来
6、実際のデータソース(HDFS、S3)から読み出しつつ指定した処理を行う

EMRとYARN

YARN: グローバルリソースマネージャー:システム全体のリソースの管理権限。役割は、スケジューラとアプリケーションマネージャー。
マシンごとのノードマネージャー:コンテナ、リソースの監視の状態
MapReduce,Hive,Pig,Spark on YARN
EMRクラスタがもつ計算資源をYARNがアプリケーションに割り振ってくれる
マルチテナントなクラスタも簡単に作れる

HDFS

ファイルシステム

  • インスタンスストア:レイテンシー
  • EBS
  • S3(EMRFS):暗号化、ライフサイクルとセキュリティポリシー。DynamoDBがバックにいる。Kinesis Firehosとの統合も簡単。

HDFS vs EMRFS

・拡張性:S3
・耐障害性:S3
・耐久性:S3
・コスト:S3
・スピード:EBS/インスタンスストア
・セキュリティ:S3(IAM、バケットポリシー、SSL)、EBS/インスタンスストア(ケルベロス、YARN、SSLアップロード)

結局どっち選ぶ?

S3:拡張性、持続性、勝ち
EBS:パフォーマンス、ParquetとORCsのような特別なフォーマット

EMRのアンチパターン

  • 小さなデータセット
  • ACIDトランザクション要件:アトミック生、整合性、分離、堅牢性を要求するワークロードに対しては別のRDSやEC2を使うほうがいい
2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1