見出し画像

Amazon Elastic MapReduce (Amazon EMR) について調べてみた

昨今、様々のビッグデータ技術が開発され、それに伴い、
今までになかった言葉(専門用語)が生まれます。


そのビッグデータ技術の一つで、そこそこメジャーな
「Amazon Elastic MapReduce (Amazon EMR)」 について、
自分なり調べてみました。

※できる限り、かみ砕いたつもりですが、かなりギークな内容です。
 非エンジニアの方は意味が分からないかもしれません。
 そういう方は、タブを閉じていただけると幸いです。

それでは、はじめます。

EMRとは?

一言でいうと、

Amazonが提供する 「Elastic MapReduce」

のことです。

これだと全然意味がわかりません。
もう少し別の言い方を探してみます。

こちらのサイトでは、以下のように紹介されています。

AWSの内部で Hadoop を動かせる環境を提供してくれるサービス

まだ意味がわかりません。

さらにAmazonの中の人の紹介では、以下のように紹介されています。

MapReduceジョブをボタン一つで実行できる環境

3つのどの説明もみても、ピンとこないのが正直な感想だと思います。
(私もよくわからないです。)

前提知識

ここまでにでてきた用語を整理してみます。

Elastic

Elasticで辞書を引くと「伸縮自在」「しなやか」「融通がきく」
EC2(Elastic Conpute Cloud), Elastic Beanstalk, ElastiCacheなど様々な場面で見かける単語です。

MapReduce

Googleが開発した、大規模なデータを効率的に分散処理するためのフレームワーク。必要な計算内容を実装したMap処理とReduce処理を用意して、このシステムにぶっこむとうまいこと分散処理してくれる。

Hadoop

巨大データの取り扱いを目的とした分散処理のフレームワーク

フレームワーク

ある領域のソフトウェアに必要とされる汎用的な機能や基本的な制御構造をまとめた半完成品のことを「ソフトウェアフレームワーク」「アプリケーションフレームワーク」などと呼び、これを略してフレームワークと呼ぶことが多い。

ここまできて、やっと 

Amazon EMRとは、Amazon提供のHadoopフレームワークが動作する環境

というのが、理解できました。

ここまできて、今度は、Hadoopってなに?という疑問がわいてきたので、
調べてみました。

Hadoopとは?

大規模データの分散処理を支えるJavaソフトウェアフレームワーク
Master/Core/Task nodeでクラスターを構成
HDFSとMapReduceがコアとなるコンポーネント。

こちらでもう少し詳しく調査

アーキテクチャ

Hadoop Common: 他のモジュールから共通して利用されるライブラリ群。
Hadoop Distributed File System (HDFS): Hadoop独自の分散ファイルシステム。
Hadoop YARN: Hadoopクラスタのリソース管理や、Hadoop上で動作するアプリケーションのスケジューリングを担当する。
Hadoop MapReduce: Hadoop上で動作するMapReduceフレームワークの実装。

Hadoopアーキテクチャの用語

Hadoop Distributed File System (HDFS)

HDFSとは、分散処理システムのApache Hadoopが利用する分散ファイルシステム。OSのファイルシステムを代替するものではなく、その上に独自のファイル管理システムを構築するもの。大容量データの単位時間あたりの読み書き速度(スループット)の向上に注力している。

Yet Another Resource Negotiator (YARN)

JavaScriptのパッケージマネージャ
2016年にFaceBookが公開した
npmと互換性がある = 同じpackage.jsonが使える

実装方法等

以下の3サイトがとてもわかりやすかったです。

実務で使っている小技

・パラメータ:hive.exec.orc.split.strategy は "BI" にすると
 速度は落ちるが、処理が安定する。
 (異常終了しににくなる。)

hive.exec.orc.split.strategyは、ORC Filesの出力方式で以下3種類あり
ETL:纏めて出力、処理時間は一番早いが、処理が不安定になりやすい
BI:都度出力、処理時間は一番遅くなるが、処理が安定する
HYBRID:中間の設定

・Master/Core/Task のnode数設定

処理がこけるときは以下の設定を多用している。
Master:1
Core:1
Task:4
インスタンスタイプは、r4.2xlarge以上にする。


併せてお読みください

参考URL

今回以下のサイトを利用させていただきました。
ありがとうございます。

ググれば何でも調べられる時代になったと実感。

AWS界隈の英語めぐり

IT用語辞典

Hadoop(ハドゥープ)とは?:ビッグデータ処理を支える「基盤」|データ分析用語を解説

Amazon Blackbelt EMR

yarnとは

[初心者] EMRとは何ですか/とりあえずざっとまとめてチュートリアルしてみる

AWSチーム社内勉強会「EMRおじさんに聞いてみよう」レポート

AWS再入門 Amazon Elastic MapReduce編

AWSエンジニアを採用する前に覚えたいAWSの機能:Amazon EMRとは

Amazon EMRについて

Hiveを導入・高速化したい時に最低限必要な知識

いつもサポートありがとうございます。 あなたの100円がモチベーションアップの起爆剤です。 毎日更新頑張ります Twitterはこちら https://twitter.com/7010Rei