Slide 1

Slide 1 text

Amazon EMR で使う Hue SNS mixi データ分析での利用事例

Slide 2

Slide 2 text

アジェンダ - 自己紹介 - データ分析環境の概要/システム構成 - Amazon EMR で使う Hue - Amazon EMR 概要 - Amazon EMR 上での Hue 利点/欠点 - 運用上のポイント1:Hue への接続方法の工夫 - 運用上のポイント2:Hue データの保全/移行 - まとめ

Slide 3

Slide 3 text

自己紹介 岩瀬 靖彦 [IWASE YASUHIKO] - 株式会社ミクシィ Vantageスタジオ システム部 所属 - 主な担当 - データ分析系のインフラ構築/分析/レポート - 検索や機械学習まわりのプロダクト - 最近興味あること - RNNを使った自然言語処理 - 二児の(家事育児に追われつつできる)教育 https://qiita.com/yaiwase

Slide 4

Slide 4 text

データ分析環境の概要

Slide 5

Slide 5 text

当資料の題材とするサービス:国内最大級の趣味コミュニティ - SNS mixi 提供デバイス - Web/モバイルアプリ コンテンツ - 短文/長文投稿 - コミュニティイベント - ゲーム/ニュース データサイズ - 数100 GB/day - 数10 億行/day

Slide 6

Slide 6 text

システム構成

Slide 7

Slide 7 text

システム構成(データ分析部分)

Slide 8

Slide 8 text

システム構成(データ分析部分) サービス全体がAWS上にあり、データフ ローもAWS内で完結している (分析環境もAmazonEMRで提供)

Slide 9

Slide 9 text

システム構成(データ分析部分) すべてのデータはS3上に格納され、 Hadoop/Hive 側から External Table と して透過的に参照する

Slide 10

Slide 10 text

システム構成(データ分析部分) EMRクラスタは常時起動(タスクごと起動でな く、永続的に稼働) Hueデータも永続的にもち、常時利用可能 (いつでも分析できる環境を提供する)

Slide 11

Slide 11 text

システム構成(データ分析部分) データアナリスト(非エンジニア含む)は Hue/Zeppelin/HiveCLI/内製ビジュアライザを経由 して 自由にデータ参照/分析できる 内製ツールで定常集計のワークフロー管理も行う

Slide 12

Slide 12 text

EMR 利用の経緯/背景 SNS mixi ではデータ分析用としてオンプレでCDH(Hadoop)の データ分析環境を構築 2014年 EMRに移行し、現在まで大きな変更なく稼動中 (適宜 DWH/BIツール等との比較も行っているが、業務的に Mahout/Hue への依存もあり、利便性/費用/移行容易性を 満たす選択肢がなく継続利用している) 2017 現在 2014 Amazon EMR 2011 オンプレCDH

Slide 13

Slide 13 text

Hue の利用状況 - 非エンジニア含め数10-100人程度で利用 - クエリエディタで Hive クエリを生成して実行 - クエリにはカスタムUDF(内製)を作成/利用 - 集計クエリ群はチーム間で共有/管理 - JobBrowser が便利 - MetastoreManager が便利 - 利用バージョン :Hue 3.10

Slide 14

Slide 14 text

Amazon EMR 上で使う Hue

Slide 15

Slide 15 text

Amazon EMR 概要 Amazon ElasticMapReduce AWS で データフレームワーク (Apache Hadoop や Apache Spark など) の実行を簡素化して、大量のデータ処理および分析 するマネージド型クラスタサービス 関連するプロジェクト (Apache Hive や Apache Pig など) を使 用して、分析用のデータやBIワークロードを処理できる http://docs.aws.amazon.com/ja_jp/emr/latest/ManagementGuide /emr-what-is-emr.html

Slide 16

Slide 16 text

EMR 上での Hue 運用の利点/欠点 利点 - セットアップが容易 Hueをコンポーネントに加えクラスタ構築がすぐできる &リソースに問題があれば増減も再構築も気軽にできる - 動作検証済み&適度にチューニング済み 組み合わせたプロダクトの基本機能は検証済みで大体すぐ動 く

Slide 17

Slide 17 text

EMR 上での Hue 運用の利点/欠点 欠点 - ネットワーク設定が面倒 EMR 上の Hue は SSHトンネリングでの利用が推奨されて いるが設定は煩雑なため、非エンジニアが大人数で使うの は現実的でない - EMR と Hue の永続性のスタンスが違う EMR はクラスタ再構築前提だが、Hue は永続利用前提で セットアップされる(クラスタ再構築によって、ローカル保存 のHueデータが失われる)

Slide 18

Slide 18 text

EMR 上での Hue 実運用のポイント(欠点の回避)

Slide 19

Slide 19 text

1. Hue への接続方法の工夫

Slide 20

Slide 20 text

EMR上の Hue への接続方法:EMR推奨の方法(EMR Master へ SSH接続) EMR Master サーバへの SSH トンネリング http://docs.aws.amazon.com/ja_jp/emr/latest/ManagementGuide/emr-we b-interfaces.html - 個別のクライアント(各個人のPC)とEMR Master サーバの間にSSHトンネルをセットアップする - SOCKSプロキシをたて、EMR Master 上にある 個別の WebUI に対してWebブラウザからアクセ スできるようにする

Slide 21

Slide 21 text

EMR上の Hue への接続方法:EMR推奨の方法(EMR Master へ SSH接続) 利点 - 個別コンポーネントのWebUIに確実にアクセスでき る 欠点(たくさんある・・) - チームメンバーに負担がかかる(非エンジニアにター ミナル操作/プロキシ設定を要求する) - SSHで繋ぐため、クライアント(各個人PC)にEMR master への秘密鍵を配る必要がある - クラスタ再構築のたび更新が必要になる - SSH接続してから WebUI 開くまで地味に時間がか かる

Slide 22

Slide 22 text

EMR上の Hue への接続方法:方法1(EMR Master へ https 接続) EMR Master サーバの 8888 ポートを開け、 HTTPS で Hue アクセスさせる - 8888 は Hue のデフォルトポート - 接続元をオフィス出口IPなどに制限する - hue.ini を編集してSSL接続のみ許可する ssl_certificate=/path/to/hue-domain.crt ssl_private_key=/path/to/hue-domain.pem

Slide 23

Slide 23 text

EMR上の Hue への接続方法:方法1(EMR Master へ https 接続) 利点 - チームメンバーへの負担が全くない (ブラウザアクセスですぐ使える) - Hue に接続するだけなら設定が容易 欠点 - WebUI ごとにポート開放が必要 (TezUI/SparkUI など Hue 以外のもの) - WebUI ごとのhttps対応が手間 - Hue などでたどれないリンクが残る (internalドメインで自動生成されるURL)

Slide 24

Slide 24 text

EMR上の Hue への接続方法:方法2(リバースプロキシ経由 https 接続) リバースプロキシ(LBでも可)を配置し、そのサー バ経由で Private 領域の Hue を参照する - EMR Master サーバとは別に、プロキシサーバを構 築する - クライアントからプロキシサーバは https、プロキシ サーバからは httpで Hue アクセスさせる(Hueの SSL設定は不要)

Slide 25

Slide 25 text

EMR上の Hue への接続方法:方法2(リバースプロキシ経由 https 接続) 利点 - チームメンバーへの負担が全くない (ブラウザアクセスですぐ使える) - Hue 以外のWebUIの公開も容易 - コンテンツ書き換え処理によって、すべてのリンク をたどれるようにできる 欠点 - EMRとは別にプロキシサーバを構築する必要があ る

Slide 26

Slide 26 text

EMR上の Hue への接続方法 まとめ:方法2(リバースプロキシ経由 https 接続) SNS mixi では 方法2(Global でなく VPN による Local Network 経由)を採用している 下記利点が得られる - 多数の非エンジニアに優しい - Hue 以外のWebUIの公開も容易 (TezUI/YarnResourceManager/SparkHistory UI なども容易に利用できる) - すべてのリンクを繋げられる 設定例:EMR 上の WebUI をSSHトンネルなしでブラウザ表示する方法 https://qiita.com/yaiwase/items/907589155d90722533dc

Slide 27

Slide 27 text

2. Hue データの保全/移行

Slide 28

Slide 28 text

Hue はクラスタ内にデータを保持するため、クラスタ再構築に備える必要がある EMRは個別のコンポーネントについてデータ保全をサポー トしていないため、個別にバックアップ/データ移行を考え る必要がある 移行したい Hue データ - Hueユーザ情報(認証情報など) - ユーザの作成したクエリ群/共有クエリ群 - クエリ実行履歴/実行結果

Slide 29

Slide 29 text

Hue データの所在:デフォルトでは EMR Master サーバ内 Hue の設定にある、 Database 項 目に書かれたDBに格納されている (デフォルトはEMR Master サーバ 上) EMRとは別のサーバ/ストレージ にDBをおく方法もありかも?(アッ プグレード時のバージョン相違が問 題になりそう)->Dump/Loadが現 実的 /etc/hue/conf/hue.ini [[database]] engine = mysql name = huedb host = ip-xxx.xxx.compute.internal user = hue password = xxxxxxxxxx

Slide 30

Slide 30 text

Hue データのバックアップ方法:Hue Shell dumpdata dumpdata コマンドでダンプ取得す る(移行時に不要なデータはオプ ション指定して削る) 定期的に Dump 取得し、追加の Storage/S3 等に転送して履歴を 保存する - 履歴には数週間程度のライフ タイムを設定しておく - S3 なら信頼感高く安全にデー タ保全できる sudo /usr/lib/hue/build/env/bin/hue \ dumpdata \ --exclude auth.permission \ --exclude contenttypes \ > hue_data_backup.json

Slide 31

Slide 31 text

Hue バックアップデータのリストア方法:Hue Shell loaddata Storage/S3 等から移行先EMRク ラスタへ Hue データを展開し、 loaddata コマンドでHue DB へデー タを流し込む Load が正常に行われれば、移行 元のクラスタと全く同様にHueログ イン/操作できる sudo /usr/lib/hue/build/env/bin/hue \ loaddata \ hue_data_backup-jq.json Installed 999999999 object(s) from 999 fixture(s)

Slide 32

Slide 32 text

注意:Hue バージョンによりデータ移行できないケースがある EMRのコンポーネントは個別にバージョンコントロール出来 ないため、ほかコンポーネントを優先すると後方互換性がな い Hue バージョンになるケースがありうる データ移行が可能なバージョンを選択するか、あるいはバー ジョンを据え置く(問題が解消されるのを待つ)など、状況に 応じて対応する 事例:EMR 4->5 バージョン間で Hue データを移行する http://qiita.com/yaiwase/items/1a2da951e002ce8f612f

Slide 33

Slide 33 text

Hue データの保全/移行方法 まとめ EMR クラスタはある程度頻繁に再構築する前提で運用する が(多様なコンポーネントの機能追加や改善を取り込みた い)、Hue はそのサイクルに対応する必要がある SNS mixi では dumpdata/loaddata を利用してHue デー タ保全/移行を行っている Dumpデータは複数クラスタにLoadできるため、バージョン の異なるクラスタでの動作検証にも活用できる

Slide 34

Slide 34 text

まとめ

Slide 35

Slide 35 text

まとめ:Amazon EMR 上での Hue 運用のポイント 利点 - EMR 上での Hue セットアップは容易 適度にチューニング済みの環境がすぐ構築できる 欠点と回避法 - Hue への接続にはいくつか選択肢があるが、利用状況に合わせて適切な方法 を選ぶ(リバースプロキシ経由がおすすめ) - Hue データの保全/移行を考える必要があるが、Hue Shell dumpdata/loaddata を使うとよい ぜひお試しください! &より良い方法あったらご意見ください!

Slide 36

Slide 36 text

ご清聴ありがとうございました