case study: olap usability on spark and hadoop

47
Hadoop/Spark と OLAP ととととととと ( ととととととととととと ) 2016 と 10 と 27 と とと とととととと とと とと

Upload: hadoop-summit

Post on 06-Jan-2017

633 views

Category:

Technology


1 download

TRANSCRIPT

Page 1: Case Study: OLAP usability on Spark and Hadoop

Hadoop/Spark と OLAP の連携の使用感( オープンデータを使って )

2016 年 10 月 27 日                              日本電気株式会社 新郷 美紀

Page 2: Case Study: OLAP usability on Spark and Hadoop

2 © NEC Corporation 2016

自己紹介

氏名 新郷 美紀

ビッグデータ歴 3 年。

当社のラックタイプで 1 台に 700 サーバ搭載可能な大規模のサーバ製品で Hadoop/Spark を活用。

以降、ビッグデータ・ソリューション・アークテクトとして活動。

2015 年 9 月より ODPi ( Open Data Platform Initiative )の NEC の窓口。

分散処理、分析処理基盤のアーキテクチャ検討・実装がメイン業務。

Page 3: Case Study: OLAP usability on Spark and Hadoop

3 © NEC Corporation 2016

ビッグデータの必要性

データ単体では利用価値の低い情報も、データ容量の増加・他の情報と掛け合わせることで利用価値が高められる

2. 他の情報を付加することで 理解できること ・人気の施設は利用客が多 いか ・天気の違いで利用客数が 変わるか

1. データボリュームが増える ことで理解できること ・どの位置で乗降が多いか ・渋滞はどの時間帯で起きるか ・平日と休日で利用場所が変 わるか (ビジネス用途かレジャー用途か)

3. ドメイン知識のある 人の知見が加わること でソリューションになる(活用のポイントが明確化できる)

Page 4: Case Study: OLAP usability on Spark and Hadoop

4 © NEC Corporation 2016

1. データ量・新たなデータタイプの増加 ・企業で扱えるデータも増えた ・さらにオープンデータも活用できるようになってきた (といっても海外の方が進んでるけど。。。。)

→ オープンデータだけを使ってみよう!

2. ビッグデータ処理基盤も整備されてきた ・ Hadoop/Spark 関連技術の進化 ・データ分析エコシステムの進歩 機械学習、ディープラーニングなどいろんなものが使えるようになってきた ・データアクセス高速化技術の進歩 OLAP ツール等で使えるものが増えてきた

→ OLAP ツールで既存の BI との連携がどれだけ早いか試してみよう!

ビッグデータを取り巻く環境

Page 5: Case Study: OLAP usability on Spark and Hadoop

5 © NEC Corporation 2016

本日のテーマ1. Hadoop/Spark から OLAP ツールにデータを渡すための準備2. MLlib で準備できたデータの傾向・特性を把握3. OLAP ツールを用いた BI 接続の使用感

本セッションの目的

マスタデータ・統合データの

生成

OLAP 設計・BI ツール接続

価値創造

ビジネスユースに資する

サービスへ機械学習によるデータ特性把握

データ準備 データ特性把握

データ分析・レポート

Hadoop/Spark エコシステムと OLAP 連携で実現可能

データ

オープン・データ

(無料で入手可能)

Page 6: Case Study: OLAP usability on Spark and Hadoop

6 © NEC Corporation 2016

本日のテーマ1. Hadoop/Spark から OLAP ツールにデータを渡すための準備2. MLlib で準備できたデータの傾向・特性を把握3. OLAP ツールを用いた BI 接続の使用感

本セッションの目的

マスタデータ・統合データの

生成

OLAP 設計・BI ツール接続

価値創造

ビジネスユースに資する

サービスへ機械学習によるデータ特性把握

データ準備 データ特性把握

データ分析・レポート

Hadoop/Spark エコシステムと OLAP 連携で実現可能

データ

オープン・データ

(無料で入手可能)

データは貯めたけど使えてない

Page 7: Case Study: OLAP usability on Spark and Hadoop

7 © NEC Corporation 2016

本日のテーマ1. Hadoop/Spark から OLAP ツールにデータを渡すための準備2. MLlib で準備できたデータの傾向・特性を把握3. OLAP ツールを用いた BI 接続の使用感

本セッションの目的

マスタデータ・統合データの

生成

OLAP 設計・BI ツール接続

価値創造

ビジネスユースに資する

サービスへ機械学習によるデータ特性把握

データ準備 データ特性把握

データ分析・レポート

Hadoop/Spark エコシステムと OLAP 連携で実現可能

データ

オープン・データ

(無料で入手可能)

高度分析って何に使えるの

Page 8: Case Study: OLAP usability on Spark and Hadoop

8 © NEC Corporation 2016

本日のテーマ1. Hadoop/Spark から OLAP ツールにデータを渡すための準備2. MLlib で準備できたデータの傾向・特性を把握3. OLAP ツールを用いた BI 接続の使用感

本セッションの目的

マスタデータ・統合データの

生成

OLAP 設計・BI ツール接続

価値創造

ビジネスユースに資する

サービスへ機械学習によるデータ特性把握

データ準備 データ特性把握

データ分析・レポート

Hadoop/Spark エコシステムと OLAP 連携で実現可能

データ

オープン・データ

(無料で入手可能)

BI で連携すると遅い

Page 9: Case Study: OLAP usability on Spark and Hadoop

9 © NEC Corporation 2016

アジェンダ

1. 今回の検証の概要

2. Hadoop/Spark から OLAP ツールにデータを渡すための準備

3. MLlib で準備できたデータの傾向・特性を把握

4. OLAP ツールを用いた BI 接続の使用感

5. まとめ

Page 10: Case Study: OLAP usability on Spark and Hadoop

10 © NEC Corporation 2016

検証システムのイメージ

データソース

Flume

Hadoop ( MR, HDFS)Spark

- データの蓄積

Hive

Spark SQLODBCJDBC

OLAP

BI ツール( Tableau 等)

- ETL- クエリ

今年 2 月の検証( Hadoop/Spark Conference)

データソース

Flume

Hadoop ( MR, HDFS)SparK

HiveSpark SQL

ODBCJDBC

BI ツール( Tableau 等)

- ETL- 機械学習

今回の検証

- クエリ- キューブ

レスポンスがもっと早くなることを期待

(利用者がストレスを感じなく なるくらい)

MLlib

ETL オフロード簡単かつリーズナブルに実装可能

- データの蓄積

ビッグデータ可視化の性能を徹底検証 ~ SparkSQL 、 Hive on Tez 、 Hive LLAP を用いた既存 RDB データ処理の特徴~http://www.slideshare.net/uprush/sparksqlhivebenchbynechwxathcj16

そこそこ早くはなった

Page 11: Case Study: OLAP usability on Spark and Hadoop

11 © NEC Corporation 2016

OLAP をうまく使うためのポイント

OLAPデータソース

Flume

Hadoop ( MR, HDFS)SparK

HiveSpark SQL

BI ツール( Tableau 等)

MLlib赤枠の部分を面倒みることで多くのユーザが分析できるようになる

BI ツール( Tableau 等)

分析ツール( Zeppelin )

利用可能なデータに加工・変換する機能

① 取得した生データが使えそうかのあたり( 1万行等で見てみる)

②マスタデータ・統合データ作成(クレンジング、 ノーマライズ等)

a. データ準備分析用のテーブル構成の見極めに用いる機能

③ 分析・集計してみたいデータの傾向・特性を把握

新しいデータ・タイプは利用用途に適したテーブル構成を得るまで試行錯誤が必要

b. データの傾向・特性の把握

BI のレスポンス向上に必要な機能

④ Cube の作成③の知見に基づきCube を構成

⑤ ビジネスユーザがさまざまな視点でアドホックに集計分析

c. OLAP での BI接続

Page 12: Case Study: OLAP usability on Spark and Hadoop

12 © NEC Corporation 2016

検証内容と利用リソースの概要実施内容: ニューヨークタクシーのオープンデータ(実データ)を用いて、コミュニティバスの運営企画者の 気持ちになり、コミュニティバスを走らせて儲かりそうなルートを作成。

1. 今回用いる3つのオープンデータ - ニューヨークのタクシーの走行データ ・ イリノイ大学ライブラリ 提供 ・ ニューヨーク市のタクシー・リムジン委員会 提供 参考 URL: http://www.nyc.gov/html/tlc/html/about/trip_record_data.shtml

https://databank.illinois.edu/datasets/IDB-9610843 - 気象データ   Quality Controlled Local Climatological Data 参考 URL:http://www.ncdc.noaa.gov/qclcd/QCLCD?prior=N - ニューヨークの主要な施設関連データ Yelp ( Yelp, Inc. が運営するローカルビジネスレビューサイト) 参考 URL: https://www.yelp.com/developers2. 今回用いる OLAP ツール Kyvos Insight (商用ベースですいません。オープンソースだと Apache Kylin とかあります) 参考 URL: http://www.kyvosinsights.com/ 3. 今回用いる BI ツール Tableau (最近特に有名どころなので) 参考 URL: http://www.tableau.com/ja-jp

Page 13: Case Study: OLAP usability on Spark and Hadoop

13 © NEC Corporation 2016

1万件の NYC Taxi の生データを BI ツールで見たところ( 2,3 分あれば、こういう可視化ができるのは BI ツールの良いところ)

生データの可視化

① 取得した生データが使えそうかのあたりをつける

Page 14: Case Study: OLAP usability on Spark and Hadoop

14 © NEC Corporation 2016

検証システムの概念データモデルデータソース

(オープンデータ etc )マスターデータ

蓄積統合・分析 BI ツール

天気情報

施設ランキング情報( yelp )

施設情報(範囲)

タクシー料金データ

タクシー運行データタクシー

運行データ

タクシー料金デー

天気情報

施設ランキング情報( yelp )

人が定義

施設統合データ

統合データ

・クレンジング・ ETL

・統合・パーティ

ショニング

・集計命令、  集計結果

施設情報(範囲)

レポート

集計データ

機械学習結果

・機械学習

Cube

Page 15: Case Study: OLAP usability on Spark and Hadoop

15 © NEC Corporation 2016

Express Server

DX2000  Manager Node 1 台  Master Node 5 台  Slave Node 38 台

BI ツール収集

ETL(Spark)

マスターデータ蓄積 / 統合・分析

データベース( Hive+HDFS )

HDP (Hortonworks )

機械学習傾向分析統合処理

( Spark, R, MLLIB )

Tableau

CSVファイル( HDFS )

非構造化データ蓄積 / 加工

機械学習結果 OLAP(Kyvos)

SparkSQL統合処理結果

Kyvos

cube

データ分析(Tableau)

分析結果レポート

データソース

Web

収集ツール/ コマンド

REST API

HTTP

検証システム構成図

Page 16: Case Study: OLAP usability on Spark and Hadoop

16 © NEC Corporation 2016

1,395,244,966 レコード

施設ランキング情報Yelp API にて取得 |-- categories |-- deals | |-- (略) |-- display_phone |-- gift_certificates | |-- (略) |-- id |-- image_url |-- is_claimed |-- is_closed |-- location | |-- address | | |-- element | |-- city | |-- coordinate | | |-- latitude | | |-- longitude | |-- country_code | |-- cross_streets | |-- display_address | | |-- element | |-- geo_accuracy | |-- neighborhoods | | |-- element | |-- postal_code | |-- state_code |-- menu_date_updated |-- menu_provider |-- mobile_url |-- name |-- phone |-- rating |-- rating_img_url |-- rating_img_url_large |-- rating_img_url_small |-- review_count |-- reviews | |-- (略) |-- snippet_image_url |-- snippet_text |-- url

541レコード

統合データ

データソースと統合データタクシー運行/料金データhttps://databank.illinois.edu/datasets/IDB-9610843(運行データ)medallionhack_licensevendor_idrate_codestore_and_fwd_flagpickup_datetimedropoff_datetimepassenger_counttrip_time_in_secstrip_distancepickup_longitudepickup_latitudedropoff_longitudedropoff_latitude

(料金データ)medallionhack_licensevendor_idpickup_datetimepayment_typefare_amountsurchargemta_taxtip_amounttolls_amounttotal_amount

タクシー運行&料金データhttp://www.nyc.gov/html/tlc/html/about/trip_record_data.shtmlvendor_idpickup_datetimedropoff_datetimepassenger_counttrip_distancepickup_longitudepickup_latituderate_codestore_and_fwd_flagdropoff_longitudedropoff_latitudepayment_typefare_amountsurchargemta_taxtip_amounttolls_amounttotal_amount

1,395,244,966レコード

380,633,912 レコード

天気情報http://www.ncdc.noaa.gov/orders/qclcd/WBANWMOCallSignClimateDivisionCodeClimateDivisionStateCodeClimateDivisionStationCodeNameStateLocationLatitudeLongitudeGroundHeightStationHeightBarometerTimeZone

319,393,646 レコード

Page 17: Case Study: OLAP usability on Spark and Hadoop

17 © NEC Corporation 2016

Taxiタクシー IDドライバーライセンス乗車日時降車日時乗客数賃走時間(秒)賃走距離乗車緯度乗車経度降車緯度降車経度支払方法運賃サーチャージ消費税チップ額通行料金総額

Partitioned by乗車時間(年)乗車時間(月)

マスタ・データ

施設統合データ施設 ID施設名称施設種別中心緯度中心経度最小緯度最小経度最大緯度最大経度

統合結果タクシー IDドライバーライセンス乗車日時降車日時乗客数賃走時間(秒)賃走距離乗車緯度乗車経度降車緯度降車経度支払方法運賃サーチャージ消費税チップ額通行料金総額乗車施設 ID降車施設 ID

Partitioned by年月

施設データ施設名称施設種別中心緯度中心経度

統合データ

データ・スキーマ

Climate日にち+時間天候視界乾球温度(摂氏)湿球温度(摂氏)露点温度(摂氏)相対湿度風速風向き気圧降水量

Partitioned by日にち(年)日にち(月)

Page 18: Case Study: OLAP usability on Spark and Hadoop

18 © NEC Corporation 2016

アジェンダ

1. 今回の検証の概要

2. Hadoop/Spark から OLAP ツールにデータを渡すための準備

3. MLlib で準備できたデータの傾向・特性を把握

4. OLAP ツールを用いた BI 接続の使用感

5. まとめ

Page 19: Case Study: OLAP usability on Spark and Hadoop

19 © NEC Corporation 2016

データを渡すための準備の概要

▌ETL処理( Extract / Transform / Load )拾ってくるデータ自体には正しくないデータが多い。Hive に格納する前に元データからただしくないデータを削除するなどの加工 ( クレンジング ) を行う ETL 処理が必要になる。

タクシー料金データ タクシー

Yellow cabデータ

タクシー運行データ

CSV, json, …

ETL

タクシー

天気

施設

Hive table

Spark2.0

で実装

Page 20: Case Study: OLAP usability on Spark and Hadoop

20 © NEC Corporation 2016

データを渡すための準備のポイント (1)

medallion license pickup_datetime dropoff_datetime …

2010006241 2010023523 2010-01-07 12:52:00 2010-01-07 13:04:00 …2010003044 2010012294 2010-01-16 12:39:00 2010-01-16 12:45:00 …2010003667 2010024794 2010-01-20 19:15:00 2010-- 19:23:00 …2010000073 2010017381 2010-01-22 17:55:00 2010-01-22 12:56:00 …

dropoff_datetimeが不正なため、このレコードは排除

▌クレンジングスキーマに合わないレコードの削除は spark でファイル読み込み時に行う

•例

–格納するスキーマを定義DROPMALFORMEDモードを利用するとスキーマに合わないレコードを排除しつつ生データを読込むことができる

val trip_df = spark.read.option("header", "true").option("mode", "DROPMALFORMED").schema(tripSchema).csv(“taxi_trip.csv”)

val tripSchema = StructType(Seq( StructField(“medallion”, StringType, true), StructField(“license”, StringType, true), StructField(“pickup_datetime”, TimestampType, true), StructField(“dropoff_datetime”, TimestampType, true), : ) )

Page 21: Case Study: OLAP usability on Spark and Hadoop

21 © NEC Corporation 2016

データを渡すための準備のポイント (2)不正データのクレンジング

• 時間が逆行しているデータを排除

降車時間 - 乗車時間 < 0 のデータ排除

• 時間が掛かり過ぎているデータを排除データ全体を見ると、3時間未満の利用がほとんどで、それ以上は郊外等への移動ばかりであり、 分析する際にノイズとなりえるため、3時間以上の乗車データは排除

降車時間 - 乗車時間 > 3 時間 のデータ排除

•例

medallion license pickup_datetime dropoff_datetime …

2010006241 2010023523 2010-01-07 12:52:00 2010-01-07 13:04:00 …2010003044 2010012294 2010-01-16 12:39:00 2010-01-16 12:45:00 …2010000073 2010017381 2010-01-22 17:55:00 2010-01-22 12:56:00 …

時間が逆行しているため、不正なデータとしてレコードを排除

val hour3 = 60 * 60 * 3trip_df.filter(unix_timestamp($"dropoff_datetime") - unix_timestamp($"pickup_datetime") >= 0 and unix_timestamp($"dropoff_datetime") - unix_timestamp($"pickup_datetime") < hour3)

Page 22: Case Study: OLAP usability on Spark and Hadoop

22 © NEC Corporation 2016

▌加工ID の付与

タクシーデータとの統合で扱いやすくするために施設データに ID を付与spark の monotonicallyIncreasingId で任意の ID を付与

ランドマークの範囲定義タクシーの降車位置に近い施設を特定するため、施設の大きさを定義し、施設種別ごとに施設の大きさを定義しその範囲をデータに追加

df.select(monotonicallyIncreasingId as "square_id", $"landmark_type", $"landmark_name", ...)

データを渡すための準備のポイント( 3 )

Page 23: Case Study: OLAP usability on Spark and Hadoop

23 © NEC Corporation 2016

データを渡すための準備のポイント (4)• 場所でクレンジング※ magellan が Spark2.0未対応のため、ニューヨーク近辺を大よその四角で囲い タクシーの乗降車位置がその枠内かどうかで判断

最小緯度 /経度 =40/-75, 最大緯度 /経度 =42/-73

•例( spark )trip_df.filter(($"pickup_latitude" > 40) and ($"pickup_latitude" < 42) and ($"pickup_longitude" > -75) and ($"pickup_longitude" < -73) and ($"dropoff_latitude" > 40) and ($"dropoff_latitude" < 42) and ($"dropoff_longitude" > -75) and ($"dropoff_longitude" < -73))

pickup_longitude pickup_latitude dropoff_longitude dropoff_latitude …

-74.690208 40.280163 -74.540413 40.513279 …0. 446716 41.187134 -74.446716 41.187134 …-74.256638 40.790928 -74.246391 40.794861 …

ニューヨークからかけ離れた位置情報のため無意味なデータとしてレコードを排除

Page 24: Case Study: OLAP usability on Spark and Hadoop

24 © NEC Corporation 2016

▌テーブル保存利用時の効率を上げるためのポイント

•ファイルフォーマット– Hive では、 Parquet より ORC の方が効率が良いため、 ORCフォーマットで保存

•パーティション– 検索効率を上げるためにもパーティションは必須– 今回はそこまで膨大なデータ量でもないため、年&月くらいでパーティショニング

• 位置情報でソート– 年月でフィルターした後は、位置情報でデータを検索することが想定されるため、緯度 /経度でソーティング

パーティションは、あまり細かく分けすぎると逆に性能劣化につながってしまうので注意が必要

Tips

Spark DataFrame からパーティショニングして Hive テーブルに保存することは出来ないので、一度、一次テーブルに保存した後、 HiveQL でテーブル生成&データロードを行った

Tips

データを渡すための準備(保存方法)

Page 25: Case Study: OLAP usability on Spark and Hadoop

25 © NEC Corporation 2016

DAG Event Timeline

1Stage で構成できており、各 executor は終始並列に実行できている

ほとんど演算処理(緑の部分)のみになっており、CPU をフルに使用出来ている

--executor-cores=12 で実行しているため、最大12 多重実行

統合テーブル作成ジョブの実行状況

ETL のチューニング状態

Page 26: Case Study: OLAP usability on Spark and Hadoop

26 © NEC Corporation 2016

アジェンダ

1. 今回の検証の概要

2. Hadoop/Spark から OLAP ツールにデータを渡すための準備

3. MLlib で準備できたデータの傾向・特性を把握

4. OLAP ツールを用いた BI 接続の使用感

5. まとめ

Page 27: Case Study: OLAP usability on Spark and Hadoop

27 © NEC Corporation 2016

データの傾向・特性の把握

▌データ集計に関する課題BI ツールを適用する前のデータ処理において、データ処理、結果確認を何度も繰り返す場合がある。例えば、今回のシステムではこの機械学習など。

Spark-shell などインタラクティブなツールは存在するが、結果が分かりにくい!???

③ 分析・集計してみたいデータの傾向・特性を把握

Page 28: Case Study: OLAP usability on Spark and Hadoop

28 © NEC Corporation 2016

Hadoop エコシステム

データ傾向・特性を理解するためのツール▌Apache Zeppelin

interpreter と呼ばれるプラグインを通じて、各種データソース、言語間を連携し、データを処理・集約し、可視化することができる。

Spark2.0 では、起動時の Version チェックでエラーが発生する為、最新版をダウンロードしてインストールする必要がありました。 (2016 年 10 月点)

Tips

ApacheSpark

ApacheHive

ApacheHive

interpreter ApacheSpark

ApacheHive

HadoopHDFS R

可視化

連携

その他言語等

Apache

Hive

外部サービス等

Apache

Hive

BIGQUERY

ApacheHive

( HTML )

Page 29: Case Study: OLAP usability on Spark and Hadoop

29 © NEC Corporation 2016

今回の Apache Zeppelin 利用方法

▌利用図可視化して結果を確認し、各パラメータを調整の繰り返しが必要。Apache Zeppelin は上記繰り返し作業を一つのアプリ内で出来る Webベースのツールであり、 データの傾向・特性“あたり”をつける作業に向いている。

Apache Spark ( Spark SQL & Mllib)

HDFS

データ読み込み

DataFrame 化

構造化データ

データ加工(機械学習)

Filtering Vector 化 K-means 機械学習結果

データ加工(ヒートマップ)

Filtering ヒートマップ用結果

sampling

JSON 化

JSON 化

可視化

(パラメータ ) (パラメータ )

(パラメータ )(パラメータ )

(パラメータ )

ユーザ

・結果確認・パラメータ調整

ApacheHive

Page 30: Case Study: OLAP usability on Spark and Hadoop

30 © NEC Corporation 2016

データ特性の把握例

ある一定の場所で Taxi の乗車が多いことが見て取れる

人気スポットがありそうか、時間帯で違いがありそうかなど、気になる特性を機械学習等で理解しておく。

GoogleMAPAPI 連携( 機械学習+ヒートマップ )

曜日と時間と乗客数の傾向を確認

金曜日、土曜日、日曜日の順に最も乗客数が少ない時間がずれ込む傾向にある

月火水木金土日

0 時 12 時 23 時

全データの曜日別集計

1 年分データの日別集計

シンプルな集計

風の強さの分布

Page 31: Case Study: OLAP usability on Spark and Hadoop

31 © NEC Corporation 2016

MLLib を予測に適用する例

▌予測モデル生成 と 予測モデル適用 の流れMllib を用いることによりデータの分類、予測モデルの生成等が可能。データ処理、モデルのトレーニングの各フェーズで、便利な機能が準備されている。

Hive

Spark

予測モデル

val hivectx = new HiveContext(sc);val taxi = hivectx.sql(“select … from Table1”)val joinedtable = taxi.join(climate,….,”inner”).xxx

DataFrame

val YoubiIndexer = new StringIndexer().setInputCol(“youbi").setOutputCol("youbiIndex")val assembler = new VectorAssembler().setInputCols(Array("year“… )).setOutputCol("features")val scaler = new StandardScaler().setInputCol(assembler.getOutputCol)…

val gbt = new GBTRegressor().setLabelCol("cnt").setFeaturesCol("scaledFeatures")val pipeline = new Pipeline().setStages(Array(YoubiIndexer,assembler,scaler,gbt))val cross = new CrossValidator().setEstimator(pipeline).setEvaluator(evaluator).xxxval model = cross.fit(JoinedTable)

Index 化、 Vector 化、標準化をサポートする便利な機能群!

統一された使用方法と、ハイパーパラメータ最適化のための機能群!

おなじみの SQL によるデータ抽出

予測モデル

Hive

予測結果val predictions = model.transform(testData)

作成した予測モデルで変換するだけ!

予測モ

デル

生成

予測モ

デル適

SQL でデータ抽出

機械学習の前処理

機械学習

SQL でデータ抽出

予測モデル適用

Page 32: Case Study: OLAP usability on Spark and Hadoop

32 © NEC Corporation 2016

予測モデル作成 予測!

MLLib を予測に適用する例

▌実際の予測結果実際の乗車人数を 95% 学習データ、 5% をテストデータに分けて、予測評価を実施

予測モデル(Gradient-boosted

tree regression)

統合情報・乗客日時、曜日・乗客数・風の強さ・気温・降雨量(全データの 95% )

予測モデル(Gradient-boosted

tree regression)

統合情報・乗客日時、曜日・乗客数・風の強さ・気温・降雨量(全データの 5% )

統合情報・乗客日時、曜日・乗客数・乗客数 予測・風の強さ・気温・降雨量

グラフ化

乗客数乗客数予測

Page 33: Case Study: OLAP usability on Spark and Hadoop

33 © NEC Corporation 2016

アジェンダ

1. 今回の検証の概要

2. Hadoop/Spark から OLAP ツールにデータを渡すための準備

3. MLlib で準備できたデータの傾向・特性を把握

4. OLAP ツールを用いた BI 接続の使用感

5. まとめ

Page 34: Case Study: OLAP usability on Spark and Hadoop

34 © NEC Corporation 2016

Kyvos insight はこんな感じ

今回使用した OLAP ツールの概要

分散クエリシステム

変換 Cube 設計 Cube

Page 35: Case Study: OLAP usability on Spark and Hadoop

35 © NEC Corporation 2016

Kyvos の特徴

・大規模データでも処理が可能 ・ Hadoop と BI 間の遅延を改善

・エンタープライズレベルのセキュリティを実装可能

・特性 - ノンプログラミングでデータを加工し Cube を構築可能 - Hadoop上に Cube を構築するため、データ移動のオーバーラップが生じない - XMLA/MDX 準拠の BI ツールとの連携が可能 Tableau, Excel, Tibco Spotfire, SAP BO 等

Page 36: Case Study: OLAP usability on Spark and Hadoop

36 © NEC Corporation 2016

今回作成した Cube例

2014 年 ~2016 年のデータの Cube例

ディメンジョンとカーディナリティの列のカウント数: 372,990,174Cube前のファイルサイズ : 57.39 GBCube のサイズ : 380.6 GBCube の構築に要した時間 : 4 時間 45 分

利点:・ BI から Cube へのアクセスがレスポンスは早い(ほとんどの BI からのクエリは 5秒以内でレスポンスを返せる)

欠点:・ Cube のサイズはかなり大きい ディメンジョンやカーディナリティ等による・大規模データの Cube構築には時間がかかる 実際に使う場合は、初回に大規模なデータを Cube し、あとはインクリメンタルに追加を検討

Page 37: Case Study: OLAP usability on Spark and Hadoop

37 © NEC Corporation 2016

OLAP 利用の違いによるレポート応答例

実際の応答例 1:乗車人数の平均、最大、全乗車人数、1 日の全運行量のレポート

OLAP 利用時 : 4秒OLAP を用いない場合: 8 分

実際の応答例 2:乗車距離の分布レポート

OLAP 利用時: 245ミリ秒OLAP を利用しない場合: 5 分

実際、大多数の BI からのレスポンスは5秒以内には返せる感じ

Page 38: Case Study: OLAP usability on Spark and Hadoop

38 © NEC Corporation 2016

BI ツールで見る利点 (価値創造へ)

今回使用した Tableau の特徴

・集計・分析の試行錯誤が非常に早く動かせる

・直感的な UI で操作が容易

・グラフの表現方法が多彩でありさまざまな観点での 分析が可能

対話的データ可視化実際の流れ

Page 39: Case Study: OLAP usability on Spark and Hadoop

39 © NEC Corporation 2016

BI ツールで見る NYC taxi 乗降車数

NYC taxi 乗降車位置乗降車人数の多い箇所

yelp の各ジャンル上位 40 データ

やはりタクシーの乗降車位置が多い箇所には人気観光地が多い

Page 40: Case Study: OLAP usability on Spark and Hadoop

40 © NEC Corporation 2016

NYC taxi から見たバスルート探索

:タイムズスクエアなど観光地:公園や緑地など:博物館や記念館 , 美術館など:観光地や人気レストラン

このように、ドメイン知識のある人の知見が加わることでバスルート探索への応用といったソリューションへと役立てることができる。

分析のキーポイント人気スポット別の集計、乗降者数別の集計、時間帯による差などさまざまな視点でルートを決定

Page 41: Case Study: OLAP usability on Spark and Hadoop

41 © NEC Corporation 2016

今回のシステム評価のその他の利点

OLAP ツールと Hadoop/Spark 間でのデータ転送が早い

OLAPCube1

OLAPCube2

OLAPCube3

OLAPCube4

Cube を多数作成し載せていても分散環境で動作可能なので、性能劣化が起きにくい

Hadoop/Spark Master/Slave/Data Node

ETL 処理が遅い場合、ノード追加で解決できるケースでの対応が迅速にできる

同タイプのサーバノードを追加するだけで簡単にスケールできる仕組みは便利

・ ・ ・・ ・ ・

Page 42: Case Study: OLAP usability on Spark and Hadoop

42 © NEC Corporation 2016

まとめ

マスタデータ・統合データの

生成

OLAP 設計・BI ツール接続

価値創造

ビジネスユースケースに

資するサービスへ機械学習による

データ特性把握

データ準備 データ特性把握

データ分析・レポート

Hadoop/Spark エコシステムと OLAP 連携で実現可能

データ

オープン・データ

(無料で入手可能)

(生データから統合データの生成) - Spark/Hadoop エコ・システムで十分 ( データのあたりをつけるには BI ツールがお勧め)

( データの特性・傾向・利用価値の仮説作り ) - 統計的分析、機械学習などが便利(MLlib でかなりいける )

- OLAP で高速化 (ビジネス・アナリティクスユーザ向け)

BI ツールからのレスポンスが遅い場合、OLAP ツールの導入を検討を

データは貯めたけど使えてない

使えるデータにする

利用用途をイメージ

高度分析って何に使えるの BI で連携すると遅い

BI の高速化

Page 43: Case Study: OLAP usability on Spark and Hadoop

43 © NEC Corporation 2016

ODPi ( Open Data Platform Initiative) とは 共通のリファレンス仕様とテストスイートを策定しビッグデータエコシステムの簡素化・標準化を推進する非営利団体

ODPi の目的 オープンソースベースのビッグデータソリューションで標準的に用いられるコンポーネントを定義・統合・テスト・認証することで、安定したビッグデータソリューションを迅速に提供します。 さらに ODPI コアを他のビッグデータコンポーネントを結合するための生成・テストツールを準備することで、さまざまなユーザニーズに対応できる柔軟性も持ち合わせます。

参加メンバー Hortonworks, IBM, Povotal をはじめ 29 企業が参加 NEC も参加し、私が NEC の窓口として主に活動

ODPiの活動概要 2015 年 2 月 ODPi 設立 2016 年 3 月 ODPi Runtime Specification 1.0 をリリース 2016 年 9 月 27 日 ODPi Runtime Specification 2.0 をリリース 主な追加機能 Hive 、 HCFS ( Hadoop Compatible File System )のサポート

本活動にご興味があれば以下の URL をぜひ参照ください。https://www.odpi.org/

その他の Hadoop 関連活動 ODPi 活動

Page 44: Case Study: OLAP usability on Spark and Hadoop
Page 45: Case Study: OLAP usability on Spark and Hadoop

45 © NEC Corporation 2016

参考

Page 46: Case Study: OLAP usability on Spark and Hadoop

46 © NEC Corporation 2016

Apache Kylin とは- 非常に高速でスケールする OLAP エンジン Kylin は 100億件を超えるデータに対し、 Hadoop上でのクエリの遅延を減らす設計

- Hadoop上での ANSI SQL インターフェース Kylin は Hadoop上での ANSI SQL を提供し、多くの ANSI SQL クエリ機能をサポート

- MOLAP Cube データモデルを定義し 100億件を超える生データのレコードを Kylin にプレビルド可能

- BI ツールとのシームレスな統合 Kylin は現在、 Tableau, Power BIや Excel のような BI ツールとの統合機能を提供。 Microstrategy は近日リリース予定

- その他のハイライト - ジョブ管理とモニタリング - 圧縮とエンコーディングのサポート - Cube のインクリメンタル リフレッシュ - 重複排除カウント用の近似クエリ( HyperLogLog) - 管理・構築、モニタ、 Cube のクエリ様の簡易Web インターフェース - Cube/ プロジェクト レベルで ACL を設定するセキュリティ機能 - LADP 統合

        出展: http://kylin.apache.org/ の WHAT IS KYLIN? より

Page 47: Case Study: OLAP usability on Spark and Hadoop

47 © NEC Corporation 2016

Apache Kylin のアーキテクチャ

サードパーティアプリ

( Web, Mobile)

REST API

SQLベースのツール( BI ツール: Tableu

等 )

JDBC/ODBC

HadoopHive

REST サーバ

クエリ エンジン

ルーティング

メタデータ

Cube構成エンジン

遅延 中程度(分)

低遅延(秒) OLAP

Cube

ストレージにHBase を使用

キー・バリュー データ

SQL SQL

- オンライン分析データフロー- オフライン データフロー- OLAP Cube はユーザに透過

出展: http://kylin.apache.org/ の APACHE KYLIN OVERVIEW より