BigData-JAWS 勉強会#11「Snowflake、Cloudera&EMR比較、re:Invent 2017まとめ」参加レポート #bdjaws

2018.02.08

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

はじめに

こんにちは、yokatsukiです。ビッグデータをテーマに扱うJAWS-UGの支部、"BigData-JAWS"の第11回目の勉強会が2018年2月6日、目黒にあるアマゾンウェブサービスジャパンのセミナールームで開催されました。

こちらの参加レポートをお伝えします。

※発表スライドは後日BigData-JAWSのGitHubに公開される予定です。

1.オープニング・支部の説明 (10分)

発表者:株式会社リクルートテクノロジーズ  データテクノロジーラボ部  北沢 匠さん

BigData JAWS勉強会とは

  • NTTドコモさん、AWSさんにご協力いただき、1〜2ヶ月おきに実施している勉強会
  • 参加条件は、「AWSを使ってビッグデータ処理をしている人、しようとしている人」
    • AWS上のシステムでなくてもO.K.
    • メインは別でもデータはS3にある、とか
  • 米国AWSも注目している

2. re:Invent2017でプラチナスポンサーをしてたSnowflake(クラウドネイティブDWH)って何がいいの?

発表者:本橋 峰明さん
概要:GartnerやForresterのレポートで何度もみたので検証してみました。クエリを高速化するためのアーキテクチャやユニークな機能、Redshift/BigQueryとの違い、実際に使っていく中で見えてきた製品の設計思想(妄想含む)についても紹介したいと思います。

自己紹介

  • 現職では、ID-POSのデータをピックアップ、加工して日本購買の縮図としてサービス展開している
  • 検証の一環で、Snowflakeを触ってみた
  • Snowflakeに関する資料は、Slideshareにアップしている

Snowflakeとは

従来型DWHの限界とSnowflake
  • 大量のデータ処理にHadoop/Sparkベースのソリューションは本当に向いているのか?
  • クラウドと言いつつも、単にオンプレのソフトウェアを移植しただけのものもある
  • 最近のDWHはShared Nothing型が多いが、ノード数が増えた時の再分散が問題となる
  • Snowflakeは「マルチクラスタ、共有データアーキテクチャ」
    • ストレージとプロセスを分離している
    • データはストレージで一元管理
    • プロセスを個別に追加可能

Snowflake Computing社

  • 2012年に創業
  • 今までの調達総額は630億円、評価額は1650億円
  • 顧客は1年で300%増加、保存データは4倍
  • 大手ベンダー(Microsoft, Oracle)のアーキテクトが参画してSnowflakeを設計、開発
  • 各BIやETLツールも対応している
  • 日本における実績はこれからのよう(既にあるという話も)

Snowflakeの特徴

  • 直ぐに使い始められる
    • 半構造化データも扱える
  • 使用した分だけ課金
    • AWS上なので秒課金に切り替わった
    • 処理性能をコンピューティングとストレージで調整できる
    • 単一の実行性能と並列実行性能を調整できる
  • "UNLIMITED CONURRENCY"
    • ワークロードを分離することで競合を回避、ボトルネックがない
  • データ共有
    • 「シェアオブジェクト」を作成することで共有
    • 見たい人が独自にコンピュートリソースを確保してデータを参照
  • 高可用性
    • Multi-AZ上に実装
    • Point-in-timeリカバリ可能
  • セキュリティ
    • 暗号化対応

Snowflakeアーキテクチャ

概要

  • SnowflakeはAWS基盤上に構築されたDWHサービスである
  • S3でデータ管理を行う(ステージ/テーブル/キャッシュ)
  • EC2で処理を行う(クラスタ/ウェアハウス/キャッシュ)
  • 専用の管理基盤を提供する(認証認可/インフラ管理/セキュリティ等)

ステージ

  • Snowflakeに取り込むデータを置いておく場所
  • それぞれ目的ごとに分かれている
    • ユーザステージ:ユーザ固有のファイルを置く
    • テーブルステージ:テーブルごとに用意される
    • インターナル・ネームドステージ:複数ユーザや複数テーブルで使える
  • PUTコマンドでステージング領域に入れてCOPYコマンドでテーブルへロードする
    • 既にS3に置かれたファイルはCOPY INTOコマンドで取り込める
  • SnowpipeはサーバレスETLツール
    • SQS通知トリガのロード
    • REST APIをトリガとしたロード

テーブル

  • マイクロパーティション
    • 行単位でパーティション分けし、更に列指向の圧縮を行っている
  • タイムトラベル
    • Point-in-Time問合せ
  • Secure View
    • テーブルのアクセスが制限された状態でもアクセス可能なビュー
    • ファンクションを経由してテーブルにアクセスする

ウェアハウス

  • ストレージと分離されたコンピュート環境
  • クエリやDMLを実行する際に使われる
  • AWS EC2上に実装されている
    • キャッシュはEC2上のSSDに置かれる
  • エディションで機能が異なる
  • Enterprise Editionでは1ウェアハウス内にクラスタを複数作成可能
    • クラスタ作成後はキャッシュが空なのでウォームアップ必要
  • ウェアハウスサイズでスペックを指定
    • エディションとの組み合わせで価格が決定する
  • ウェアハウスのサスペンドが可能
    • サスペンド中は課金されない

リザルトキャッシュ

  • クエリの実行結果をS3に24時間格納している
  • 同じクエリであれば1秒以内に返す

パフォーマンス設計

設計のポイント

  • テーブルのアーキテクチャを理解する
    • マイクロパーティション
    • クラスタリングキー
    • キャッシュ
  • クラスタを必要な処理速度を満たすまで大きくする
    • 同時実行数満たすまでサイズでかくする

Q&A

  • CRUD処理は全部できる?
    • できる
  • トランザクションのコミットアーキテクチャーは?
    • 論文はある、が読み込めていない
  • ORDER BYやCOUNT DISTINCTはできる?
    • できる
  • データウェアハウスだけでなく、データレイクとしての役割も含む?
    • 含む
  • 全てのアプリケーションのデータを管理する仕組みとして使える?
    • 明記はない
  • JSONも対応?
    • 対応しているが、基本SQLで問い合わせる
  • クラスタについて、分散を勝手にしてくれる?
    • 細かい単位に分けるので、再分散が起きない
    • ストレージ(S3)から持ってくるのも速い
  • セキュリティ周りのオーバーヘッドはどう?
    • デフォルトでサーバサイド暗号化しているとのこと

3. Cloudera on AWSとAmazonEMRを両方本番運用し、3つの観点から比較してみる

発表者:株式会社CyberZ 茂木高宏さん
概要:Cloudera on AWSとして、Cloudera社の代表的ツールClouderaDirector/(ClouderaAltus)と、AmazonEMRの特徴を紹介します。Cloudera on AWS/AmazonEMR両方を本番環境で運用し、そこでのアーキテクチャ/エコシステム/運用管理/インフラストラクチャ/性能/課金体系等、様々な観点から比較します。

自己紹介

会社と事例概要

  • 自社でサービスやってます(F.O.X.)
    • スマホ広告におけるマーケティングプラットフォーム
    • Webアプリとして提供
    • 計測サーバに計測ログが送られ、集計
    • ETLおよび集計のところで各種Hadoop基盤を活用している

EMRとCloudera

  • EMRは知ってる参加者が多いので省略!
  • 基盤(アーキテクチャ)とエコシステム
    • 基盤:クラスタやノード
    • エコシステム:Hadoop/Hive/Spark/presto etc...
  • Cloudera on AWSとは
    • CDH(Clouderaのディストリビューション)をAWSで利用すること
    • マネージド型のプラットフォームもある
    • ストレージはS3前提

Cloudera on AWSの構成

  • 基盤(アーキテクチャ)
    • Cloudera Director
    • Cloudera Altus
  • エコシステム
    • CDH
  • エコシステム運用管理
    • Cloudera Manager
    • Cloudera Navigator
  • Director, Altusが全体を包括管理しているので、それとEMRを比較する

本番環境(!)のCloudera Director環境デモ

  • ノード増やしたり

検証環境のCloudera Altus環境デモ

  • PaaSなので、利用申請出せば直ぐに利用できる
  • ジョブを与えると、自動でインスタンスが立ち上がる
    • 人呼んで「Cloudera EMR」

使い分けの観点

先に結論

  • どのエコシステムが使いたいかによる
  • エコシステムのカスタマイズ性で比較、検討するのがよい

エコシステム比較

  • Altusは使い方に制限、YARNとか使えない
  • エコシステムのカスタマイズ性
    • 運用中に構成を変えたくなるが、それに対応できるかできないか
    • ClouderaはCSDを使ってエコシステム追加ができる
  • エコシステムのバージョン管理
    • 新バージョンへの対応はEMRが早そう
    • Clouderaは(契約が要るが)パッチを提供してもらえる
  • エコシステムの拡張性
    • HiveのExternal Database
    • S3整合性管理が必要だが、S3 guardもしくはEMRFSで対応
    • EMRのデータカタログはGlueデータカタログが使える

アーキテクチャ比較

  • 結論としては、どんなプラットフォームでどう使いたいかによる
    • AWSにこだわらず、詳細に設定したいならCloudera Director
    • リリースしたばかりで全体的に機能性が低いのはCloudera Altus
    • AWS新機能含めたアーキテクチャを希望するならEMR
  • クラスタの冗長性
    • AltusやEMRはmasterの冗長性がない
  • プラットフォーム
    • EMRは当然AWS上でしか動作しない
    • 対してCloudera DirectorはAzureでもGCPでもどこでも動く

運用管理比較

  • Cloudera AltesとDirectorはエコシステムに特化した運用管理が効率的
  • Cloudera ManagerやWorkload Analyticsが使える
  • Cloudera Altusはスケールイン/アウトができない
  • EMRは監視ちょっとめんどい
    • ログがS3に吐かれ、調査が辛い
  • 本番Cloudera Manager運用画面デモ
    • 「設定もビッグデータ」(設定項目が多いの意)
    • 設定が日本語で見れるのが嬉しい

課金系比較

  • EMRはEMR利用料金 + EC2インスタンス利用料金
  • 素のDirectorはEC2インスタンス利用料金のみなので、EMR利用料金分だけ安い
  • Altusは最小構成だとEMRより安い、最大構成だとEMRより25%程高くなる

Q&A

  • EMRとCloudera基盤でデータ共有できるか?
    • S3の実データは共有できるが、メタデータストアは共有できない
  • Clouderaの安い構成だとパッチが付いてこない?
    • 付いてこない
    • 独自パッチはCloudera Enterpriseのみ

4.ビッグデータ関連の re:Invent(前後の)アップデート紹介

発表者:アマゾンWebサービスジャパン株式会社 志村 誠さん
概要:昨年 11 月末から 12 月頭にかけて、re:Invent でさまざまなサービスが発表されました。またその前後にも多くのサービスアップデートがありました。このセッションでは,ビッグデータ領域に関するこれらのアップデートをまとめてご紹介します。

自己紹介

  • 前職はHadoopのログ開発基盤担当だった

Amazon Kinesis Video Streams

  • Videoが登場したことで既存サービスの名称変更
    • Amazon Kinesis Data Firehose
    • Amazon Kinesis Data Streams
  • Producer SDKとConsumer SDKを使う
  • Rekognitionと組み合わせて犯罪者のナンバーを追うとか
  • 赤外線センサーのデータを配信とか

Amazon Kinesis Data Firehose

  • Splunk利用可能

AWS Glue

  • 東京で利用可能
  • Scalaサポート(今まではPythonのみ)
    • ワークロードによっては速くなることも
  • Jobトリガーをサポート
    • 成功だけでなく、失敗や止まった条件も追加

Amazon EMR

  • Kerberos認証
  • 詳細なEMRFS許可の有効化
    • IAMロール
  • EMRのバージョンが新しく
    • SageMagerインテグレーション
    • MXNet 0.12.0を利用可能
    • PrestoのGlue Data Catalog対応

Amazon Redshift

  • DC2登場
  • Spectrum東京利用可能
  • WLMの中で実行時間が長いものをキュー移動
  • Short Query Accelaration(SQA)
    • ショートクエリを学習してショートクエリ用の別キューに移動
    • 3倍高速になった例もある
  • Result Cashing

Amazon Athena

  • ODBCドライバ提供開始
  • Geospatialデータへのクエリが可能
  • Prestoエンジンアップグレード
    • 非公開から0.172になった
    • Lambda式が使えるようになった
    • ヘッダ行のスキップができるようになった

Amazon S3

  • S3 Select and Glacier Select
  • WHERE句によるデータ絞込

Amazon Elastic Search Service

  • I3インスタンスを使えるように
    • 最大1.5PB
  • VPCサポート
  • ストレージの暗号化
    • EC2インスタンスも暗号化
  • Slow logsを使えるようになった

Amazon QuickSight

  • プライベートVPCアクセス(プレビュー)
  • 行レベルセキュリティ
  • グラフ強化
    • コンボチャート(折れ線+棒グラフとか)
    • 地理データ
  • フラットケーブルサポート
  • 1000カラムを超える横長データソースをサポート

5.はじめてのSnowball(30分)

今回発表者体調不良のため、次回に持ち越しとなりました…残念。

6.次回発表のテーマ募集・クロージング

次回はとりあえず以下のテーマが予定されました。これは変わるかもしれませんので募集が始まったら改めてご確認ください。

  • Snowball持ち越し(野上さん)
  • S3 SelectのLT(山田さん)
  • Amazon NeptuneLT(北沢さん)
  • WorkflowエンジンについてLT(北沢さん)
  • Airflow on EC2(吉武さん)
  • その他LT枠(特にWorkflowエンジンネタで)を複数

懇親会

懇親会はいつもは目黒駅周辺の居酒屋を使うのですが、今回はAWSオフィス19階総合受付フロア奥のイベントスペースを使っての開催となりました。

流石に10回目ともなるとだいぶ顔見知りも増え、それぞれで濃い目の会話が繰り広げられていました。

次回は来月、3月あたりになりそうです。また参加したいと思います。それでは。