Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Kafka logをオブジェクトストレージに連携する⽅法まとめ
Search
Keigo Suda
December 15, 2016
25
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Kafka logをオブジェクトストレージに連携する⽅法まとめ
Keigo Suda
December 15, 2016
More Decks by Keigo Suda
See All by Keigo Suda
フレームワークを意識させないワークショップづくり
keigosuda
0
420
Professional Serviceという働き方
keigosuda
0
41
パッケージ構成っていつでも悩ましい
keigosuda
0
20
スマートファクトリーを⽀えるIoTインフラをつくった話
keigosuda
0
30
20161212jawsbigdata-161214152052.pdf
keigosuda
0
29
Apache Kafka & Kafka Connectを使ったデータ連携パターン(改めETLの実装)
keigosuda
0
14
基幹業務もHadoopで!!
keigosuda
0
34
Featured
See All Featured
SEO in 2025: How to Prepare for the Future of Search
ipullrank
3
3.7k
Technical Leadership for Architectural Decision Making
baasie
3
460
JAMstack: Web Apps at Ludicrous Speed - All Things Open 2022
reverentgeek
1
530
GitHub's CSS Performance
jonrohan
1033
470k
Organizational Design Perspectives: An Ontology of Organizational Design Elements
kimpetersen
PRO
1
790
Agile Leadership in an Agile Organization
kimpetersen
PRO
0
200
The B2B funnel & how to create a winning content strategy
katarinadahlin
PRO
1
460
Groundhog Day: Seeking Process in Gaming for Health
codingconduct
0
270
The Psychology of Web Performance [Beyond Tellerrand 2023]
tammyeverts
49
3.5k
Facilitating Awesome Meetings
lara
57
7.1k
Keith and Marios Guide to Fast Websites
keithpitt
413
23k
The Cost Of JavaScript in 2023
addyosmani
55
10k
Transcript
Kafka logをオブジェクトストレージに 連携する⽅法まとめ Apache Kafka Meetup Japan #2 2016/12/15 Future
Architect Inc, Keigo Suda
お話すること l Kafkaのlogデータをオブジェクトストレージにアーカイブする必要があったので、 その時に⾊々と調べたのでその時の話(主にOSS) l 要は⼈柱になったよって話 どうやろう?
* Technology Innovation Group スペシャリスト * 今の専⾨ -> ⼤きいデータを扱う領域(インフラ〜アプリ) *
最近はもっぱらKafkaとストリーム処理エンジンの諸々 須⽥桂伍 (すだ けいご) keigodasu
もとめてた要件 l 最低限⼈が直接読める形で書き出したい l あわよくばParquetとか他のファイルフォーマットでも出せると何かと便利かも l なるべくソーシャルの⼒に頼りたい(ぶっちゃけ作るモチベーションあがらないw) l アーカイブ⽬的なので⾮機能⾯はあまり重視していない
選択肢 l Kafka Connect l Secor l Embulk
選択肢 l Kafka Connect(実際に試した) l Secor(実際に試した) l Embulk(Kafka to S3は試してない)
Kafka Connect l Kafkaとデータをやりとりするためのフレームワーク l Kafkaの0.9より導⼊された機能でKafkaへのIn/Outが実装可能 l http://www.slideshare.net/keigosuda/apache-kafka-kafka-connect- etl-70167024 l
設定ファイルベースで挙動をコントロール l コネクタアプリさえ作ればあとは設定ファイルで操作 l S3へのSinkコネクターは以下 l https://github.com/qubole/streamx l https://github.com/DeviantArt/kafka-connect-s3
設定例(streamxの場合) l 設定ファイルを書いてKafka Connect起動コマンドを実⾏するだけ
設定例(kafka-connect-s3の場合) l 設定ファイルを書いてKafka Connect起動コマンドを実⾏するだけ
実⾏例(スタンドアローンの例) l 設定ファイルを引数に指定して起動コマンドを実⾏ l 第1引数: Kafka Connect⾃体の設定ファイル l 第2引数: コネクタ固有の設定ファイル
bin/connect-standalone.sh ¥ config/connect-standalone.properties ¥ streamx/config/quickstart-s3.properties
所 感 l streamx l Confuluentのkafka-connect-hdfsをフォークしている l だからいろんなファイルフォーットでの書き出し対応しているのをウリにしている l サンプルにあったテキストでS3に書き出す例は問題なく動く
l が!!肝⼼なそれ以外のやり⽅がわからない(え、またソース追うんすか・・・) l kafka-connect-s3 l テキスト出⼒しか対応していないため作り⾃体はシンプル l ちゃんとflush()とかonPartitionsAssigned()とか実装している l が!!Kafka 0.9系しか対応してない
そうですか・・・ l コネクタの対応バージョンは気をつけた⽅がよさげ l 0.9と0.10でのAPI互換がないらしい
Secor l Pinterestが公開しているOSS l https://github.com/pinterest/secor l 設定ファイルベースで挙動をコントロール l 実態は普通にConsumeして書き出すだけ l
様々なファイルフォーマットでの書き出しに対応 l Text l Seaquencefile l Parquet l Gzip
設定例 l 設定可能な情報がかなりおおいが、主だったものは以下の通り # Kafka/Zookeeperの接続情報 zookeeper.kafka.seed.broker.host=172.31.28.60 zookeeper.quorum=172.31.28.60:2181 # 連携する/しないトピック情報 secor.kafka.topic_filter=test_topic
secor.kafka.topic_blacklist=exclueded_topic # 連携先のS3情報 stored.secor.s3.bucket=secortest stored.secor.s3.path=secor # アップロードのトリガー secor.max.file.size.bytes=100 secor.max.file.age.seconds=10 # ファイルフォーマット secor.file.reader.writer.factory=com.pinterest.secor.io.impl.DelimitedTextFileReaderWriterFactory
使い⽅ l 以下を起動時の引数に指定して実⾏ l secor_group・・・S3に書き出す際のまとめかた l log4j.configuration・・・ログ(log4j)の設定 l Config・・・Secor⾃体の設定 l
実⾏クラス・・・実⾏するクラス java –ea ¥ -Dsecor_group=secor_backup ¥ -Dlog4j.configuration=log4j.prod.properties ¥ -Dconfig=secor.prod.backup.properties ¥ -cp secor-0.1-SNAPSHOT.jar:lib/* ¥ com.pinterest.secor.main.ConsumerMain
ちょっとした注意点 l Kafkaの0.10で使う場合はビルド時にバージョンを指定する必要あり l デファオルとだと0.8向け l 設定ファイルは分割可能で、サンプルで配置されているものも分割されているの でちょっと注意 $ mvn
-Pkafka-0.10-dev package include=secor.common.properties
結局 l 現状だとSecorがちゃんとしているので、これを使っている l いろいろできるみたいだが、使いこなせていない感も
まとめ l オブジェクトストレージへの連携をまじめにやっているのはSecorぐらいな気が l Kafkaのエコシステム群、ちょっと⾃由すぎてつらいw
ありがとうございました!!