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


今回は 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を使うほうがいい