狠狠撸

狠狠撸Share a Scribd company logo
大規模データ分析を支えるインフラ系
オープンソースソフトウェアの最新事情	
草薙 昭彦	(@nagix)	
MapR	Technologies
自己紹介	
?? 草薙 昭彦	(@nagix)	
?? MapR	Technologies	
データエンジニア	
NS-SHAFT	
無料!
一般的な分析のデータフロー	
収集	
抽出	
変換	
加工	
格納	
集計	
加工	
生成	
モデル	
作成	
可視化	
レポート
一般人	
収集	
抽出	
変換	
加工	
格納	
集計	
加工	
生成	
モデル	
作成	
可視化	
レポート	
手入力	 Excel	 Excel	 Excel	 Excel
一般人	
収集	
抽出	
変換	
加工	
格納	
集計	
加工	
生成	
モデル	
作成	
可視化	
レポート	
手入力	 Excel	 Excel	 Excel	 Excel	
実は専門家も
企業では	
収集	
抽出	
変換	
加工	
格納	
集計	
加工	
生成	
モデル	
作成	
可視化	
レポート	
各部門
のRDB
のCSV
出力	
マスタと
の結合	
名寄せ	
分析用	
RDB	
SQL	
R		SAS	
SPSS	
Excel	
Oracle	DB2	
MySQL	PostgreSQL	
…
組織の規模が大きくなると	
?? データボリューム	
–?大容量ストレージ?効率の良い格納フォーマット	
?? 処理性能	
–?データ増や複数ユーザの同時アクセスに対応	
?? 信頼性?可用性	
–?ハードウェアのHA化?データの複製	
?? セキュリティ	
–?認証?アクセス制御?暗号化?監査
大企業では	
収集	
抽出	
変換	
加工	
格納	
集計	
加工	
モデル	
作成	
可視化	
レポート	
ETL	
ツール	
RDB	
コネクタ	
ETL	
ツール	
データ
ウェア
ハウス	
SQL	
R		SAS	
SPSS	
セルフ
サービ
スBI	
Teradata	
IBM	Netezza	
HP	VerLca	
AcLan	Matrix	
InformaLca	
Data	Stage	
Syncsort	
Talend	
QlikView	
Pentaho
ビッグデータって何でしたっけ	
?? データボリューム	
–?従来のアーキテクチャでは処理格納できない量	
?? データの種類	
–?非構造化(=スキーマが確定していない)データ	
?? データの流入頻度	
–?月次?日時バッチ投入から都度の投入へ
大規模なデータを扱う時に重要なこと	
?? スケールアウト(水平スケーラビリティ)	
?? CPUとストレージの距離(データローカリティ)	
サーバ	 ???	
スケールアウト可能なアルゴリズム?データ格納方式	
共有ストレージ	
(NAS/SAN)	
サーバ	
レイテンシ	
の問題	
スループット	
の問題	
サーバ	
	
	
	
	
	
サーバ	
	
	
	
	
	
サーバ	
	
	
	
	
	
内蔵	
HDD	
/SSD	
内蔵	
HDD	
/SSD	
内蔵	
HDD	
/SSD	
CPU	 CPU	 CPU
大規模なデータを扱う時に重要なこと	
?? Data	Gravity(データの重力)	
Web	
App	
Data	
分析	
App	
Data	
会計	
App	
Data	
マーケ
App	
Data	
販売	
App	
Data	
販売	
App	
Data	
会計	
App	
マーケ	App
分析のROI	
?? 最も重要なのはデータを増やしたとしてもそ
れに見合うリターンが得られるかどうか	
–?データが増えれば得られる価値は上がりそう??	
–?問題はコストをいかに抑えることができるか	
?? コモディティハードウェアは必須!	
?? スケールアウト分散処理ソフトウェアは必須!	
?? オープンソースソフトウェアは有力な選択肢
参考	
?? Google対Yahoo—インターネット戦争でどうしてここ
まで差がついたのかを振り返る	
hZp://jp.techcrunch.com/2016/05/23/20160522why-google-beat-yahoo-in-the-war-for-the-internet/	
–? “NetAppハードウェアのコストはYahooの規模の拡大と同
じ速さで増大し、Yahooの利益の大きな部分に食い込むこ
ととなった”	
–? “これに対して Googleは、規模を拡大し新サービスを追加
するときに起きるはずの問題を、それが起きる前に予期し、
効率的に対処できるようGoogle	File	Systemの開発に全力
を挙げた”
Hadoop	ベース分析基盤(初期)	
収集	
抽出	
変換	
加工	
格納	
集計	
加工	
モデル作成	
可視化	
レポート	
ログ	
コレクタ	
RDB	
コネクタ	
Map	
Reduce	
Hive	Pig	
HDFS	
Map	
Reduce	
Hive	Pig	
Mahout	
セルフ
サービ
スBI
Hadoopって?	
サーバ	 サーバ	 サーバ	 サーバ	 サーバ	 サーバ
Hadoopって?	
サーバ	
Hadoop	Distributed	File	System	(HDFS)	
データをブロックに
分割して分散配置、	
3つのレプリカ作成
Hadoopって?	
サーバ	
Hadoop	Distributed	File	System	(HDFS)	
分割されたデータ
をMap、Reduceと
いう単位で並列分
散処理	
MapReduce
Hadoopって?	
Hadoop	Distributed	File	System	(HDFS)	
MapReduce	
Hadoop	コア
Hadoopって?	
Hadoop	Distributed	File	System	(HDFS)	
MapReduce	
Hive	
	
SQLクエリ	
エンジン	
HBase	
	
NoSQL	
データベース	
Pig	
	
データ加工	
フレームワーク	
Mahout	
	
機械学習	
Zoo	
Keeper	
	
分散レポジトリ	
???	
MapReduce/HDFS	
を使いやすくする
ための無数のプロ
ジェクト
Hadoop	ベース分析基盤(現在)	
収集	
抽出	
変換	
加工	
格納	
集計	
加工	
モデル作成	
可視化	
レポート	
ログ	
コレクタ	
RDB	
コネクタ	
Spark	
Hive	Pig	
HDFS	
Spark	
SQL	
Dashbo
ard	
NoteBo
ok	
Apache	Spark	
Apache	Kylin	
Apache	Drill	
Apache	Impala	
Presto	
MLLib	
Oryx	
Apache	Spark	
Apache	Hive	
Apache	Pig	
Apache	Flume	
Fluentd	
Jupyter	
Apache	Zeppelin	
Spark	Notebook	
H2O
Sparkって?	
?? (主に)MapReduce	の置き換え	
–?バッチだけでなくインタラクティブな処理も	
–?メモリを最大限利用し、より効率よく	
Spark	
Spark	
SQL	
	
SQLクエリ	
エンジン	
Spark	
Streaming	
	
ストリーム処理	
MLlib	
	
機械学習	
GraphX	
	
グラフ処理	
Spark	R	
	
R	on	Spark	
HDFS	またはその他のファイルシステム
トレンド:リアルタイム処理	
?? ビジネス側からの要件	
–?より早い変化の検知、決断、情報の提供	
–?業務処理と分析処理は統合へ	
?? データフロー、格納、処理それぞれに新しい
アーキテクチャが必要	
?? 処理の2つのアプローチ	
–?バッチを極限まで細かくしていく(マイクロバッチ)	
–?メッセージを1つ1つ処理していく
リアルタイム処理基盤	
収集	
抽出	
変換	
加工	
格納	
集計	
加工	
モデル作成	
可視化	
ログ	
コレクタ	
RDB	
コネクタ	
Spark	
Streami
ng	
Kaka	
メッセー
ジ
キュー	
Spark	
Streami
ng	
Dashbo
ard	
Spark	Streaming	
Apache	Storm	
Apache	Flink	
Apache	APEX	
Apache	Ni?	
StreamSets	
Apache	Flume	
Fluentd	
ElasLcsearch	
/Kibana	
Grafana
ラムダアーキテクチャ	
?? バッチ処理(Data	at	Rest)とリアルタイムストリー
ム処理(Streaming	Data)は組み合わせることで
価値が出る	
–? 近似的な速報値をリアルタイム処理で得る	
–? 正確な集計や深い分析は履歴データを利用しバッチ
処理で得る	
?? データを入口で複製し、用途に応じた最適な
フォーマットで格納する	
–? 例:	時間レンジの検索ならHBase、履歴集計なら
Parquet
ラムダアーキテクチャ	
hZps://www.mapr.com/developercentral/lambda-architecture
ラムダアーキテクチャ	
収集	
抽出 変換 加工	
格納	
集計 加工 モデル作成	
可視化	
格納	
抽出 変換 加工	
集計 加工 モデル作成	
バッチレイヤー	
スピードレイヤー	
Kaka	
HDFS
分析のタイプ	
?? バッチ分析	
–?蓄積された大量データから知見を得る	
?? リアルタイム分析	
–?流れてくるデータを対象にとりあえずの解を得る	
?? インタラクティブ分析	
–?よくわからないものから鍵を見つけ方針を決める
Apache	Arrow		
?? カラム型インメモリ分析のデファクト標準を目
指す Apache	プロジェクト	
?? 多くのビッグデータ系Apacheプロジェクトで共
通のデータ構造を使うといいよね?	
?? データ構造、アルゴリズム、クロス言語バイン
ディングを定義	
?? 最新のCPUの機能を活用した高速な分析
これは非効率性だわ???	
?? 各システムは独自の内部メモリ	
形式を持つ	
?? 70?80%のCPUはシリアライズ?	
デシリアライズに使われる	
	
	
?? 似たような機能が複数のプロジェ	
クトで実装される	
Thrin,	Avro,	Protobuf,…
?? すべてのシステムは共通のメモリ	
形式を持つ	
?? システム間のやりとりにオーバー	
ヘッドがない	
?? プロジェクト間で機能を共有できる	
(例:	Parquet-to-Arrow	リーダー)	
ならばこうだ
カラム型フォーマット	
Row-oriented	フォーマット	
(CSV,	従来のRDB,	…)	
Column-oriented	フォーマット	
(Parquet,	ORC,	…)
Feather	File	Format	
?? Apache	ArrowをベースにしたRとPythonの
Data	Frameに適したディスク上のファイル
フォーマット	
?? なんで今までこんな便利なものがなかったん
だ!
PyhtonはUI言語から処理言語へ?	
hZp://www.slideshare.net/wesm/nextgeneraLon-python-big-data-tools-powered-by-apache-arrow
ありがとうございました

More Related Content

大规模データ分析を支えるインフラ系オープンソースソフトウェアの最新事情