Hadoop Source Code Reading #17
Upcoming SlideShare
Loading in...5
×
 

Hadoop Source Code Reading #17

on

  • 216 views

Slide for Japanese Hadoop community meetup

Slide for Japanese Hadoop community meetup

Statistics

Views

Total Views
216
Views on SlideShare
205
Embed Views
11

Actions

Likes
1
Downloads
2
Comments
0

1 Embed 11

https://twitter.com 11

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

Hadoop Source Code Reading #17 Hadoop Source Code Reading #17 Presentation Transcript

  • アプリケーションエンジニアからみたTez ! @marblejenka
  • 自己紹介
  • @marblejenka • アプリケーション開発(分析と実装)が生業! • Simplex Technology→個人事業主→Nautilus Technologies→個人事業主→ナウでヤングな ウェッブ企業←いまここ! • いまの勤め先に共有のHadoopクラスタがあるもの の、維持管理には関与していない
  • 本のレビューとかしました https://www.packtpub.com/big-data-and-business-intelligence/pig-design-patterns
  • この豚野郎!
  • お題
  • アプリケーションエンジニアからみたTez
  • 視点を限定している理由 • とくにないです(⌒▽⌒) • あまりお題は気にせず僕が気にしてたところをまと めて説明する感じで! • とはいえ気にするところがアプリケーションエンジ ニア的感があるかもくらい
  • Tezと私 • あまり本格的にさわってません! • お仕事だと手元に要件に合うアプリケーションがな い(転職したばかりなので)! • もしかして:MapReduceでもいいかも
  • 目次 • Tezとその周辺! • Tezによるアプリケーションの開発
  • Tezとその周辺
  • Tezとその周辺 • Tezをつくりはじめたモチベーション! • Tezまわりの理論や実装! • つくっているひとたち
  • Tezをつくりはじめたモチベーション
  • Proposalによると… Tez is a proposal to develop a generic application which can be used to process complex data-processing task DAGs and runs natively on Apache Hadoop YARN. YARN is a generic resource-management system on which currently applications like MapReduce already exist. MapReduce is a specific, and constrained, DAG - which is not optimal for several frameworks like Apache Hive and Apache Pig. Furthermore, we propose to develop a re-usable set of libraries of data-processing primitives such as sorting, merging, data-shuffling, intermediate data management etc. which are necessary for Tez which we envision can be used directly by other projects. http://wiki.apache.org/incubator/TezProposal
  • Backgroundは… Apache Hadoop MapReduce has emerged as the assembly-language on which other frameworks like Apache Pig and Apache Hive have been built. However, it has been well accepted that MapReduce produces very constrained task DAGs for each job which results in Apache Pig and Apache Hive requiring multiple MapReduce jobs for several queries. By providing a more expressive DAG of tasks for a job, Tez attempts to provide significantly enhanced data-processing capabilities for projects like Apache Pig, Apache Hive, Cascading etc. http://wiki.apache.org/incubator/TezProposal
  • ようするに • HiveやPig にMapReuceを生成させようとするのは 不自然! • HiveやPigにもっといけてる(中間)表現を与えた い
  • YARN化の流れから見ると… • YARN化によって大規模なクラスタに対応できるよ うになった! • YARN上のHadoop MapReduceではジョブ起動時 にApplication Masterを起動させにいくのでMRv1 よりも起動シーケンスがヘビーになる問題を抱える ことに! • YARNにあわせて実行エンジンを再設計したのがTez
  • Tezまわりの理論や実装
  • Tezの系譜 Dryad (2007) Nephele/PACTs (2010) Hyracks (2011) RDD (2012) Spark Flink Tez (Stratosphere) MR (2004)
  • Dryad
  • Dryad • 演算の組み合わせをデータフローとして表現する! • チャネルが多様で動的な最適化までする! • TezやFlink、 (たぶん) Sparkをインスパイア! • 実装(開発が頓挫したタイミングのもの?)もある! • https://github.com/MicrosoftResearch/Dryad
  • すごくむずかしい • パフォーマンス計測のた めのクエリがじゅうりょ くれんずこうか • えんざんしがたくさん あってむずかしい
  • FlinkとNephele/PACTs
  • FlinkとNephele/PACTs • Flink • Nephele/PACTsの実装 • 商標権?かなにかの都合で、Apache Incubatorになった際に Stratosphereから名前が変わった • Nepheleが実行エンジン! • PACTsがデータフロー(中間表現)の契約的なもの
  • PACTsの表現 ←MapReduceもできる ↓拡張部分もあり
  • FlinkがTezの上位層的立ち位置になる? http://berlinbuzzwords.de/sites/berlinbuzzwords.de/files/media/documents/stephan_ewen_-_stratosphere_at_bbuzz_2014.pdf #34
  • Cascadingはマネタイズ検討中?
  • Spark(vs Tez)
  • TezとSparkの違い • データフローの(動的)最適化がある! • RRDがない! • 既存のHadoop MapReduce実装を使いまわせる (Sparkではたぶんできないはず)
  • Sparkと比べてTezの強いところ • たぶんSparkより複雑なデータフローに強いはず! • それPigとかAsakusa Frameworkで… • とはいえ、MRR最適化が入らないのでAsakusa/MRよりはTez のほうがいけてるはず • たぶんチューニングはSparkよりシビアでないはず (特にメモリ)
  • Tezをつくっているひとたち
  • Tezをつくっているひとたち • Bikas Sahaさん • 元MS • http://www.linkedin.com/in/bikassaha • Hitesh Shahさん • 元Yahoo! • http://www.linkedin.com/pub/hitesh-shah/2/573/961
  • ということで
  • 期待できますね!
  • まとめ • Tezさいつよ! • 上位層はFlinkがいいかも?! • 実証はしてない
  • Tezによるアプリケーションの開発
  • Tezによるアプリケーションの開発 • アプリケーションのつくりかた! • デプロイと実行! • 既存アプリケーションの移行
  • アプリケーションのつくりかた
  • Processorをつくります • MapReduceでいうところのMaper/Reducer的な もの
  • Processorを組み合わせてDAGをつくります • Hadoop MapReuceでいうところのJob的なもの
  • それではここでTezによるWordCountを..
  • テキストをトークンに分割するProcessor https://github.com/marblejenka/tez/blob/master/tez-examples/src/main/java/org/apache/tez/examples/ WordCount.java
  • WordごとにSummationするProcessor https://github.com/marblejenka/tez/blob/master/tez-examples/src/main/java/org/apache/tez/examples/ WordCount.java
  • ProcessorからVertexを生成して… https://github.com/marblejenka/tez/blob/master/tez-examples/src/main/java/org/apache/tez/examples/ WordCount.java
  • DAGを生成して…実行! https://github.com/marblejenka/tez/blob/master/tez-examples/src/main/java/org/apache/tez/examples/ WordCount.java
  • 実装の特徴 • このへんまでだとあまりMapReduceとかわらない! • SimpleMRProcessorとか言っている • テストは書きやすくなさそう • もともとMapReduceの拡張がモチベーションなので… • Eventの概念があるんだけど使い方/使っているところ が見つからなかった! • 動的最適化と関連して重要なはず
  • デプロイと実行
  • Tezのデプロイメント • すごく簡単! • HDFSに依存Jarを配置 • Tezクライアント(アプリケーションを実行するプロセス)で、 依存Jarをclasspathに通しておく
  • Tez方式のいいところ • 複数のバージョンをインストールできるので、共用クラス タでも他のユーザーの都合を気にする必要がない! • リソースはYARNで分離されているので気にしなくてもよ い(気にしなくてもいい運用になっていれば)
  • 実行状態の可視化 • Swimlanes • アプリケーションの実行状態を可視化するもの • History Logをつかうので、実行中のアプリケーションの可視化 はたぶんむり • https://github.com/marblejenka/tez/tree/master/tez-tools/ swimlanes • 性能のトレーサビリティが担保できる点で有用
  • Swimlanesの出力イメージ https://issues.apache.org/jira/browse/TEZ-1332 http://people.apache.org/~gopalv/query27.svg
  • 既存アプリケーションの移行
  • Sparkの場合 • アプリケーションの書き直しが必要になる(はず)! • まあしょうがない http://blog.cloudera.com/blog/2014/09/how-to-translate-from-mapreduce-to-apache-spark/
  • Tezの場合 • TezはMR用のProcessorを用意して吸収 https://github.com/marblejenka/tez/blob/master/tez-mapreduce/src/main/java/org/apache/tez/mapreduce/processor/map/MapProcessor.java
  • 移行のしやすさ • Pig/Hive • たぶんxxx.execution.engine=tezとかでおk • ほかにもやるべきことはありそう • 生MapReduce • Jobを生成しているところをTez風に実装しなおす必要あり • OozieでMRを分割して呼び出し順序をXMLで制御させて いると大変かも
  • どのタイミングで移行するか? • Incubation期はおわった! • 0.5.0がリリース済み! • 1.0.0とか待つ?
  • 0.2.0-incubatorのころ • 結構いまいちだった! • やたらアプリケーションコードで実行制御させようとい う感じ(下記リンク参照) • だいぶつかえる感でてきたと思う https://github.com/apache/incubator-tez/blob/branch-0.2.0/tez-mapreduce-examples/src/main/java/org/apache/tez/mapreduce/examples/OrderedWordCount.java#L286
  • ところが
  • DAGがTopologyになったら… • 本気だそうと思ってたけど… • https://issues.apache.org/jira/browse/TEZ-699 https://github.com/marblejenka/tez/commit/7aa927a72f8142a5d6e05531fd948dbff85493a9#diff-32668c1a051521255d6efb32e41f0621L65
  • とはいえ • 黙ってても勝手に各ディストリビューションに入るので はないかと思われる! • HortonworksがMapReduceをLegacy Batchとか言いはじ めたらデフォルトが変わるフラグかも • それでも、MapReduceをなくすということも考えづらいの で、クリティカルにはならないはず • あんまり導入にセンシティブにならなくてもよいと思う! • ただし並行稼働は必須だと思います
  • まとめ
  • Tezどうなんでしょう? • Dryadの流れを汲んだMapReduceの正統継承者的 存在で発展に期待がもてますね!! • Processorを生で書くのは時期尚早感ありなので PigやHive、あとはFlinkをつかおう! • Hadoop MapReduceより取り回しがよさそうな仕 組みもあるよ
  • ご参考 • Dryadもとネタ! • http://dl.acm.org/citation.cfm?id=1273005 • Nephele/PACTsもとネタ! • http://dl.acm.org/citation.cfm?id=1807148 • TezとDryadの関係について! • http://yhemanth.wordpress.com/2013/11/07/comparing-apache-tez- and-microsoft-dryad/
  • Thank You