Upload
hadoop-summit
View
634
Download
1
Embed Size (px)
Citation preview
Hadoop/Spark と OLAP の連携の使用感( オープンデータを使って )
2016 年 10 月 27 日 日本電気株式会社 新郷 美紀
2 © NEC Corporation 2016
自己紹介
氏名 新郷 美紀
ビッグデータ歴 3 年。
当社のラックタイプで 1 台に 700 サーバ搭載可能な大規模のサーバ製品で Hadoop/Spark を活用。
以降、ビッグデータ・ソリューション・アークテクトとして活動。
2015 年 9 月より ODPi ( Open Data Platform Initiative )の NEC の窓口。
分散処理、分析処理基盤のアーキテクチャ検討・実装がメイン業務。
3 © NEC Corporation 2016
ビッグデータの必要性
データ単体では利用価値の低い情報も、データ容量の増加・他の情報と掛け合わせることで利用価値が高められる
2. 他の情報を付加することで 理解できること ・人気の施設は利用客が多 いか ・天気の違いで利用客数が 変わるか
1. データボリュームが増える ことで理解できること ・どの位置で乗降が多いか ・渋滞はどの時間帯で起きるか ・平日と休日で利用場所が変 わるか (ビジネス用途かレジャー用途か)
3. ドメイン知識のある 人の知見が加わること でソリューションになる(活用のポイントが明確化できる)
4 © NEC Corporation 2016
1. データ量・新たなデータタイプの増加 ・企業で扱えるデータも増えた ・さらにオープンデータも活用できるようになってきた (といっても海外の方が進んでるけど。。。。)
→ オープンデータだけを使ってみよう!
2. ビッグデータ処理基盤も整備されてきた ・ Hadoop/Spark 関連技術の進化 ・データ分析エコシステムの進歩 機械学習、ディープラーニングなどいろんなものが使えるようになってきた ・データアクセス高速化技術の進歩 OLAP ツール等で使えるものが増えてきた
→ OLAP ツールで既存の BI との連携がどれだけ早いか試してみよう!
ビッグデータを取り巻く環境
5 © NEC Corporation 2016
本日のテーマ1. Hadoop/Spark から OLAP ツールにデータを渡すための準備2. MLlib で準備できたデータの傾向・特性を把握3. OLAP ツールを用いた BI 接続の使用感
本セッションの目的
マスタデータ・統合データの
生成
OLAP 設計・BI ツール接続
価値創造
ビジネスユースに資する
サービスへ機械学習によるデータ特性把握
データ準備 データ特性把握
データ分析・レポート
Hadoop/Spark エコシステムと OLAP 連携で実現可能
データ
オープン・データ
(無料で入手可能)
6 © NEC Corporation 2016
本日のテーマ1. Hadoop/Spark から OLAP ツールにデータを渡すための準備2. MLlib で準備できたデータの傾向・特性を把握3. OLAP ツールを用いた BI 接続の使用感
本セッションの目的
マスタデータ・統合データの
生成
OLAP 設計・BI ツール接続
価値創造
ビジネスユースに資する
サービスへ機械学習によるデータ特性把握
データ準備 データ特性把握
データ分析・レポート
Hadoop/Spark エコシステムと OLAP 連携で実現可能
データ
オープン・データ
(無料で入手可能)
データは貯めたけど使えてない
7 © NEC Corporation 2016
本日のテーマ1. Hadoop/Spark から OLAP ツールにデータを渡すための準備2. MLlib で準備できたデータの傾向・特性を把握3. OLAP ツールを用いた BI 接続の使用感
本セッションの目的
マスタデータ・統合データの
生成
OLAP 設計・BI ツール接続
価値創造
ビジネスユースに資する
サービスへ機械学習によるデータ特性把握
データ準備 データ特性把握
データ分析・レポート
Hadoop/Spark エコシステムと OLAP 連携で実現可能
データ
オープン・データ
(無料で入手可能)
高度分析って何に使えるの
8 © NEC Corporation 2016
本日のテーマ1. Hadoop/Spark から OLAP ツールにデータを渡すための準備2. MLlib で準備できたデータの傾向・特性を把握3. OLAP ツールを用いた BI 接続の使用感
本セッションの目的
マスタデータ・統合データの
生成
OLAP 設計・BI ツール接続
価値創造
ビジネスユースに資する
サービスへ機械学習によるデータ特性把握
データ準備 データ特性把握
データ分析・レポート
Hadoop/Spark エコシステムと OLAP 連携で実現可能
データ
オープン・データ
(無料で入手可能)
BI で連携すると遅い
9 © NEC Corporation 2016
アジェンダ
1. 今回の検証の概要
2. Hadoop/Spark から OLAP ツールにデータを渡すための準備
3. MLlib で準備できたデータの傾向・特性を把握
4. OLAP ツールを用いた BI 接続の使用感
5. まとめ
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
そこそこ早くはなった
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接続
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
13 © NEC Corporation 2016
1万件の NYC Taxi の生データを BI ツールで見たところ( 2,3 分あれば、こういう可視化ができるのは BI ツールの良いところ)
生データの可視化
① 取得した生データが使えそうかのあたりをつける
14 © NEC Corporation 2016
検証システムの概念データモデルデータソース
(オープンデータ etc )マスターデータ
蓄積統合・分析 BI ツール
天気情報
施設ランキング情報( yelp )
施設情報(範囲)
タクシー料金データ
タクシー運行データタクシー
運行データ
タクシー料金デー
タ
天気情報
施設ランキング情報( yelp )
人が定義
施設統合データ
統合データ
・クレンジング・ ETL
・統合・パーティ
ショニング
・集計命令、 集計結果
施設情報(範囲)
レポート
!
集計データ
機械学習結果
・機械学習
Cube
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
検証システム構成図
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 レコード
17 © NEC Corporation 2016
Taxiタクシー IDドライバーライセンス乗車日時降車日時乗客数賃走時間(秒)賃走距離乗車緯度乗車経度降車緯度降車経度支払方法運賃サーチャージ消費税チップ額通行料金総額
Partitioned by乗車時間(年)乗車時間(月)
マスタ・データ
施設統合データ施設 ID施設名称施設種別中心緯度中心経度最小緯度最小経度最大緯度最大経度
統合結果タクシー IDドライバーライセンス乗車日時降車日時乗客数賃走時間(秒)賃走距離乗車緯度乗車経度降車緯度降車経度支払方法運賃サーチャージ消費税チップ額通行料金総額乗車施設 ID降車施設 ID
Partitioned by年月
施設データ施設名称施設種別中心緯度中心経度
統合データ
データ・スキーマ
Climate日にち+時間天候視界乾球温度(摂氏)湿球温度(摂氏)露点温度(摂氏)相対湿度風速風向き気圧降水量
Partitioned by日にち(年)日にち(月)
18 © NEC Corporation 2016
アジェンダ
1. 今回の検証の概要
2. Hadoop/Spark から OLAP ツールにデータを渡すための準備
3. MLlib で準備できたデータの傾向・特性を把握
4. OLAP ツールを用いた BI 接続の使用感
5. まとめ
19 © NEC Corporation 2016
データを渡すための準備の概要
▌ETL処理( Extract / Transform / Load )拾ってくるデータ自体には正しくないデータが多い。Hive に格納する前に元データからただしくないデータを削除するなどの加工 ( クレンジング ) を行う ETL 処理が必要になる。
タクシー料金データ タクシー
Yellow cabデータ
タクシー運行データ
CSV, json, …
ETL
タクシー
天気
施設
Hive table
Spark2.0
で実装
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), : ) )
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)
22 © NEC Corporation 2016
▌加工ID の付与
タクシーデータとの統合で扱いやすくするために施設データに ID を付与spark の monotonicallyIncreasingId で任意の ID を付与
ランドマークの範囲定義タクシーの降車位置に近い施設を特定するため、施設の大きさを定義し、施設種別ごとに施設の大きさを定義しその範囲をデータに追加
df.select(monotonicallyIncreasingId as "square_id", $"landmark_type", $"landmark_name", ...)
データを渡すための準備のポイント( 3 )
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 …
ニューヨークからかけ離れた位置情報のため無意味なデータとしてレコードを排除
24 © NEC Corporation 2016
▌テーブル保存利用時の効率を上げるためのポイント
•ファイルフォーマット– Hive では、 Parquet より ORC の方が効率が良いため、 ORCフォーマットで保存
•パーティション– 検索効率を上げるためにもパーティションは必須– 今回はそこまで膨大なデータ量でもないため、年&月くらいでパーティショニング
• 位置情報でソート– 年月でフィルターした後は、位置情報でデータを検索することが想定されるため、緯度 /経度でソーティング
パーティションは、あまり細かく分けすぎると逆に性能劣化につながってしまうので注意が必要
Tips
Spark DataFrame からパーティショニングして Hive テーブルに保存することは出来ないので、一度、一次テーブルに保存した後、 HiveQL でテーブル生成&データロードを行った
Tips
データを渡すための準備(保存方法)
25 © NEC Corporation 2016
DAG Event Timeline
1Stage で構成できており、各 executor は終始並列に実行できている
ほとんど演算処理(緑の部分)のみになっており、CPU をフルに使用出来ている
--executor-cores=12 で実行しているため、最大12 多重実行
統合テーブル作成ジョブの実行状況
ETL のチューニング状態
26 © NEC Corporation 2016
アジェンダ
1. 今回の検証の概要
2. Hadoop/Spark から OLAP ツールにデータを渡すための準備
3. MLlib で準備できたデータの傾向・特性を把握
4. OLAP ツールを用いた BI 接続の使用感
5. まとめ
27 © NEC Corporation 2016
データの傾向・特性の把握
▌データ集計に関する課題BI ツールを適用する前のデータ処理において、データ処理、結果確認を何度も繰り返す場合がある。例えば、今回のシステムではこの機械学習など。
Spark-shell などインタラクティブなツールは存在するが、結果が分かりにくい!???
③ 分析・集計してみたいデータの傾向・特性を把握
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 )
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
30 © NEC Corporation 2016
データ特性の把握例
ある一定の場所で Taxi の乗車が多いことが見て取れる
人気スポットがありそうか、時間帯で違いがありそうかなど、気になる特性を機械学習等で理解しておく。
GoogleMAPAPI 連携( 機械学習+ヒートマップ )
曜日と時間と乗客数の傾向を確認
金曜日、土曜日、日曜日の順に最も乗客数が少ない時間がずれ込む傾向にある
月火水木金土日
0 時 12 時 23 時
全データの曜日別集計
1 年分データの日別集計
シンプルな集計
風の強さの分布
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 でデータ抽出
予測モデル適用
32 © NEC Corporation 2016
予測モデル作成 予測!
MLLib を予測に適用する例
▌実際の予測結果実際の乗車人数を 95% 学習データ、 5% をテストデータに分けて、予測評価を実施
予測モデル(Gradient-boosted
tree regression)
統合情報・乗客日時、曜日・乗客数・風の強さ・気温・降雨量(全データの 95% )
予測モデル(Gradient-boosted
tree regression)
統合情報・乗客日時、曜日・乗客数・風の強さ・気温・降雨量(全データの 5% )
統合情報・乗客日時、曜日・乗客数・乗客数 予測・風の強さ・気温・降雨量
グラフ化
乗客数乗客数予測
33 © NEC Corporation 2016
アジェンダ
1. 今回の検証の概要
2. Hadoop/Spark から OLAP ツールにデータを渡すための準備
3. MLlib で準備できたデータの傾向・特性を把握
4. OLAP ツールを用いた BI 接続の使用感
5. まとめ
34 © NEC Corporation 2016
Kyvos insight はこんな感じ
今回使用した OLAP ツールの概要
分散クエリシステム
変換 Cube 設計 Cube
35 © NEC Corporation 2016
Kyvos の特徴
・大規模データでも処理が可能 ・ Hadoop と BI 間の遅延を改善
・エンタープライズレベルのセキュリティを実装可能
・特性 - ノンプログラミングでデータを加工し Cube を構築可能 - Hadoop上に Cube を構築するため、データ移動のオーバーラップが生じない - XMLA/MDX 準拠の BI ツールとの連携が可能 Tableau, Excel, Tibco Spotfire, SAP BO 等
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 し、あとはインクリメンタルに追加を検討
37 © NEC Corporation 2016
OLAP 利用の違いによるレポート応答例
実際の応答例 1:乗車人数の平均、最大、全乗車人数、1 日の全運行量のレポート
OLAP 利用時 : 4秒OLAP を用いない場合: 8 分
実際の応答例 2:乗車距離の分布レポート
OLAP 利用時: 245ミリ秒OLAP を利用しない場合: 5 分
実際、大多数の BI からのレスポンスは5秒以内には返せる感じ
38 © NEC Corporation 2016
BI ツールで見る利点 (価値創造へ)
今回使用した Tableau の特徴
・集計・分析の試行錯誤が非常に早く動かせる
・直感的な UI で操作が容易
・グラフの表現方法が多彩でありさまざまな観点での 分析が可能
対話的データ可視化実際の流れ
39 © NEC Corporation 2016
BI ツールで見る NYC taxi 乗降車数
NYC taxi 乗降車位置乗降車人数の多い箇所
yelp の各ジャンル上位 40 データ
やはりタクシーの乗降車位置が多い箇所には人気観光地が多い
40 © NEC Corporation 2016
NYC taxi から見たバスルート探索
:タイムズスクエアなど観光地:公園や緑地など:博物館や記念館 , 美術館など:観光地や人気レストラン
このように、ドメイン知識のある人の知見が加わることでバスルート探索への応用といったソリューションへと役立てることができる。
分析のキーポイント人気スポット別の集計、乗降者数別の集計、時間帯による差などさまざまな視点でルートを決定
41 © NEC Corporation 2016
今回のシステム評価のその他の利点
OLAP ツールと Hadoop/Spark 間でのデータ転送が早い
OLAPCube1
OLAPCube2
OLAPCube3
OLAPCube4
Cube を多数作成し載せていても分散環境で動作可能なので、性能劣化が起きにくい
Hadoop/Spark Master/Slave/Data Node
ETL 処理が遅い場合、ノード追加で解決できるケースでの対応が迅速にできる
同タイプのサーバノードを追加するだけで簡単にスケールできる仕組みは便利
・ ・ ・・ ・ ・
42 © NEC Corporation 2016
まとめ
マスタデータ・統合データの
生成
OLAP 設計・BI ツール接続
価値創造
ビジネスユースケースに
資するサービスへ機械学習による
データ特性把握
データ準備 データ特性把握
データ分析・レポート
Hadoop/Spark エコシステムと OLAP 連携で実現可能
データ
オープン・データ
(無料で入手可能)
(生データから統合データの生成) - Spark/Hadoop エコ・システムで十分 ( データのあたりをつけるには BI ツールがお勧め)
( データの特性・傾向・利用価値の仮説作り ) - 統計的分析、機械学習などが便利(MLlib でかなりいける )
- OLAP で高速化 (ビジネス・アナリティクスユーザ向け)
BI ツールからのレスポンスが遅い場合、OLAP ツールの導入を検討を
データは貯めたけど使えてない
使えるデータにする
利用用途をイメージ
高度分析って何に使えるの BI で連携すると遅い
BI の高速化
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 活動
45 © NEC Corporation 2016
参考
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? より
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 より