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

37
Copyright © 2016 Nautilus Technologies, Inc. All rights reserved. NAUTILUS これからはじめるHadoop/Spark Asakusaではじめる Hadoop/Sparkプログラミング

Upload: tadatoshi-sekiguchi

Post on 12-Jan-2017

731 views

Category:

Engineering


0 download

TRANSCRIPT

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

Copyright © 2016 Nautilus Technologies, Inc. All rights reserved.NAUTILUS

これからはじめるHadoop/Spark

AsakusaではじめるHadoop/Sparkプログラミング

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

Copyright © 2016 Nautilus Technologies, Inc. All rights reserved.NAUTILUS 2

永続的なエンジニアリングができる会社に

– ⼈の役に⽴つ– 途中で投げない

– お客様にしっかり⻑く使ってもらう

あらためて、ノーチラス・テクノロジーズは

Hadoop / Sparkにも当初から現在に⾄るまで、コミットしています。

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

Copyright © 2016 Nautilus Technologies, Inc. All rights reserved.NAUTILUS 3

AsakusaではじめるHadoop / Sparkプログラミング

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

Copyright © 2016 Nautilus Technologies, Inc. All rights reserved.NAUTILUS 4

⼤変申し訳ございません

本セッションの対応⾔語

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

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 プログラミングもいいですよ!– 最終的にやらなければならないケースが・・– 今回のお題

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

Copyright © 2016 Nautilus Technologies, Inc. All rights reserved.NAUTILUS 6

アドホックならSQL

Impala

環境構築が⾯倒なら BigQuery / TresureData / RedShift などを使うという⼿も

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

Copyright © 2016 Nautilus Technologies, Inc. All rights reserved.NAUTILUS 7

Spark試すならZeppelin

Microsoft AzureのHDInsightは、クラスタの起動時に使えるようになっている

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

Copyright © 2016 Nautilus Technologies, Inc. All rights reserved.NAUTILUS 8

その他にも多数https://hadoopecosystemtable.github.io/

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

Copyright © 2016 Nautilus Technologies, Inc. All rights reserved.NAUTILUS 9

プログララミングから始める

n ここから始めて間違いはない– つぶしがきく

n SQLでは書ききれないニーズ– 複雑なバッチ処理– 前処理、後処理

n エコシステム間のつなぎに役⽴つ

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

Copyright © 2016 Nautilus Technologies, Inc. All rights reserved.NAUTILUS 10

Asakusa Framework

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

Copyright © 2016 Nautilus Technologies, Inc. All rights reserved.NAUTILUS 11

SparkYARN

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

ThunderGate

WindGate Direct I/O

YAESSEXCEL

テンプレート

実⾏エンジンスモールジョブ実⾏エンジン

Apache Hadoop CDH MapR HDP Amazon

EMRHadoop1系、2系も可

Sparkコンパイラ

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

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の停⽌

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

Copyright © 2016 Nautilus Technologies, Inc. All rights reserved.NAUTILUS 13

よくわかりません

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

Copyright © 2016 Nautilus Technologies, Inc. All rights reserved.NAUTILUS 14

n Hadoop / Spark APIの知識を必要とせず

n MapReduceではなくデータフローで

n IDEを活⽤しつつプログラムができる

Asakusa Framework 要約

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

Copyright © 2016 Nautilus Technologies, Inc. All rights reserved.NAUTILUS 15

まずは、それぞれのサンプルから

WordCount

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

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

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

Copyright © 2016 Nautilus Technologies, Inc. All rights reserved.NAUTILUS 17

Sparkプログラミング(Scala)

http://spark.apache.org/examples.html

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

Copyright © 2016 Nautilus Technologies, Inc. All rights reserved.NAUTILUS 18

Sparkプログラミング(Java)

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

Copyright © 2016 Nautilus Technologies, Inc. All rights reserved.NAUTILUS 19

MapReduceビッグデータ界のアセンブラ

※たぶん

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

Copyright © 2016 Nautilus Technologies, Inc. All rights reserved.NAUTILUS 20

Asakusaプログラミング

以降のコードは https://github.com/nautilus-sekiguchi/asakusa-wordcount-example にあります

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

Copyright © 2016 Nautilus Technologies, Inc. All rights reserved.NAUTILUS 21

n データの流れのことn DFD(データフローダイアグラム)などで図⽰

される

データフローとは

Source⼊⼒

Transform変換

Sink出⼒

テキスト⾏ 単語抽出出現頻度計測 単語と頻度

STS分割によるWordCount問題のDFD

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

Copyright © 2016 Nautilus Technologies, Inc. All rights reserved.NAUTILUS 22

n データモデル

AsakusaによるWordCount(1)

単語

頻度

分割

集計

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

Copyright © 2016 Nautilus Technologies, Inc. All rights reserved.NAUTILUS 23

n 演算⼦(変換)

AsakusaによるWordCount(2)

単語

頻度

分割

集計

Text

Word

WordCount

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

Copyright © 2016 Nautilus Technologies, Inc. All rights reserved.NAUTILUS 24

n フロー(制御)

AsakusaによるWordCount(3)

単語

頻度

分割

集計

Text

Word

WordCount

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

Copyright © 2016 Nautilus Technologies, Inc. All rights reserved.NAUTILUS 25

Asakusaはコンパイル時に複数の演算⼦をまとめてMapReduceに変換する。(最適化)この例だと1つのMapReduceの実⾏となる

実⾏計画

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

Copyright © 2016 Nautilus Technologies, Inc. All rights reserved.NAUTILUS 26

n Apacheログファイルの集計– 読み込めないレコードはエラーレコードとして別途

出⼒

– ステータスレコードが200のレコードは、⽇付・時間・URL毎に件数を集計

– ステータスコードが200以外のレコードはステータスコード・URL毎に集計

少し複雑な例

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

Copyright © 2016 Nautilus Technologies, Inc. All rights reserved.NAUTILUS 27

実⾏計画

この例では、2つのMRとして実⾏される。

⾃分でMRを考えなくていいのは、精神衛⽣上も開発効率上も良い。

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

Copyright © 2016 Nautilus Technologies, Inc. All rights reserved.NAUTILUS 28

– MapReduceを⼿で書くのはキツイ– Hadoopはエコシステムが充実しているので、成果優

先ならまず必要ない

– Spark はイイ– ScalaだけではなくPython, Rなんかも使えるらしい。– RDDだけではなくDataFrameなんかもあるらしい。– (英語がわかれば)教育コンテンツは⼭盛り

– かっちり、⼤規模開発にはAsakusa Framework– MapReduce知らなくても書ける。やりたいことに近い

DSL– 柔軟性とのトレードオフがある

まとめ

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

Copyright © 2016 Nautilus Technologies, Inc. All rights reserved.NAUTILUS 29

Asakusa Frameworkのよいところ

n Hadoop / Spark 両⽅で動作する

n IDE/コンパイラチェックが強⼒

n 標準テストフレームワークがある

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

Copyright © 2016 Nautilus Technologies, Inc. All rights reserved.NAUTILUS 30

Hadoop / Spark 両⽅で実⾏が可能

クラウド

分散環境

分散処理フレームワーク

商⽤ディストリビューション

シングルノード並列環境

並列処理フレームワーク

&実⾏基盤

M3クラウドサービス

Amazon EMR

Azure HDInsight

データフロー DSL / コンパイラ

インフラストラクチャ

並列・分散処理ミドルウェア

開発フレームワーク

リファレンス実装

実装者は実⾏環境を意識する必要がない

オンプレミス

開発中

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

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)

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

Copyright © 2016 Nautilus Technologies, Inc. All rights reserved.NAUTILUS 32

n 型チェックによる強⼒なエラー検知機能n コンパイラによるフレームワーク固有エラー検

知機能– フローの抜け漏れ検知など

n IDEによるコードアシスト– ローカル変数はIDE任せで型を覚える必要なし

IDE / コンパイラチェックが強⼒

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

Copyright © 2016 Nautilus Technologies, Inc. All rights reserved.NAUTILUS 33

n Junitによる演算⼦の単体テストが可能

テストフレームワーク 〜 演算⼦

演算⼦アノテーションを使うと、⾃動的にテスト⽤のモッククラスを⽣成してくれる。

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

Copyright © 2016 Nautilus Technologies, Inc. All rights reserved.NAUTILUS 34

テストフレームワーク 〜 ジョブフロー

text.xls word_count.xls

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

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も、処理時間に応じて選択可能

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

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 …” で検索)– 皆様の参加をお待ちしています!

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

Copyright © 2016 Nautilus Technologies, Inc. All rights reserved.NAUTILUS 37

PPT中のイラストは、「いらすとや」さんからお借りしましたhttp://www.irasutoya.com/