ヤフー株式会社 データ&サイエンスソリューション統括本部
杉山 朋広
Apache NiFi の紹介
自己紹介
杉山 朋広
データ&サイエンスソリューション統括本部
データプラットフォーム本部開発2部
データフローチーム
• ヤフーのデータ基盤にデータフローシステムの導入を検討中
• 社内のデータ基盤利用サービスを対象にデータフロー導入プロジェクトを推進中
• Apache NiFiをはじめとする、データフローツールの評価・検証
2
アジェンダ
Apache NiFiの紹介
なぜデータフローが必要か?
既存のインフラとの関係
アジェンダ
Apache NiFiの紹介
なぜデータフローが必要か?
既存のインフラとの関係
Apache NiFi とは
データの処理と配送のための
簡単、パワフル、且つ信頼性が高いシステム
5
Apache NiFi とは
Hadoop, AWS, RDB, KVS だけでなくKafkaやMQ、
Firehoseなど、多彩なデータソースをサポート
6
OSS系 クラウド系
データフローシステムの台頭
OSSだけでなくクラウドベンダーもデータフローを提供
7
よく聞かれる声
総じてデータフローの必要性があまり理解されていない感
8
NiFiって何に使えるんですか?
OozieやAirflowと何がちがうの?
これあったらKafkaいらない?
大きいデータを転送できますか?
スループットはどれくらいですか?
どれくらいスケールするの?
アジェンダ
Apache NiFiの紹介
なぜデータフローが必要か?
既存のインフラとの関係
データフローとSOA
Apache NiFi → Dataflow → Flow-based Programming(FBP) Service-oriented
architecture(SOA) にフィットしているらしい
10
FBP exhibits "data coupling", described in the article on coupling as the loosest type of coupling
between components. The concept of loose coupling is in turn related to that of service-oriented
architectures, and FBP fits a number of the criteria for such an architecture, albeit at a more
fine-grained level than most examples of this architecture.
(https://en.wikipedia.org/wiki/Flow-based_programming)
Now though there are a number of active and rapidly evolving movements making
dataflow a lot more interesting and a lot more vital to the success of a given enterprise.
These include things like; Service Oriented Architecture, the rise of the API, Internet of
Things, and Big Data.
(https://nifi.apache.org/docs.html)
DatabaseApplication Server
従来型SOA
サイロ化されたコンポーネントでサービスを提供
11
App
App
App
DatabaseApplication Server
従来型SOA
データフローは設計書に書くのが一般的
12
App
App
App
DFD
DatabaseApplication Server
従来型SOA
データフローの変更は、システムの変更となり設計やテスト・移行が発生
する大きなイベント
13
App
App
App
DFD
App
DFD←
設計 開発
テスト
移行
マイクロサービス
柔軟で迅速な変更に対応するために、小規模なサービスを組み合わせ
て一つのサービスを提供する手法
14
マイクロサービス
柔軟で迅速な変更に対応するために、小規模なサービスを組み合わせ
て一つのサービスを提供する手法
15
マイクロサービス
柔軟で迅速な変更に対応するために、小規模なサービスを組み合わせ
て一つのサービスを提供する手法
16
マイクロサービス
マイクロサービス化が進行すると、従来の手法のオーバーヘッドが問題
となってくると考えられる
17
DFD
DFD
DFD
DFD
DFD
データフローの機能
Flow-based Programmingの概念に則った処理ノードやキューを提供
18
Flow File
(Information Packet)
システム内を移動するオブジェクトの実体
Processor
(Black Box)
データの転送や変換などの処理を行う
Connection
(Bounded Buffer)
Processor間のリンケージを提供しキューとして機能する
FlowController
(Scheduler)
Processor間のFlowFile交換のためのブローカー
※()内はFBPでの表現
Dataflow System
P P P P P P P P P P
Connection
データフローの適用
従来、人手による設計やシステム変更を代替えしマイクロサービスの機
能追加や変更を迅速化
19
Flow
Controller
データフローにより得られるもの
マイクロサービスの発展とともに顕著化した
新たな課題を解決するための新たな機能
20
迅速な追加・変更
一貫したフロー制御
ガバナンスの確立
• 設計書にしかなかったデータフローをソフトウェアで管理
• 予め用意されたProcessorを使うことでロード処理の作成が不要に
• 簡単な操作で変更できるリンケージ(Connection)
• フロー制御機能の提供
• キュー制御機能の提供
• 障害時のリカバリ・再送機能の提供
• Processor, FlowFile, Connectionなどに対する細やかな権限設定
• FlowFileやキューのトラッキング(Data Provenance ~ データの由来)
• スキーマの管理機能(Avro/HWX Schema Registory)
アジェンダ
Apache NiFiの紹介
なぜデータフローが必要か?
既存のインフラとの関係
Dataflow System
P P
Connection
ワークフローエンジンとの関係
ひとつのサービスの中のジョブネットはワークフロー制御すべき
データフローとワークフローは共存する
22
Workflow System
Job Network X
Job A
Job B
Job C
Job Network Y
Job D
Job E
Job F
System2
System1
メッセージキューとの関係
データフローのキューで置き換え可能だが、性能面で好ましくない
性能に特化したコンポーネントは複数のデータフローで共用も可能
23
Kafka
ActiveMQ
..etc
P P P
23
P P
P P P PP
まとめ
• Apache NiFiはデータフローオーケストレーションソフト
ウェアのひとつ
• マイクロサービスの発展に伴って顕著化した
新しい課題を解決するための新しいツール
• 既存のワークフローエンジンやメッセージキューを置き換
えるものではない
24
ご清聴ありがとうございました

Apache NiFi の紹介 #streamctjp