MapR セミナーのメモを備忘録代わりに残します。間違ってたらご指摘ください。
Drill も MapR-DB(より使いやすいHBase) も MapR なら利用可能ということで、Drill が AWS で利用可能になるのでしょうか…。そう思うと非常に期待が高まります。S3 になんでもかんでも置いておいて、あとは Drill でどうにかするよという世界でしょうか。Presto でもいいですね。imaifactory さんが、一番好きな AWS サービスは S3 だと言っていましたが、日ごとにその言葉の意味が分かる今日この頃です。
[追記] Drill は Amazon EMR のブートストラップアクションで用意があり、現在でも簡単に利用することが可能だと MapR の方に教えていただきました。GitHub のリポジトリを見ると elasticsearch や Presto も用意があるので、簡単に環境を整えられそうです。 github: awslabs/emr-bootstrap-actions
v4.0.1 の新機能
MR1 の問題点
スロットを Mapper / Reducer それぞれに割り当てる必要があり、リソースの無駄が生じやすい。例えば、Mapper タスクが大量に発生しても、Reducer のスロット分を使い回すことはできない。
また、JobTracker が分散しないため、負荷のボトルネックとなりやすい。
v4.0.1 で YARN 対応をし、MR1 の問題点を解決
上記問題点を受け、YARN では次のように解決している
- ResourceManager, NodeManager によるリソース管理
- リソースコンテナは固定長ではなく、流動的
- コンテナはスロットの替わりとなる概念。Mapper / Reducer の別はないため、リソースを効率的に利用できる。
- ApplicationMaster:
- JobTracker の役割だが、各アプリケーションごとに立ち上がるため、負荷のボトルネックとならない
- これもリソースコンテナの中で動く
- 他のディストリビューションとは違い、MapR では CPU, メモリに加え、ディスク情報もリソース計算に使う
その他新機能
- ラベルベース・スケジューリング(MapR)
- MapR では以前からあった機能だが、YARN でも可能
- 特定のジョブを特定のノードにひもづける機能
- 例えばノードの方に "Fast", "High Memory" などのラベルを付けておき、ジョブでこのラベルを指定する事が出来る
- MR1 との共存
v4.0.1 or v3.1.1?:
- YARN が必要かどうか・パフォーマンスは大丈夫か。パフォーマンスはまだ旧バージョンの方がよいが、開発が進むにつれて YARN 上でのパフォーマンスも改善するはず
- ローリングアップグレードは v4.0.2 から(v4.0.1 では全インスタンスを停止して入れ替えなければならない
Apache Drill
概要
ANSI SQL に準拠したクエリエンジン。スキーマレス(JSON, BSON)のデータも扱える。CSV のローカル環境での抽出なら、ローカルで直に試すことができる:
SELECT column[1] AS LOCATION, max(columns[2]) AS MAX_TEMP
FROM dfs /root/...
GROUP BY LOCATION;
- FROM でいろいろなデータソースが指定できる(ファイルシステム、Hive、...)
- 様々な形式のデータを1つのクエリで取ってきて JOIN することも可能(FROM 句でそれぞれ形式を指定する)
ロードマップ
現在は version 0.6
- v1.0 -> on YARN, 認証機能, on Spark(Spark への入出力に使える)
- v2.0 -> 統計解析関数、オプティマイザの強化
- v3.0 -> INSERT, UPDATE, DELETE への対応(トライ)
Apache Drill では UDP のマルチキャストを必要とするため、今のところDrill on AWS は動かない。v0.7 で対応予定。