SlideShare a Scribd company logo
© 2016 MapR Technologies 1© 2016 MapR Technologies 1© 2016 MapR Technologies
スケールアウト・インメモリ分析の標準フォーマット
を目指す Apache Arrow と Value Vectors
草薙 昭彦 – Data Engineer, MapR Technologies
2016 年 3 月 22 日
© 2016 MapR Technologies 2© 2016 MapR Technologies 2
自己紹介
•  草薙 昭彦 (@nagix)
•  MapR Technologies
データエンジニア
NS-SHAFT	
無料!
© 2016 MapR Technologies 3© 2016 MapR Technologies 3
Apache Arrow プロジェクト
•  カラム型インメモリ分析のデファクト標準を目指す Apache プロジェク
ト
•  2016年2月にトッププロジェクトとして登場
•  Apache Drill のスタートアップ Dremio がプロジェクトの中心となって
おり、Arrow は Drill の Value Vectors フォーマットが発祥
“Apache Arrowプロジェクトは、これらの協力プロジェクトのコミュニティ
や専門家集団の存在を理由として、通常は必要とされるプロジェクトの
有効性を検証するためのインキュベーターフェーズを省略し、...”
インメモリビッグデータシステムをつなぐ「Apache Arrow」 http://japan.zdnet.com/article/35078163/
© 2016 MapR Technologies 4© 2016 MapR Technologies 4
課題:インメモリ分析の流行
ビッグデータ初期の課題:
•  バッチ処理に特化された
処理エンジンの非効率性
•  高速な分析レスポンスの
ニーズに対するディスクア
クセスの遅さ
	
新たな課題:
•  各製品が独自のインメ
モリデータ表現を採用す
ることによる非効率性
インメモリ処理を最大限活用
する製品の登場
•  Impala, Drill, SAP HANA
のような SQL エンジン
•  Spark, Flink のような実行
フレームワーク
•  Storm, Kafka, Apex のよう
なストリーム処理エンジン
© 2016 MapR Technologies 5© 2016 MapR Technologies 5
これは非効率性だわ・・・
•  各システムは独自の内部メモリ
形式を持つ
•  70〜80%のCPUはシリアライズ・
デシリアライズに使われる
	
•  似たような機能が複数のプロジェ
クトで実装される
Thrift, Avro, Protobuf,…
© 2016 MapR Technologies 6© 2016 MapR Technologies 6
ならばこうだ
•  すべてのシステムは共通のメモリ
形式を持つ
•  システム間のやりとりにオーバー
ヘッドがない
•  プロジェクト間で機能を共有できる
(例: Parquet-to-Arrow リーダー)
© 2016 MapR Technologies 7© 2016 MapR Technologies 7
分析テクノロジーのトレンドとビジネス要件
インメモリ 複合データと動的スキーマカラム型
分析に適した、Apache
Parquet を始めとするカラム
型データフォーマットの普及
データ格納に必要なストレー
ジ容量の削減と分析ワーク
ロードの性能向上
メモリ上にデータを保持
することによる、分析処理
レスポンスの大幅な短縮
もはやデータのアクセス
待ちをしたい人はいな
い・・・
現実のデータは階層構造、ネス
ト構造を使うことでより簡潔に表
現できる場合がある
JSONやドキュメントデータベー
スの普及に伴い、分析システム
はこれらを直接扱える必要があ
る
3つの要件を満たし、性能面のメリットと同時に分析の柔軟性を得ることが求められる
© 2016 MapR Technologies 8© 2016 MapR Technologies 8
Arrow とは
•  SQL、JSON で定義済みの型を含む基本
データ型
•  基本データ型を用いた任意の複合レコード
構造をサポートするための、カラム型インメ
モリデータ表現形式
•  Pick-List、Hash Table、Queue のような補
助データ構造
•  共有メモリ、TCP/IP、RDMA を介したプロ
セス間通信
データ構造 アルゴリズム クロス言語バインディング
のコンビネーション	
•  Java、C、C++、Python 等の言語向けの
データアクセスライブラリ
•  ビットマップ選択、ハッシュ、フィルタリング、
バケッティング、ソート、マッチング等の操
作のための、パイプライン化された SIMD
アルゴリズム
•  カラム型インメモリ圧縮
•  不揮発性メモリ、SSD、HDD への短期的
なデータ格納のためのツール
© 2016 MapR Technologies 9© 2016 MapR Technologies 9
Arrow とは
•  ストレージや実行エンジンではない
•  Arrow は次のようなタイプのシステムの共有基盤になることを目指す	
データ分析システム
ストリーミング・
キューイング
ストレージSQL 実行エンジン
pandas�
heron�
© 2016 MapR Technologies 10© 2016 MapR Technologies 10
Arrow とは
•  前述のプロジェクトとは競合しない
•  各プロジェクトと協調し、より良い性能と相互運用性の提供をゴールと
する
–  似たような機能を持つプロジェクトの乱立による非効率性が課題であったため
© 2016 MapR Technologies 11© 2016 MapR Technologies 11
Arrow を支持するプロジェクト
• Calcite (データ処理エンジン)
• Cassandra
(NoSQLデータストア)
• Drill (SQL-on-Hadoop)
• Hadoop (ビッグデータ基盤)
• HBase (NoSQLデータストア)
• Ibis (データ分析フレームワーク)
• Impala (SQL-on-Hadoop)
•  Kudu (分析用ストレージ)
•  Pandas (データ分析ライブラリ)
•  Parquet (データフォーマット)
•  Phoenix (SQL-on-HBase)
•  Spark
(データ分析フレームワーク)
•  Storm (ストリーミング処理)
© 2016 MapR Technologies 12© 2016 MapR Technologies 12
カラム型フォーマット
c2 c3c1
v12 v13v11
v22 v23v21
v32 v33v31
v42 v43v41
v52 v53v51
c2 c3c1
v12 v13v11
v22 v23v21
v32 v33v31
v42 v43v41
v52 v53v51
Row-oriented フォーマット
(CSV, 従来のRDB, …)	
Column-oriented フォーマット
(Parquet, ORC, …)
© 2016 MapR Technologies 13© 2016 MapR Technologies 13
カラム型フォーマット
•  分析ワークロードの性能向上
–  一部のカラムの射影
–  特定カラムの値の条件によるフィルタリング
–  特定カラムの値の集計
–  すべてのデータをスキャンする必要がないケースが多い
•  ストレージ容量の削減
–  カラム内のデータは似たデータが並ぶため圧縮効率が高い
–  例: ID、日付、性別
•  ・・・ただしここまではディスク上のフォーマットの話
© 2016 MapR Technologies 14© 2016 MapR Technologies 14
カラム型フォーマット: メモリ上のフォーマットの場合
•  最新の CPU の機能を最大限に使いきることが
最大の目標
–  キャッシュ局所性を最大化
–  パイプライン実行
–  SIMD 命令の活用
–  これらにより10〜100倍の実行性能向上も
•  メモリ利用の効率化
–  ベクトル化されたデータは Record Batch という単位
(最大64kレコード)でグループ化
–  メモリ上に載り切らないサイズのデータの扱いが可
能
Record Batch
VV VV VV VV
Record Batch
VV VV VV VV
Record Batch
VV VV VV VV
VV: Value Vector
© 2016 MapR Technologies 15© 2016 MapR Technologies 15
カラム型フォーマット: メモリ上のフォーマットの場合
© 2016 MapR Technologies 16© 2016 MapR Technologies 16
データレイアウト: プリミティブデータ配列型
•  同じサイズを持つ値の固定長配列
•  全体がメモリの連続領域に配置される
–  キャッシュ局所性が向上
•  Nullable 型の場合、配列とは別に Null ビットマスク配列が用意される
–  高速に Null チェックが可能
© 2016 MapR Technologies 17© 2016 MapR Technologies 17
データレイアウト: List 型
•  同じ型を持つ、各要素が可変長の連
続した値を持つネストされた配列
–  違う型を持つ場合は Union 型で
•  値の配列とオフセット配列からなる	
–  オフセットは先頭からの要素数
–  すべての要素に O(1) で到達可能
•  ネストデータは階層を n とすると O(n)
[
  [‘j’, ‘o’, ‘e’],
  null,
  [‘m’, ‘a’, ‘r’, ‘k’]
]
© 2016 MapR Technologies 18© 2016 MapR Technologies 18
データレイアウト: List 型のネスト
© 2016 MapR Technologies 19© 2016 MapR Technologies 19
データレイアウト: Struct 型
•  順序と型を持つ「フィールド」要素
から構成されるネストデータ型
•  フィールドは通常名前を持つが、
名前や型は物理メモリレイアウト
とは別のメタデータとして管理
•  Struct 全体の Null ビットマスクを
持つことも可能 	
Struct [nullable] <
name: String (= List<char>) [nullable],
age: Int32 [not-nullable]
>
© 2016 MapR Technologies 20© 2016 MapR Technologies 20
データレイアウト: Dense Union 型
•  各要素が異なる型を持つ配列
•  次のメモリレイアウトを持つ
–  型ごとの子配列
–  各要素の型を格納するタイプ配列
–  各要素の子配列におけるオフセットを格納
するオフセット配列
© 2016 MapR Technologies 21© 2016 MapR Technologies 21
データレイアウト: Sparse Union 型
•  Dense Union 型からオフセット配
列を除いたもの
–  各子配列の長さは Union の長さと一
致する
•  Dense Union 型と比べると大幅に
メモリを必要とするが利点もある
–  例: 同じ長さの複数の配列がある時、
タイプ配列を定義するだけでUnion型
に変換可能
© 2016 MapR Technologies 22© 2016 MapR Technologies 22
Intel の SIMD 技術(SSE/AVX)
SSE AVX
Nehalem世代 以前
128bit幅 SIMDレジスタ
8単精度FP演算/クロック

4倍精度FP演算/クロック
128bit整数演算	
AVX2 AVX-512
201520132011〜2010
Sandy Bridge世代
256bit幅 SIMDレジスタ
16単精度FP演算/クロック

8倍精度FP演算/クロック	
Haswell世代
256bit幅 SIMDレジスタ
32単精度FP演算/クロック

16倍精度FP演算/クロック
256bit整数演算	
Skylake世代
512bit幅 SIMDレジスタ
64単精度FP演算/クロック

32倍精度FP演算/クロック
512bit整数演算
© 2016 MapR Technologies 23© 2016 MapR Technologies 23
ベクトル化
•  一般の RDBMS では 1 レコード単位の処理
•  Arrow では同時に複数レコードの処理を実行
–  複数のレコードから取り出されたカラムのセット
•  Record Batch という
–  最新の CPU の機能を考慮
•  最新の CPU アーキテクチャに最適化
•  SIMD (Single Input Multiple Data) インストラクション
–  AVX インストラクションの利用により時に 100 倍の性能向上も
•  CPU パイプライン高速化のためブランチングを回避
–  処理ループをなるべく小さく、単純化
•  すべてのパイプラインが埋まっている状態にすることで効率を最大化
© 2016 MapR Technologies 24© 2016 MapR Technologies 24
ベクトル化
同時に複数のレコードに対し
操作を行う
Id Name Age
101 abc 22
102 def 37
104 ghi 45
105 jkl 25
108 mno 31
112 pqr 27
114 owx 35
リレーション
ベクトル化された
Record Batch
Id
101
102
104
105
Name
abc
def
ghi
jkl
Age
22
37
45
25
108
112
114
mno
pqr
owx
31
27
35
© 2016 MapR Technologies 25© 2016 MapR Technologies 25
ロードマップ
•  2016年内に Drill, Impala, Kudu, Ibis, Spark が Arrow に対応予定
•  R, Julia, JavaScript の言語バインディングも開発進行中
•  Strata + Hadoop World San Jose の次の講演 (3/30) にも注目
–  Faster conclusions using in-memory columnar SQL and machine learning
Wes McKinney (Cloudera), Jacques Nadeau (Dremio)
© 2016 MapR Technologies 26© 2016 MapR Technologies 26
Q&A
@mapr_japan
sales-jp@mapr.com
ありがとうございました
maprjapan

More Related Content

What's hot

ドメイン駆動設計 基本を理解する
ドメイン駆動設計 基本を理解するドメイン駆動設計 基本を理解する
ドメイン駆動設計 基本を理解する
増田 亨
 
Kubernetesでの性能解析 ~なんとなく遅いからの脱却~(Kubernetes Meetup Tokyo #33 発表資料)
Kubernetesでの性能解析 ~なんとなく遅いからの脱却~(Kubernetes Meetup Tokyo #33 発表資料)Kubernetesでの性能解析 ~なんとなく遅いからの脱却~(Kubernetes Meetup Tokyo #33 発表資料)
Kubernetesでの性能解析 ~なんとなく遅いからの脱却~(Kubernetes Meetup Tokyo #33 発表資料)
NTT DATA Technology & Innovation
 
Python 3.9からの新定番zoneinfoを使いこなそう
Python 3.9からの新定番zoneinfoを使いこなそうPython 3.9からの新定番zoneinfoを使いこなそう
Python 3.9からの新定番zoneinfoを使いこなそう
Ryuji Tsutsui
 
Dockerからcontainerdへの移行
Dockerからcontainerdへの移行Dockerからcontainerdへの移行
Dockerからcontainerdへの移行
Kohei Tokunaga
 
初心者向けMongoDBのキホン!
初心者向けMongoDBのキホン!初心者向けMongoDBのキホン!
初心者向けMongoDBのキホン!
Tetsutaro Watanabe
 
コンポーネント指向と余白の設計
コンポーネント指向と余白の設計コンポーネント指向と余白の設計
コンポーネント指向と余白の設計
Manabu Yasuda
 
マイクロサービス 4つの分割アプローチ
マイクロサービス 4つの分割アプローチマイクロサービス 4つの分割アプローチ
マイクロサービス 4つの分割アプローチ
増田 亨
 
OpenAPI 3.0でmicroserviceのAPI定義を試みてハマった話
OpenAPI 3.0でmicroserviceのAPI定義を試みてハマった話OpenAPI 3.0でmicroserviceのAPI定義を試みてハマった話
OpenAPI 3.0でmicroserviceのAPI定義を試みてハマった話
Daichi Koike
 
CAPとBASE、ACIDの呪縛
CAPとBASE、ACIDの呪縛CAPとBASE、ACIDの呪縛
CAPとBASE、ACIDの呪縛
Kazuki Aranami
 
普通の人でもわかる Paxos
普通の人でもわかる Paxos普通の人でもわかる Paxos
普通の人でもわかる Paxos
tyonekura
 
Yahoo!ニュースにおけるBFFパフォーマンスチューニング事例
Yahoo!ニュースにおけるBFFパフォーマンスチューニング事例Yahoo!ニュースにおけるBFFパフォーマンスチューニング事例
Yahoo!ニュースにおけるBFFパフォーマンスチューニング事例
Yahoo!デベロッパーネットワーク
 
ゼロから作るKubernetesによるJupyter as a Service ー Kubernetes Meetup Tokyo #43
ゼロから作るKubernetesによるJupyter as a Service ー Kubernetes Meetup Tokyo #43ゼロから作るKubernetesによるJupyter as a Service ー Kubernetes Meetup Tokyo #43
ゼロから作るKubernetesによるJupyter as a Service ー Kubernetes Meetup Tokyo #43
Preferred Networks
 
BuildKitによる高速でセキュアなイメージビルド
BuildKitによる高速でセキュアなイメージビルドBuildKitによる高速でセキュアなイメージビルド
BuildKitによる高速でセキュアなイメージビルド
Akihiro Suda
 
今さら聞けない人のためのDevOps超入門
今さら聞けない人のためのDevOps超入門今さら聞けない人のためのDevOps超入門
今さら聞けない人のためのDevOps超入門
VirtualTech Japan Inc.
 
組織にテストを書く文化を根付かせる戦略と戦術
組織にテストを書く文化を根付かせる戦略と戦術組織にテストを書く文化を根付かせる戦略と戦術
組織にテストを書く文化を根付かせる戦略と戦術
Takuto Wada
 
CRDT in 15 minutes
CRDT in 15 minutesCRDT in 15 minutes
CRDT in 15 minutes
Shingo Omura
 
GoによるWebアプリ開発のキホン
GoによるWebアプリ開発のキホンGoによるWebアプリ開発のキホン
GoによるWebアプリ開発のキホン
Akihiko Horiuchi
 
Raft
RaftRaft
シリコンバレーの「何が」凄いのか
シリコンバレーの「何が」凄いのかシリコンバレーの「何が」凄いのか
シリコンバレーの「何が」凄いのか
Atsushi Nakada
 
ツール比較しながら語る O/RマッパーとDBマイグレーションの実際のところ
ツール比較しながら語る O/RマッパーとDBマイグレーションの実際のところツール比較しながら語る O/RマッパーとDBマイグレーションの実際のところ
ツール比較しながら語る O/RマッパーとDBマイグレーションの実際のところ
Y Watanabe
 

What's hot (20)

ドメイン駆動設計 基本を理解する
ドメイン駆動設計 基本を理解するドメイン駆動設計 基本を理解する
ドメイン駆動設計 基本を理解する
 
Kubernetesでの性能解析 ~なんとなく遅いからの脱却~(Kubernetes Meetup Tokyo #33 発表資料)
Kubernetesでの性能解析 ~なんとなく遅いからの脱却~(Kubernetes Meetup Tokyo #33 発表資料)Kubernetesでの性能解析 ~なんとなく遅いからの脱却~(Kubernetes Meetup Tokyo #33 発表資料)
Kubernetesでの性能解析 ~なんとなく遅いからの脱却~(Kubernetes Meetup Tokyo #33 発表資料)
 
Python 3.9からの新定番zoneinfoを使いこなそう
Python 3.9からの新定番zoneinfoを使いこなそうPython 3.9からの新定番zoneinfoを使いこなそう
Python 3.9からの新定番zoneinfoを使いこなそう
 
Dockerからcontainerdへの移行
Dockerからcontainerdへの移行Dockerからcontainerdへの移行
Dockerからcontainerdへの移行
 
初心者向けMongoDBのキホン!
初心者向けMongoDBのキホン!初心者向けMongoDBのキホン!
初心者向けMongoDBのキホン!
 
コンポーネント指向と余白の設計
コンポーネント指向と余白の設計コンポーネント指向と余白の設計
コンポーネント指向と余白の設計
 
マイクロサービス 4つの分割アプローチ
マイクロサービス 4つの分割アプローチマイクロサービス 4つの分割アプローチ
マイクロサービス 4つの分割アプローチ
 
OpenAPI 3.0でmicroserviceのAPI定義を試みてハマった話
OpenAPI 3.0でmicroserviceのAPI定義を試みてハマった話OpenAPI 3.0でmicroserviceのAPI定義を試みてハマった話
OpenAPI 3.0でmicroserviceのAPI定義を試みてハマった話
 
CAPとBASE、ACIDの呪縛
CAPとBASE、ACIDの呪縛CAPとBASE、ACIDの呪縛
CAPとBASE、ACIDの呪縛
 
普通の人でもわかる Paxos
普通の人でもわかる Paxos普通の人でもわかる Paxos
普通の人でもわかる Paxos
 
Yahoo!ニュースにおけるBFFパフォーマンスチューニング事例
Yahoo!ニュースにおけるBFFパフォーマンスチューニング事例Yahoo!ニュースにおけるBFFパフォーマンスチューニング事例
Yahoo!ニュースにおけるBFFパフォーマンスチューニング事例
 
ゼロから作るKubernetesによるJupyter as a Service ー Kubernetes Meetup Tokyo #43
ゼロから作るKubernetesによるJupyter as a Service ー Kubernetes Meetup Tokyo #43ゼロから作るKubernetesによるJupyter as a Service ー Kubernetes Meetup Tokyo #43
ゼロから作るKubernetesによるJupyter as a Service ー Kubernetes Meetup Tokyo #43
 
BuildKitによる高速でセキュアなイメージビルド
BuildKitによる高速でセキュアなイメージビルドBuildKitによる高速でセキュアなイメージビルド
BuildKitによる高速でセキュアなイメージビルド
 
今さら聞けない人のためのDevOps超入門
今さら聞けない人のためのDevOps超入門今さら聞けない人のためのDevOps超入門
今さら聞けない人のためのDevOps超入門
 
組織にテストを書く文化を根付かせる戦略と戦術
組織にテストを書く文化を根付かせる戦略と戦術組織にテストを書く文化を根付かせる戦略と戦術
組織にテストを書く文化を根付かせる戦略と戦術
 
CRDT in 15 minutes
CRDT in 15 minutesCRDT in 15 minutes
CRDT in 15 minutes
 
GoによるWebアプリ開発のキホン
GoによるWebアプリ開発のキホンGoによるWebアプリ開発のキホン
GoによるWebアプリ開発のキホン
 
Raft
RaftRaft
Raft
 
シリコンバレーの「何が」凄いのか
シリコンバレーの「何が」凄いのかシリコンバレーの「何が」凄いのか
シリコンバレーの「何が」凄いのか
 
ツール比較しながら語る O/RマッパーとDBマイグレーションの実際のところ
ツール比較しながら語る O/RマッパーとDBマイグレーションの実際のところツール比較しながら語る O/RマッパーとDBマイグレーションの実際のところ
ツール比較しながら語る O/RマッパーとDBマイグレーションの実際のところ
 

Similar to スケールアウト・インメモリ分析の標準フォーマットを目指す Apache Arrow と Value Vectors - Tokyo Apache Drill Meetup 2016/03/22

SparkとCassandraの美味しい関係
SparkとCassandraの美味しい関係SparkとCassandraの美味しい関係
SparkとCassandraの美味しい関係
datastaxjp
 
MapR 5.2: MapR コンバージド・コミュニティ・エディションを使いこなす
MapR 5.2: MapR コンバージド・コミュニティ・エディションを使いこなすMapR 5.2: MapR コンバージド・コミュニティ・エディションを使いこなす
MapR 5.2: MapR コンバージド・コミュニティ・エディションを使いこなす
MapR Technologies Japan
 
RDB開発者のためのApache Cassandra データモデリング入門
RDB開発者のためのApache Cassandra データモデリング入門RDB開発者のためのApache Cassandra データモデリング入門
RDB開発者のためのApache Cassandra データモデリング入門
Yuki Morishita
 
Fast Data を扱うためのデザインパターン
Fast Data を扱うためのデザインパターンFast Data を扱うためのデザインパターン
Fast Data を扱うためのデザインパターン
MapR Technologies Japan
 
[db tech showcase Tokyo 2014] L32: Apache Cassandraに注目!!(IoT, Bigdata、NoSQLのバ...
[db tech showcase Tokyo 2014] L32: Apache Cassandraに注目!!(IoT, Bigdata、NoSQLのバ...[db tech showcase Tokyo 2014] L32: Apache Cassandraに注目!!(IoT, Bigdata、NoSQLのバ...
[db tech showcase Tokyo 2014] L32: Apache Cassandraに注目!!(IoT, Bigdata、NoSQLのバ...
Insight Technology, Inc.
 
Object-Functional Analysis and Design : 次世代モデリングパラダイムへの道標
Object-Functional Analysis and Design : 次世代モデリングパラダイムへの道標Object-Functional Analysis and Design : 次世代モデリングパラダイムへの道標
Object-Functional Analysis and Design : 次世代モデリングパラダイムへの道標
Tomoharu ASAMI
 
デザインパターンから見た AWS と Azure
デザインパターンから見た AWS と Azureデザインパターンから見た AWS と Azure
デザインパターンから見た AWS と Azure
Sunao Tomita
 
クラウド運用のためのストリームマイニング
クラウド運用のためのストリームマイニングクラウド運用のためのストリームマイニング
クラウド運用のためのストリームマイニングShin Matsumoto
 
Scalaプログラミング・マニアックス
Scalaプログラミング・マニアックスScalaプログラミング・マニアックス
Scalaプログラミング・マニアックスTomoharu ASAMI
 
事例で学ぶApache Cassandra
事例で学ぶApache Cassandra事例で学ぶApache Cassandra
事例で学ぶApache Cassandra
Yuki Morishita
 
Guide to Cassandra for Production Deployments
Guide to Cassandra for Production DeploymentsGuide to Cassandra for Production Deployments
Guide to Cassandra for Production Deployments
smdkk
 
(LT)Spark and Cassandra
(LT)Spark and Cassandra(LT)Spark and Cassandra
(LT)Spark and Cassandra
datastaxjp
 
Object-Funcational Analysis and design
Object-Funcational Analysis and designObject-Funcational Analysis and design
Object-Funcational Analysis and designTomoharu ASAMI
 
AWS Black Belt Online Seminar 2017 Amazon Athena
AWS Black Belt Online Seminar 2017 Amazon AthenaAWS Black Belt Online Seminar 2017 Amazon Athena
AWS Black Belt Online Seminar 2017 Amazon Athena
Amazon Web Services Japan
 
Spark Summit 2014 の報告と最近の取り組みについて
Spark Summit 2014 の報告と最近の取り組みについてSpark Summit 2014 の報告と最近の取り組みについて
Spark Summit 2014 の報告と最近の取り組みについて
Recruit Technologies
 
Oracle Labs 発! Parallel Graph AnalytiX(PGX)
Oracle Labs 発! Parallel Graph AnalytiX(PGX)Oracle Labs 発! Parallel Graph AnalytiX(PGX)
Oracle Labs 発! Parallel Graph AnalytiX(PGX)
オラクルエンジニア通信
 
Enterprise cloud design pattern 大量データ処理アーキテクチャの構築
Enterprise cloud design pattern 大量データ処理アーキテクチャの構築Enterprise cloud design pattern 大量データ処理アーキテクチャの構築
Enterprise cloud design pattern 大量データ処理アーキテクチャの構築貴志 上坂
 
Object-Functional Analysis and Design and Programming温泉
Object-Functional Analysis and Design and Programming温泉Object-Functional Analysis and Design and Programming温泉
Object-Functional Analysis and Design and Programming温泉
Tomoharu ASAMI
 
クラウドから始めるRのビッグデータ分析- Oracle R Enterprise in Cloud
クラウドから始めるRのビッグデータ分析- Oracle R Enterprise in Cloudクラウドから始めるRのビッグデータ分析- Oracle R Enterprise in Cloud
クラウドから始めるRのビッグデータ分析- Oracle R Enterprise in Cloud
幹雄 小川
 
Python / R で使うSAS Viya
Python / R で使うSAS ViyaPython / R で使うSAS Viya
Python / R で使うSAS Viya
SAS Institute Japan
 

Similar to スケールアウト・インメモリ分析の標準フォーマットを目指す Apache Arrow と Value Vectors - Tokyo Apache Drill Meetup 2016/03/22 (20)

SparkとCassandraの美味しい関係
SparkとCassandraの美味しい関係SparkとCassandraの美味しい関係
SparkとCassandraの美味しい関係
 
MapR 5.2: MapR コンバージド・コミュニティ・エディションを使いこなす
MapR 5.2: MapR コンバージド・コミュニティ・エディションを使いこなすMapR 5.2: MapR コンバージド・コミュニティ・エディションを使いこなす
MapR 5.2: MapR コンバージド・コミュニティ・エディションを使いこなす
 
RDB開発者のためのApache Cassandra データモデリング入門
RDB開発者のためのApache Cassandra データモデリング入門RDB開発者のためのApache Cassandra データモデリング入門
RDB開発者のためのApache Cassandra データモデリング入門
 
Fast Data を扱うためのデザインパターン
Fast Data を扱うためのデザインパターンFast Data を扱うためのデザインパターン
Fast Data を扱うためのデザインパターン
 
[db tech showcase Tokyo 2014] L32: Apache Cassandraに注目!!(IoT, Bigdata、NoSQLのバ...
[db tech showcase Tokyo 2014] L32: Apache Cassandraに注目!!(IoT, Bigdata、NoSQLのバ...[db tech showcase Tokyo 2014] L32: Apache Cassandraに注目!!(IoT, Bigdata、NoSQLのバ...
[db tech showcase Tokyo 2014] L32: Apache Cassandraに注目!!(IoT, Bigdata、NoSQLのバ...
 
Object-Functional Analysis and Design : 次世代モデリングパラダイムへの道標
Object-Functional Analysis and Design : 次世代モデリングパラダイムへの道標Object-Functional Analysis and Design : 次世代モデリングパラダイムへの道標
Object-Functional Analysis and Design : 次世代モデリングパラダイムへの道標
 
デザインパターンから見た AWS と Azure
デザインパターンから見た AWS と Azureデザインパターンから見た AWS と Azure
デザインパターンから見た AWS と Azure
 
クラウド運用のためのストリームマイニング
クラウド運用のためのストリームマイニングクラウド運用のためのストリームマイニング
クラウド運用のためのストリームマイニング
 
Scalaプログラミング・マニアックス
Scalaプログラミング・マニアックスScalaプログラミング・マニアックス
Scalaプログラミング・マニアックス
 
事例で学ぶApache Cassandra
事例で学ぶApache Cassandra事例で学ぶApache Cassandra
事例で学ぶApache Cassandra
 
Guide to Cassandra for Production Deployments
Guide to Cassandra for Production DeploymentsGuide to Cassandra for Production Deployments
Guide to Cassandra for Production Deployments
 
(LT)Spark and Cassandra
(LT)Spark and Cassandra(LT)Spark and Cassandra
(LT)Spark and Cassandra
 
Object-Funcational Analysis and design
Object-Funcational Analysis and designObject-Funcational Analysis and design
Object-Funcational Analysis and design
 
AWS Black Belt Online Seminar 2017 Amazon Athena
AWS Black Belt Online Seminar 2017 Amazon AthenaAWS Black Belt Online Seminar 2017 Amazon Athena
AWS Black Belt Online Seminar 2017 Amazon Athena
 
Spark Summit 2014 の報告と最近の取り組みについて
Spark Summit 2014 の報告と最近の取り組みについてSpark Summit 2014 の報告と最近の取り組みについて
Spark Summit 2014 の報告と最近の取り組みについて
 
Oracle Labs 発! Parallel Graph AnalytiX(PGX)
Oracle Labs 発! Parallel Graph AnalytiX(PGX)Oracle Labs 発! Parallel Graph AnalytiX(PGX)
Oracle Labs 発! Parallel Graph AnalytiX(PGX)
 
Enterprise cloud design pattern 大量データ処理アーキテクチャの構築
Enterprise cloud design pattern 大量データ処理アーキテクチャの構築Enterprise cloud design pattern 大量データ処理アーキテクチャの構築
Enterprise cloud design pattern 大量データ処理アーキテクチャの構築
 
Object-Functional Analysis and Design and Programming温泉
Object-Functional Analysis and Design and Programming温泉Object-Functional Analysis and Design and Programming温泉
Object-Functional Analysis and Design and Programming温泉
 
クラウドから始めるRのビッグデータ分析- Oracle R Enterprise in Cloud
クラウドから始めるRのビッグデータ分析- Oracle R Enterprise in Cloudクラウドから始めるRのビッグデータ分析- Oracle R Enterprise in Cloud
クラウドから始めるRのビッグデータ分析- Oracle R Enterprise in Cloud
 
Python / R で使うSAS Viya
Python / R で使うSAS ViyaPython / R で使うSAS Viya
Python / R で使うSAS Viya
 

More from MapR Technologies Japan

Drill超簡単チューニング
Drill超簡単チューニングDrill超簡単チューニング
Drill超簡単チューニング
MapR Technologies Japan
 
ストリーミングアーキテクチャ: State から Flow へ - 2016/02/08 Hadoop / Spark Conference Japan ...
ストリーミングアーキテクチャ: State から Flow へ - 2016/02/08 Hadoop / Spark Conference Japan ...ストリーミングアーキテクチャ: State から Flow へ - 2016/02/08 Hadoop / Spark Conference Japan ...
ストリーミングアーキテクチャ: State から Flow へ - 2016/02/08 Hadoop / Spark Conference Japan ...
MapR Technologies Japan
 
MapR Streams & MapR コンバージド・データ・プラットフォーム
MapR Streams & MapR コンバージド・データ・プラットフォームMapR Streams & MapR コンバージド・データ・プラットフォーム
MapR Streams & MapR コンバージド・データ・プラットフォーム
MapR Technologies Japan
 
Spark Streaming の基本とスケールする時系列データ処理 - Spark Meetup December 2015/12/09
Spark Streaming の基本とスケールする時系列データ処理 - Spark Meetup December 2015/12/09Spark Streaming の基本とスケールする時系列データ処理 - Spark Meetup December 2015/12/09
Spark Streaming の基本とスケールする時系列データ処理 - Spark Meetup December 2015/12/09
MapR Technologies Japan
 
Apache Drill で日本語を扱ってみよう + オープンデータ解析
Apache Drill で日本語を扱ってみよう + オープンデータ解析Apache Drill で日本語を扱ってみよう + オープンデータ解析
Apache Drill で日本語を扱ってみよう + オープンデータ解析
MapR Technologies Japan
 
Drilling into Data with Apache Drill - Tokyo Apache Drill Meetup 2015/11/12
Drilling into Data with Apache Drill - Tokyo Apache Drill Meetup 2015/11/12Drilling into Data with Apache Drill - Tokyo Apache Drill Meetup 2015/11/12
Drilling into Data with Apache Drill - Tokyo Apache Drill Meetup 2015/11/12
MapR Technologies Japan
 
HBase と Drill - 緩い型付けの SQL がいかに NoSQL に適しているか
HBase と Drill - 緩い型付けの SQL がいかに NoSQL に適しているかHBase と Drill - 緩い型付けの SQL がいかに NoSQL に適しているか
HBase と Drill - 緩い型付けの SQL がいかに NoSQL に適しているか
MapR Technologies Japan
 
Apache Drill でオープンデータを分析してみる - db tech showcase Sapporo 2015 2015/09/11
Apache Drill でオープンデータを分析してみる - db tech showcase Sapporo 2015 2015/09/11Apache Drill でオープンデータを分析してみる - db tech showcase Sapporo 2015 2015/09/11
Apache Drill でオープンデータを分析してみる - db tech showcase Sapporo 2015 2015/09/11
MapR Technologies Japan
 
Apache Drill Overview - Tokyo Apache Drill Meetup 2015/09/15
Apache Drill Overview - Tokyo Apache Drill Meetup 2015/09/15Apache Drill Overview - Tokyo Apache Drill Meetup 2015/09/15
Apache Drill Overview - Tokyo Apache Drill Meetup 2015/09/15
MapR Technologies Japan
 
Hadoop によるゲノム解読
Hadoop によるゲノム解読Hadoop によるゲノム解読
Hadoop によるゲノム解読
MapR Technologies Japan
 
事例から見るNoSQLの使い方 - db tech showcase Tokyo 2015 2015/06/11
事例から見るNoSQLの使い方 - db tech showcase Tokyo 2015 2015/06/11事例から見るNoSQLの使い方 - db tech showcase Tokyo 2015 2015/06/11
事例から見るNoSQLの使い方 - db tech showcase Tokyo 2015 2015/06/11
MapR Technologies Japan
 
Apache Drill で JSON 形式の オープンデータを分析してみる - db tech showcase Tokyo 2015 2015/06/11
Apache Drill で JSON 形式の オープンデータを分析してみる - db tech showcase Tokyo 2015 2015/06/11Apache Drill で JSON 形式の オープンデータを分析してみる - db tech showcase Tokyo 2015 2015/06/11
Apache Drill で JSON 形式の オープンデータを分析してみる - db tech showcase Tokyo 2015 2015/06/11
MapR Technologies Japan
 
異常検知 - 何を探すかよく分かっていないものを見つける方法
異常検知 - 何を探すかよく分かっていないものを見つける方法異常検知 - 何を探すかよく分かっていないものを見つける方法
異常検知 - 何を探すかよく分かっていないものを見つける方法
MapR Technologies Japan
 
時系列の世界の時系列データ
時系列の世界の時系列データ時系列の世界の時系列データ
時系列の世界の時系列データ
MapR Technologies Japan
 
逆らえない大きな流れ: 次世代のエンタープライズアーキテクチャ
逆らえない大きな流れ: 次世代のエンタープライズアーキテクチャ逆らえない大きな流れ: 次世代のエンタープライズアーキテクチャ
逆らえない大きな流れ: 次世代のエンタープライズアーキテクチャ
MapR Technologies Japan
 
Apache Drill を利用した実データの分析
Apache Drill を利用した実データの分析Apache Drill を利用した実データの分析
Apache Drill を利用した実データの分析
MapR Technologies Japan
 
Apache Drill でたしなむ セルフサービスデータ探索 - 2014/11/06 Cloudera World Tokyo 2014 LTセッション
Apache Drill でたしなむ セルフサービスデータ探索 - 2014/11/06 Cloudera World Tokyo 2014 LTセッションApache Drill でたしなむ セルフサービスデータ探索 - 2014/11/06 Cloudera World Tokyo 2014 LTセッション
Apache Drill でたしなむ セルフサービスデータ探索 - 2014/11/06 Cloudera World Tokyo 2014 LTセッション
MapR Technologies Japan
 
Apache Drill: Rethinking SQL for Big data – Don’t Compromise on Flexibility o...
Apache Drill: Rethinking SQL for Big data – Don’t Compromise on Flexibility o...Apache Drill: Rethinking SQL for Big data – Don’t Compromise on Flexibility o...
Apache Drill: Rethinking SQL for Big data – Don’t Compromise on Flexibility o...
MapR Technologies Japan
 
実践機械学習 — MahoutとSolrを活用したレコメンデーションにおけるイノベーション - 2014/07/08 Hadoop Conference ...
実践機械学習 — MahoutとSolrを活用したレコメンデーションにおけるイノベーション - 2014/07/08 Hadoop Conference ...実践機械学習 — MahoutとSolrを活用したレコメンデーションにおけるイノベーション - 2014/07/08 Hadoop Conference ...
実践機械学習 — MahoutとSolrを活用したレコメンデーションにおけるイノベーション - 2014/07/08 Hadoop Conference ...
MapR Technologies Japan
 
マップアールが考える企業システムにおける分析プラットフォームの進化 - 2014/06/27 Data Scientist Summit 2014
マップアールが考える企業システムにおける分析プラットフォームの進化 - 2014/06/27 Data Scientist Summit 2014マップアールが考える企業システムにおける分析プラットフォームの進化 - 2014/06/27 Data Scientist Summit 2014
マップアールが考える企業システムにおける分析プラットフォームの進化 - 2014/06/27 Data Scientist Summit 2014
MapR Technologies Japan
 

More from MapR Technologies Japan (20)

Drill超簡単チューニング
Drill超簡単チューニングDrill超簡単チューニング
Drill超簡単チューニング
 
ストリーミングアーキテクチャ: State から Flow へ - 2016/02/08 Hadoop / Spark Conference Japan ...
ストリーミングアーキテクチャ: State から Flow へ - 2016/02/08 Hadoop / Spark Conference Japan ...ストリーミングアーキテクチャ: State から Flow へ - 2016/02/08 Hadoop / Spark Conference Japan ...
ストリーミングアーキテクチャ: State から Flow へ - 2016/02/08 Hadoop / Spark Conference Japan ...
 
MapR Streams & MapR コンバージド・データ・プラットフォーム
MapR Streams & MapR コンバージド・データ・プラットフォームMapR Streams & MapR コンバージド・データ・プラットフォーム
MapR Streams & MapR コンバージド・データ・プラットフォーム
 
Spark Streaming の基本とスケールする時系列データ処理 - Spark Meetup December 2015/12/09
Spark Streaming の基本とスケールする時系列データ処理 - Spark Meetup December 2015/12/09Spark Streaming の基本とスケールする時系列データ処理 - Spark Meetup December 2015/12/09
Spark Streaming の基本とスケールする時系列データ処理 - Spark Meetup December 2015/12/09
 
Apache Drill で日本語を扱ってみよう + オープンデータ解析
Apache Drill で日本語を扱ってみよう + オープンデータ解析Apache Drill で日本語を扱ってみよう + オープンデータ解析
Apache Drill で日本語を扱ってみよう + オープンデータ解析
 
Drilling into Data with Apache Drill - Tokyo Apache Drill Meetup 2015/11/12
Drilling into Data with Apache Drill - Tokyo Apache Drill Meetup 2015/11/12Drilling into Data with Apache Drill - Tokyo Apache Drill Meetup 2015/11/12
Drilling into Data with Apache Drill - Tokyo Apache Drill Meetup 2015/11/12
 
HBase と Drill - 緩い型付けの SQL がいかに NoSQL に適しているか
HBase と Drill - 緩い型付けの SQL がいかに NoSQL に適しているかHBase と Drill - 緩い型付けの SQL がいかに NoSQL に適しているか
HBase と Drill - 緩い型付けの SQL がいかに NoSQL に適しているか
 
Apache Drill でオープンデータを分析してみる - db tech showcase Sapporo 2015 2015/09/11
Apache Drill でオープンデータを分析してみる - db tech showcase Sapporo 2015 2015/09/11Apache Drill でオープンデータを分析してみる - db tech showcase Sapporo 2015 2015/09/11
Apache Drill でオープンデータを分析してみる - db tech showcase Sapporo 2015 2015/09/11
 
Apache Drill Overview - Tokyo Apache Drill Meetup 2015/09/15
Apache Drill Overview - Tokyo Apache Drill Meetup 2015/09/15Apache Drill Overview - Tokyo Apache Drill Meetup 2015/09/15
Apache Drill Overview - Tokyo Apache Drill Meetup 2015/09/15
 
Hadoop によるゲノム解読
Hadoop によるゲノム解読Hadoop によるゲノム解読
Hadoop によるゲノム解読
 
事例から見るNoSQLの使い方 - db tech showcase Tokyo 2015 2015/06/11
事例から見るNoSQLの使い方 - db tech showcase Tokyo 2015 2015/06/11事例から見るNoSQLの使い方 - db tech showcase Tokyo 2015 2015/06/11
事例から見るNoSQLの使い方 - db tech showcase Tokyo 2015 2015/06/11
 
Apache Drill で JSON 形式の オープンデータを分析してみる - db tech showcase Tokyo 2015 2015/06/11
Apache Drill で JSON 形式の オープンデータを分析してみる - db tech showcase Tokyo 2015 2015/06/11Apache Drill で JSON 形式の オープンデータを分析してみる - db tech showcase Tokyo 2015 2015/06/11
Apache Drill で JSON 形式の オープンデータを分析してみる - db tech showcase Tokyo 2015 2015/06/11
 
異常検知 - 何を探すかよく分かっていないものを見つける方法
異常検知 - 何を探すかよく分かっていないものを見つける方法異常検知 - 何を探すかよく分かっていないものを見つける方法
異常検知 - 何を探すかよく分かっていないものを見つける方法
 
時系列の世界の時系列データ
時系列の世界の時系列データ時系列の世界の時系列データ
時系列の世界の時系列データ
 
逆らえない大きな流れ: 次世代のエンタープライズアーキテクチャ
逆らえない大きな流れ: 次世代のエンタープライズアーキテクチャ逆らえない大きな流れ: 次世代のエンタープライズアーキテクチャ
逆らえない大きな流れ: 次世代のエンタープライズアーキテクチャ
 
Apache Drill を利用した実データの分析
Apache Drill を利用した実データの分析Apache Drill を利用した実データの分析
Apache Drill を利用した実データの分析
 
Apache Drill でたしなむ セルフサービスデータ探索 - 2014/11/06 Cloudera World Tokyo 2014 LTセッション
Apache Drill でたしなむ セルフサービスデータ探索 - 2014/11/06 Cloudera World Tokyo 2014 LTセッションApache Drill でたしなむ セルフサービスデータ探索 - 2014/11/06 Cloudera World Tokyo 2014 LTセッション
Apache Drill でたしなむ セルフサービスデータ探索 - 2014/11/06 Cloudera World Tokyo 2014 LTセッション
 
Apache Drill: Rethinking SQL for Big data – Don’t Compromise on Flexibility o...
Apache Drill: Rethinking SQL for Big data – Don’t Compromise on Flexibility o...Apache Drill: Rethinking SQL for Big data – Don’t Compromise on Flexibility o...
Apache Drill: Rethinking SQL for Big data – Don’t Compromise on Flexibility o...
 
実践機械学習 — MahoutとSolrを活用したレコメンデーションにおけるイノベーション - 2014/07/08 Hadoop Conference ...
実践機械学習 — MahoutとSolrを活用したレコメンデーションにおけるイノベーション - 2014/07/08 Hadoop Conference ...実践機械学習 — MahoutとSolrを活用したレコメンデーションにおけるイノベーション - 2014/07/08 Hadoop Conference ...
実践機械学習 — MahoutとSolrを活用したレコメンデーションにおけるイノベーション - 2014/07/08 Hadoop Conference ...
 
マップアールが考える企業システムにおける分析プラットフォームの進化 - 2014/06/27 Data Scientist Summit 2014
マップアールが考える企業システムにおける分析プラットフォームの進化 - 2014/06/27 Data Scientist Summit 2014マップアールが考える企業システムにおける分析プラットフォームの進化 - 2014/06/27 Data Scientist Summit 2014
マップアールが考える企業システムにおける分析プラットフォームの進化 - 2014/06/27 Data Scientist Summit 2014
 

スケールアウト・インメモリ分析の標準フォーマットを目指す Apache Arrow と Value Vectors - Tokyo Apache Drill Meetup 2016/03/22

  • 1. © 2016 MapR Technologies 1© 2016 MapR Technologies 1© 2016 MapR Technologies スケールアウト・インメモリ分析の標準フォーマット を目指す Apache Arrow と Value Vectors 草薙 昭彦 – Data Engineer, MapR Technologies 2016 年 3 月 22 日
  • 2. © 2016 MapR Technologies 2© 2016 MapR Technologies 2 自己紹介 •  草薙 昭彦 (@nagix) •  MapR Technologies データエンジニア NS-SHAFT 無料!
  • 3. © 2016 MapR Technologies 3© 2016 MapR Technologies 3 Apache Arrow プロジェクト •  カラム型インメモリ分析のデファクト標準を目指す Apache プロジェク ト •  2016年2月にトッププロジェクトとして登場 •  Apache Drill のスタートアップ Dremio がプロジェクトの中心となって おり、Arrow は Drill の Value Vectors フォーマットが発祥 “Apache Arrowプロジェクトは、これらの協力プロジェクトのコミュニティ や専門家集団の存在を理由として、通常は必要とされるプロジェクトの 有効性を検証するためのインキュベーターフェーズを省略し、...” インメモリビッグデータシステムをつなぐ「Apache Arrow」 http://japan.zdnet.com/article/35078163/
  • 4. © 2016 MapR Technologies 4© 2016 MapR Technologies 4 課題:インメモリ分析の流行 ビッグデータ初期の課題: •  バッチ処理に特化された 処理エンジンの非効率性 •  高速な分析レスポンスの ニーズに対するディスクア クセスの遅さ 新たな課題: •  各製品が独自のインメ モリデータ表現を採用す ることによる非効率性 インメモリ処理を最大限活用 する製品の登場 •  Impala, Drill, SAP HANA のような SQL エンジン •  Spark, Flink のような実行 フレームワーク •  Storm, Kafka, Apex のよう なストリーム処理エンジン
  • 5. © 2016 MapR Technologies 5© 2016 MapR Technologies 5 これは非効率性だわ・・・ •  各システムは独自の内部メモリ 形式を持つ •  70〜80%のCPUはシリアライズ・ デシリアライズに使われる •  似たような機能が複数のプロジェ クトで実装される Thrift, Avro, Protobuf,…
  • 6. © 2016 MapR Technologies 6© 2016 MapR Technologies 6 ならばこうだ •  すべてのシステムは共通のメモリ 形式を持つ •  システム間のやりとりにオーバー ヘッドがない •  プロジェクト間で機能を共有できる (例: Parquet-to-Arrow リーダー)
  • 7. © 2016 MapR Technologies 7© 2016 MapR Technologies 7 分析テクノロジーのトレンドとビジネス要件 インメモリ 複合データと動的スキーマカラム型 分析に適した、Apache Parquet を始めとするカラム 型データフォーマットの普及 データ格納に必要なストレー ジ容量の削減と分析ワーク ロードの性能向上 メモリ上にデータを保持 することによる、分析処理 レスポンスの大幅な短縮 もはやデータのアクセス 待ちをしたい人はいな い・・・ 現実のデータは階層構造、ネス ト構造を使うことでより簡潔に表 現できる場合がある JSONやドキュメントデータベー スの普及に伴い、分析システム はこれらを直接扱える必要があ る 3つの要件を満たし、性能面のメリットと同時に分析の柔軟性を得ることが求められる
  • 8. © 2016 MapR Technologies 8© 2016 MapR Technologies 8 Arrow とは •  SQL、JSON で定義済みの型を含む基本 データ型 •  基本データ型を用いた任意の複合レコード 構造をサポートするための、カラム型インメ モリデータ表現形式 •  Pick-List、Hash Table、Queue のような補 助データ構造 •  共有メモリ、TCP/IP、RDMA を介したプロ セス間通信 データ構造 アルゴリズム クロス言語バインディング のコンビネーション •  Java、C、C++、Python 等の言語向けの データアクセスライブラリ •  ビットマップ選択、ハッシュ、フィルタリング、 バケッティング、ソート、マッチング等の操 作のための、パイプライン化された SIMD アルゴリズム •  カラム型インメモリ圧縮 •  不揮発性メモリ、SSD、HDD への短期的 なデータ格納のためのツール
  • 9. © 2016 MapR Technologies 9© 2016 MapR Technologies 9 Arrow とは •  ストレージや実行エンジンではない •  Arrow は次のようなタイプのシステムの共有基盤になることを目指す データ分析システム ストリーミング・ キューイング ストレージSQL 実行エンジン pandas� heron�
  • 10. © 2016 MapR Technologies 10© 2016 MapR Technologies 10 Arrow とは •  前述のプロジェクトとは競合しない •  各プロジェクトと協調し、より良い性能と相互運用性の提供をゴールと する –  似たような機能を持つプロジェクトの乱立による非効率性が課題であったため
  • 11. © 2016 MapR Technologies 11© 2016 MapR Technologies 11 Arrow を支持するプロジェクト • Calcite (データ処理エンジン) • Cassandra (NoSQLデータストア) • Drill (SQL-on-Hadoop) • Hadoop (ビッグデータ基盤) • HBase (NoSQLデータストア) • Ibis (データ分析フレームワーク) • Impala (SQL-on-Hadoop) •  Kudu (分析用ストレージ) •  Pandas (データ分析ライブラリ) •  Parquet (データフォーマット) •  Phoenix (SQL-on-HBase) •  Spark (データ分析フレームワーク) •  Storm (ストリーミング処理)
  • 12. © 2016 MapR Technologies 12© 2016 MapR Technologies 12 カラム型フォーマット c2 c3c1 v12 v13v11 v22 v23v21 v32 v33v31 v42 v43v41 v52 v53v51 c2 c3c1 v12 v13v11 v22 v23v21 v32 v33v31 v42 v43v41 v52 v53v51 Row-oriented フォーマット (CSV, 従来のRDB, …) Column-oriented フォーマット (Parquet, ORC, …)
  • 13. © 2016 MapR Technologies 13© 2016 MapR Technologies 13 カラム型フォーマット •  分析ワークロードの性能向上 –  一部のカラムの射影 –  特定カラムの値の条件によるフィルタリング –  特定カラムの値の集計 –  すべてのデータをスキャンする必要がないケースが多い •  ストレージ容量の削減 –  カラム内のデータは似たデータが並ぶため圧縮効率が高い –  例: ID、日付、性別 •  ・・・ただしここまではディスク上のフォーマットの話
  • 14. © 2016 MapR Technologies 14© 2016 MapR Technologies 14 カラム型フォーマット: メモリ上のフォーマットの場合 •  最新の CPU の機能を最大限に使いきることが 最大の目標 –  キャッシュ局所性を最大化 –  パイプライン実行 –  SIMD 命令の活用 –  これらにより10〜100倍の実行性能向上も •  メモリ利用の効率化 –  ベクトル化されたデータは Record Batch という単位 (最大64kレコード)でグループ化 –  メモリ上に載り切らないサイズのデータの扱いが可 能 Record Batch VV VV VV VV Record Batch VV VV VV VV Record Batch VV VV VV VV VV: Value Vector
  • 15. © 2016 MapR Technologies 15© 2016 MapR Technologies 15 カラム型フォーマット: メモリ上のフォーマットの場合
  • 16. © 2016 MapR Technologies 16© 2016 MapR Technologies 16 データレイアウト: プリミティブデータ配列型 •  同じサイズを持つ値の固定長配列 •  全体がメモリの連続領域に配置される –  キャッシュ局所性が向上 •  Nullable 型の場合、配列とは別に Null ビットマスク配列が用意される –  高速に Null チェックが可能
  • 17. © 2016 MapR Technologies 17© 2016 MapR Technologies 17 データレイアウト: List 型 •  同じ型を持つ、各要素が可変長の連 続した値を持つネストされた配列 –  違う型を持つ場合は Union 型で •  値の配列とオフセット配列からなる –  オフセットは先頭からの要素数 –  すべての要素に O(1) で到達可能 •  ネストデータは階層を n とすると O(n) [   [‘j’, ‘o’, ‘e’],   null,   [‘m’, ‘a’, ‘r’, ‘k’] ]
  • 18. © 2016 MapR Technologies 18© 2016 MapR Technologies 18 データレイアウト: List 型のネスト
  • 19. © 2016 MapR Technologies 19© 2016 MapR Technologies 19 データレイアウト: Struct 型 •  順序と型を持つ「フィールド」要素 から構成されるネストデータ型 •  フィールドは通常名前を持つが、 名前や型は物理メモリレイアウト とは別のメタデータとして管理 •  Struct 全体の Null ビットマスクを 持つことも可能 Struct [nullable] < name: String (= List<char>) [nullable], age: Int32 [not-nullable] >
  • 20. © 2016 MapR Technologies 20© 2016 MapR Technologies 20 データレイアウト: Dense Union 型 •  各要素が異なる型を持つ配列 •  次のメモリレイアウトを持つ –  型ごとの子配列 –  各要素の型を格納するタイプ配列 –  各要素の子配列におけるオフセットを格納 するオフセット配列
  • 21. © 2016 MapR Technologies 21© 2016 MapR Technologies 21 データレイアウト: Sparse Union 型 •  Dense Union 型からオフセット配 列を除いたもの –  各子配列の長さは Union の長さと一 致する •  Dense Union 型と比べると大幅に メモリを必要とするが利点もある –  例: 同じ長さの複数の配列がある時、 タイプ配列を定義するだけでUnion型 に変換可能
  • 22. © 2016 MapR Technologies 22© 2016 MapR Technologies 22 Intel の SIMD 技術(SSE/AVX) SSE AVX Nehalem世代 以前 128bit幅 SIMDレジスタ 8単精度FP演算/クロック
 4倍精度FP演算/クロック 128bit整数演算 AVX2 AVX-512 201520132011〜2010 Sandy Bridge世代 256bit幅 SIMDレジスタ 16単精度FP演算/クロック
 8倍精度FP演算/クロック Haswell世代 256bit幅 SIMDレジスタ 32単精度FP演算/クロック
 16倍精度FP演算/クロック 256bit整数演算 Skylake世代 512bit幅 SIMDレジスタ 64単精度FP演算/クロック
 32倍精度FP演算/クロック 512bit整数演算
  • 23. © 2016 MapR Technologies 23© 2016 MapR Technologies 23 ベクトル化 •  一般の RDBMS では 1 レコード単位の処理 •  Arrow では同時に複数レコードの処理を実行 –  複数のレコードから取り出されたカラムのセット •  Record Batch という –  最新の CPU の機能を考慮 •  最新の CPU アーキテクチャに最適化 •  SIMD (Single Input Multiple Data) インストラクション –  AVX インストラクションの利用により時に 100 倍の性能向上も •  CPU パイプライン高速化のためブランチングを回避 –  処理ループをなるべく小さく、単純化 •  すべてのパイプラインが埋まっている状態にすることで効率を最大化
  • 24. © 2016 MapR Technologies 24© 2016 MapR Technologies 24 ベクトル化 同時に複数のレコードに対し 操作を行う Id Name Age 101 abc 22 102 def 37 104 ghi 45 105 jkl 25 108 mno 31 112 pqr 27 114 owx 35 リレーション ベクトル化された Record Batch Id 101 102 104 105 Name abc def ghi jkl Age 22 37 45 25 108 112 114 mno pqr owx 31 27 35
  • 25. © 2016 MapR Technologies 25© 2016 MapR Technologies 25 ロードマップ •  2016年内に Drill, Impala, Kudu, Ibis, Spark が Arrow に対応予定 •  R, Julia, JavaScript の言語バインディングも開発進行中 •  Strata + Hadoop World San Jose の次の講演 (3/30) にも注目 –  Faster conclusions using in-memory columnar SQL and machine learning Wes McKinney (Cloudera), Jacques Nadeau (Dremio)
  • 26. © 2016 MapR Technologies 26© 2016 MapR Technologies 26 Q&A @mapr_japan sales-jp@mapr.com ありがとうございました maprjapan