Submit Search
Apache NiFiと他プロダクトのつなぎ方
Download as PPTX, PDF
8 likes
5,716 views
Sotaro Kimura
2016/07/27 Apache NiFi 勉強会~データフローの自動化~ での発表資料です。
Engineering
Read more
1 of 24
Download now
Downloaded 41 times
1
2
3
4
Most read
5
6
7
Most read
8
9
10
11
12
Most read
13
14
15
16
17
18
19
20
21
22
23
24
More Related Content
PDF
アサヒのデータ活用基盤を支えるデータ仮想化技術
Denodo
PDF
ビッグデータ処理データベースの全体像と使い分け
Recruit Technologies
PPTX
え、まって。その並列分散処理、Kafkaのしくみでもできるの? Apache Kafkaの機能を利用した大規模ストリームデータの並列分散処理
NTT DATA Technology & Innovation
PPTX
Apache Spark on Kubernetes入門(Open Source Conference 2021 Online Hiroshima 発表資料)
NTT DATA Technology & Innovation
PDF
Apache NiFi の紹介 #streamctjp
Yahoo!デベロッパーネットワーク
PPTX
Apache Sparkの基本と最新バージョン3.2のアップデート(Open Source Conference 2021 Online/Fukuoka ...
NTT DATA Technology & Innovation
PDF
Apache Sparkに手を出してヤケドしないための基本 ~「Apache Spark入門より」~ (デブサミ 2016 講演資料)
NTT DATA OSS Professional Services
PPTX
Kafkaを活用するためのストリーム処理の基本
Sotaro Kimura
アサヒのデータ活用基盤を支えるデータ仮想化技術
Denodo
ビッグデータ処理データベースの全体像と使い分け
Recruit Technologies
え、まって。その並列分散処理、Kafkaのしくみでもできるの? Apache Kafkaの機能を利用した大規模ストリームデータの並列分散処理
NTT DATA Technology & Innovation
Apache Spark on Kubernetes入門(Open Source Conference 2021 Online Hiroshima 発表資料)
NTT DATA Technology & Innovation
Apache NiFi の紹介 #streamctjp
Yahoo!デベロッパーネットワーク
Apache Sparkの基本と最新バージョン3.2のアップデート(Open Source Conference 2021 Online/Fukuoka ...
NTT DATA Technology & Innovation
Apache Sparkに手を出してヤケドしないための基本 ~「Apache Spark入門より」~ (デブサミ 2016 講演資料)
NTT DATA OSS Professional Services
Kafkaを活用するためのストリーム処理の基本
Sotaro Kimura
What's hot
(20)
PDF
データインターフェースとしてのHadoop ~HDFSとクラウドストレージと私~ (NTTデータ テクノロジーカンファレンス 2019 講演資料、2019...
NTT DATA Technology & Innovation
PPTX
ビッグデータ処理データベースの全体像と使い分け 2018年version
Tetsutaro Watanabe
PDF
Apache Hadoop YARNとマルチテナントにおけるリソース管理
Cloudera Japan
PPTX
大量のデータ処理や分析に使えるOSS Apache Spark入門(Open Source Conference 2021 Online/Kyoto 発表資料)
NTT DATA Technology & Innovation
PDF
IoT時代におけるストリームデータ処理と急成長の Apache Flink
Takanori Suzuki
PDF
噛み砕いてKafka Streams #kafkajp
Yahoo!デベロッパーネットワーク
PDF
Sparkをノートブックにまとめちゃおう。Zeppelinでね!(Hadoopソースコードリーディング 第19回 発表資料)
NTT DATA OSS Professional Services
PDF
Apache Hadoop HDFSの最新機能の紹介(2018)#dbts2018
Yahoo!デベロッパーネットワーク
PDF
Hadoop/Spark を使うなら Bigtop を使い熟そう! ~並列分散処理基盤のいま、から Bigtop の最近の取り組みまで一挙ご紹介~(Ope...
NTT DATA Technology & Innovation
PDF
忙しい人の5分で分かるMesos入門 - Mesos って何だ?
Masahito Zembutsu
PDF
データ分析を支える技術 DWH再入門
Satoru Ishikawa
PPTX
[社内勉強会]ELBとALBと数万スパイク負荷テスト
Takahiro Moteki
PDF
EC2のストレージどう使う? -Instance Storageを理解して高速IOを上手に活用!-
Yuta Imai
PDF
ちょっと理解に自信がないなという皆さまに贈るHadoop/Sparkのキホン (IBM Datapalooza Tokyo 2016講演資料)
hamaken
PDF
分散トレーシング技術について(Open tracingやjaeger)
NTT Communications Technology Development
PPTX
地理分散DBについて
Kumazaki Hiroki
PDF
Hadoopの概念と基本的知識
Ken SASAKI
PDF
Snowflake Architecture and Performance
Mineaki Motohashi
PDF
ストリーム処理を支えるキューイングシステムの選び方
Yoshiyasu SAEKI
PPTX
大規模データ活用向けストレージレイヤソフトのこれまでとこれから(NTTデータ テクノロジーカンファレンス 2019 講演資料、2019/09/05)
NTT DATA Technology & Innovation
データインターフェースとしてのHadoop ~HDFSとクラウドストレージと私~ (NTTデータ テクノロジーカンファレンス 2019 講演資料、2019...
NTT DATA Technology & Innovation
ビッグデータ処理データベースの全体像と使い分け 2018年version
Tetsutaro Watanabe
Apache Hadoop YARNとマルチテナントにおけるリソース管理
Cloudera Japan
大量のデータ処理や分析に使えるOSS Apache Spark入門(Open Source Conference 2021 Online/Kyoto 発表資料)
NTT DATA Technology & Innovation
IoT時代におけるストリームデータ処理と急成長の Apache Flink
Takanori Suzuki
噛み砕いてKafka Streams #kafkajp
Yahoo!デベロッパーネットワーク
Sparkをノートブックにまとめちゃおう。Zeppelinでね!(Hadoopソースコードリーディング 第19回 発表資料)
NTT DATA OSS Professional Services
Apache Hadoop HDFSの最新機能の紹介(2018)#dbts2018
Yahoo!デベロッパーネットワーク
Hadoop/Spark を使うなら Bigtop を使い熟そう! ~並列分散処理基盤のいま、から Bigtop の最近の取り組みまで一挙ご紹介~(Ope...
NTT DATA Technology & Innovation
忙しい人の5分で分かるMesos入門 - Mesos って何だ?
Masahito Zembutsu
データ分析を支える技術 DWH再入門
Satoru Ishikawa
[社内勉強会]ELBとALBと数万スパイク負荷テスト
Takahiro Moteki
EC2のストレージどう使う? -Instance Storageを理解して高速IOを上手に活用!-
Yuta Imai
ちょっと理解に自信がないなという皆さまに贈るHadoop/Sparkのキホン (IBM Datapalooza Tokyo 2016講演資料)
hamaken
分散トレーシング技術について(Open tracingやjaeger)
NTT Communications Technology Development
地理分散DBについて
Kumazaki Hiroki
Hadoopの概念と基本的知識
Ken SASAKI
Snowflake Architecture and Performance
Mineaki Motohashi
ストリーム処理を支えるキューイングシステムの選び方
Yoshiyasu SAEKI
大規模データ活用向けストレージレイヤソフトのこれまでとこれから(NTTデータ テクノロジーカンファレンス 2019 講演資料、2019/09/05)
NTT DATA Technology & Innovation
Ad
More from Sotaro Kimura
(14)
PPTX
スキーマ 付き 分散ストリーム処理 を実行可能な FlinkSQLClient の紹介
Sotaro Kimura
PPTX
Custom management apps for Kafka
Sotaro Kimura
PPTX
Spark Structured Streaming with Kafka
Sotaro Kimura
PPTX
Modern stream processing by Spark Structured Streaming
Sotaro Kimura
PPTX
Spark Structured StreamingでKafkaクラスタのデータをお手軽活用
Sotaro Kimura
PDF
Kinesis Analyticsの適用できない用途と、Kinesis Firehoseの苦労話
Sotaro Kimura
PDF
利用者主体で行う分析のための分析基盤
Sotaro Kimura
PDF
最近のストリーム処理事情振り返り
Sotaro Kimura
PDF
Stream dataprocessing101
Sotaro Kimura
PPTX
Hadoop基盤上のETL構築実践例 ~多様なデータをどう扱う?~
Sotaro Kimura
PPTX
JVM上でのストリーム処理エンジンの変遷
Sotaro Kimura
PDF
スキーマつきストリーム データ処理基盤、 Confluent Platformとは?
Sotaro Kimura
PDF
Gearpump, akka based Distributed Reactive Realtime Engine
Sotaro Kimura
PDF
リアルタイム処理エンジンGearpumpの紹介
Sotaro Kimura
スキーマ 付き 分散ストリーム処理 を実行可能な FlinkSQLClient の紹介
Sotaro Kimura
Custom management apps for Kafka
Sotaro Kimura
Spark Structured Streaming with Kafka
Sotaro Kimura
Modern stream processing by Spark Structured Streaming
Sotaro Kimura
Spark Structured StreamingでKafkaクラスタのデータをお手軽活用
Sotaro Kimura
Kinesis Analyticsの適用できない用途と、Kinesis Firehoseの苦労話
Sotaro Kimura
利用者主体で行う分析のための分析基盤
Sotaro Kimura
最近のストリーム処理事情振り返り
Sotaro Kimura
Stream dataprocessing101
Sotaro Kimura
Hadoop基盤上のETL構築実践例 ~多様なデータをどう扱う?~
Sotaro Kimura
JVM上でのストリーム処理エンジンの変遷
Sotaro Kimura
スキーマつきストリーム データ処理基盤、 Confluent Platformとは?
Sotaro Kimura
Gearpump, akka based Distributed Reactive Realtime Engine
Sotaro Kimura
リアルタイム処理エンジンGearpumpの紹介
Sotaro Kimura
Ad
Apache NiFiと他プロダクトのつなぎ方
1.
Apache NiFiと 他プロダクトのつなぎ方 2016/07/27 Apache NiFi
勉強会 〜データフローの自動化〜 木村宗太郎(@kimutansk) https://www.flickr.com/photos/neokratz/4913885458
2.
自己紹介 • 木村 宗太郎(Sotaro
Kimura) • ビッグデータ界隈に生息する何でも屋 • バックエンドからフロントエンド、技術検証から運用、 ドキュメント書きまで色々 • ストリーム処理基盤を調べているうちに NiFiにたどり着き、色々試しています。 • Twitter他 : @kimutansk 1
3.
アジェンダ 1. NiFiと他プロダクトの連携手段 2. 外部データストアを使用する方法 3.
Input・Output Portを使用する方法 4. Flinkとの接続サンプル 2
4.
アジェンダ 1. NiFiと他プロダクトの連携手段 2. 外部データストアを使用する方法 3.
Input・Output Portを使用する方法 4. Flinkとの接続サンプル 3 Apache NiFi自体の説明は 前発表にあるため、省きます。
5.
4 1. NiFiと他プロダクトの連携手段 • NiFiを他プロダクトと連携させるには、 大きく2つの方法がある。 1.
外部データストアを使用する方法 2. Input・Output Portを使用する方法
6.
5 2. 外部データストアを使用する方法 • データストアを介して他プロダクトと連携 •
NiFiはデータストアにデータを保存 • 連携先プロダクトはデータストアから取得 センサー データ ログ アプリ 履歴 データ発生元 NiFi データストア 連携先プロダクト データストアに一度保存してそこから取得
7.
6 2. 外部データストアを使用する方法 • NiFi、連携先共にコンポーネントが必要 •
NiFi側の保持Processorは下記のように多彩 • AMQP • JMS • Kafka • MQTT • Cassandra • Couchbase • Elasticsearch • etc...
8.
7 2. 外部データストアを使用する方法 • 利点 •
並列化で容易にスケールが可能 • データストアの耐障害性を利用可能 • 欠点 • 管理するプロセスが増大し、複雑化 • NiFi、連携先双方で対応コンポーネントが必要
9.
8 3. Input・Output Portを使用する方法 •
NiFiの持つInput・Output Portを介して 他プロダクトと連携 • NiFiから連携先プロダクトが直接取得 センサー データ ログ アプリ 履歴 データ発生元 NiFi 連携先プロダクト
10.
9 3. Input・Output Portを使用する方法 •
Input・Output Portとは? • NiFiプロセス同士が通信するための機構 • Input PortにPushしてNiFiにデータ投入 • Output PortにPullしてNiFiからデータを取得 • 通信路の暗号化も可能(オプション)
11.
10 3. Input・Output Portを使用する方法 •
NiFiの画面上ではヘッダ部に存在 • NiFiプロセスで複数のPortを管理利用可能 ここからドラッグして使用
12.
11 3. Input・Output Portを使用する方法 •
NiFiプロセスで複数のPortを管理利用可能 接続先のNiFi情報 Input Port一覧 Output Port一覧
13.
12 3. Input・Output Portを使用する方法 •
他プロダクトから用いるには? • Site-To-Site Clientという 再利用可能なクライアントとしてNiFiから提供 • ※Java製 • https://github.com/apache/nifi/tree/master/nifi-commons/nifi-site-to-site-client • これを用いることで任意のJavaプロセスが NiFiと直接通信する処理を容易に記述可能 • 使用したExampleも色々ある • Apache Flink • Apache Apex • etc...
14.
13 3. Input・Output Portを使用する方法 •
下記のような構成で使用可能 • 複数のNiFiプロセスから取得・投入可能(?) • 取得側がクラスタの場合も対応可能だが、 ロードバランスの方式は考える必要あり? • ※現状GitHub上のコードでは1Client:1Host接続の実装しかない・・・ Java Program Site-To-Site Client NiFi Process 1 Output Port NiFi Process 2 Output Port
15.
14 3. Input・Output Portを使用する方法 •
利点 • NiFiと直接やり取りが可能で構成がシンプル • Site-to-Siteクライアントを用いることで 幅広いプロダクトで使用可能 • 欠点 • 並列化への対応が不完全(?) • 耐障害性はNiFiの個々プロセスに依存 • あくまでデータフローを構築するための機構で、 データを保持するための機構ではない。
16.
15 4. Flinkとの接続サンプル • 実際に接続した例で何ができるかを見る。 •
具体的にどういう構成になるのか? • 下記のサンプルを基に説明 • https://github.com/bbende/nifi-streaming-examples
17.
NiFi Process 1 NiFi
Process 1 16 4. Flinkとの接続サンプル • サンプルを構築した際の構成 Core NiFi Input Port Flink StSClient StSClient Output Port Input Port Http Endpoint Edge NiFi StS Client Http Client ログ解析を行い、 結果を返信 ログを Edgeから集約 解析結果を取得 集約・転送を実施
18.
17 4. Flinkとの接続サンプル • EdgeでのFlow定義 ログ読み込み Coreに送信 解析結果取得
19.
18 4. Flinkとの接続サンプル • CoreでのFlow定義 Edgeの結果集約 Flinkの結果待受 Edgeからの待受
20.
19 4. Flinkとの接続サンプル • Flinkアプリケーションの構成 NiFi Source NiFi Sink LogLevel FlatMap LogLevel Window Counter Dictionary Builder NiFiOutputPort からデータ取得 NiFiInputPort にデータ送信 ログメッセージから ログレベル抽出 ログレベルを Windowカウント 統計結果集計
21.
20 4. Flinkとの接続サンプル • Flinkアプリケーションの構築コード //
NiFiDataPacket(NiFi提供)を実行単位とするNiFi用Source生成し、実行環境に設定 SourceFunction<NiFiDataPacket> nifiSource = new NiFiSource(sourceConfig); DataStream<NiFiDataPacket> streamSource = env.addSource(nifiSource); // ログレベル抽出Mapper生成 LogLevelFlatMap logLevelFlatMap = new LogLevelFlatMap(props.getLogLevelAttribute()); // ログレベルWindowCounter生成 LogLevelWindowCounter windowCounter = new LogLevelWindowCounter(); // 統計結果集計Builder生成 NiFiDataPacketBuilder<LogLevels> builder = new DictionaryBuilder(windowSize, rateThreshold); // アプリケーション構築 streamSource.flatMap(logLevelFlatMap) .timeWindowAll(Time.of(windowSize, TimeUnit.MILLISECONDS)) .apply(new LogLevelWindowCounter()).addSink(new NiFiSink<>(sinkConfig, builder)); // ストリーム処理アプリケーション起動 env.execute("WindowLogLevelCount");
22.
21 4. Flinkとの接続サンプル • Flinkアプリケーションの構築コード //
NiFiDataPacket(NiFi提供)を実行単位とするNiFi用Source生成し、実行環境に設定 SourceFunction<NiFiDataPacket> nifiSource = new NiFiSource(sourceConfig); DataStream<NiFiDataPacket> streamSource = env.addSource(nifiSource); // ログレベル抽出Mapper生成 LogLevelFlatMap logLevelFlatMap = new LogLevelFlatMap(props.getLogLevelAttribute()); // ログレベルWindowCounter生成 LogLevelWindowCounter windowCounter = new LogLevelWindowCounter(); // 統計結果集計Builder生成 NiFiDataPacketBuilder<LogLevels> builder = new DictionaryBuilder(windowSize, rateThreshold); // アプリケーション構築 streamSource.flatMap(logLevelFlatMap) .timeWindowAll(Time.of(windowSize, TimeUnit.MILLISECONDS)) .apply(new LogLevelWindowCounter()).addSink(new NiFiSink<>(sinkConfig, builder)); // ストリーム処理アプリケーション起動 env.execute("WindowLogLevelCount"); Apexアプリケーションでも ほぼ同じコード量で同等の機能が実現可能。
23.
まとめ • NiFiと他プロダクトと連携する手段は2つ ① 外部データストアを使用する方法 ②
Input・Output Portを使用する方法 • 利点欠点は両方ある • Input・Output Portを利用するための SiteToSiteClientがNiFiから提供 • FlinkやApexのサンプルが存在 • Flink、Apex共に、 SiteToSiteClientを使えば 数十行のコードでNiFiと接続し、 アプリケーション構築可能 22
24.
Enjoy Apache NiFi
! https://www.flickr.com/photos/99408200@N05/11646500835
Download