EMR上でHiveを使うときのチューニングメモ
AWS EMR(Elastic MapReduce)でHiveを使うときに使えそうなチューニング情報。
そもそもMapReduceの仕組みと、Hiveが裏でやってくれる事を理解していないと、出来ないチューニングポイントの方が多いのですが、ここらにあるということだけを、メモしておきます。新しいものは、勉強が必要。
公式系
どうしても基本は英語のサイトになりますが、どちらも読み込めると良さそうです(まだEMR側しか読んでないけど。。。)
Apache Hive
aws documentation
- How Amazon EMR Hive Differs from Apache Hive
- ApacheHiveと異なる点が説明されています
- Hiveの動作ログの保存先が異なる (EMR: /mnt/var/log/apps/, hive_{version}.log)
- Hive Authorizationは使えません
- 出力パスがS3だった場合はHive File Mergeの動作が異なります
- などなど
- ApacheHiveと異なる点が説明されています
- Additional Features of Hive in Amazon EMR
- Amazon EMR用に追加された機能が説明されています
- S3へ直接データーを書く
- S3上にテーブルデーターがある場合のパーティショニングの回復 (recover partitions)
- Hiveスクリプト内の変数のサポート
- Amazon EMR チームが開発して適用したHiveパッチ(Committed, Not Submittedの2種があった)
- Amazon EMR用に追加された機能が説明されています
- Supported Hive Versions
- EMRではHiveバージョンをHadoppバージョンと共に指定することが出来るので、その参考に
ブログ系
日本語のエントリーもままありました。必要な方は、実業務で使ってる状況ですね。
一点だけ注意が必要かと思ったのは、Hive自身のバージョンアップにより対応できる文法が増えてたりするので、そのあたりの知識を裏にもって読まないとと思いました(自分が使うバージョンが新しいと、出来るようになってることも多い)
- OpenGroove ほぼやけくそHive Hacks
- TIPS形式で沢山列挙されています。
- wyukawa’s blog Multitable insertとhive.exec.parallel
- ジョブの並列動作 hive.exec.paralle が有効なケースなどが説明されてます。サンプルコードがあるり、判断基準も記載されてるのでわかりやすい
- HiveQL
- HiveQLのメモという形で、構文などが多く紹介されています。
- Performance Issues in Hive with S3 and Partitions
- 3階層, 6500以上の1M以下のファイルからなるS3パーティショニングに対し、特定selectのレスポンスがFlatと大きく違うという投稿。解決まではかかれてないのだけど、 Hive.optimize.s3.query=true の存在はこちらで知りました。
- 4 tips from the trenches of Amazon Elastic MapReduce and Hive
- EMR使う上でのTIPSが紹介されてました。タイトルの割りにHive特化でもない?
本
調べていくと、手元にオライリー置いておきたくなってきた。ここまでの情報が日本語として販売されているということの価値を感じました。
- O'REILLY プログラミング Hive
- 10章 チューニング
- 11章 その他のファイルフォーマットと圧縮
- 21章 HiveとAmazon Web Services(AWS)
- O'REILLY Hadoop Hacks――プロフェッショナルが使う実践テクニック
- 4章 Hive Hacks
- Hadoopファーストガイド
- Chapter 5 SQLライクにMapReduce処理できるHive
- 著者のsasata299さんのポストにもありますが、Hadoop聞いたことあるけど使った事ないなぁという人にピッタリだと思います。使ってみるところは、すべてEMR上で実施する手順です。
- パターンでわかるHadoop MapReduce -ビッグデータのデータ処理入門-
- EMRとHiveには触れられてなく、Hadoopに適用するのにベストなパターンが具体例と共に紹介されています。買ったのですが、まだ活用できてないです。。。