Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Asakusaではじめるhadoop sparkプログラミング

1,132 views

Published on

Programming Hadoop / Spark with Asakusa Framework.
Asakusa Framework produces a module runs both Hadoop / Spark cluster. No need to learn MapReduce API!

Published in: Engineering
  • Be the first to comment

Asakusaではじめるhadoop sparkプログラミング

  1. 1. Copyright © 2016 Nautilus Technologies, Inc. All rights reserved.NAUTILUS これからはじめるHadoop/Spark Asakusaではじめる Hadoop/Sparkプログラミング
  2. 2. Copyright © 2016 Nautilus Technologies, Inc. All rights reserved.NAUTILUS 2 永続的なエンジニアリングが できる会社に – ⼈の役に⽴つ – 途中で投げない – お客様にしっかり⻑く使ってもらう あらためて、ノーチラス・テクノロジーズは Hadoop / Sparkにも当初から現在に⾄るまで、コミットしています。
  3. 3. Copyright © 2016 Nautilus Technologies, Inc. All rights reserved.NAUTILUS 3 Asakusaではじめる Hadoop / Sparkプログラミング
  4. 4. Copyright © 2016 Nautilus Technologies, Inc. All rights reserved.NAUTILUS 4 ⼤変申し訳ございません 本セッション の対応⾔語
  5. 5. Copyright © 2016 Nautilus Technologies, Inc. All rights reserved.NAUTILUS 5 Hadoop / Spark どこから始めたらいいのか n すぐに成果がでそうなところから – まずはSQL on Hadoop / Spark – ⼤半はこれでOK n 環境で悩まないようにする – クラスタを正しくセットアップするのは⼤変 – Google / Amazon / Microsoft には、Hadoop / Sparkクラスタのマネージドサービスがある n プログラミングもいいですよ! – 最終的にやらなければならないケースが・・ – 今回のお題
  6. 6. Copyright © 2016 Nautilus Technologies, Inc. All rights reserved.NAUTILUS 6 アドホックならSQL Impala 環境構築が⾯倒なら BigQuery / TresureData / RedShift などを使うという⼿も
  7. 7. Copyright © 2016 Nautilus Technologies, Inc. All rights reserved.NAUTILUS 7 Spark試すならZeppelin Microsoft AzureのHDInsightは、クラスタの起動時に使えるようになっている
  8. 8. Copyright © 2016 Nautilus Technologies, Inc. All rights reserved.NAUTILUS 8 その他にも多数 https://hadoopecosystemtable.github.io/
  9. 9. Copyright © 2016 Nautilus Technologies, Inc. All rights reserved.NAUTILUS 9 プログララミングから始める n ここから始めて間違いはない – つぶしがきく n SQLでは書ききれないニーズ – 複雑なバッチ処理 – 前処理、後処理 n エコシステム間のつなぎに役⽴つ
  10. 10. Copyright © 2016 Nautilus Technologies, Inc. All rights reserved.NAUTILUS 10 Asakusa Framework
  11. 11. Copyright © 2016 Nautilus Technologies, Inc. All rights reserved.NAUTILUS 11 Spark YARN Asakusa Frameworkとは n 基幹業務向け分散バッチ開発フレームワーク – Asakusa Frameworkは、基幹業務システムのバッチの⾼速処理を⽬的とした、 Hadoopに対応した業界初のソフトウェア – 基幹バッチ開発に必要な、開発環境・実⾏環境・運⽤環境を⽤意 n Hadoopの開発を容易にし、更に⾼速化 n MapReduce特有のコードを、Asakusaのコンパイラが⾃動⽣成 n Asakusaのコンパイラにて、MapReduceのコードを最適化し、MapReduceの 段数を削減させて⾼速化 データモデル定義 外部システム連携 Asakusa DSL Operator DSL ⾃動テストバッチ実⾏ツール Flow DSL Batch DSL MapReduce コンパイラ DMDL DMDL コンパイラ TestDriver ThunderGat e WindGate Direct I/O YAESS EXCEL テンプレート 実⾏エンジン スモールジョブ 実⾏エンジン Apache Hadoop CDH MapR HDP Amazon EMR Hadoop1系、 2系も可 Spark コンパイラ
  12. 12. Copyright © 2016 Nautilus Technologies, Inc. All rights reserved.NAUTILUS 12 アンデルセン・サービス様 原材料原価計算 事例 n 原材料からの製品原価計算で4時間かかっていた n BOMの展開・原価の4時間バッチで、週に2回実⾏するのが限界 n 110万の原材料、3000品⽬の原価をツリー構造の積上げ計算を実施 アンデルセン様データセンタ Amazon VPC インターネット DBサーバ バイナリバイナリ ⼊⼒ファイル 結果ファイル ① データを様々なシステムから 集配信する。 ② バッチ処理の時間だけ、 Hadoopを起動し、 時間課⾦を節約 クラウド転送も、データ量が 少ないので、問題なし。 バッチをクラウド上で実⾏ VPCでセキュア ⑥ Hadoop Masterバッチサーバ バイナリバイナリ 4時間のバッチ処理が 20分で終了2 2 12 3 2 0 5 10 15 20 25 バッチ処理時間 Clusterの起動 データの転送 原価計算 データの受信 Clusterの停⽌
  13. 13. Copyright © 2016 Nautilus Technologies, Inc. All rights reserved.NAUTILUS 13 よくわかりません
  14. 14. Copyright © 2016 Nautilus Technologies, Inc. All rights reserved.NAUTILUS 14 n Hadoop / Spark APIの知識を必要とせず n MapReduceではなくデータフローで n IDEを活⽤しつつプログラムができる Asakusa Framework 要約
  15. 15. Copyright © 2016 Nautilus Technologies, Inc. All rights reserved.NAUTILUS 15 まずは、それぞれのサンプルから WordCount
  16. 16. Copyright © 2016 Nautilus Technologies, Inc. All rights reserved.NAUTILUS 16 Hadoop プログラミング Map & Reduce ・・・と設定https://hadoop.apache.org/docs/current/hadoop-mapreduce-client/hadoop- mapreduce-client-core/MapReduceTutorial.html#Example:_WordCount_v1.0
  17. 17. Copyright © 2016 Nautilus Technologies, Inc. All rights reserved.NAUTILUS 17 Sparkプログラミング(Scala) http://spark.apache.org/examples.html
  18. 18. Copyright © 2016 Nautilus Technologies, Inc. All rights reserved.NAUTILUS 18 Sparkプログラミング(Java)
  19. 19. Copyright © 2016 Nautilus Technologies, Inc. All rights reserved.NAUTILUS 19 MapReduce ビッグデータ界のアセンブラ ※たぶん
  20. 20. Copyright © 2016 Nautilus Technologies, Inc. All rights reserved.NAUTILUS 20 Asakusaプログラミング 以降のコードは https://github.com/nautilus-sekiguchi/asakusa-wordcount-example にあります
  21. 21. Copyright © 2016 Nautilus Technologies, Inc. All rights reserved.NAUTILUS 21 n データの流れのこと n DFD(データフローダイアグラム)などで図⽰ される データフローとは Source ⼊⼒ Transform 変換 Sink 出⼒ テキスト⾏ 単語抽出 出現頻度計測 単語と頻度 STS分割によるWordCount問題のDFD
  22. 22. Copyright © 2016 Nautilus Technologies, Inc. All rights reserved.NAUTILUS 22 n データモデル AsakusaによるWordCount(1) ⾏ 単語 頻度 分割 集計
  23. 23. Copyright © 2016 Nautilus Technologies, Inc. All rights reserved.NAUTILUS 23 n 演算⼦(変換) AsakusaによるWordCount(2) ⾏ 単語 頻度 分割 集計 Text Word WordCount
  24. 24. Copyright © 2016 Nautilus Technologies, Inc. All rights reserved.NAUTILUS 24 n フロー(制御) AsakusaによるWordCount(3) ⾏ 単語 頻度 分割 集計 Text Word WordCount
  25. 25. Copyright © 2016 Nautilus Technologies, Inc. All rights reserved.NAUTILUS 25 Asakusaはコンパイル時に 複数の演算⼦をまとめて MapReduceに変換する。 (最適化) この例だと1つの MapReduceの実⾏となる 実⾏計画
  26. 26. Copyright © 2016 Nautilus Technologies, Inc. All rights reserved.NAUTILUS 26 n Apacheログファイルの集計 – 読み込めないレコードはエラーレコードとして別途 出⼒ – ステータスレコードが200のレコードは、⽇付・時 間・URL毎に件数を集計 – ステータスコードが200以外のレコードはステータス コード・URL毎に集計 少し複雑な例
  27. 27. Copyright © 2016 Nautilus Technologies, Inc. All rights reserved.NAUTILUS 27 実⾏計画 この例では、2つのMR として実⾏される。 ⾃分でMRを考えなくて いいのは、精神衛⽣上も 開発効率上も良い。
  28. 28. Copyright © 2016 Nautilus Technologies, Inc. All rights reserved.NAUTILUS 28 – MapReduceを⼿で書くのはキツイ – Hadoopはエコシステムが充実しているので、成果優 先ならまず必要ない – Spark はイイ – ScalaだけではなくPython, Rなんかも使えるらしい。 – RDDだけではなくDataFrameなんかもあるらしい。 – (英語がわかれば)教育コンテンツは⼭盛り – かっちり、⼤規模開発にはAsakusa Framework – MapReduce知らなくても書ける。やりたいことに近い DSL – 柔軟性とのトレードオフがある まとめ
  29. 29. Copyright © 2016 Nautilus Technologies, Inc. All rights reserved.NAUTILUS 29 Asakusa Frameworkのよいところ n Hadoop / Spark 両⽅で動作する n IDE/コンパイラチェックが強⼒ n 標準テストフレームワークがある
  30. 30. Copyright © 2016 Nautilus Technologies, Inc. All rights reserved.NAUTILUS 30 Hadoop / Spark 両⽅で実⾏が可能 クラウド 分散環境 分散処理フレームワーク 商⽤ディストリビューション シングルノード 並列環境 並列処理 フレームワーク &実⾏基盤 M3 クラウドサービス Amazon EMR Azure HDInsight データフロー DSL / コンパイラ インフラ ストラクチャ 並列・分散処理 ミドルウェア 開発 フレームワーク リファレンス実装 実装者は実⾏環境を意識する必要がない オンプレミス 開発中
  31. 31. Copyright © 2016 Nautilus Technologies, Inc. All rights reserved.NAUTILUS 31 n (問題にもよるが)Hadoopが速いこともある ScalaでSpark⼀択でいいのでは? 14.0 50.9 10.0 35.0 12.6 67.0 8.8 38.3 0 10 20 30 40 50 60 70 80 Medium(85GB) Large(586GB) Hadoop(5) Hadoop(10) Spark(5) Spark(10)
  32. 32. Copyright © 2016 Nautilus Technologies, Inc. All rights reserved.NAUTILUS 32 n 型チェックによる強⼒なエラー検知機能 n コンパイラによるフレームワーク固有エラー検 知機能 – フローの抜け漏れ検知など n IDEによるコードアシスト – ローカル変数はIDE任せで型を覚える必要なし IDE / コンパイラチェックが強⼒
  33. 33. Copyright © 2016 Nautilus Technologies, Inc. All rights reserved.NAUTILUS 33 n Junitによる演算⼦の単体テストが可能 テストフレームワーク 〜 演算⼦ 演算⼦アノテーションを 使うと、⾃動的にテスト ⽤のモッククラスを⽣成 してくれる。
  34. 34. Copyright © 2016 Nautilus Technologies, Inc. All rights reserved.NAUTILUS 34 テストフレームワーク 〜 ジョブフロー text.xls word_count.xls
  35. 35. Copyright © 2016 Nautilus Technologies, Inc. All rights reserved.NAUTILUS 35 Asakusa Frameworkを始めてみよう! n 開発環境は、⼀括インストールツール『Jinrikisha』を⽤意 – http://asakusafw.s3.amazonaws.com/documents/jinrikisha/ja/html/index.html Hadoopや Gradle/Eclipseを Asakusaと⼀括イ ンストール 既存の他システムとの連携 RDBMS連携、HDFS連携モジュール提供 Asteria/DataSpider/Hulft等のEAI/ETL連携 ジョブ管理ツールとの結合 JP1やSystemWalker、千⼿、A-Auto等の ジョブ管理製品との連携 Windows環境で開発・テスト・ビルド Eclipseプラグイン『Shafu』を⽤意 バッチテストランナーにてテスト時間を 短縮 Hadoop以外のエンジンも選択可能 Asakusaスモールジョブ実⾏エンジンや Sparkも、処理時間に応じて選択可能
  36. 36. Copyright © 2016 Nautilus Technologies, Inc. All rights reserved.NAUTILUS 36 Asakusa Framework n Asakusa Framework – Apache2.0ですので、どうぞご⾃由にお使いください n https://github.com/asakusafw – gitHub上に、公開しています n http://www.asakusafw.com/ – 各種技術資料も豊富な、専⽤サイトを⽤意 – 無料問合せ可能なメーリングリストを⽤意 n コミュニティ – 正直まだまだです(ブログ、Meetup、勉強会 etc) – SEO的にいまいち(”asakusa framework …” で検索) – 皆様の参加をお待ちしています!
  37. 37. Copyright © 2016 Nautilus Technologies, Inc. All rights reserved.NAUTILUS 37 PPT中のイラストは、「いらすとや」さんからお借りしました http://www.irasutoya.com/

×