159 Views
August 04, 17
スライド概要
ストリームデータ処理技術勉強会 発表資料 https://futureofdata.connpass.com/event/60300/
2023年10月からSpeaker Deckに移行しました。最新情報はこちらをご覧ください。 https://speakerdeck.com/lycorptech_jp
Kafka Summit NYCに見る ストリーミングデータETLの話 ストリームデータ処理技術勉強会 2017年8月4日 ヤフー株式会社 データ&サイエンスソリューション統括本部 データプラットフォーム本部 開発4部 パイプライン 1 森谷 大輔 Co p yrig ht © 2 0 1 7 Yaho o Jap an Co rp o ratio n. All Rig hts Reserved .
自己紹介 • 森谷 大輔 • インフラエンジニア • • どちらかというとBEアプリケーション開発 ヤフーのデータパイプラインをつくったり運用したり • 対外発表 • ストリーム処理プラットフォームにおけるKafka導入事例 (Apache Kafka Meetup Japan #1: 2016) • Hadoop Summit 2016 @San Jose ストリーム処理関連の報告 (Stream Processing Casual Talks #1: 2016) • Kafka 0.10.0アップデート プロダクション100ノードでやってみた (D&S Data Night vol.03: 2016) • 噛み砕いてKafka Streams (Apache Kafka Meetup Japan #2: 2016) • Elasticsearch 5.2とJava Clientで戯れる (第18回Elasticsearch勉強会: 2017) • Java Clientで入門するApache Kafka(JJUG CCC 2017 Spring: 2017) 2 Co p yrig ht © 2 0 1 7 Yaho o Jap an Co rp o ratio n. All Rig hts Reserved .
ゴール (Kafkaを使った)ストリーミングデータのETL について知ってもらう 謝罪、注意: • タイトルの割にKafka Summitに触れつつ主にスト リーミングデータETLの話 • 3 CFPのコメントかぶせてしまってすみません Co p yrig ht © 2 0 1 7 Yaho o Jap an Co rp o ratio n. All Rig hts Reserved .
アジェンダ • • • • • 4 KafkaとKafka Summit NYC Kafka Summitの重要ポイント:ストリーミングプラットフォーム Streaming ETL (これまでの知見から考える)Transformation まとめ Co p yrig ht © 2 0 1 7 Yaho o Jap an Co rp o ratio n. All Rig hts Reserved .
アジェンダ • • • • • 5 KafkaとKafka Summit NYC Kafka Summitの重要ポイント:ストリーミングプラットフォーム Streaming ETL (これまでの知見から考える)Transformation まとめ Co p yrig ht © 2 0 1 7 Yaho o Jap an Co rp o ratio n. All Rig hts Reserved .
Apache Kafka OSSのストリーミングプラットフォーム • • • レコードストリームをpub/subできる レコードストリームをフォールトトレラントに永続化できる レコードストリームを発生したらすぐ処理できる • • LinkedInが開発してOSS化 (2011-) Apacheトップレベルプロジェクトで配布(2012-) 6 Co p yrig ht © 2 0 1 7 Yaho o Jap an Co rp o ratio n. All Rig hts Reserved .
実績 Fortune 500の内 実に3分の1がKafkaを 利用しているらしい 7 https://kafka.apache.org/powered-by から一部を抜粋 Co p yrig ht © 2 0 1 7 Yaho o Jap an Co rp o ratio n. All Rig hts Reserved .
Kafka Summit NYC 2017 日時 • 5/7 チュートリアル • 5/8 カンファレンス • 5/9 – 11 Dev or Ops トレーニング 場所 New York Hilton Midtown 主催 Confluent.inc 参加者数 • 500+ Confluentが主催するカンファレンスは2016年のSFが初めて、今回は2回目 • • 3回目が8月にSFで開かれる カンファレンスはキーノートの後3カテゴリ(System, Stream, Pipeline)をそ れぞれ並列で丸一日セッションしていく 8 Co p yrig ht © 2 0 1 7 Yaho o Jap an Co rp o ratio n. All Rig hts Reserved .
写真 9 Co p yrig ht © 2 0 1 7 Yaho o Jap an Co rp o ratio n. All Rig hts Reserved .
写真 10 Co p yrig ht © 2 0 1 7 Yaho o Jap an Co rp o ratio n. All Rig hts Reserved .
写真 11 Co p yrig ht © 2 0 1 7 Yaho o Jap an Co rp o ratio n. All Rig hts Reserved .
アジェンダ • • • • • 12 KafkaとKafka Summit NYC Kafka Summitの重要ポイント:ストリーミングプラットフォーム Streaming ETL (これまでの知見から考える)Transformation まとめ Co p yrig ht © 2 0 1 7 Yaho o Jap an Co rp o ratio n. All Rig hts Reserved .
Kafka Summitの重要ポイント • ストリーミングプラットフォームというメッセージング • Streams API, Connect API押し • Kafka as a Service • Exactly Once 13 Co p yrig ht © 2 0 1 7 Yaho o Jap an Co rp o ratio n. All Rig hts Reserved .
Kafka Summitの重要ポイント • ストリーミングプラットフォームというメッセージング • • Streams API, Connect API押し • • 14 ETL as a Platformとして見たときの要素 Kafka as a Service • • Jayのkeynoteに集約、セッション全体を通して感じた 今日は触れない Exactly Once • 6月リリース(0.11.0.0)の目玉機能 • https://www.slideshare.net/laclefyoshi/apache-kafka-011-exactly-once-semantics (佐伯さん) Co p yrig ht © 2 0 1 7 Yaho o Jap an Co rp o ratio n. All Rig hts Reserved .
Apache Kafka OSSのストリーミングプラットフォーム • • • レコードストリームをpub/subできる レコードストリームをフォールトトレラントに永続化できる レコードストリームを発生したらすぐ処理できる • • LinkedInが開発してOSS化 (2011-) Apacheトップレベルプロジェクトで配布(2012-) 15 Co p yrig ht © 2 0 1 7 Yaho o Jap an Co rp o ratio n. All Rig hts Reserved .
ストリーミングプラットフォーム 3つの視点 • • Messaging Done Right Hadoop Made Fast • • Streams API (Kafka Streams) ETL as a Platform • Connect API, Schema Registry 用途 • • 16 データパイプラインの構築 ストリーミングアプリケーションの構築 Co p yrig ht © 2 0 1 7 Yaho o Jap an Co rp o ratio n. All Rig hts Reserved .
データパイプライン Data Source RDBMS Data Source Data Source 17 Co p yrig ht © 2 0 1 7 Yaho o Jap an Co rp o ratio n. All Rig hts Reserved .
データパイプライン ストリーム処理 Data Source Data Source Data Source RDBMS Data Source Data Source Data Source 18 Co p yrig ht © 2 0 1 7 Yaho o Jap an Co rp o ratio n. All Rig hts Reserved .
データパイプライン ストリーム処理 Data Source Data Source RDBMS Data Source Data Source Data Source 19 Data Source Co p yrig ht © 2 0 1 7 Yaho o Jap an Co rp o ratio n. All Rig hts Reserved .
アジェンダ • • • • • 20 KafkaとKafka Summit NYC Kafka Summitの重要ポイント:ストリーミングプラットフォーム Streaming ETL (これまでの知見から考える)Transformation まとめ Co p yrig ht © 2 0 1 7 Yaho o Jap an Co rp o ratio n. All Rig hts Reserved .
全てのログはKafkaに、全てのログはKafkaから Transform Source Source Source 21 ログそのものはあくまでログであって、 置き場所と密結合ではない Co p yrig ht © 2 0 1 7 Yaho o Jap an Co rp o ratio n. All Rig hts Reserved .
Streaming ETL Streams API T E Source Connect API L Connect API - Single Message Transformations Are Not the Transformations You’re Looking For(Confluent) 22 Co p yrig ht © 2 0 1 7 Yaho o Jap an Co rp o ratio n. All Rig hts Reserved . Dest
アジェンダ • • • • • 23 KafkaとKafka Summit NYC Kafka Summitの重要ポイント:ストリーミングプラットフォーム Streaming ETL (これまでの知見から考える)Transformation まとめ Co p yrig ht © 2 0 1 7 Yaho o Jap an Co rp o ratio n. All Rig hts Reserved .
Transformation • • filter(選択・射影) map • aggregate • join 24 Co p yrig ht © 2 0 1 7 Yaho o Jap an Co rp o ratio n. All Rig hts Reserved .
Transformation • • filter(選択・射影) map • • → 1ログだけで完結、簡単 aggregate • • → window集約 join • Kafkaの機能をうまく使う • • • 25 key partitioning: keyからログ投入先partitionは確定する 1partitionは必ず1consumer threadからしかconsumeされない topic毎どのpartitionを読むかの戦略オプション Co p yrig ht © 2 0 1 7 Yaho o Jap an Co rp o ratio n. All Rig hts Reserved .
少量のあまり変わらないテーブルとのjoinは? Kafka Cluster partition partition enriched topic enriched topic 例えば地点コードのような partition enriched topic id 都道府県 10 東京都 11 大阪府 12 神奈川県 イベントログ 例えばclick eventのような Join済ログ Transform (Join) process Transform (Join) process cache cache Transform (Join) process linkid prefecture timestamp 1112 10 1501429078 2223 12 1501429079 3334 10 1501429081 直感的な解決方法 先のETL図と離れるので あまり望ましくない cache 定期キャッシュ 26 Co p yrig ht © 2 0 1 7 RDBMS Yaho o Jap an Co rp o ratio n. All Rig hts Reserved .
頻繁に変わる・大きなテーブルだったら? Kafka Cluster partition enriched topic イベントログ 10万/秒 partition enriched topic 10万/秒 partition enriched topic 千EPSなら大丈夫かもしれないが・・・ 1万EPSでは? 100万EPSでは? ^^; 10万/秒 Join済ログ すごくつよい KVS Transform (Join) process Transform (Join) process Transform (Join) process 30万RPS 毎ログ 参照 いってこいでのネットワーク帯域消費とレイテンシ ^^; 27 Co p yrig ht © 2 0 1 7 Yaho o Jap an Co rp o ratio n. All Rig hts Reserved .
ローカリティを効かす partition partition partition partition partition partition enriched topic enriched topic enriched topic 「全てのログはKafkaに」 changelog イベントログ 10万/秒 Extract 10万/秒 10万/秒 Join済ログ RDBMS Transform (Join) process table 28 Transform (Join) process table Transform (Join) process table 30万RPS メモリに入りきらなければ永続化してもいい tableは分散することができる join対象のIDをkeyにすればjoinに必要なログを持つpartitionが確定するから Co p yrig ht © 2 0 1 7 Yaho o Jap an Co rp o ratio n. All Rig hts Reserved . (Kafka Streamsはこの辺をシームレスにやる)
join対象がsteamだった場合 • 例えばWebページを見たイベントログ、そこからどこかのリンクをクリックしたというイ ベントログは別々に発生 • • • • • • • 29 「見たログ」は単体で価値があるが、「クリックログ」はどの「見たログ」からクリックされたのか紐 付けたい 基本的にはさっきと同じ方法で実現 実世界では必ず見た後にクリックされるが、イベントログがjoin processを通るときに 必ずその順番になるとは限らない、というのがやや難しい いつまでjoinを待つかは決めなければならない データ量と待ち時間、障害時の復旧時間等いろいろ考慮する 難しいが、できる これらのことを比較的簡単にやってくれるのがStreams API Co p yrig ht © 2 0 1 7 Yaho o Jap an Co rp o ratio n. All Rig hts Reserved .
アジェンダ • • • • • 30 KafkaとKafka Summit NYC Kafka Summitの重要ポイント:ストリーミングプラットフォーム Streaming ETL (これまでの知見から考える)Transformation まとめ Co p yrig ht © 2 0 1 7 Yaho o Jap an Co rp o ratio n. All Rig hts Reserved .
まとめ • • Kafka Summitではストリーミングプラットフォームが強くメッセージングさ れた ストリーミングプラットフォームにおける理想的なETLの姿 • • 31 「全てのログはKafkaに。全てのログはKafkaから。」 Streams APIとConnect APIはその姿を比較的簡単に実現するためのツール Co p yrig ht © 2 0 1 7 Yaho o Jap an Co rp o ratio n. All Rig hts Reserved .
Appendix 32 Co p yrig ht © 2 0 1 7 Yaho o Jap an Co rp o ratio n. All Rig hts Reserved .
Kafka説明の変遷 • 公式doc https://kafka.apache.org/documentation/ version Kafka説明 備考 0.7.x 使い方のみ記述 2012, Apache Incubator時代 ・レプリケーション, Ackがサポートされていないので多少の損失 は当たり前だった 0.8.x Kafka is a distributed, partitioned, replicated commit log service. It provides the functionality of a messaging system, but with a unique design. 2013 – 2015, Apache Top level昇格 ・レプリケーション, Ackのサポート ・Compactionのサポート ・ClientからZooKeeperの依存がなくなっていく 0.9.x 0.8.xと同じ 2015 – 2016 ・Javaの新しいClient API ・セキュリティ機能追加 ・Kafka Connect 0.10.x Kafka is a distributed streaming platform. 2016 – 2017, Kafka Streams 0.11.0.0 0.10.xと同じ 2017/6/28, Exactly-Once 33 Co p yrig ht © 2 0 1 7 Yaho o Jap an Co rp o ratio n. All Rig hts Reserved .
投げる側と使う側が疎結合化されて世界は幸せになった? こうやって デシリアライズしよう あとこれとこのフィールドが 便利だから使おう こうやって シリアライズしよう byte[ ] Aさん byte[ ] Aさん 便利なデータらしいが、、 なんだこのバイナリ? byte[ ] Bさん スキーマを調停してあげたり、 カタログ的なエコシステムが欲しくなる 34 Co p yrig ht © 2 0 1 7 Yaho o Jap an Co rp o ratio n. All Rig hts Reserved .
Introducing Exactly Once Semantics in Apache Kafka • • • 35 Kafkaにおけるメッセージ伝達保証(セマンティクス) At Least Once 重複を許す At Most Once 欠損を許す Exactly Once 重複も欠損も許さない 多くのユースケースではAt Least Onceを死守すべく頑張ってきた 大抵入力時にIDを振り、後続で重複除去した Co p yrig ht © 2 0 1 7 Yaho o Jap an Co rp o ratio n. All Rig hts Reserved .
Introducing Exactly Once Semantics in Apache Kafka • Exactly once in order delivery per partition • • • • Atomic writes across multiple partitions • Producer APIにトランザクション機能を実装 • 2相コミット、コミットしていないメッセージはconsumeされない Performance considerations • • • 36 Producerがproduceしたメッセージがbrokerに追加されたがackが返らず再送することで発生する 重複を防ぐ partition毎にProducer idとシーケンス番号をふってproduceすることで、Brokerで重複除去される メッセージフォーマットの一新で効率化 0.10系以前とデータ構造の互換性なし ※Exactly onceはオプション(速度低下影響約3%) Co p yrig ht © 2 0 1 7 Yaho o Jap an Co rp o ratio n. All Rig hts Reserved .
資料集 • Kafka Summit NYC • • Kafka Summit NYCの公開済セッション・スライド • • https://qconsf.com/sf2016/system/files/keynotes-slides/etl_is_dead_long-live_streams.pdf Apache Kafka 0.11のExactly Once Semantics • 37 https://www.manning.com/books/kafka-streams-in-action ETL is Dead; Long Live Streams • • https://www.confluent.io/kafka-summit-nyc17/single-message-transformations-not-transformations-youre-looking/ Kafka Streams in Action • • https://www.confluent.io/kafka-summit-nyc17/resource/ Single Message Transformations Are Not the Transformations You’re Looking For • • https://kafka-summit.org/events/kafka-summit-ny/ https://www.slideshare.net/laclefyoshi/apache-kafka-011-exactly-once-semantics Co p yrig ht © 2 0 1 7 Yaho o Jap an Co rp o ratio n. All Rig hts Reserved .