Slide 1

Slide 1 text

Amazon EMR利⽤者が Cloudera Altusを使ってみた感想 株式会社Gunosy 加藤慶⼀ Gunosy Inc. 2017.11

Slide 2

Slide 2 text

Copyright© Gunosy Inc. All Rights Reserved 2 ⾃⼰紹介 加藤慶⼀(カトウノリカズ) twitter: @s_wool 株式会社Gunosy 開発本部 広告技術部 主な業務: アドサーバー周りのデータフローや バッチ処理などをうまいことやってます 私とCloudera: 前職にてCDH 4からCDH 5にアップグレードしたり、 Cloudera ManagerでPrestoを動かすParcelとか作ったりしました。 https://qiita.com/s_wool/items/4fa7932dda7e3f473815 https://qiita.com/s_wool/items/1b42e457ee54d3a0f70a

Slide 3

Slide 3 text

Copyright© Gunosy Inc. All Rights Reserved 3 株式会社Gunosyについて

Slide 4

Slide 4 text

Copyright© Gunosy Inc. All Rights Reserved 4 株式会社Gunosyについて ブログとPodcastやってます! http://tech.gunosy.io/ http://data.gunosy.io/ #gunosyfm mcやってます

Slide 5

Slide 5 text

Copyright© Gunosy Inc. All Rights Reserved 5 広告技術部のプロダクト • Gunosy Ads ← 本⽇話すのはこちら • グノシーやニュースパス上に最適化された広告を配信 • Gunosy Network Ads • 参画いただいているメディアの広告枠に広告を配信 • その他管理画⾯など Gunosy Ads Gunosy Network Ads ※お問い合わせはこちら: https://gunosy.co.jp/contact/

Slide 6

Slide 6 text

Copyright© Gunosy Inc. All Rights Reserved 6 広告と機械学習ワークフロー Gunosy Adsではユーザーに広告という情報を最適に届けることを⽬指しています ÞCTR, CVR(CTVR)の最⼤化 Þ機械学習を⽤いたCTR, CVR推定

Slide 7

Slide 7 text

Copyright© Gunosy Inc. All Rights Reserved 7 広告と機械学習ワークフロー Gunosy Adsではユーザーに広告という情報を最適に届けることを⽬指しています ÞCTR, CVR(CTVR)の最⼤化 Þ機械学習を⽤いたCTR, CVR推定

Slide 8

Slide 8 text

Copyright© Gunosy Inc. All Rights Reserved 8 広告と機械学習ワークフロー Gunosy Adsではユーザーに広告という情報を最適に届けることを⽬指しています ÞCTR, CVR(CTVR)の最⼤化 Þ機械学習を⽤いたCTR, CVR推定 $53$73ਪఆϫʔΫϑϩʔ

Slide 9

Slide 9 text

Copyright© Gunosy Inc. All Rights Reserved 9 ワークフローはdigdagを⽤いて制御しています 広告と機械学習ワークフロー

Slide 10

Slide 10 text

Copyright© Gunosy Inc. All Rights Reserved 10 広告と機械学習ワークフロー Altusに置き換えを検討したのはここ

Slide 11

Slide 11 text

Copyright© Gunosy Inc. All Rights Reserved 11 Cloudera Altusについて ざっくりいうと • パブリッククラウド上に • Web UIあるいはCLIから • CDHクラスタの作成、ジョブのサブミットができる サービス

Slide 12

Slide 12 text

Copyright© Gunosy Inc. All Rights Reserved 12 Cloudera Altusのクラスタ構成 4種類のノードからなる構成 • Cloudera Manager (1台) • Master(1台) • ResourceManager, NameNode, Hive metastore, HiveServer2, Ooozieなど • Worker(最低3台) • NodeManager, DataNode • Compute Worker (0台以上) • NodeManager

Slide 13

Slide 13 text

Copyright© Gunosy Inc. All Rights Reserved 13 ノードの中をのぞいてみた • OSはCentOSの7.3で、centosユーザーでsshログインできます • td-agent がインストールされている! • 設定したs3バケットに/var/log以下の各種ログをtailして転送 • aws-cli 利⽤可能 • 使⽤例:bootstrap scriptでs3に⽤意したライブラリの展開 • bootstrap script:起動時に実⾏されるスクリプト

Slide 14

Slide 14 text

Copyright© Gunosy Inc. All Rights Reserved 14 Altusでできること • ⾼度なモニタリング • Cloudera Managerがインストールされるので詳細なモニタリングが可能 • EMRでは標準でgangliaのインストールは可能 • Gunosyではbootstrap actionでdatadogをインストール • クラスタシャットダウン後にもジョブのログを⾒られる • 特に失敗時に重宝 • YARN/SparkのWebUIを⾒なくても たいていここ⾒て調査できる • ログ検索 • Cloudera Managerからできる • Environment • 特定のSecurity Group/IAM Roleに限定 できる • 設定変更 • 各サービスの再起動 すみません! 勘違いでした!

Slide 15

Slide 15 text

Copyright© Gunosy Inc. All Rights Reserved 15 Altus移⾏時の注意点1 • Hadoop, Hive, Sparkのバージョン差異に注意 • EMR 5.9.0 • Hadoop 2.7.3 • Hive 2.3.0 • Spark 2.2.0 • CDH 5.13 • Hadoop 2.6.0 • Hive 1.1.0 • Spark 2.2.0 • ただし、同じバージョンでもあたっているパッチが違うことがあるので注意

Slide 16

Slide 16 text

Copyright© Gunosy Inc. All Rights Reserved 16 Altus移⾏時の注意点2 • EMRFSを使っている場合に注意 • s3://というスキームでアクセスしてる場合、EMRとその他ディストリビュー ションでは実装が異なる • s3a://に変更して動作確認 • EMRFSの整合性のあるビューを使っている⽅ • S3Guardを設定(Environmentに設定可能) • AWS関連のライブラリ • ビルド時に依存関係を整理する • pom.xmlとかbuild.sbtとかClouderaのリポジトリに向き先を変更 • awslabs/emr-dynamodb-connector など使ってる場合、依存するhadoopバー ジョンが合わないといったことがあった

Slide 17

Slide 17 text

Copyright© Gunosy Inc. All Rights Reserved 17 Altusで(現在)できないこと • apiによる起動、ジョブ追加 • altuscliのソースコード少し覗いてみると、 https://dataengapi.us-west- 1.altus.cloudera.com とかにリクエストしてるのでAPIはある • Pythonでのbotoみたいなのがあるとよりうれしい • Hive Job -> Spark Job のような複数のJob Typeのグループ化が現状不可 • 裏側Oozieなのでできそうなのになと思う • ついでにJobのfork -> joinまでできるとEMRだけでなくDataPipelineからの移⾏ も検討できる • Hive Metastoreの永続化 • クラスタ起動後のWorker, Compute Workerのサイズ変更 • AutoScalingみたいなことがしたい • Job失敗時などの通知機能 • EMRでのCloudwatch Event • 贅沢を⾔えばメールやSlackなどのチャットへ通知

Slide 18

Slide 18 text

Copyright© Gunosy Inc. All Rights Reserved 18 Altusへの要望(機能) 前ページに加えて • 起動時間 • 現状起動から利⽤可能まで20分ほど • EMRも短くはないがおよそ10分 • ⽴てっぱなしの運⽤であればさほど問題ではない • AWSが秒単位課⾦になったのでGunosyではJob毎に起動していた • 動作検証のような使い⽅を安価で実⾏したい • 動作検証の場合、Compute WorkerだけでなくWorkerもSpot Instanceを使いた い(価格⾼騰で落ちたらあきらめるので) • Workload Analyticsで実効時間トレンドから外れた値が出た場合の通知

Slide 19

Slide 19 text

Copyright© Gunosy Inc. All Rights Reserved 19 Altusへの要望(⾮機能) • Single Sign-On対応 • GunosyではAWSへのログインなどでSSO使っているので、ID管理をよせたい • アカウント/請求書分けたい • 各種サービスで使う場合、どのサービスのEnvironmentにいくらかかっているか など分けて管理したい • ⼆段階認証 • SSO対応してれば必要ないが… • altuscliのソースコードをgithubあたりに • 単純に読みたい

Slide 20

Slide 20 text

Copyright© Gunosy Inc. All Rights Reserved 20 まとめ Gunosy Adsで利⽤しているEMRをAltusに置き換えられないか検討しました Altusに移⾏するメリット • Web UIから⾒られるWorkload Analytics • 失敗時に詳細が簡単に⾒られる • 定期Jobでの実⾏時間トレンド • Cloudera Managerによる詳細なメトリクス収集・ログ検索 以下に当てはまる場合は構成の⾒直しが必要か • 秒課⾦+Spot Instanceを利⽤したコスト節約 • 複数Job Typeのフロー