SlideShare a Scribd company logo
1 of 32
Download to read offline
Project Tungsten
Bringing Spark Closer to Bare Metal
Reynold Xin @rxin
Spark Conference Japan
Feb 8,2016
Hardware Trends
Storage
Network
CPU
Hardware Trends
2010
Storage
50+MB/s
(HDD)
Network 1Gbps
CPU ~3GHz
Hardware Trends
2010 2016
Storage
50+MB/s
(HDD)
500+MB/s
(SSD)
Network 1Gbps 10Gbps
CPU ~3GHz ~3GHz
Hardware Trends
2010 2016
Storage
50+MB/s
(HDD)
500+MB/s
(SSD)
10X
Network 1Gbps 10Gbps 10X
CPU ~3GHz ~3GHz L
On the flip side
Spark IO has been optimized
• Reduce IO by pruning inputdata that is notneeded
• New shuffle and networkimplementations(2014 sortrecord)
Data formats have improved
• E.g. Parquet isa “dense” columnarformat
その一方で
Spark のIOは最適化された
不要な入力データを排除することによる IO の削減
新しいシャッフルとネットワークの実装 (2014年ソート記録)
Parquet は「密」なカラムナフォーマット
データフォーマットが改善された
Goals of Project Tungsten
Substantially improve the memory and CPUefficiency of Spark
backend execution and push performance closerto the limits of
modern hardware.
Note the focus on “execution”not“optimizer”: veryeasyto pick broadcast join that is 1000Xfaster than
Cartesian join, buthard to optimizebroadcast join to bean orderof magnitudefaster.
Project Tungsten のゴール
Spark の「バックエンドの実行」のメモリとCPU効率を実質的に改善す
ることと、性能をモダンなハードウェアの限界に近づけること
「最適化」ではなく「実行」に注目していることに注意:broadcast join を
Cartesian joinより 1000 倍早くするのはとても簡単だが、broadcast join
をケタ違いに早くなるよう最適化するのは難しい
Phase 1
Foundation
Memory Management
Code Generation
Cache-aware Algorithms
Phase 2
Order-of-magnitude Faster
Whole-stage Codegen
Vectorization
立ち上がり
メモリ管理
コード生成
(ハードウェア)キャッ
シュを意識したアル
ゴリズム
ベクトル化
ケタ違いの高速化
全ステージ
コード生成
Phase 1
Laying The Foundation
Optimized data representations
Java objects have two downsides:
• Space overheads
• Garbage collection overheads
Tungstensidesteps theseproblems by performing its own manual
memory management.
最適化されたデータ表現
Java オブジェクトには2つのマイナス面がある
・空間のオーバーヘッド
・ガベージコレクションのオーバーヘッド
Tungsten はこれらの問題を、独自のメモリ管理を行うことで回避する
The overheads of Java objects
“abcd”
Native: 4 byteswith UTF-8 encoding
Java: 48 bytes
java.lang.String object internals:
OFFSET SIZE TYPE DESCRIPTION VALUE
0 4 (object header) ...
4 4 (object header) ...
8 4 (object header) ...
12 4 char[] String.value []
16 4 int String.hash 0
20 4 int String.hash32 0
Instance size: 24 bytes (reported by Instrumentation API)
12 byte object header
8 byte hashcode
20 bytes of overhead + 8 bytes for chars
Java オブジェクトの
オーバーヘッド
ネイティブ:UTF-8エンコーディン
グで4バイト
Java: 48バイト
12バイト:オブジェクトヘッダ
8バイト:ハッシュコード
インスタンスサイズ: 24バイト (Instrumentation API による)
20バイトのオーバーヘッド+ 8バイトの文字
sun.misc.Unsafe
JVM internal API for directly manipulating memory without
safety checks (hence “unsafe”)
We use this API to build data structures in both on- and off-
heap memory
Data
structures with
pointers
Flat data
structures
Complex
examples
安全性のチェックを行わずに直接的にメモリを操作する JVM 内
部 API (すなわち “unsafe”)
on- と off-heap メモリの両方でデータ構造をビルドする際にこ
のAPIを利用している
フラットなデータ構造
ポインタを保持した
データ構造
複雑な例
Code generation
Generic evaluation ofexpression logic
is very expensive on the JVM
– Virtual function calls
– Branches based on expression type
– Object creation due to primitive
boxing
– Memory consumption by boxed
primitive objects
Generating custom bytecode can
eliminate these overheads
9.33
9.36
36.65
Hand written
Code gen
Interpreted Projection
Evaluating “a + a + a”
(query time in seconds)
表現ロジックの汎用的な評価は JVM
上では非常にコストが高い
型表現に基づくブランチ
プリミティブのボクシングに起因する
オブジェクトの生成
仮想関数呼び出し
プリミティブをボクシングしたオ
ブジェクトによるメモリの消費
カスタムバイトコードの生成によりこれ
らのオーバーヘッドを排除できる
インタプリタ射影
コード生成
手書き
“a + a + a” の評価
(問い合わせ時間(秒))
Code generation
Tungsten uses the Janino compilerto reduce code generation time
Spark 1.5 added ~100 UDF’swith code gen:
AddMonths
ArrayContains
Ascii
Base64
Bin
CheckOverflow
CombineSets
Contains
CountSet
Crc32
DateAdd
DateDiff
DateFormatClass
DateSub
DayOfMonth
DayOfYear
Decode
Encode
EndsWith
Explode
Factorial
FindInSet
FormatNumber
FromUTCTimestamp
FromUnixTime
GetArrayItem
GetJsonObject
GetMapValue
Hex
InSet
InitCap
IsNaN
IsNotNull
IsNull
LastDay
Length
Levenshtein
Like
Lower
MakeDecimal
Md5
Month
MonthsBetween
NaNvl
NextDay
Not
PromotePrecision
Quarter
RLike
Round
Second
Sha1
Sha2
ShiftLeft
ShiftRight
ShiftRightUnsig
ned
SortArray
SoundEx
StartsWith
StringInstr
StringRepeat
StringReverse
StringSpace
StringSplit
StringTrim
StringTrimLeft
StringTrimRight
TimeAdd
TimeSub
ToDate
ToUTCTimestamp
TruncDate
UnBase64
Unhex
UnixTimestamp
Tungsten はコードの生成時間を減らすために Janino コンパイラを利用する
Spark 1.5 は code gen で ~100
の UDF を追加した:
AlphaSort Cache-friendly Sorting
Idea: minimize randommemory accesses
• Store prefixes of sort keysinside the sort pointerarray
• Short-circuit by comparing prefixesfirst
• Swap only pointersand prefixes
pointer record
key prefix pointer record
Naïve layout
Cache friendlylayout
AlphaSort キャッシュフレンドリーなソート
アイデア: ランダムメモリアクセスの最小化
単純なレイアウト
キャッシュフレンド
リーなレイアウト
・ソートのポインタ配列の中にソートキー
のプレフィックスを格納
・先にプレフィックスを比較することによる
短絡評価(ショートサーキット)
・ポインタとプレフィックスのみのスワップ
Phase 2
Order-of-magnitude Faster
Scan
Filter
Project
Aggregate
select count(*) from store_sales
where ss_item_sk = 1000
Volcano Iterator Model
Standard for 30 years: almost
all databases do it
Each operatoris an “iterator”
that consumes recordsfrom
its input operator
class Filter {
…
def next(): Boolean = {
var found = false
while (!found && child.next()) {
found = predicate(child.fetch())
}
return found
}
def fetch(): InternalRow = {
child.fetch()
}
…
}
30年間標準
ほぼすべてのデータベースが行っている
各オペレータは入力オペレータからの
レコードを消費する「イテレータ」
Scan
Filter
Project
Aggregate
data flow
Scan
Filter
Project
Aggregate
call stack to processa row
データフロー 一行を処理するためのコールスタック
Downside of the Volcano Model
1. Too many virtual function calls
o at least 3 callsfor each row in Aggregate
2. Extensive memory access
o “row” is a small segmentin memory (orin L1/L2/L3 cache)
3. Can’t take advantage modern CPU features
o SIMD, pipelining,prefetching …
仮想関数呼び出しが多すぎる
Aggregateで少なくとも3回の呼び出し
メモリアクセスが広範
「行」はメモリ(またはL1/L2/L3キャッシュ)中の小さな断片
モダンなCPUの機能の恩恵が受けられない
SIMD、パイプライン、プリフェッチ、・・・
ボルケーノモデルの欠点
What if we hire a collegefreshmanto
implement this queryin Java in 10 mins?
select count(*) from store_sales
where ss_item_sk = 1000
var count = 0
for (ss_item_sk in store_sales) {
if (ss_item_sk == 1000) {
count += 1
}
}
もし10分間で Java でこのクエリを実装するために、大学1年生を雇ったら?
Volcano model
30+ years of database research
college freshman
hand-written code in 10 mins
vs
ボルケーノモデル
30年以上のデータベースの研究
大学1年生
10分間の手書きのコード
Volcano 13.95 million
rows/sec
college
freshman
125 million
rows/sec
Note: End-to-end, single thread, single column, and data originated in Parquet on disk
ボルケーノ
大学1年生
High throughput
高スループット
How does a student beat 30 years of research?
Volcano
1. Many virtual function calls
2. Data in memory (orcache)
3. No loop unrolling,SIMD, pipelining
hand-written code
1. No virtual function calls
2. Data in CPU registers
3. Compiler loop unrolling,SIMD,
pipelining
どうして学生が30年の研究に勝ったのか?
大量の仮想関数呼び出し
データをメモリに(もしくはキャッシュに)
ループ展開、SIMD、パイプラインが無い
仮想関数呼び出しがない
データを CPU のレジスタに
コンパイラによるループ展開、SIMD、
パイプライン
Whole-stage Codegen
Fusing operatorstogether so the generatedcode looks like hand
optimized code:
- Data stays in registers, rather than cache/memory
- Minimizes virtual function calls
- Compilers can unrollloops and use SIMDinstructions
全ステージ コード生成
複数のオペレータを一括で扱い結合することで、生成されたコードが手動で最適化されたコードのよう
にみえる
- データはキャッシュ / メモリよりもレジスタの中に残る
- 仮想関数呼び出しを最小化する
- コンパイラがループを展開することができ、SIMD命令を使う
Scan
Filter
Project
Aggregate
var count = 0
for (ss_item_sk in store_sales) {
if (ss_item_sk == 1000) {
count += 1
}
}
Whole-stage Codegen: Spark as a “Compiler”
全ステージ コード生成 : 「コンパイラ」としての Spark
But there are things we can’t fuse
Complicated I/O
• CSV, Parquet, ORC, …
External integrations
• Python,R, scikit-learn, TensorFlow,etc
Don’t want to compile a CSVreader inline for everyquery!
しかし結合させることができないものがある
複雑な I/O
・ CSV, Parquet, ORC, …
外部とのインテグレーション
・Python, R, scikit-learn, TensorFlow, など
クエリごとに CSV reader をコンパイルしたくない!
Vectorization
In-memory
Row Format
1 john 4.1
2 mike 3.5
3 sally 6.4
1 2 3
john mike sally
4.1 3.5 6.4
In-memory
Column Format
ベクトル化
メモリ内の行フォーマット メモリ内の列フォーマット
Why Vectorization?
1. Modern CPUs are better at doing one thing over and over again
(rather than N different things over and over again)
2. Most high-performanceexternalsystems are already columnar
(numpy, TensorFlow, Parquet) so it is easierto integrate with
なぜベクトル化?
モダンな CPU はひとつのことを何度も何度も行うのが得意 (N 個の異なることを何度も何
度も行うよりも)
ハイパフォーマンスな外部システムの多くは、既にカラムナ (numpy, TensorFlow, Parquet)
であるため、インテグレートするのがより簡単
Parquet 11 million
rows/sec
Parquet
vectorized
90 million
rows/sec
Note: End-to-end, single thread, single column, and data originated in Parquet on disk
High throughput
高スループット
Phase 1
Spark 1.4 - 1.6
Memory Management
Code Generation
Cache-aware Algorithms
Phase 2
Spark 2.0+
Whole-stage Codegen
Vectorization
メモリ管理
コード生成
キャッシュを意識したアルゴリズム
全ステージ コード生成
ベクトル化
ありがとうございました
@rxin

More Related Content

What's hot

20171212 titech lecture_ishizaki_public
20171212 titech lecture_ishizaki_public20171212 titech lecture_ishizaki_public
20171212 titech lecture_ishizaki_publicKazuaki Ishizaki
 
Quick Overview of Upcoming Spark 3.0 + α
Quick Overview of Upcoming Spark 3.0 + αQuick Overview of Upcoming Spark 3.0 + α
Quick Overview of Upcoming Spark 3.0 + αTakeshi Yamamuro
 
Sparkパフォーマンス検証
Sparkパフォーマンス検証Sparkパフォーマンス検証
Sparkパフォーマンス検証BrainPad Inc.
 
Treasure Dataを支える技術 - MessagePack編
Treasure Dataを支える技術 - MessagePack編Treasure Dataを支える技術 - MessagePack編
Treasure Dataを支える技術 - MessagePack編Taro L. Saito
 
2016-02-08 Spark MLlib Now and Beyond@Spark Conference Japan 2016
2016-02-08 Spark MLlib Now and Beyond@Spark Conference Japan 20162016-02-08 Spark MLlib Now and Beyond@Spark Conference Japan 2016
2016-02-08 Spark MLlib Now and Beyond@Spark Conference Japan 2016Yu Ishikawa
 
20191115-PGconf.Japan
20191115-PGconf.Japan20191115-PGconf.Japan
20191115-PGconf.JapanKohei KaiGai
 
2014 11-20 Machine Learning with Apache Spark 勉強会資料
2014 11-20 Machine Learning with Apache Spark 勉強会資料2014 11-20 Machine Learning with Apache Spark 勉強会資料
2014 11-20 Machine Learning with Apache Spark 勉強会資料Recruit Technologies
 
20180109 titech lecture_ishizaki_public
20180109 titech lecture_ishizaki_public20180109 titech lecture_ishizaki_public
20180109 titech lecture_ishizaki_publicKazuaki Ishizaki
 
TPC-DSから学ぶPostgreSQLの弱点と今後の展望
TPC-DSから学ぶPostgreSQLの弱点と今後の展望TPC-DSから学ぶPostgreSQLの弱点と今後の展望
TPC-DSから学ぶPostgreSQLの弱点と今後の展望Kohei KaiGai
 
最近のストリーム処理事情振り返り
最近のストリーム処理事情振り返り最近のストリーム処理事情振り返り
最近のストリーム処理事情振り返りSotaro Kimura
 
Hive on Spark を活用した高速データ分析 - Hadoop / Spark Conference Japan 2016
Hive on Spark を活用した高速データ分析 - Hadoop / Spark Conference Japan 2016Hive on Spark を活用した高速データ分析 - Hadoop / Spark Conference Japan 2016
Hive on Spark を活用した高速データ分析 - Hadoop / Spark Conference Japan 2016Nagato Kasaki
 
Sparkによる GISデータを題材とした時系列データ処理 (Hadoop / Spark Conference Japan 2016 講演資料)
Sparkによる GISデータを題材とした時系列データ処理 (Hadoop / Spark Conference Japan 2016 講演資料)Sparkによる GISデータを題材とした時系列データ処理 (Hadoop / Spark Conference Japan 2016 講演資料)
Sparkによる GISデータを題材とした時系列データ処理 (Hadoop / Spark Conference Japan 2016 講演資料)Hadoop / Spark Conference Japan
 
20190516_DLC10_PGStrom
20190516_DLC10_PGStrom20190516_DLC10_PGStrom
20190516_DLC10_PGStromKohei KaiGai
 
2015-11-17 きちんと知りたいApache Spark ~機械学習とさまざまな機能群
2015-11-17 きちんと知りたいApache Spark ~機械学習とさまざまな機能群2015-11-17 きちんと知りたいApache Spark ~機械学習とさまざまな機能群
2015-11-17 きちんと知りたいApache Spark ~機械学習とさまざまな機能群Yu Ishikawa
 
Hive on Spark の設計指針を読んでみた
Hive on Spark の設計指針を読んでみたHive on Spark の設計指針を読んでみた
Hive on Spark の設計指針を読んでみたRecruit Technologies
 
Prestoで実現するインタラクティブクエリ - dbtech showcase 2014 Tokyo
Prestoで実現するインタラクティブクエリ - dbtech showcase 2014 TokyoPrestoで実現するインタラクティブクエリ - dbtech showcase 2014 Tokyo
Prestoで実現するインタラクティブクエリ - dbtech showcase 2014 TokyoTreasure Data, Inc.
 
Apache Spark 3.0新機能紹介 - 拡張機能やWebUI関連のアップデート(Spark Meetup Tokyo #3 Online)
Apache Spark 3.0新機能紹介 - 拡張機能やWebUI関連のアップデート(Spark Meetup Tokyo #3 Online)Apache Spark 3.0新機能紹介 - 拡張機能やWebUI関連のアップデート(Spark Meetup Tokyo #3 Online)
Apache Spark 3.0新機能紹介 - 拡張機能やWebUI関連のアップデート(Spark Meetup Tokyo #3 Online)NTT DATA Technology & Innovation
 
20190925_DBTS_PGStrom
20190925_DBTS_PGStrom20190925_DBTS_PGStrom
20190925_DBTS_PGStromKohei KaiGai
 
20160121 データサイエンティスト協会 木曜セミナー #5
20160121 データサイエンティスト協会 木曜セミナー #520160121 データサイエンティスト協会 木曜セミナー #5
20160121 データサイエンティスト協会 木曜セミナー #5Koichiro Sasaki
 
ゼロから始めるSparkSQL徹底活用!
ゼロから始めるSparkSQL徹底活用!ゼロから始めるSparkSQL徹底活用!
ゼロから始めるSparkSQL徹底活用!Nagato Kasaki
 

What's hot (20)

20171212 titech lecture_ishizaki_public
20171212 titech lecture_ishizaki_public20171212 titech lecture_ishizaki_public
20171212 titech lecture_ishizaki_public
 
Quick Overview of Upcoming Spark 3.0 + α
Quick Overview of Upcoming Spark 3.0 + αQuick Overview of Upcoming Spark 3.0 + α
Quick Overview of Upcoming Spark 3.0 + α
 
Sparkパフォーマンス検証
Sparkパフォーマンス検証Sparkパフォーマンス検証
Sparkパフォーマンス検証
 
Treasure Dataを支える技術 - MessagePack編
Treasure Dataを支える技術 - MessagePack編Treasure Dataを支える技術 - MessagePack編
Treasure Dataを支える技術 - MessagePack編
 
2016-02-08 Spark MLlib Now and Beyond@Spark Conference Japan 2016
2016-02-08 Spark MLlib Now and Beyond@Spark Conference Japan 20162016-02-08 Spark MLlib Now and Beyond@Spark Conference Japan 2016
2016-02-08 Spark MLlib Now and Beyond@Spark Conference Japan 2016
 
20191115-PGconf.Japan
20191115-PGconf.Japan20191115-PGconf.Japan
20191115-PGconf.Japan
 
2014 11-20 Machine Learning with Apache Spark 勉強会資料
2014 11-20 Machine Learning with Apache Spark 勉強会資料2014 11-20 Machine Learning with Apache Spark 勉強会資料
2014 11-20 Machine Learning with Apache Spark 勉強会資料
 
20180109 titech lecture_ishizaki_public
20180109 titech lecture_ishizaki_public20180109 titech lecture_ishizaki_public
20180109 titech lecture_ishizaki_public
 
TPC-DSから学ぶPostgreSQLの弱点と今後の展望
TPC-DSから学ぶPostgreSQLの弱点と今後の展望TPC-DSから学ぶPostgreSQLの弱点と今後の展望
TPC-DSから学ぶPostgreSQLの弱点と今後の展望
 
最近のストリーム処理事情振り返り
最近のストリーム処理事情振り返り最近のストリーム処理事情振り返り
最近のストリーム処理事情振り返り
 
Hive on Spark を活用した高速データ分析 - Hadoop / Spark Conference Japan 2016
Hive on Spark を活用した高速データ分析 - Hadoop / Spark Conference Japan 2016Hive on Spark を活用した高速データ分析 - Hadoop / Spark Conference Japan 2016
Hive on Spark を活用した高速データ分析 - Hadoop / Spark Conference Japan 2016
 
Sparkによる GISデータを題材とした時系列データ処理 (Hadoop / Spark Conference Japan 2016 講演資料)
Sparkによる GISデータを題材とした時系列データ処理 (Hadoop / Spark Conference Japan 2016 講演資料)Sparkによる GISデータを題材とした時系列データ処理 (Hadoop / Spark Conference Japan 2016 講演資料)
Sparkによる GISデータを題材とした時系列データ処理 (Hadoop / Spark Conference Japan 2016 講演資料)
 
20190516_DLC10_PGStrom
20190516_DLC10_PGStrom20190516_DLC10_PGStrom
20190516_DLC10_PGStrom
 
2015-11-17 きちんと知りたいApache Spark ~機械学習とさまざまな機能群
2015-11-17 きちんと知りたいApache Spark ~機械学習とさまざまな機能群2015-11-17 きちんと知りたいApache Spark ~機械学習とさまざまな機能群
2015-11-17 きちんと知りたいApache Spark ~機械学習とさまざまな機能群
 
Hive on Spark の設計指針を読んでみた
Hive on Spark の設計指針を読んでみたHive on Spark の設計指針を読んでみた
Hive on Spark の設計指針を読んでみた
 
Prestoで実現するインタラクティブクエリ - dbtech showcase 2014 Tokyo
Prestoで実現するインタラクティブクエリ - dbtech showcase 2014 TokyoPrestoで実現するインタラクティブクエリ - dbtech showcase 2014 Tokyo
Prestoで実現するインタラクティブクエリ - dbtech showcase 2014 Tokyo
 
Apache Spark 3.0新機能紹介 - 拡張機能やWebUI関連のアップデート(Spark Meetup Tokyo #3 Online)
Apache Spark 3.0新機能紹介 - 拡張機能やWebUI関連のアップデート(Spark Meetup Tokyo #3 Online)Apache Spark 3.0新機能紹介 - 拡張機能やWebUI関連のアップデート(Spark Meetup Tokyo #3 Online)
Apache Spark 3.0新機能紹介 - 拡張機能やWebUI関連のアップデート(Spark Meetup Tokyo #3 Online)
 
20190925_DBTS_PGStrom
20190925_DBTS_PGStrom20190925_DBTS_PGStrom
20190925_DBTS_PGStrom
 
20160121 データサイエンティスト協会 木曜セミナー #5
20160121 データサイエンティスト協会 木曜セミナー #520160121 データサイエンティスト協会 木曜セミナー #5
20160121 データサイエンティスト協会 木曜セミナー #5
 
ゼロから始めるSparkSQL徹底活用!
ゼロから始めるSparkSQL徹底活用!ゼロから始めるSparkSQL徹底活用!
ゼロから始めるSparkSQL徹底活用!
 

Viewers also liked

初めてのHadoopパッチ投稿 / How to Contribute to Hadoop (Cloudera World Tokyo 2014 LT講演資料)
初めてのHadoopパッチ投稿 / How to Contribute to Hadoop (Cloudera World Tokyo 2014 LT講演資料)初めてのHadoopパッチ投稿 / How to Contribute to Hadoop (Cloudera World Tokyo 2014 LT講演資料)
初めてのHadoopパッチ投稿 / How to Contribute to Hadoop (Cloudera World Tokyo 2014 LT講演資料)Hadoop / Spark Conference Japan
 
The Evolution and Future of Hadoop Storage (Hadoop Conference Japan 2016キーノート...
The Evolution and Future of Hadoop Storage (Hadoop Conference Japan 2016キーノート...The Evolution and Future of Hadoop Storage (Hadoop Conference Japan 2016キーノート...
The Evolution and Future of Hadoop Storage (Hadoop Conference Japan 2016キーノート...Hadoop / Spark Conference Japan
 
Apache Kudu Fast Analytics on Fast Data (Hadoop / Spark Conference Japan 2016...
Apache Kudu Fast Analytics on Fast Data (Hadoop / Spark Conference Japan 2016...Apache Kudu Fast Analytics on Fast Data (Hadoop / Spark Conference Japan 2016...
Apache Kudu Fast Analytics on Fast Data (Hadoop / Spark Conference Japan 2016...Hadoop / Spark Conference Japan
 
Mapa conceptual Erika Rivera Wendy Cervantes
Mapa conceptual  Erika Rivera Wendy CervantesMapa conceptual  Erika Rivera Wendy Cervantes
Mapa conceptual Erika Rivera Wendy Cervanteserika_rivera_chona
 
Colours oldgames
Colours oldgamesColours oldgames
Colours oldgamestbarczak
 
2014 Global Traveler Study
2014 Global Traveler Study2014 Global Traveler Study
2014 Global Traveler StudyCognizant
 
Caso.atrapalo.com.janet carrillo.dif.y.posicionamiento
Caso.atrapalo.com.janet carrillo.dif.y.posicionamientoCaso.atrapalo.com.janet carrillo.dif.y.posicionamiento
Caso.atrapalo.com.janet carrillo.dif.y.posicionamientoJanny Carrillo
 
Instructional power point on unit 2 second steps
Instructional power point on unit 2 second stepsInstructional power point on unit 2 second steps
Instructional power point on unit 2 second stepswtheteacher
 
Guide 5 ingles
Guide 5 inglesGuide 5 ingles
Guide 5 inglestatis3456
 
Schulungskonzept botschafter workshops
Schulungskonzept botschafter workshopsSchulungskonzept botschafter workshops
Schulungskonzept botschafter workshopsChristian Urech
 
Digital Marketing Approach - Master - Andrea Genovese
Digital Marketing Approach - Master - Andrea Genovese Digital Marketing Approach - Master - Andrea Genovese
Digital Marketing Approach - Master - Andrea Genovese Andrea Genovese
 

Viewers also liked (18)

初めてのHadoopパッチ投稿 / How to Contribute to Hadoop (Cloudera World Tokyo 2014 LT講演資料)
初めてのHadoopパッチ投稿 / How to Contribute to Hadoop (Cloudera World Tokyo 2014 LT講演資料)初めてのHadoopパッチ投稿 / How to Contribute to Hadoop (Cloudera World Tokyo 2014 LT講演資料)
初めてのHadoopパッチ投稿 / How to Contribute to Hadoop (Cloudera World Tokyo 2014 LT講演資料)
 
The Evolution and Future of Hadoop Storage (Hadoop Conference Japan 2016キーノート...
The Evolution and Future of Hadoop Storage (Hadoop Conference Japan 2016キーノート...The Evolution and Future of Hadoop Storage (Hadoop Conference Japan 2016キーノート...
The Evolution and Future of Hadoop Storage (Hadoop Conference Japan 2016キーノート...
 
Apache Kudu Fast Analytics on Fast Data (Hadoop / Spark Conference Japan 2016...
Apache Kudu Fast Analytics on Fast Data (Hadoop / Spark Conference Japan 2016...Apache Kudu Fast Analytics on Fast Data (Hadoop / Spark Conference Japan 2016...
Apache Kudu Fast Analytics on Fast Data (Hadoop / Spark Conference Japan 2016...
 
State of the art Stream Processing #hadoopreading
State of the art Stream Processing #hadoopreadingState of the art Stream Processing #hadoopreading
State of the art Stream Processing #hadoopreading
 
Protecting Enterprise Data In Apache Hadoop
Protecting Enterprise Data In Apache HadoopProtecting Enterprise Data In Apache Hadoop
Protecting Enterprise Data In Apache Hadoop
 
Mapa conceptual Erika Rivera Wendy Cervantes
Mapa conceptual  Erika Rivera Wendy CervantesMapa conceptual  Erika Rivera Wendy Cervantes
Mapa conceptual Erika Rivera Wendy Cervantes
 
Data preprocessing
Data preprocessingData preprocessing
Data preprocessing
 
顛倒思考提
顛倒思考提顛倒思考提
顛倒思考提
 
Colours oldgames
Colours oldgamesColours oldgames
Colours oldgames
 
2014 Global Traveler Study
2014 Global Traveler Study2014 Global Traveler Study
2014 Global Traveler Study
 
Caso.atrapalo.com.janet carrillo.dif.y.posicionamiento
Caso.atrapalo.com.janet carrillo.dif.y.posicionamientoCaso.atrapalo.com.janet carrillo.dif.y.posicionamiento
Caso.atrapalo.com.janet carrillo.dif.y.posicionamiento
 
Instructional power point on unit 2 second steps
Instructional power point on unit 2 second stepsInstructional power point on unit 2 second steps
Instructional power point on unit 2 second steps
 
Guide 5 ingles
Guide 5 inglesGuide 5 ingles
Guide 5 ingles
 
Schulungskonzept botschafter workshops
Schulungskonzept botschafter workshopsSchulungskonzept botschafter workshops
Schulungskonzept botschafter workshops
 
Digital Marketing Approach - Master - Andrea Genovese
Digital Marketing Approach - Master - Andrea Genovese Digital Marketing Approach - Master - Andrea Genovese
Digital Marketing Approach - Master - Andrea Genovese
 
Data Preprocessing
Data PreprocessingData Preprocessing
Data Preprocessing
 
X code
X codeX code
X code
 
boost tour 1.48.0 all
boost tour 1.48.0 allboost tour 1.48.0 all
boost tour 1.48.0 all
 

Similar to Project Tungsten Bringing Spark Closer to Bare Meta (Hadoop / Spark Conference Japan 2016 キーノート講演資料)

[INSIGHT OUT 2011] A12 ひとつのデータベース技術では生き残れない part1 カラムナーデータベース(Shinkubo)
[INSIGHT OUT 2011] A12 ひとつのデータベース技術では生き残れない part1 カラムナーデータベース(Shinkubo)[INSIGHT OUT 2011] A12 ひとつのデータベース技術では生き残れない part1 カラムナーデータベース(Shinkubo)
[INSIGHT OUT 2011] A12 ひとつのデータベース技術では生き残れない part1 カラムナーデータベース(Shinkubo)Insight Technology, Inc.
 
ONIC2017 プログラマブル・データプレーン時代に向けた ネットワーク・オペレーションスタック
ONIC2017 プログラマブル・データプレーン時代に向けた ネットワーク・オペレーションスタックONIC2017 プログラマブル・データプレーン時代に向けた ネットワーク・オペレーションスタック
ONIC2017 プログラマブル・データプレーン時代に向けた ネットワーク・オペレーションスタックKentaro Ebisawa
 
PGXのレスポンスとリソース消費
PGXのレスポンスとリソース消費PGXのレスポンスとリソース消費
PGXのレスポンスとリソース消費Tatsumi Akinori
 
YAPC::Asia 2008 Tokyo - Pathtraq - building a computation-centric web service
YAPC::Asia 2008 Tokyo - Pathtraq - building a computation-centric web serviceYAPC::Asia 2008 Tokyo - Pathtraq - building a computation-centric web service
YAPC::Asia 2008 Tokyo - Pathtraq - building a computation-centric web serviceKazuho Oku
 
第6回インターネットと運用技術シンポジウム WIPセッション
第6回インターネットと運用技術シンポジウム WIPセッション第6回インターネットと運用技術シンポジウム WIPセッション
第6回インターネットと運用技術シンポジウム WIPセッションHiroki Kashiwazaki
 
第1回 配信講義 計算科学技術特論A (2021)
第1回 配信講義 計算科学技術特論A (2021)第1回 配信講義 計算科学技術特論A (2021)
第1回 配信講義 計算科学技術特論A (2021)RCCSRENKEI
 
SQL Server 使いのための Azure Synapse Analytics - Spark 入門
SQL Server 使いのための Azure Synapse Analytics - Spark 入門SQL Server 使いのための Azure Synapse Analytics - Spark 入門
SQL Server 使いのための Azure Synapse Analytics - Spark 入門Daiyu Hatakeyama
 
アドテク×Scala×パフォーマンスチューニング
アドテク×Scala×パフォーマンスチューニングアドテク×Scala×パフォーマンスチューニング
アドテク×Scala×パフォーマンスチューニングYosuke Mizutani
 
フロー技術によるネットワーク管理
フロー技術によるネットワーク管理フロー技術によるネットワーク管理
フロー技術によるネットワーク管理Motonori Shindo
 
データセンターカンファレンス基調対談_ネットワーク帯域を使いまくる
データセンターカンファレンス基調対談_ネットワーク帯域を使いまくるデータセンターカンファレンス基調対談_ネットワーク帯域を使いまくる
データセンターカンファレンス基調対談_ネットワーク帯域を使いまくるMasafumi Oe
 
[db tech showcase Tokyo 2018] #dbts2018 #D15 『5年連続!第三者機関の評価で(圧倒的)最強のピュアストレージが...
[db tech showcase Tokyo 2018] #dbts2018 #D15 『5年連続!第三者機関の評価で(圧倒的)最強のピュアストレージが...[db tech showcase Tokyo 2018] #dbts2018 #D15 『5年連続!第三者機関の評価で(圧倒的)最強のピュアストレージが...
[db tech showcase Tokyo 2018] #dbts2018 #D15 『5年連続!第三者機関の評価で(圧倒的)最強のピュアストレージが...Insight Technology, Inc.
 
Deep Learning Lab - Microsoft Machine Learning meetup 2018/06/27 - 推論編
Deep Learning Lab - Microsoft Machine Learning meetup 2018/06/27 - 推論編Deep Learning Lab - Microsoft Machine Learning meetup 2018/06/27 - 推論編
Deep Learning Lab - Microsoft Machine Learning meetup 2018/06/27 - 推論編Daiyu Hatakeyama
 
[ウェビナー] Build 2018 アップデート ~ データ プラットフォーム/IoT編 ~
[ウェビナー] Build 2018 アップデート ~ データ プラットフォーム/IoT編 ~[ウェビナー] Build 2018 アップデート ~ データ プラットフォーム/IoT編 ~
[ウェビナー] Build 2018 アップデート ~ データ プラットフォーム/IoT編 ~Naoki (Neo) SATO
 
seccamp2012 チューター発表
seccamp2012 チューター発表seccamp2012 チューター発表
seccamp2012 チューター発表Hirotaka Kawata
 
泥臭い運用から、プログラマブルインフラ構築(に行きたい)
泥臭い運用から、プログラマブルインフラ構築(に行きたい) 泥臭い運用から、プログラマブルインフラ構築(に行きたい)
泥臭い運用から、プログラマブルインフラ構築(に行きたい) Akihiro Kuwano
 
遊休リソースを用いた 相同性検索処理の並列化とその評価
遊休リソースを用いた相同性検索処理の並列化とその評価遊休リソースを用いた相同性検索処理の並列化とその評価
遊休リソースを用いた 相同性検索処理の並列化とその評価Satoshi Nagayasu
 
SORACOM Technology Camp 2018 ベーシックトラック3 | 今日から始めるセンサーデータの可視化
SORACOM Technology Camp 2018 ベーシックトラック3 | 今日から始めるセンサーデータの可視化SORACOM Technology Camp 2018 ベーシックトラック3 | 今日から始めるセンサーデータの可視化
SORACOM Technology Camp 2018 ベーシックトラック3 | 今日から始めるセンサーデータの可視化SORACOM,INC
 

Similar to Project Tungsten Bringing Spark Closer to Bare Meta (Hadoop / Spark Conference Japan 2016 キーノート講演資料) (20)

Kernel vm-2014-05-25
Kernel vm-2014-05-25Kernel vm-2014-05-25
Kernel vm-2014-05-25
 
ICD/CPSY 201412
ICD/CPSY 201412ICD/CPSY 201412
ICD/CPSY 201412
 
[INSIGHT OUT 2011] A12 ひとつのデータベース技術では生き残れない part1 カラムナーデータベース(Shinkubo)
[INSIGHT OUT 2011] A12 ひとつのデータベース技術では生き残れない part1 カラムナーデータベース(Shinkubo)[INSIGHT OUT 2011] A12 ひとつのデータベース技術では生き残れない part1 カラムナーデータベース(Shinkubo)
[INSIGHT OUT 2011] A12 ひとつのデータベース技術では生き残れない part1 カラムナーデータベース(Shinkubo)
 
ONIC2017 プログラマブル・データプレーン時代に向けた ネットワーク・オペレーションスタック
ONIC2017 プログラマブル・データプレーン時代に向けた ネットワーク・オペレーションスタックONIC2017 プログラマブル・データプレーン時代に向けた ネットワーク・オペレーションスタック
ONIC2017 プログラマブル・データプレーン時代に向けた ネットワーク・オペレーションスタック
 
PGXのレスポンスとリソース消費
PGXのレスポンスとリソース消費PGXのレスポンスとリソース消費
PGXのレスポンスとリソース消費
 
YAPC::Asia 2008 Tokyo - Pathtraq - building a computation-centric web service
YAPC::Asia 2008 Tokyo - Pathtraq - building a computation-centric web serviceYAPC::Asia 2008 Tokyo - Pathtraq - building a computation-centric web service
YAPC::Asia 2008 Tokyo - Pathtraq - building a computation-centric web service
 
第6回インターネットと運用技術シンポジウム WIPセッション
第6回インターネットと運用技術シンポジウム WIPセッション第6回インターネットと運用技術シンポジウム WIPセッション
第6回インターネットと運用技術シンポジウム WIPセッション
 
第1回 配信講義 計算科学技術特論A (2021)
第1回 配信講義 計算科学技術特論A (2021)第1回 配信講義 計算科学技術特論A (2021)
第1回 配信講義 計算科学技術特論A (2021)
 
SQL Server 使いのための Azure Synapse Analytics - Spark 入門
SQL Server 使いのための Azure Synapse Analytics - Spark 入門SQL Server 使いのための Azure Synapse Analytics - Spark 入門
SQL Server 使いのための Azure Synapse Analytics - Spark 入門
 
アドテク×Scala×パフォーマンスチューニング
アドテク×Scala×パフォーマンスチューニングアドテク×Scala×パフォーマンスチューニング
アドテク×Scala×パフォーマンスチューニング
 
フロー技術によるネットワーク管理
フロー技術によるネットワーク管理フロー技術によるネットワーク管理
フロー技術によるネットワーク管理
 
データセンターカンファレンス基調対談_ネットワーク帯域を使いまくる
データセンターカンファレンス基調対談_ネットワーク帯域を使いまくるデータセンターカンファレンス基調対談_ネットワーク帯域を使いまくる
データセンターカンファレンス基調対談_ネットワーク帯域を使いまくる
 
[db tech showcase Tokyo 2018] #dbts2018 #D15 『5年連続!第三者機関の評価で(圧倒的)最強のピュアストレージが...
[db tech showcase Tokyo 2018] #dbts2018 #D15 『5年連続!第三者機関の評価で(圧倒的)最強のピュアストレージが...[db tech showcase Tokyo 2018] #dbts2018 #D15 『5年連続!第三者機関の評価で(圧倒的)最強のピュアストレージが...
[db tech showcase Tokyo 2018] #dbts2018 #D15 『5年連続!第三者機関の評価で(圧倒的)最強のピュアストレージが...
 
RICC update meet34
RICC update meet34RICC update meet34
RICC update meet34
 
Deep Learning Lab - Microsoft Machine Learning meetup 2018/06/27 - 推論編
Deep Learning Lab - Microsoft Machine Learning meetup 2018/06/27 - 推論編Deep Learning Lab - Microsoft Machine Learning meetup 2018/06/27 - 推論編
Deep Learning Lab - Microsoft Machine Learning meetup 2018/06/27 - 推論編
 
[ウェビナー] Build 2018 アップデート ~ データ プラットフォーム/IoT編 ~
[ウェビナー] Build 2018 アップデート ~ データ プラットフォーム/IoT編 ~[ウェビナー] Build 2018 アップデート ~ データ プラットフォーム/IoT編 ~
[ウェビナー] Build 2018 アップデート ~ データ プラットフォーム/IoT編 ~
 
seccamp2012 チューター発表
seccamp2012 チューター発表seccamp2012 チューター発表
seccamp2012 チューター発表
 
泥臭い運用から、プログラマブルインフラ構築(に行きたい)
泥臭い運用から、プログラマブルインフラ構築(に行きたい) 泥臭い運用から、プログラマブルインフラ構築(に行きたい)
泥臭い運用から、プログラマブルインフラ構築(に行きたい)
 
遊休リソースを用いた 相同性検索処理の並列化とその評価
遊休リソースを用いた相同性検索処理の並列化とその評価遊休リソースを用いた相同性検索処理の並列化とその評価
遊休リソースを用いた 相同性検索処理の並列化とその評価
 
SORACOM Technology Camp 2018 ベーシックトラック3 | 今日から始めるセンサーデータの可視化
SORACOM Technology Camp 2018 ベーシックトラック3 | 今日から始めるセンサーデータの可視化SORACOM Technology Camp 2018 ベーシックトラック3 | 今日から始めるセンサーデータの可視化
SORACOM Technology Camp 2018 ベーシックトラック3 | 今日から始めるセンサーデータの可視化
 

More from Hadoop / Spark Conference Japan

機械学習、グラフ分析、SQLによるサイバー攻撃対策事例(金融業界)
機械学習、グラフ分析、SQLによるサイバー攻撃対策事例(金融業界)機械学習、グラフ分析、SQLによるサイバー攻撃対策事例(金融業界)
機械学習、グラフ分析、SQLによるサイバー攻撃対策事例(金融業界)Hadoop / Spark Conference Japan
 
マルチテナント Hadoop クラスタのためのモニタリング Best Practice
マルチテナント Hadoop クラスタのためのモニタリング Best Practiceマルチテナント Hadoop クラスタのためのモニタリング Best Practice
マルチテナント Hadoop クラスタのためのモニタリング Best PracticeHadoop / Spark Conference Japan
 
Hadoop / Spark Conference Japan 2019 ご挨拶・開催にあたって
Hadoop / Spark Conference Japan 2019 ご挨拶・開催にあたってHadoop / Spark Conference Japan 2019 ご挨拶・開催にあたって
Hadoop / Spark Conference Japan 2019 ご挨拶・開催にあたってHadoop / Spark Conference Japan
 
Spark 2.0 What's Next (Hadoop / Spark Conference Japan 2016 キーノート講演資料)
Spark 2.0 What's Next (Hadoop / Spark Conference Japan 2016 キーノート講演資料)Spark 2.0 What's Next (Hadoop / Spark Conference Japan 2016 キーノート講演資料)
Spark 2.0 What's Next (Hadoop / Spark Conference Japan 2016 キーノート講演資料)Hadoop / Spark Conference Japan
 
Apache Hadoop の現在と将来(Hadoop / Spark Conference Japan 2016 キーノート講演資料)
Apache Hadoop の現在と将来(Hadoop / Spark Conference Japan 2016 キーノート講演資料)Apache Hadoop の現在と将来(Hadoop / Spark Conference Japan 2016 キーノート講演資料)
Apache Hadoop の現在と将来(Hadoop / Spark Conference Japan 2016 キーノート講演資料)Hadoop / Spark Conference Japan
 
Hadoop / Spark Conference Japan 2016 ご挨拶・Hadoopを取り巻く環境
Hadoop / Spark Conference Japan 2016 ご挨拶・Hadoopを取り巻く環境Hadoop / Spark Conference Japan 2016 ご挨拶・Hadoopを取り巻く環境
Hadoop / Spark Conference Japan 2016 ご挨拶・Hadoopを取り巻く環境Hadoop / Spark Conference Japan
 
MapReduce/Spark/Tezのフェアな性能比較に向けて (Cloudera World Tokyo 2014 LT講演)
MapReduce/Spark/Tezのフェアな性能比較に向けて (Cloudera World Tokyo 2014 LT講演)MapReduce/Spark/Tezのフェアな性能比較に向けて (Cloudera World Tokyo 2014 LT講演)
MapReduce/Spark/Tezのフェアな性能比較に向けて (Cloudera World Tokyo 2014 LT講演)Hadoop / Spark Conference Japan
 
A Deeper Understanding of Spark Internals (Hadoop Conference Japan 2014)
A Deeper Understanding of Spark Internals (Hadoop Conference Japan 2014)A Deeper Understanding of Spark Internals (Hadoop Conference Japan 2014)
A Deeper Understanding of Spark Internals (Hadoop Conference Japan 2014)Hadoop / Spark Conference Japan
 
Mahoutによるアルツハイマー診断支援へ向けた取り組み (Hadoop Confernce Japan 2014)
Mahoutによるアルツハイマー診断支援へ向けた取り組み (Hadoop Confernce Japan 2014)Mahoutによるアルツハイマー診断支援へ向けた取り組み (Hadoop Confernce Japan 2014)
Mahoutによるアルツハイマー診断支援へ向けた取り組み (Hadoop Confernce Japan 2014)Hadoop / Spark Conference Japan
 
HadoopとRDBMSをシームレスに連携させるSmart SQL Processing (Hadoop Conference Japan 2014)
HadoopとRDBMSをシームレスに連携させるSmart SQL Processing (Hadoop Conference Japan 2014)HadoopとRDBMSをシームレスに連携させるSmart SQL Processing (Hadoop Conference Japan 2014)
HadoopとRDBMSをシームレスに連携させるSmart SQL Processing (Hadoop Conference Japan 2014)Hadoop / Spark Conference Japan
 

More from Hadoop / Spark Conference Japan (12)

機械学習、グラフ分析、SQLによるサイバー攻撃対策事例(金融業界)
機械学習、グラフ分析、SQLによるサイバー攻撃対策事例(金融業界)機械学習、グラフ分析、SQLによるサイバー攻撃対策事例(金融業界)
機械学習、グラフ分析、SQLによるサイバー攻撃対策事例(金融業界)
 
What makes Apache Spark?
What makes Apache Spark?What makes Apache Spark?
What makes Apache Spark?
 
マルチテナント Hadoop クラスタのためのモニタリング Best Practice
マルチテナント Hadoop クラスタのためのモニタリング Best Practiceマルチテナント Hadoop クラスタのためのモニタリング Best Practice
マルチテナント Hadoop クラスタのためのモニタリング Best Practice
 
Hadoop / Spark Conference Japan 2019 ご挨拶・開催にあたって
Hadoop / Spark Conference Japan 2019 ご挨拶・開催にあたってHadoop / Spark Conference Japan 2019 ご挨拶・開催にあたって
Hadoop / Spark Conference Japan 2019 ご挨拶・開催にあたって
 
Spark 2.0 What's Next (Hadoop / Spark Conference Japan 2016 キーノート講演資料)
Spark 2.0 What's Next (Hadoop / Spark Conference Japan 2016 キーノート講演資料)Spark 2.0 What's Next (Hadoop / Spark Conference Japan 2016 キーノート講演資料)
Spark 2.0 What's Next (Hadoop / Spark Conference Japan 2016 キーノート講演資料)
 
Apache Hadoop の現在と将来(Hadoop / Spark Conference Japan 2016 キーノート講演資料)
Apache Hadoop の現在と将来(Hadoop / Spark Conference Japan 2016 キーノート講演資料)Apache Hadoop の現在と将来(Hadoop / Spark Conference Japan 2016 キーノート講演資料)
Apache Hadoop の現在と将来(Hadoop / Spark Conference Japan 2016 キーノート講演資料)
 
Hadoop / Spark Conference Japan 2016 ご挨拶・Hadoopを取り巻く環境
Hadoop / Spark Conference Japan 2016 ご挨拶・Hadoopを取り巻く環境Hadoop / Spark Conference Japan 2016 ご挨拶・Hadoopを取り巻く環境
Hadoop / Spark Conference Japan 2016 ご挨拶・Hadoopを取り巻く環境
 
MapReduce/Spark/Tezのフェアな性能比較に向けて (Cloudera World Tokyo 2014 LT講演)
MapReduce/Spark/Tezのフェアな性能比較に向けて (Cloudera World Tokyo 2014 LT講演)MapReduce/Spark/Tezのフェアな性能比較に向けて (Cloudera World Tokyo 2014 LT講演)
MapReduce/Spark/Tezのフェアな性能比較に向けて (Cloudera World Tokyo 2014 LT講演)
 
A Deeper Understanding of Spark Internals (Hadoop Conference Japan 2014)
A Deeper Understanding of Spark Internals (Hadoop Conference Japan 2014)A Deeper Understanding of Spark Internals (Hadoop Conference Japan 2014)
A Deeper Understanding of Spark Internals (Hadoop Conference Japan 2014)
 
Mahoutによるアルツハイマー診断支援へ向けた取り組み (Hadoop Confernce Japan 2014)
Mahoutによるアルツハイマー診断支援へ向けた取り組み (Hadoop Confernce Japan 2014)Mahoutによるアルツハイマー診断支援へ向けた取り組み (Hadoop Confernce Japan 2014)
Mahoutによるアルツハイマー診断支援へ向けた取り組み (Hadoop Confernce Japan 2014)
 
The Future of Apache Spark
The Future of Apache SparkThe Future of Apache Spark
The Future of Apache Spark
 
HadoopとRDBMSをシームレスに連携させるSmart SQL Processing (Hadoop Conference Japan 2014)
HadoopとRDBMSをシームレスに連携させるSmart SQL Processing (Hadoop Conference Japan 2014)HadoopとRDBMSをシームレスに連携させるSmart SQL Processing (Hadoop Conference Japan 2014)
HadoopとRDBMSをシームレスに連携させるSmart SQL Processing (Hadoop Conference Japan 2014)
 

Recently uploaded

IoT in the era of generative AI, Thanks IoT ALGYAN.pptx
IoT in the era of generative AI, Thanks IoT ALGYAN.pptxIoT in the era of generative AI, Thanks IoT ALGYAN.pptx
IoT in the era of generative AI, Thanks IoT ALGYAN.pptxAtomu Hidaka
 
20240412_HCCJP での Windows Server 2025 Active Directory
20240412_HCCJP での Windows Server 2025 Active Directory20240412_HCCJP での Windows Server 2025 Active Directory
20240412_HCCJP での Windows Server 2025 Active Directoryosamut
 
スマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムスマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムsugiuralab
 
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略Ryo Sasaki
 
PHP-Conference-Odawara-2024-04-000000000
PHP-Conference-Odawara-2024-04-000000000PHP-Conference-Odawara-2024-04-000000000
PHP-Conference-Odawara-2024-04-000000000Shota Ito
 
UPWARD_share_company_information_20240415.pdf
UPWARD_share_company_information_20240415.pdfUPWARD_share_company_information_20240415.pdf
UPWARD_share_company_information_20240415.pdffurutsuka
 
Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。
Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。
Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。iPride Co., Ltd.
 
Postman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By DanielPostman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By Danieldanielhu54
 
新人研修のまとめ 2024/04/12の勉強会で発表されたものです。
新人研修のまとめ       2024/04/12の勉強会で発表されたものです。新人研修のまとめ       2024/04/12の勉強会で発表されたものです。
新人研修のまとめ 2024/04/12の勉強会で発表されたものです。iPride Co., Ltd.
 

Recently uploaded (9)

IoT in the era of generative AI, Thanks IoT ALGYAN.pptx
IoT in the era of generative AI, Thanks IoT ALGYAN.pptxIoT in the era of generative AI, Thanks IoT ALGYAN.pptx
IoT in the era of generative AI, Thanks IoT ALGYAN.pptx
 
20240412_HCCJP での Windows Server 2025 Active Directory
20240412_HCCJP での Windows Server 2025 Active Directory20240412_HCCJP での Windows Server 2025 Active Directory
20240412_HCCJP での Windows Server 2025 Active Directory
 
スマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムスマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システム
 
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
 
PHP-Conference-Odawara-2024-04-000000000
PHP-Conference-Odawara-2024-04-000000000PHP-Conference-Odawara-2024-04-000000000
PHP-Conference-Odawara-2024-04-000000000
 
UPWARD_share_company_information_20240415.pdf
UPWARD_share_company_information_20240415.pdfUPWARD_share_company_information_20240415.pdf
UPWARD_share_company_information_20240415.pdf
 
Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。
Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。
Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。
 
Postman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By DanielPostman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By Daniel
 
新人研修のまとめ 2024/04/12の勉強会で発表されたものです。
新人研修のまとめ       2024/04/12の勉強会で発表されたものです。新人研修のまとめ       2024/04/12の勉強会で発表されたものです。
新人研修のまとめ 2024/04/12の勉強会で発表されたものです。
 

Project Tungsten Bringing Spark Closer to Bare Meta (Hadoop / Spark Conference Japan 2016 キーノート講演資料)

  • 1. Project Tungsten Bringing Spark Closer to Bare Metal Reynold Xin @rxin Spark Conference Japan Feb 8,2016
  • 6. On the flip side Spark IO has been optimized • Reduce IO by pruning inputdata that is notneeded • New shuffle and networkimplementations(2014 sortrecord) Data formats have improved • E.g. Parquet isa “dense” columnarformat その一方で Spark のIOは最適化された 不要な入力データを排除することによる IO の削減 新しいシャッフルとネットワークの実装 (2014年ソート記録) Parquet は「密」なカラムナフォーマット データフォーマットが改善された
  • 7. Goals of Project Tungsten Substantially improve the memory and CPUefficiency of Spark backend execution and push performance closerto the limits of modern hardware. Note the focus on “execution”not“optimizer”: veryeasyto pick broadcast join that is 1000Xfaster than Cartesian join, buthard to optimizebroadcast join to bean orderof magnitudefaster. Project Tungsten のゴール Spark の「バックエンドの実行」のメモリとCPU効率を実質的に改善す ることと、性能をモダンなハードウェアの限界に近づけること 「最適化」ではなく「実行」に注目していることに注意:broadcast join を Cartesian joinより 1000 倍早くするのはとても簡単だが、broadcast join をケタ違いに早くなるよう最適化するのは難しい
  • 8. Phase 1 Foundation Memory Management Code Generation Cache-aware Algorithms Phase 2 Order-of-magnitude Faster Whole-stage Codegen Vectorization 立ち上がり メモリ管理 コード生成 (ハードウェア)キャッ シュを意識したアル ゴリズム ベクトル化 ケタ違いの高速化 全ステージ コード生成
  • 9. Phase 1 Laying The Foundation
  • 10. Optimized data representations Java objects have two downsides: • Space overheads • Garbage collection overheads Tungstensidesteps theseproblems by performing its own manual memory management. 最適化されたデータ表現 Java オブジェクトには2つのマイナス面がある ・空間のオーバーヘッド ・ガベージコレクションのオーバーヘッド Tungsten はこれらの問題を、独自のメモリ管理を行うことで回避する
  • 11. The overheads of Java objects “abcd” Native: 4 byteswith UTF-8 encoding Java: 48 bytes java.lang.String object internals: OFFSET SIZE TYPE DESCRIPTION VALUE 0 4 (object header) ... 4 4 (object header) ... 8 4 (object header) ... 12 4 char[] String.value [] 16 4 int String.hash 0 20 4 int String.hash32 0 Instance size: 24 bytes (reported by Instrumentation API) 12 byte object header 8 byte hashcode 20 bytes of overhead + 8 bytes for chars Java オブジェクトの オーバーヘッド ネイティブ:UTF-8エンコーディン グで4バイト Java: 48バイト 12バイト:オブジェクトヘッダ 8バイト:ハッシュコード インスタンスサイズ: 24バイト (Instrumentation API による) 20バイトのオーバーヘッド+ 8バイトの文字
  • 12. sun.misc.Unsafe JVM internal API for directly manipulating memory without safety checks (hence “unsafe”) We use this API to build data structures in both on- and off- heap memory Data structures with pointers Flat data structures Complex examples 安全性のチェックを行わずに直接的にメモリを操作する JVM 内 部 API (すなわち “unsafe”) on- と off-heap メモリの両方でデータ構造をビルドする際にこ のAPIを利用している フラットなデータ構造 ポインタを保持した データ構造 複雑な例
  • 13. Code generation Generic evaluation ofexpression logic is very expensive on the JVM – Virtual function calls – Branches based on expression type – Object creation due to primitive boxing – Memory consumption by boxed primitive objects Generating custom bytecode can eliminate these overheads 9.33 9.36 36.65 Hand written Code gen Interpreted Projection Evaluating “a + a + a” (query time in seconds) 表現ロジックの汎用的な評価は JVM 上では非常にコストが高い 型表現に基づくブランチ プリミティブのボクシングに起因する オブジェクトの生成 仮想関数呼び出し プリミティブをボクシングしたオ ブジェクトによるメモリの消費 カスタムバイトコードの生成によりこれ らのオーバーヘッドを排除できる インタプリタ射影 コード生成 手書き “a + a + a” の評価 (問い合わせ時間(秒))
  • 14. Code generation Tungsten uses the Janino compilerto reduce code generation time Spark 1.5 added ~100 UDF’swith code gen: AddMonths ArrayContains Ascii Base64 Bin CheckOverflow CombineSets Contains CountSet Crc32 DateAdd DateDiff DateFormatClass DateSub DayOfMonth DayOfYear Decode Encode EndsWith Explode Factorial FindInSet FormatNumber FromUTCTimestamp FromUnixTime GetArrayItem GetJsonObject GetMapValue Hex InSet InitCap IsNaN IsNotNull IsNull LastDay Length Levenshtein Like Lower MakeDecimal Md5 Month MonthsBetween NaNvl NextDay Not PromotePrecision Quarter RLike Round Second Sha1 Sha2 ShiftLeft ShiftRight ShiftRightUnsig ned SortArray SoundEx StartsWith StringInstr StringRepeat StringReverse StringSpace StringSplit StringTrim StringTrimLeft StringTrimRight TimeAdd TimeSub ToDate ToUTCTimestamp TruncDate UnBase64 Unhex UnixTimestamp Tungsten はコードの生成時間を減らすために Janino コンパイラを利用する Spark 1.5 は code gen で ~100 の UDF を追加した:
  • 15. AlphaSort Cache-friendly Sorting Idea: minimize randommemory accesses • Store prefixes of sort keysinside the sort pointerarray • Short-circuit by comparing prefixesfirst • Swap only pointersand prefixes pointer record key prefix pointer record Naïve layout Cache friendlylayout AlphaSort キャッシュフレンドリーなソート アイデア: ランダムメモリアクセスの最小化 単純なレイアウト キャッシュフレンド リーなレイアウト ・ソートのポインタ配列の中にソートキー のプレフィックスを格納 ・先にプレフィックスを比較することによる 短絡評価(ショートサーキット) ・ポインタとプレフィックスのみのスワップ
  • 17. Scan Filter Project Aggregate select count(*) from store_sales where ss_item_sk = 1000
  • 18. Volcano Iterator Model Standard for 30 years: almost all databases do it Each operatoris an “iterator” that consumes recordsfrom its input operator class Filter { … def next(): Boolean = { var found = false while (!found && child.next()) { found = predicate(child.fetch()) } return found } def fetch(): InternalRow = { child.fetch() } … } 30年間標準 ほぼすべてのデータベースが行っている 各オペレータは入力オペレータからの レコードを消費する「イテレータ」
  • 19. Scan Filter Project Aggregate data flow Scan Filter Project Aggregate call stack to processa row データフロー 一行を処理するためのコールスタック
  • 20. Downside of the Volcano Model 1. Too many virtual function calls o at least 3 callsfor each row in Aggregate 2. Extensive memory access o “row” is a small segmentin memory (orin L1/L2/L3 cache) 3. Can’t take advantage modern CPU features o SIMD, pipelining,prefetching … 仮想関数呼び出しが多すぎる Aggregateで少なくとも3回の呼び出し メモリアクセスが広範 「行」はメモリ(またはL1/L2/L3キャッシュ)中の小さな断片 モダンなCPUの機能の恩恵が受けられない SIMD、パイプライン、プリフェッチ、・・・ ボルケーノモデルの欠点
  • 21. What if we hire a collegefreshmanto implement this queryin Java in 10 mins? select count(*) from store_sales where ss_item_sk = 1000 var count = 0 for (ss_item_sk in store_sales) { if (ss_item_sk == 1000) { count += 1 } } もし10分間で Java でこのクエリを実装するために、大学1年生を雇ったら?
  • 22. Volcano model 30+ years of database research college freshman hand-written code in 10 mins vs ボルケーノモデル 30年以上のデータベースの研究 大学1年生 10分間の手書きのコード
  • 23. Volcano 13.95 million rows/sec college freshman 125 million rows/sec Note: End-to-end, single thread, single column, and data originated in Parquet on disk ボルケーノ 大学1年生 High throughput 高スループット
  • 24. How does a student beat 30 years of research? Volcano 1. Many virtual function calls 2. Data in memory (orcache) 3. No loop unrolling,SIMD, pipelining hand-written code 1. No virtual function calls 2. Data in CPU registers 3. Compiler loop unrolling,SIMD, pipelining どうして学生が30年の研究に勝ったのか? 大量の仮想関数呼び出し データをメモリに(もしくはキャッシュに) ループ展開、SIMD、パイプラインが無い 仮想関数呼び出しがない データを CPU のレジスタに コンパイラによるループ展開、SIMD、 パイプライン
  • 25. Whole-stage Codegen Fusing operatorstogether so the generatedcode looks like hand optimized code: - Data stays in registers, rather than cache/memory - Minimizes virtual function calls - Compilers can unrollloops and use SIMDinstructions 全ステージ コード生成 複数のオペレータを一括で扱い結合することで、生成されたコードが手動で最適化されたコードのよう にみえる - データはキャッシュ / メモリよりもレジスタの中に残る - 仮想関数呼び出しを最小化する - コンパイラがループを展開することができ、SIMD命令を使う
  • 26. Scan Filter Project Aggregate var count = 0 for (ss_item_sk in store_sales) { if (ss_item_sk == 1000) { count += 1 } } Whole-stage Codegen: Spark as a “Compiler” 全ステージ コード生成 : 「コンパイラ」としての Spark
  • 27. But there are things we can’t fuse Complicated I/O • CSV, Parquet, ORC, … External integrations • Python,R, scikit-learn, TensorFlow,etc Don’t want to compile a CSVreader inline for everyquery! しかし結合させることができないものがある 複雑な I/O ・ CSV, Parquet, ORC, … 外部とのインテグレーション ・Python, R, scikit-learn, TensorFlow, など クエリごとに CSV reader をコンパイルしたくない!
  • 28. Vectorization In-memory Row Format 1 john 4.1 2 mike 3.5 3 sally 6.4 1 2 3 john mike sally 4.1 3.5 6.4 In-memory Column Format ベクトル化 メモリ内の行フォーマット メモリ内の列フォーマット
  • 29. Why Vectorization? 1. Modern CPUs are better at doing one thing over and over again (rather than N different things over and over again) 2. Most high-performanceexternalsystems are already columnar (numpy, TensorFlow, Parquet) so it is easierto integrate with なぜベクトル化? モダンな CPU はひとつのことを何度も何度も行うのが得意 (N 個の異なることを何度も何 度も行うよりも) ハイパフォーマンスな外部システムの多くは、既にカラムナ (numpy, TensorFlow, Parquet) であるため、インテグレートするのがより簡単
  • 30. Parquet 11 million rows/sec Parquet vectorized 90 million rows/sec Note: End-to-end, single thread, single column, and data originated in Parquet on disk High throughput 高スループット
  • 31. Phase 1 Spark 1.4 - 1.6 Memory Management Code Generation Cache-aware Algorithms Phase 2 Spark 2.0+ Whole-stage Codegen Vectorization メモリ管理 コード生成 キャッシュを意識したアルゴリズム 全ステージ コード生成 ベクトル化