Upload
hadoop-conference-japan
View
1.066
Download
0
Embed Size (px)
DESCRIPTION
■MapReduce/Spark/Tezのフェアな性能比較に向けて (Cloudera World Tokyo 2014 LT講演)
Citation preview
[Work-In-Progress] MapReduce/Spark/Tez の
フェアな 性能比較に向けて
oza
背景• MapReduce-style フレームワークでは Extract, Transform, Load 処理を行うことが多い
• Hadoop/MapReduce
• Spark
• Tez
• 主な ETL workload
• ソート,集約,ジョインを前処理なしで行う
• ETL の比較をフェア”に行いたい
背景• Spark もディスクベースで高速に動作するらしいので試したい
• Spark won Daytona GraySort on Nov. 5th, 2014
“フェア” とは?• セマンティクスを全て同じにする
• sort の回数,チェックポイントの回数を同じにした上での比較を行いたい
• Tez と MapReduce は API 互換があるのでそのまま動かせば良い
• Spark は API を駆使してがんばる
Environment• Google Compute Engine
• slave x 2 (WIP!)
• CPU 8 cores
• memory 64GB
• SSD x 8
• Version
• Hadoop 2.5.1
• Tez branch-0.5.2
• Spark branch-1.1.1
当初想定していたworkload• [WIP]TeraSort (sort)
• 50GB
• WordCount (aggregation)
• 20GB (10GB per node)
• Join
• やってない
TeraSort 50GB• MapReduce 22m34.220s
• Tez 14m52.593s
• Spark [ポーティング中]
• spark-perf is good place to port
• https://github.com/rxin/spark/blob/terasort/examples/src/main/scala/org/apache/spark/examples/terasort/TeraSort.scala
Wordcount 20GB
• MapReduce 11m13.173s
• Tez 7m19.763s
• Spark 4m 17s
• Spark is too fast … why?
Benchmark comparision• MapReduce and Tez
• bin/hadoop jar ./share/hadoop/mapreduce/hadoop-mapreduce-examples-2.5.1.jar terasort -Dmapreduce.job.reduces=16 teragenInput50G out
• Spark
• sc.textFile("hdfs:///user/ozawa/wordcountInput20G") .flatMap(line => line.split(" ")) .map(word => (word, 1)).persist() .reduceByKey((a, b) => a + b, 16) .saveAsTextFile(“hdfs:///user/ozawa/sparkWordcountOutNew1");
• Checking reduceByKey
reduceByKey• Working without Sorting - not fair
• MapReduce は reduce 後にキーのソートを行う
To be fair…• 同じセマンティクスでやるとしたらどうなるか?
• sc.textFile("hdfs:///user/ozawa/wordcountInput20G") .flatMap(line => line.split(" ")) .map(word => (word, 1)).persist() (ここでパーティションごとにCombiner アリでソート) .reduceByKey((a, b) => a + b, 16) .saveAsTextFile(“hdfs:///user/ozawa/ sparkWordcountOutNew1");
• => 無理な気がする
困った
• 何か手はないか?
Spark on Tez• Allow for pluggable execution contexts in Spark
• https://issues.apache.org/jira/browse/SPARK-3561
• Exposing Spark API to everyone :-)
• http://hortonworks.com/blog/improving-spark-data-pipelines-native-yarn-integration/
アーキテクチャ
Spark API (SparkContext)
Disk-based RDD on Tez
In-memory RDD on Spark
Why do so?• ユーザ面の利点
• Tez は Disk に最適化されているので,ディスクベースのワークロードで高速に動作する…かも?
• YARN の機能を利用することでマルチユーザ環境で高いスループットを実現
• ベンチマーク視点で見ると…
• API が合うのでフェアなベンチマークが可能になるかも
• https://github.com/hortonworks/spark-native-yarn
benchmark by Hortonworks
まとめ• Spark/Tez/MapReduce のベンチマークをしようとしたところ, Spark 挙動を併せるのがかなり合わせるのが大変だと判明
• Tez/MapReduce は容易に比較が可能
• WordCount/TeraSort ベンチマーク中ではMapReduce と比較して Tez が高速に動作
• Tez/Spark は Spark on Tez の ON/OFF でベンチマークをするのが無難そう
• 今後の予定
• Tez と Spark の比較を行う
!