Asakusaではじめるhadoop sparkプログラミング
-
Upload
tadatoshi-sekiguchi -
Category
Engineering
-
view
731 -
download
0
Transcript of Asakusaではじめるhadoop sparkプログラミング
Copyright © 2016 Nautilus Technologies, Inc. All rights reserved.NAUTILUS
これからはじめるHadoop/Spark
AsakusaではじめるHadoop/Sparkプログラミング
Copyright © 2016 Nautilus Technologies, Inc. All rights reserved.NAUTILUS 2
永続的なエンジニアリングができる会社に
– ⼈の役に⽴つ– 途中で投げない
– お客様にしっかり⻑く使ってもらう
あらためて、ノーチラス・テクノロジーズは
Hadoop / Sparkにも当初から現在に⾄るまで、コミットしています。
Copyright © 2016 Nautilus Technologies, Inc. All rights reserved.NAUTILUS 3
AsakusaではじめるHadoop / Sparkプログラミング
Copyright © 2016 Nautilus Technologies, Inc. All rights reserved.NAUTILUS 4
⼤変申し訳ございません
本セッションの対応⾔語
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 プログラミングもいいですよ!– 最終的にやらなければならないケースが・・– 今回のお題
Copyright © 2016 Nautilus Technologies, Inc. All rights reserved.NAUTILUS 6
アドホックならSQL
Impala
環境構築が⾯倒なら BigQuery / TresureData / RedShift などを使うという⼿も
Copyright © 2016 Nautilus Technologies, Inc. All rights reserved.NAUTILUS 7
Spark試すならZeppelin
Microsoft AzureのHDInsightは、クラスタの起動時に使えるようになっている
Copyright © 2016 Nautilus Technologies, Inc. All rights reserved.NAUTILUS 8
その他にも多数https://hadoopecosystemtable.github.io/
Copyright © 2016 Nautilus Technologies, Inc. All rights reserved.NAUTILUS 9
プログララミングから始める
n ここから始めて間違いはない– つぶしがきく
n SQLでは書ききれないニーズ– 複雑なバッチ処理– 前処理、後処理
n エコシステム間のつなぎに役⽴つ
Copyright © 2016 Nautilus Technologies, Inc. All rights reserved.NAUTILUS 10
Asakusa Framework
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コンパイラ
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の停⽌
Copyright © 2016 Nautilus Technologies, Inc. All rights reserved.NAUTILUS 13
よくわかりません
Copyright © 2016 Nautilus Technologies, Inc. All rights reserved.NAUTILUS 14
n Hadoop / Spark APIの知識を必要とせず
n MapReduceではなくデータフローで
n IDEを活⽤しつつプログラムができる
Asakusa Framework 要約
Copyright © 2016 Nautilus Technologies, Inc. All rights reserved.NAUTILUS 15
まずは、それぞれのサンプルから
WordCount
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
Copyright © 2016 Nautilus Technologies, Inc. All rights reserved.NAUTILUS 17
Sparkプログラミング(Scala)
http://spark.apache.org/examples.html
Copyright © 2016 Nautilus Technologies, Inc. All rights reserved.NAUTILUS 18
Sparkプログラミング(Java)
Copyright © 2016 Nautilus Technologies, Inc. All rights reserved.NAUTILUS 19
MapReduceビッグデータ界のアセンブラ
※たぶん
Copyright © 2016 Nautilus Technologies, Inc. All rights reserved.NAUTILUS 20
Asakusaプログラミング
以降のコードは https://github.com/nautilus-sekiguchi/asakusa-wordcount-example にあります
Copyright © 2016 Nautilus Technologies, Inc. All rights reserved.NAUTILUS 21
n データの流れのことn DFD(データフローダイアグラム)などで図⽰
される
データフローとは
Source⼊⼒
Transform変換
Sink出⼒
テキスト⾏ 単語抽出出現頻度計測 単語と頻度
STS分割によるWordCount問題のDFD
Copyright © 2016 Nautilus Technologies, Inc. All rights reserved.NAUTILUS 22
n データモデル
AsakusaによるWordCount(1)
⾏
単語
頻度
分割
集計
Copyright © 2016 Nautilus Technologies, Inc. All rights reserved.NAUTILUS 23
n 演算⼦(変換)
AsakusaによるWordCount(2)
⾏
単語
頻度
分割
集計
Text
Word
WordCount
Copyright © 2016 Nautilus Technologies, Inc. All rights reserved.NAUTILUS 24
n フロー(制御)
AsakusaによるWordCount(3)
⾏
単語
頻度
分割
集計
Text
Word
WordCount
Copyright © 2016 Nautilus Technologies, Inc. All rights reserved.NAUTILUS 25
Asakusaはコンパイル時に複数の演算⼦をまとめてMapReduceに変換する。(最適化)この例だと1つのMapReduceの実⾏となる
実⾏計画
Copyright © 2016 Nautilus Technologies, Inc. All rights reserved.NAUTILUS 26
n Apacheログファイルの集計– 読み込めないレコードはエラーレコードとして別途
出⼒
– ステータスレコードが200のレコードは、⽇付・時間・URL毎に件数を集計
– ステータスコードが200以外のレコードはステータスコード・URL毎に集計
少し複雑な例
Copyright © 2016 Nautilus Technologies, Inc. All rights reserved.NAUTILUS 27
実⾏計画
この例では、2つのMRとして実⾏される。
⾃分でMRを考えなくていいのは、精神衛⽣上も開発効率上も良い。
Copyright © 2016 Nautilus Technologies, Inc. All rights reserved.NAUTILUS 28
– MapReduceを⼿で書くのはキツイ– Hadoopはエコシステムが充実しているので、成果優
先ならまず必要ない
– Spark はイイ– ScalaだけではなくPython, Rなんかも使えるらしい。– RDDだけではなくDataFrameなんかもあるらしい。– (英語がわかれば)教育コンテンツは⼭盛り
– かっちり、⼤規模開発にはAsakusa Framework– MapReduce知らなくても書ける。やりたいことに近い
DSL– 柔軟性とのトレードオフがある
まとめ
Copyright © 2016 Nautilus Technologies, Inc. All rights reserved.NAUTILUS 29
Asakusa Frameworkのよいところ
n Hadoop / Spark 両⽅で動作する
n IDE/コンパイラチェックが強⼒
n 標準テストフレームワークがある
Copyright © 2016 Nautilus Technologies, Inc. All rights reserved.NAUTILUS 30
Hadoop / Spark 両⽅で実⾏が可能
クラウド
分散環境
分散処理フレームワーク
商⽤ディストリビューション
シングルノード並列環境
並列処理フレームワーク
&実⾏基盤
M3クラウドサービス
Amazon EMR
Azure HDInsight
データフロー DSL / コンパイラ
インフラストラクチャ
並列・分散処理ミドルウェア
開発フレームワーク
リファレンス実装
実装者は実⾏環境を意識する必要がない
オンプレミス
開発中
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)
Copyright © 2016 Nautilus Technologies, Inc. All rights reserved.NAUTILUS 32
n 型チェックによる強⼒なエラー検知機能n コンパイラによるフレームワーク固有エラー検
知機能– フローの抜け漏れ検知など
n IDEによるコードアシスト– ローカル変数はIDE任せで型を覚える必要なし
IDE / コンパイラチェックが強⼒
Copyright © 2016 Nautilus Technologies, Inc. All rights reserved.NAUTILUS 33
n Junitによる演算⼦の単体テストが可能
テストフレームワーク 〜 演算⼦
演算⼦アノテーションを使うと、⾃動的にテスト⽤のモッククラスを⽣成してくれる。
Copyright © 2016 Nautilus Technologies, Inc. All rights reserved.NAUTILUS 34
テストフレームワーク 〜 ジョブフロー
text.xls word_count.xls
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も、処理時間に応じて選択可能
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 …” で検索)– 皆様の参加をお待ちしています!
Copyright © 2016 Nautilus Technologies, Inc. All rights reserved.NAUTILUS 37
PPT中のイラストは、「いらすとや」さんからお借りしましたhttp://www.irasutoya.com/