SlideShare ist ein Scribd-Unternehmen logo
1 von 23
Downloaden Sie, um offline zu lesen
Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved.
2018年12月4日
ヤフー株式会社
データ&サイエンスソリューション統括本部 データプラットフォーム本部デリバリー部パイプライン
橘 拓馬
Apache Kafkaによるログ転送と
パフォーマンスチューニング
Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved.
自己紹介
橘 拓馬
2018年度新卒
• 8月からパイプラインチームに
配属され、Apache Kafkaを扱い始める
IoT周りが好き
2
Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved.
目次
3
1. はじめに
2. What is Kafka
3. パフォーマンス改善の実例
4. まとめ
Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved.
はじめに
ヤフーは多種多様なサービスを抱え、
多数のユーザ様に利用していただいている
デイリーユニークブラウザ数(FY17)
平均9053万ブラウザ
アプリ合算デイリーアクティブユーザ数(FY17)
平均4249万人
より良いサービスを提供するために、
各サービスから生み出される大量のデータを横断的に活用
※各種指標はhttps://about.yahoo.co.jp/ir/jp/archives/data/より引用
運営サービス数
100超
4
Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved.
より良いサービスを提供するために、
各サービスから生み出される大量のデータを横断的に活用
はじめに
ヤフーは多種多様なサービスを抱え、
多数のユーザ様に利用していただいている
デイリーユニークブラウザ数(FY17)
平均9053万ブラウザ
アプリ合算デイリーアクティブユーザ数(FY17)
平均4249万人
※各種指標はhttps://about.yahoo.co.jp/ir/jp/archives/data/より引用
運営サービス数
100超
5
例:複数のサービスからユーザのWeb行動ログを収集、
最もユーザが興味の持ちそうな関連コンテンツをレコメンド
サービスA
サービスB
サービスC
あなたへの
オススメ
… 行動を分析
Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved.
大量のデータ活用の課題
誰もが横断的に活用するためには、各サービス/サーバに
保存されている大量のログデータを
1つの分析基盤に集約するのが効率的…
大量のサーバとデータたち
データをサーバから
取得するだけで超大変…
6
Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved.
大量のデータ活用の課題
各サーバに散らばっているデータを連携したり、
分析基盤に転送するためにメッセージングシステムが必要
大量のサーバとデータたち 分析基盤メッセージングシステム
サーバ間の
データ転送を担う
7
Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved.
大量のデータ活用の課題
パイプラインチームでは、Apache Kafkaを
メッセージングシステムとして採用
大量のサーバとデータたち 分析基盤Apache Kafka
8
Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved.
予備知識
pub/sub型メッセージングシステム
複数の送信者が送信したデータを中継者(Broker)が
全て受け取り、データを利用したい複数の受信者が中継者から
購読することで多対多のメッセージングを実現するシステム
Publisher SubscriberBroker
9
Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved.
予備知識
pub/sub型メッセージングシステム
Brokerという中継者を置くことでスケールアウトに伴う煩雑さを
撤廃、複数のサーバ間でデータを簡単に利活用できるように
最終的な受け手を気にすることなく
送信(Publish)
利用したい項目のデータのみ
購読(Subscribe)
10
Publisher SubscriberBroker
Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved.
What is Kafka①
: LinkedInで開発された
pub/sub型分散メッセージングシステム
Producer
Consumer
最終的な受け手を気にすることなく
送信(Produce)
→受信者の増減による設定変更は無
利用したい項目のデータのみ
購読(Consume)
→利用データの変更は項目の設定のみ
Apache Kafka
(Broker Cluster) 11
Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved.
What is Kafka②
• Brokerは複数のサーバを使用して分散システムとして稼働させることが可能
• メッセージの処理単位を複数に分割できる仕組みを持つため
Consumer側のアプリケーションも分散処理が可能
• 可用性・スケールアウト性を確保
• メッセージを自分のDiskへ書き込みつつ
他サーバへもレプリケーションすることで、データの永続性を担保
• 何らかの理由でConsumerの処理が一時停止してもリトライが可能
• Apache Foundationが提供するデータ分析エンジンとの親和性が高い
• Apache Hadoop, Apache Spark, Apache Storm, Apache Flink etc...
12
Kafkaの特徴
Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved.
Kafkaとパフォーマンス
分散メッセージングシステムは
パフォーマンスに影響を与える要素が非常に広範囲
→思ったような性能が出ない場合、確認箇所が多い
• アーキテクチャそのもの
(Producer-Broker-Consumerの繋ぎ方が悪い?)
• Kafka実装
(コードのどこかの処理が重い?)
• 各種設定
(要件と相性の悪い設定が記述されている?)
• JVM
(JVMに負荷がかかる設定になっている?)
• OS(特にI/O周り)
(ファイルシステムが悪い?)
• ネットワーク
(帯域が足りない?遅延が多い?)
• ハードウェア
(性能不足?)
実際に社内で遭遇した事例を
紹介します
13
Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved.Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved.
「一部だけ」リクエストを
捌ききれない
Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved.
発生状況
一部のKafka Broker Clusterだけ
Request Handler がリクエストを捌ききれない
Kafka Broker (一部省略)
R/W
Produce Request
Consume Request
Request Handler
File
System
Producer / Consumerからの
リクエストを基に実際にFile Systemに
読み書きするスレッド
15
(スレッドのアイドル率が低い)
Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved.
発生状況
Kafka Broker (一部省略)
R/W
Produce Request
Consume Request
Request Handler
File
System
16
一部のKafka Broker Clusterだけ
Request Handler がリクエストを捌ききれない
(スレッドのアイドル率が低い)
多くのクラスタでのアイドル率は90%以上
アイドル率30%を割るクラスタが発生
Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved.
原因調査
各種設定の調査
負荷の高いクラスタと低いクラスタの設定の違いを確認
• Kafka Broker
• JVM
• OS
• ネットワーク
→パフォーマンスに影響する設定の違いはない
Brokerの動作ログを確認した結果、以下の動作の違いを発見
1回のリクエストで
12メッセージ受信
通常のクラスタ 問題のクラスタ
17
リクエスト1回で受け取るメッセージの個数が違う
1回のリクエストで
1メッセージ受信
Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved.
Kafkaのバッチングについて
18
Kafkaには1回の送信に複数のメッセージをまとめて送信する
バッチング機能がある
→ 指定メッセージ数貯まるまで or 一定時間経過まで
メッセージを溜め込む
バッチングの大きさ(BatchSize)を大きく
→処理効率高、遅延は増大
今回はKafka ProducerのBatchSize設定も全て一緒
Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved.
Kafkaのバッチングについて
19
Kafkaには1回の送信に複数のメッセージをまとめて送信する
バッチング機能がある
→ 指定メッセージ数貯まるまで or 一定時間経過まで
メッセージを溜め込む
バッチングの大きさ(BatchSize)を大きく
→処理効率高、遅延は増大
時間内にメッセージが殆ど溜まっていない!!!
今回はKafka ProducerのBatchSize設定も全て一緒
Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved.
答えはProducerに
1台あたりの秒間メッセージ数が少ないのにも関わらずPartition数が多い
Producer (複数台) Broker
…
…
Partitioner
MessageMessage
Batch
Producerはラウンドロビンで全ての
Partitionにメッセージを振り分け
指定時間内に
溜まるBatchSizeが1
Request Handlerが
高負荷に
20
並列処理するための単位
Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved.
パラメータ調整/構成変更で対処?
Producerの数を減らせば良い?
• ビジネス要件で不可能
• サービスのサーバ群が高可用性とパフォーマンスの両立を求めており、
Producerの台数が非常に多い。
• 1台あたりの流量は少なく、台数が多い構成を変更できない
Partitionを減らせばいい?
• Kafkaの機能制約
• Partitionを減らす操作はKafkaでは簡単にできない
タイムアウトを長くすればいい?
• ビジネス要件で不可能
• 遅延が長くなり、転送のリアルタイム性が犠牲になる
21
Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved.
送信先partitionを固定 (keyed message)
Producer
Broker
…
…
Partitioner
Keyed Message
Keyed Message
Batch
ProducerごとにKeyを設定
秒間メッセージ数が少ないのに多くのPartitionに分散していることが問題
同一のProducerから送信するメッセージは全て同じPartitionに振り分けられるように
同じKeyを持つデータは
全て同じPartitionに振り分けられる
一定時間内に溜まるBatchSizeを大きくできる! → 無事解決
22
メッセージにKeyを付与できる
Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved.
まとめ
分散メッセージングシステムは
パフォーマンスに影響する要素が多く、
原因特定や切り分けの難易度が高い
• 動作ログと設定を眺めながら、
「この設定でこんな動きになるっけ?」
という違和感を嗅ぎ分けることが解決への近道
• メッセージの流量や性質に起因するパフォーマンス低下も
存在するため、日頃から設定や構成だけではなく
「どのようにデータを流しているか」も確認しておくことも重要
23

Weitere ähnliche Inhalte

Was ist angesagt?

SolrとElasticsearchを比べてみよう
SolrとElasticsearchを比べてみようSolrとElasticsearchを比べてみよう
SolrとElasticsearchを比べてみようShinsuke Sugaya
 
分散システムについて語らせてくれ
分散システムについて語らせてくれ分散システムについて語らせてくれ
分散システムについて語らせてくれKumazaki Hiroki
 
Apache Kafkaって本当に大丈夫?~故障検証のオーバービューと興味深い挙動の紹介~
Apache Kafkaって本当に大丈夫?~故障検証のオーバービューと興味深い挙動の紹介~Apache Kafkaって本当に大丈夫?~故障検証のオーバービューと興味深い挙動の紹介~
Apache Kafkaって本当に大丈夫?~故障検証のオーバービューと興味深い挙動の紹介~NTT DATA OSS Professional Services
 
PostgreSQLモニタリングの基本とNTTデータが追加したモニタリング新機能(Open Source Conference 2021 Online F...
PostgreSQLモニタリングの基本とNTTデータが追加したモニタリング新機能(Open Source Conference 2021 Online F...PostgreSQLモニタリングの基本とNTTデータが追加したモニタリング新機能(Open Source Conference 2021 Online F...
PostgreSQLモニタリングの基本とNTTデータが追加したモニタリング新機能(Open Source Conference 2021 Online F...NTT DATA Technology & Innovation
 
Apache Hadoop YARNとマルチテナントにおけるリソース管理
Apache Hadoop YARNとマルチテナントにおけるリソース管理Apache Hadoop YARNとマルチテナントにおけるリソース管理
Apache Hadoop YARNとマルチテナントにおけるリソース管理Cloudera Japan
 
アーキテクチャから理解するPostgreSQLのレプリケーション
アーキテクチャから理解するPostgreSQLのレプリケーションアーキテクチャから理解するPostgreSQLのレプリケーション
アーキテクチャから理解するPostgreSQLのレプリケーションMasahiko Sawada
 
トランザクションの設計と進化
トランザクションの設計と進化トランザクションの設計と進化
トランザクションの設計と進化Kumazaki Hiroki
 
AWSで作る分析基盤
AWSで作る分析基盤AWSで作る分析基盤
AWSで作る分析基盤Yu Otsubo
 
ストリーム処理を支えるキューイングシステムの選び方
ストリーム処理を支えるキューイングシステムの選び方ストリーム処理を支えるキューイングシステムの選び方
ストリーム処理を支えるキューイングシステムの選び方Yoshiyasu SAEKI
 
Micrometer/Prometheusによる大規模システムモニタリング #jsug #sf_26
Micrometer/Prometheusによる大規模システムモニタリング #jsug #sf_26Micrometer/Prometheusによる大規模システムモニタリング #jsug #sf_26
Micrometer/Prometheusによる大規模システムモニタリング #jsug #sf_26Yahoo!デベロッパーネットワーク
 
Apache Avro vs Protocol Buffers
Apache Avro vs Protocol BuffersApache Avro vs Protocol Buffers
Apache Avro vs Protocol BuffersSeiya Mizuno
 
Kubernetesを使う上で抑えておくべきAWSの基礎概念
Kubernetesを使う上で抑えておくべきAWSの基礎概念Kubernetesを使う上で抑えておくべきAWSの基礎概念
Kubernetesを使う上で抑えておくべきAWSの基礎概念Shinya Mori (@mosuke5)
 
[Aurora事例祭り]Amazon Aurora を使いこなすためのベストプラクティス
[Aurora事例祭り]Amazon Aurora を使いこなすためのベストプラクティス[Aurora事例祭り]Amazon Aurora を使いこなすためのベストプラクティス
[Aurora事例祭り]Amazon Aurora を使いこなすためのベストプラクティスAmazon Web Services Japan
 
Apache Kafka & Kafka Connectを に使ったデータ連携パターン(改めETLの実装)
Apache Kafka & Kafka Connectを に使ったデータ連携パターン(改めETLの実装)Apache Kafka & Kafka Connectを に使ったデータ連携パターン(改めETLの実装)
Apache Kafka & Kafka Connectを に使ったデータ連携パターン(改めETLの実装)Keigo Suda
 
9/14にリリースされたばかりの新LTS版Java 17、ここ3年間のJavaの変化を知ろう!(Open Source Conference 2021 O...
9/14にリリースされたばかりの新LTS版Java 17、ここ3年間のJavaの変化を知ろう!(Open Source Conference 2021 O...9/14にリリースされたばかりの新LTS版Java 17、ここ3年間のJavaの変化を知ろう!(Open Source Conference 2021 O...
9/14にリリースされたばかりの新LTS版Java 17、ここ3年間のJavaの変化を知ろう!(Open Source Conference 2021 O...NTT DATA Technology & Innovation
 

Was ist angesagt? (20)

SolrとElasticsearchを比べてみよう
SolrとElasticsearchを比べてみようSolrとElasticsearchを比べてみよう
SolrとElasticsearchを比べてみよう
 
分散システムについて語らせてくれ
分散システムについて語らせてくれ分散システムについて語らせてくれ
分散システムについて語らせてくれ
 
Apache Kafkaって本当に大丈夫?~故障検証のオーバービューと興味深い挙動の紹介~
Apache Kafkaって本当に大丈夫?~故障検証のオーバービューと興味深い挙動の紹介~Apache Kafkaって本当に大丈夫?~故障検証のオーバービューと興味深い挙動の紹介~
Apache Kafkaって本当に大丈夫?~故障検証のオーバービューと興味深い挙動の紹介~
 
PostgreSQLモニタリングの基本とNTTデータが追加したモニタリング新機能(Open Source Conference 2021 Online F...
PostgreSQLモニタリングの基本とNTTデータが追加したモニタリング新機能(Open Source Conference 2021 Online F...PostgreSQLモニタリングの基本とNTTデータが追加したモニタリング新機能(Open Source Conference 2021 Online F...
PostgreSQLモニタリングの基本とNTTデータが追加したモニタリング新機能(Open Source Conference 2021 Online F...
 
Serverless時代のJavaについて
Serverless時代のJavaについてServerless時代のJavaについて
Serverless時代のJavaについて
 
Apache Hadoop YARNとマルチテナントにおけるリソース管理
Apache Hadoop YARNとマルチテナントにおけるリソース管理Apache Hadoop YARNとマルチテナントにおけるリソース管理
Apache Hadoop YARNとマルチテナントにおけるリソース管理
 
アーキテクチャから理解するPostgreSQLのレプリケーション
アーキテクチャから理解するPostgreSQLのレプリケーションアーキテクチャから理解するPostgreSQLのレプリケーション
アーキテクチャから理解するPostgreSQLのレプリケーション
 
Docker Compose 徹底解説
Docker Compose 徹底解説Docker Compose 徹底解説
Docker Compose 徹底解説
 
トランザクションの設計と進化
トランザクションの設計と進化トランザクションの設計と進化
トランザクションの設計と進化
 
At least onceってぶっちゃけ問題の先送りだったよね #kafkajp
At least onceってぶっちゃけ問題の先送りだったよね #kafkajpAt least onceってぶっちゃけ問題の先送りだったよね #kafkajp
At least onceってぶっちゃけ問題の先送りだったよね #kafkajp
 
AWSで作る分析基盤
AWSで作る分析基盤AWSで作る分析基盤
AWSで作る分析基盤
 
これがCassandra
これがCassandraこれがCassandra
これがCassandra
 
ストリーム処理を支えるキューイングシステムの選び方
ストリーム処理を支えるキューイングシステムの選び方ストリーム処理を支えるキューイングシステムの選び方
ストリーム処理を支えるキューイングシステムの選び方
 
オンプレML基盤on Kubernetes パネルディスカッション
オンプレML基盤on Kubernetes パネルディスカッションオンプレML基盤on Kubernetes パネルディスカッション
オンプレML基盤on Kubernetes パネルディスカッション
 
Micrometer/Prometheusによる大規模システムモニタリング #jsug #sf_26
Micrometer/Prometheusによる大規模システムモニタリング #jsug #sf_26Micrometer/Prometheusによる大規模システムモニタリング #jsug #sf_26
Micrometer/Prometheusによる大規模システムモニタリング #jsug #sf_26
 
Apache Avro vs Protocol Buffers
Apache Avro vs Protocol BuffersApache Avro vs Protocol Buffers
Apache Avro vs Protocol Buffers
 
Kubernetesを使う上で抑えておくべきAWSの基礎概念
Kubernetesを使う上で抑えておくべきAWSの基礎概念Kubernetesを使う上で抑えておくべきAWSの基礎概念
Kubernetesを使う上で抑えておくべきAWSの基礎概念
 
[Aurora事例祭り]Amazon Aurora を使いこなすためのベストプラクティス
[Aurora事例祭り]Amazon Aurora を使いこなすためのベストプラクティス[Aurora事例祭り]Amazon Aurora を使いこなすためのベストプラクティス
[Aurora事例祭り]Amazon Aurora を使いこなすためのベストプラクティス
 
Apache Kafka & Kafka Connectを に使ったデータ連携パターン(改めETLの実装)
Apache Kafka & Kafka Connectを に使ったデータ連携パターン(改めETLの実装)Apache Kafka & Kafka Connectを に使ったデータ連携パターン(改めETLの実装)
Apache Kafka & Kafka Connectを に使ったデータ連携パターン(改めETLの実装)
 
9/14にリリースされたばかりの新LTS版Java 17、ここ3年間のJavaの変化を知ろう!(Open Source Conference 2021 O...
9/14にリリースされたばかりの新LTS版Java 17、ここ3年間のJavaの変化を知ろう!(Open Source Conference 2021 O...9/14にリリースされたばかりの新LTS版Java 17、ここ3年間のJavaの変化を知ろう!(Open Source Conference 2021 O...
9/14にリリースされたばかりの新LTS版Java 17、ここ3年間のJavaの変化を知ろう!(Open Source Conference 2021 O...
 

Ähnlich wie Apache Kafkaによるログ転送とパフォーマンスチューニング - Bonfire Backend #2 -

Apache Pulsarの近況 & meetup 北京の参加報告 @PulsarMeetupJapan_20190904
Apache Pulsarの近況 & meetup 北京の参加報告 @PulsarMeetupJapan_20190904Apache Pulsarの近況 & meetup 北京の参加報告 @PulsarMeetupJapan_20190904
Apache Pulsarの近況 & meetup 北京の参加報告 @PulsarMeetupJapan_20190904Nozomi Kurihara
 
Yahoo! JAPANのデータパイプラインで起きた障害とチューニング - Apache Kafka Meetup Japan #5 -
Yahoo! JAPANのデータパイプラインで起きた障害とチューニング - Apache Kafka Meetup Japan #5 -Yahoo! JAPANのデータパイプラインで起きた障害とチューニング - Apache Kafka Meetup Japan #5 -
Yahoo! JAPANのデータパイプラインで起きた障害とチューニング - Apache Kafka Meetup Japan #5 -Yahoo!デベロッパーネットワーク
 
MBAAで覚えるDBREの大事なおしごと
MBAAで覚えるDBREの大事なおしごとMBAAで覚えるDBREの大事なおしごと
MBAAで覚えるDBREの大事なおしごとInsight Technology, Inc.
 
Kafka vs Pulsar @KafkaMeetup_20180316
Kafka vs Pulsar @KafkaMeetup_20180316Kafka vs Pulsar @KafkaMeetup_20180316
Kafka vs Pulsar @KafkaMeetup_20180316Nozomi Kurihara
 
Introduction to JIT Compiler in JVM
Introduction to JIT Compiler in JVMIntroduction to JIT Compiler in JVM
Introduction to JIT Compiler in JVMKoichi Sakata
 
20130313 OSCA Hadoopセミナー
20130313 OSCA Hadoopセミナー20130313 OSCA Hadoopセミナー
20130313 OSCA HadoopセミナーIchiro Fukuda
 
ヤフーのプライベートクラウドとクラウドエンジニアの業務について
ヤフーのプライベートクラウドとクラウドエンジニアの業務についてヤフーのプライベートクラウドとクラウドエンジニアの業務について
ヤフーのプライベートクラウドとクラウドエンジニアの業務についてYahoo!デベロッパーネットワーク
 
スキーマレスカラムナフォーマット「Yosegi」で実現する スキーマの柔軟性と処理性能を両立したログ収集システム / Hadoop / Spark Con...
スキーマレスカラムナフォーマット「Yosegi」で実現する スキーマの柔軟性と処理性能を両立したログ収集システム / Hadoop / Spark Con...スキーマレスカラムナフォーマット「Yosegi」で実現する スキーマの柔軟性と処理性能を両立したログ収集システム / Hadoop / Spark Con...
スキーマレスカラムナフォーマット「Yosegi」で実現する スキーマの柔軟性と処理性能を両立したログ収集システム / Hadoop / Spark Con...Yahoo!デベロッパーネットワーク
 
(Tech DeepDive #1) Java Flight Recorder を活用した問題解決
(Tech DeepDive #1) Java Flight Recorder を活用した問題解決(Tech DeepDive #1) Java Flight Recorder を活用した問題解決
(Tech DeepDive #1) Java Flight Recorder を活用した問題解決オラクルエンジニア通信
 
Cedec2015 ゲームサーバー基盤の新しい選択肢
Cedec2015 ゲームサーバー基盤の新しい選択肢Cedec2015 ゲームサーバー基盤の新しい選択肢
Cedec2015 ゲームサーバー基盤の新しい選択肢Maho Takara
 
Participation report of data stax accelerate 2019
Participation report of data stax accelerate 2019Participation report of data stax accelerate 2019
Participation report of data stax accelerate 2019MKT-INTHEFOREST
 
FPGAによる大規模データ処理の高速化
FPGAによる大規模データ処理の高速化FPGAによる大規模データ処理の高速化
FPGAによる大規模データ処理の高速化Kazunori Sato
 

Ähnlich wie Apache Kafkaによるログ転送とパフォーマンスチューニング - Bonfire Backend #2 - (20)

YJTC18 A-1 大規模サーバの戦略
YJTC18 A-1 大規模サーバの戦略YJTC18 A-1 大規模サーバの戦略
YJTC18 A-1 大規模サーバの戦略
 
ヤフーを支えるデータセンタネットワーク
ヤフーを支えるデータセンタネットワークヤフーを支えるデータセンタネットワーク
ヤフーを支えるデータセンタネットワーク
 
Apache Pulsarの近況 & meetup 北京の参加報告 @PulsarMeetupJapan_20190904
Apache Pulsarの近況 & meetup 北京の参加報告 @PulsarMeetupJapan_20190904Apache Pulsarの近況 & meetup 北京の参加報告 @PulsarMeetupJapan_20190904
Apache Pulsarの近況 & meetup 北京の参加報告 @PulsarMeetupJapan_20190904
 
YJTC18 A-1 データセンタネットワークの取り組み
YJTC18 A-1 データセンタネットワークの取り組みYJTC18 A-1 データセンタネットワークの取り組み
YJTC18 A-1 データセンタネットワークの取り組み
 
Yahoo! JAPANのデータパイプラインで起きた障害とチューニング - Apache Kafka Meetup Japan #5 -
Yahoo! JAPANのデータパイプラインで起きた障害とチューニング - Apache Kafka Meetup Japan #5 -Yahoo! JAPANのデータパイプラインで起きた障害とチューニング - Apache Kafka Meetup Japan #5 -
Yahoo! JAPANのデータパイプラインで起きた障害とチューニング - Apache Kafka Meetup Japan #5 -
 
現場のインフラエンジニアから見たヤフー #ヤフー名古屋
現場のインフラエンジニアから見たヤフー #ヤフー名古屋現場のインフラエンジニアから見たヤフー #ヤフー名古屋
現場のインフラエンジニアから見たヤフー #ヤフー名古屋
 
MBAAで覚えるDBREの大事なおしごと
MBAAで覚えるDBREの大事なおしごとMBAAで覚えるDBREの大事なおしごと
MBAAで覚えるDBREの大事なおしごと
 
Kafka vs Pulsar @KafkaMeetup_20180316
Kafka vs Pulsar @KafkaMeetup_20180316Kafka vs Pulsar @KafkaMeetup_20180316
Kafka vs Pulsar @KafkaMeetup_20180316
 
Kubernetes Cluster Adminやってました #con_rider
Kubernetes Cluster Adminやってました #con_riderKubernetes Cluster Adminやってました #con_rider
Kubernetes Cluster Adminやってました #con_rider
 
Java Clientで入門する Apache Kafka #jjug_ccc #ccc_e2
Java Clientで入門する Apache Kafka #jjug_ccc #ccc_e2Java Clientで入門する Apache Kafka #jjug_ccc #ccc_e2
Java Clientで入門する Apache Kafka #jjug_ccc #ccc_e2
 
Introduction to JIT Compiler in JVM
Introduction to JIT Compiler in JVMIntroduction to JIT Compiler in JVM
Introduction to JIT Compiler in JVM
 
20130313 OSCA Hadoopセミナー
20130313 OSCA Hadoopセミナー20130313 OSCA Hadoopセミナー
20130313 OSCA Hadoopセミナー
 
Riakを利用したパーソナライズ事例
Riakを利用したパーソナライズ事例Riakを利用したパーソナライズ事例
Riakを利用したパーソナライズ事例
 
ヤフーのプライベートクラウドとクラウドエンジニアの業務について
ヤフーのプライベートクラウドとクラウドエンジニアの業務についてヤフーのプライベートクラウドとクラウドエンジニアの業務について
ヤフーのプライベートクラウドとクラウドエンジニアの業務について
 
スキーマレスカラムナフォーマット「Yosegi」で実現する スキーマの柔軟性と処理性能を両立したログ収集システム / Hadoop / Spark Con...
スキーマレスカラムナフォーマット「Yosegi」で実現する スキーマの柔軟性と処理性能を両立したログ収集システム / Hadoop / Spark Con...スキーマレスカラムナフォーマット「Yosegi」で実現する スキーマの柔軟性と処理性能を両立したログ収集システム / Hadoop / Spark Con...
スキーマレスカラムナフォーマット「Yosegi」で実現する スキーマの柔軟性と処理性能を両立したログ収集システム / Hadoop / Spark Con...
 
ヤフーにおけるHadoop Operations #tdtech
ヤフーにおけるHadoop Operations #tdtechヤフーにおけるHadoop Operations #tdtech
ヤフーにおけるHadoop Operations #tdtech
 
(Tech DeepDive #1) Java Flight Recorder を活用した問題解決
(Tech DeepDive #1) Java Flight Recorder を活用した問題解決(Tech DeepDive #1) Java Flight Recorder を活用した問題解決
(Tech DeepDive #1) Java Flight Recorder を活用した問題解決
 
Cedec2015 ゲームサーバー基盤の新しい選択肢
Cedec2015 ゲームサーバー基盤の新しい選択肢Cedec2015 ゲームサーバー基盤の新しい選択肢
Cedec2015 ゲームサーバー基盤の新しい選択肢
 
Participation report of data stax accelerate 2019
Participation report of data stax accelerate 2019Participation report of data stax accelerate 2019
Participation report of data stax accelerate 2019
 
FPGAによる大規模データ処理の高速化
FPGAによる大規模データ処理の高速化FPGAによる大規模データ処理の高速化
FPGAによる大規模データ処理の高速化
 

Mehr von Yahoo!デベロッパーネットワーク

ヤフーでは開発迅速性と品質のバランスをどう取ってるか
ヤフーでは開発迅速性と品質のバランスをどう取ってるかヤフーでは開発迅速性と品質のバランスをどう取ってるか
ヤフーでは開発迅速性と品質のバランスをどう取ってるかYahoo!デベロッパーネットワーク
 
データの価値を最大化させるためのデザイン~データビジュアライゼーションの方法~ #devsumi 17-E-2
データの価値を最大化させるためのデザイン~データビジュアライゼーションの方法~ #devsumi 17-E-2データの価値を最大化させるためのデザイン~データビジュアライゼーションの方法~ #devsumi 17-E-2
データの価値を最大化させるためのデザイン~データビジュアライゼーションの方法~ #devsumi 17-E-2Yahoo!デベロッパーネットワーク
 
ヤフーを支えるセキュリティ ~サイバー攻撃を防ぐエンジニアの仕事とは~ #yjtc
ヤフーを支えるセキュリティ ~サイバー攻撃を防ぐエンジニアの仕事とは~ #yjtcヤフーを支えるセキュリティ ~サイバー攻撃を防ぐエンジニアの仕事とは~ #yjtc
ヤフーを支えるセキュリティ ~サイバー攻撃を防ぐエンジニアの仕事とは~ #yjtcYahoo!デベロッパーネットワーク
 
Yahoo! JAPANのIaaSを支えるKubernetesクラスタ、アップデート自動化への挑戦 #yjtc
Yahoo! JAPANのIaaSを支えるKubernetesクラスタ、アップデート自動化への挑戦 #yjtcYahoo! JAPANのIaaSを支えるKubernetesクラスタ、アップデート自動化への挑戦 #yjtc
Yahoo! JAPANのIaaSを支えるKubernetesクラスタ、アップデート自動化への挑戦 #yjtcYahoo!デベロッパーネットワーク
 
ヤフーのAIプラットフォーム紹介 ~AIテックカンパニーを支えるデータ基盤~ #yjtc
ヤフーのAIプラットフォーム紹介 ~AIテックカンパニーを支えるデータ基盤~ #yjtcヤフーのAIプラットフォーム紹介 ~AIテックカンパニーを支えるデータ基盤~ #yjtc
ヤフーのAIプラットフォーム紹介 ~AIテックカンパニーを支えるデータ基盤~ #yjtcYahoo!デベロッパーネットワーク
 
新技術を使った次世代の商品の見せ方 ~ヤフオク!のマルチビュー機能~ #yjtc
新技術を使った次世代の商品の見せ方 ~ヤフオク!のマルチビュー機能~ #yjtc新技術を使った次世代の商品の見せ方 ~ヤフオク!のマルチビュー機能~ #yjtc
新技術を使った次世代の商品の見せ方 ~ヤフオク!のマルチビュー機能~ #yjtcYahoo!デベロッパーネットワーク
 
PC版Yahoo!メールリニューアル ~サービスのUI/UX統合と改善プロセス~ #yjtc
PC版Yahoo!メールリニューアル ~サービスのUI/UX統合と改善プロセス~ #yjtcPC版Yahoo!メールリニューアル ~サービスのUI/UX統合と改善プロセス~ #yjtc
PC版Yahoo!メールリニューアル ~サービスのUI/UX統合と改善プロセス~ #yjtcYahoo!デベロッパーネットワーク
 
モブデザインによる多職種チームのコミュニケーション改善 #yjtc
モブデザインによる多職種チームのコミュニケーション改善 #yjtcモブデザインによる多職種チームのコミュニケーション改善 #yjtc
モブデザインによる多職種チームのコミュニケーション改善 #yjtcYahoo!デベロッパーネットワーク
 
ユーザーの地域を考慮した検索入力補助機能の改善の試み #yjtc
ユーザーの地域を考慮した検索入力補助機能の改善の試み #yjtcユーザーの地域を考慮した検索入力補助機能の改善の試み #yjtc
ユーザーの地域を考慮した検索入力補助機能の改善の試み #yjtcYahoo!デベロッパーネットワーク
 

Mehr von Yahoo!デベロッパーネットワーク (20)

ゼロから始める転移学習
ゼロから始める転移学習ゼロから始める転移学習
ゼロから始める転移学習
 
継続的なモデルモニタリングを実現するKubernetes Operator
継続的なモデルモニタリングを実現するKubernetes Operator継続的なモデルモニタリングを実現するKubernetes Operator
継続的なモデルモニタリングを実現するKubernetes Operator
 
ヤフーでは開発迅速性と品質のバランスをどう取ってるか
ヤフーでは開発迅速性と品質のバランスをどう取ってるかヤフーでは開発迅速性と品質のバランスをどう取ってるか
ヤフーでは開発迅速性と品質のバランスをどう取ってるか
 
LakeTahoe
LakeTahoeLakeTahoe
LakeTahoe
 
オンプレML基盤on Kubernetes 〜Yahoo! JAPAN AIPF〜
オンプレML基盤on Kubernetes 〜Yahoo! JAPAN AIPF〜オンプレML基盤on Kubernetes 〜Yahoo! JAPAN AIPF〜
オンプレML基盤on Kubernetes 〜Yahoo! JAPAN AIPF〜
 
Persistent-memory-native Database High-availability Feature
Persistent-memory-native Database High-availability FeaturePersistent-memory-native Database High-availability Feature
Persistent-memory-native Database High-availability Feature
 
データの価値を最大化させるためのデザイン~データビジュアライゼーションの方法~ #devsumi 17-E-2
データの価値を最大化させるためのデザイン~データビジュアライゼーションの方法~ #devsumi 17-E-2データの価値を最大化させるためのデザイン~データビジュアライゼーションの方法~ #devsumi 17-E-2
データの価値を最大化させるためのデザイン~データビジュアライゼーションの方法~ #devsumi 17-E-2
 
eコマースと実店舗の相互利益を目指したデザイン #yjtc
eコマースと実店舗の相互利益を目指したデザイン #yjtceコマースと実店舗の相互利益を目指したデザイン #yjtc
eコマースと実店舗の相互利益を目指したデザイン #yjtc
 
ヤフーを支えるセキュリティ ~サイバー攻撃を防ぐエンジニアの仕事とは~ #yjtc
ヤフーを支えるセキュリティ ~サイバー攻撃を防ぐエンジニアの仕事とは~ #yjtcヤフーを支えるセキュリティ ~サイバー攻撃を防ぐエンジニアの仕事とは~ #yjtc
ヤフーを支えるセキュリティ ~サイバー攻撃を防ぐエンジニアの仕事とは~ #yjtc
 
Yahoo! JAPANのIaaSを支えるKubernetesクラスタ、アップデート自動化への挑戦 #yjtc
Yahoo! JAPANのIaaSを支えるKubernetesクラスタ、アップデート自動化への挑戦 #yjtcYahoo! JAPANのIaaSを支えるKubernetesクラスタ、アップデート自動化への挑戦 #yjtc
Yahoo! JAPANのIaaSを支えるKubernetesクラスタ、アップデート自動化への挑戦 #yjtc
 
ビッグデータから人々のムードを捉える #yjtc
ビッグデータから人々のムードを捉える #yjtcビッグデータから人々のムードを捉える #yjtc
ビッグデータから人々のムードを捉える #yjtc
 
サイエンス領域におけるMLOpsの取り組み #yjtc
サイエンス領域におけるMLOpsの取り組み #yjtcサイエンス領域におけるMLOpsの取り組み #yjtc
サイエンス領域におけるMLOpsの取り組み #yjtc
 
ヤフーのAIプラットフォーム紹介 ~AIテックカンパニーを支えるデータ基盤~ #yjtc
ヤフーのAIプラットフォーム紹介 ~AIテックカンパニーを支えるデータ基盤~ #yjtcヤフーのAIプラットフォーム紹介 ~AIテックカンパニーを支えるデータ基盤~ #yjtc
ヤフーのAIプラットフォーム紹介 ~AIテックカンパニーを支えるデータ基盤~ #yjtc
 
Yahoo! JAPAN Tech Conference 2022 Day2 Keynote #yjtc
Yahoo! JAPAN Tech Conference 2022 Day2 Keynote #yjtcYahoo! JAPAN Tech Conference 2022 Day2 Keynote #yjtc
Yahoo! JAPAN Tech Conference 2022 Day2 Keynote #yjtc
 
新技術を使った次世代の商品の見せ方 ~ヤフオク!のマルチビュー機能~ #yjtc
新技術を使った次世代の商品の見せ方 ~ヤフオク!のマルチビュー機能~ #yjtc新技術を使った次世代の商品の見せ方 ~ヤフオク!のマルチビュー機能~ #yjtc
新技術を使った次世代の商品の見せ方 ~ヤフオク!のマルチビュー機能~ #yjtc
 
PC版Yahoo!メールリニューアル ~サービスのUI/UX統合と改善プロセス~ #yjtc
PC版Yahoo!メールリニューアル ~サービスのUI/UX統合と改善プロセス~ #yjtcPC版Yahoo!メールリニューアル ~サービスのUI/UX統合と改善プロセス~ #yjtc
PC版Yahoo!メールリニューアル ~サービスのUI/UX統合と改善プロセス~ #yjtc
 
モブデザインによる多職種チームのコミュニケーション改善 #yjtc
モブデザインによる多職種チームのコミュニケーション改善 #yjtcモブデザインによる多職種チームのコミュニケーション改善 #yjtc
モブデザインによる多職種チームのコミュニケーション改善 #yjtc
 
「新しいおうち探し」のためのAIアシスト検索 #yjtc
「新しいおうち探し」のためのAIアシスト検索 #yjtc「新しいおうち探し」のためのAIアシスト検索 #yjtc
「新しいおうち探し」のためのAIアシスト検索 #yjtc
 
ユーザーの地域を考慮した検索入力補助機能の改善の試み #yjtc
ユーザーの地域を考慮した検索入力補助機能の改善の試み #yjtcユーザーの地域を考慮した検索入力補助機能の改善の試み #yjtc
ユーザーの地域を考慮した検索入力補助機能の改善の試み #yjtc
 
The potential of Kubernetes as more than just an infrastructure to deploy
The potential of Kubernetes as more than just an infrastructure to deployThe potential of Kubernetes as more than just an infrastructure to deploy
The potential of Kubernetes as more than just an infrastructure to deploy
 

Kürzlich hochgeladen

CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?akihisamiyanaga1
 
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdfクラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdfFumieNakayama
 
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NTT DATA Technology & Innovation
 
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)Hiroshi Tomioka
 
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdfAWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdfFumieNakayama
 
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineerYuki Kikuchi
 
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)UEHARA, Tetsutaro
 
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...博三 太田
 

Kürzlich hochgeladen (8)

CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
 
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdfクラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
 
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
 
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
 
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdfAWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
 
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
 
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
 
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
 

Apache Kafkaによるログ転送とパフォーマンスチューニング - Bonfire Backend #2 -

  • 1. Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved. 2018年12月4日 ヤフー株式会社 データ&サイエンスソリューション統括本部 データプラットフォーム本部デリバリー部パイプライン 橘 拓馬 Apache Kafkaによるログ転送と パフォーマンスチューニング
  • 2. Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved. 自己紹介 橘 拓馬 2018年度新卒 • 8月からパイプラインチームに 配属され、Apache Kafkaを扱い始める IoT周りが好き 2
  • 3. Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved. 目次 3 1. はじめに 2. What is Kafka 3. パフォーマンス改善の実例 4. まとめ
  • 4. Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved. はじめに ヤフーは多種多様なサービスを抱え、 多数のユーザ様に利用していただいている デイリーユニークブラウザ数(FY17) 平均9053万ブラウザ アプリ合算デイリーアクティブユーザ数(FY17) 平均4249万人 より良いサービスを提供するために、 各サービスから生み出される大量のデータを横断的に活用 ※各種指標はhttps://about.yahoo.co.jp/ir/jp/archives/data/より引用 運営サービス数 100超 4
  • 5. Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved. より良いサービスを提供するために、 各サービスから生み出される大量のデータを横断的に活用 はじめに ヤフーは多種多様なサービスを抱え、 多数のユーザ様に利用していただいている デイリーユニークブラウザ数(FY17) 平均9053万ブラウザ アプリ合算デイリーアクティブユーザ数(FY17) 平均4249万人 ※各種指標はhttps://about.yahoo.co.jp/ir/jp/archives/data/より引用 運営サービス数 100超 5 例:複数のサービスからユーザのWeb行動ログを収集、 最もユーザが興味の持ちそうな関連コンテンツをレコメンド サービスA サービスB サービスC あなたへの オススメ … 行動を分析
  • 6. Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved. 大量のデータ活用の課題 誰もが横断的に活用するためには、各サービス/サーバに 保存されている大量のログデータを 1つの分析基盤に集約するのが効率的… 大量のサーバとデータたち データをサーバから 取得するだけで超大変… 6
  • 7. Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved. 大量のデータ活用の課題 各サーバに散らばっているデータを連携したり、 分析基盤に転送するためにメッセージングシステムが必要 大量のサーバとデータたち 分析基盤メッセージングシステム サーバ間の データ転送を担う 7
  • 8. Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved. 大量のデータ活用の課題 パイプラインチームでは、Apache Kafkaを メッセージングシステムとして採用 大量のサーバとデータたち 分析基盤Apache Kafka 8
  • 9. Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved. 予備知識 pub/sub型メッセージングシステム 複数の送信者が送信したデータを中継者(Broker)が 全て受け取り、データを利用したい複数の受信者が中継者から 購読することで多対多のメッセージングを実現するシステム Publisher SubscriberBroker 9
  • 10. Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved. 予備知識 pub/sub型メッセージングシステム Brokerという中継者を置くことでスケールアウトに伴う煩雑さを 撤廃、複数のサーバ間でデータを簡単に利活用できるように 最終的な受け手を気にすることなく 送信(Publish) 利用したい項目のデータのみ 購読(Subscribe) 10 Publisher SubscriberBroker
  • 11. Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved. What is Kafka① : LinkedInで開発された pub/sub型分散メッセージングシステム Producer Consumer 最終的な受け手を気にすることなく 送信(Produce) →受信者の増減による設定変更は無 利用したい項目のデータのみ 購読(Consume) →利用データの変更は項目の設定のみ Apache Kafka (Broker Cluster) 11
  • 12. Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved. What is Kafka② • Brokerは複数のサーバを使用して分散システムとして稼働させることが可能 • メッセージの処理単位を複数に分割できる仕組みを持つため Consumer側のアプリケーションも分散処理が可能 • 可用性・スケールアウト性を確保 • メッセージを自分のDiskへ書き込みつつ 他サーバへもレプリケーションすることで、データの永続性を担保 • 何らかの理由でConsumerの処理が一時停止してもリトライが可能 • Apache Foundationが提供するデータ分析エンジンとの親和性が高い • Apache Hadoop, Apache Spark, Apache Storm, Apache Flink etc... 12 Kafkaの特徴
  • 13. Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved. Kafkaとパフォーマンス 分散メッセージングシステムは パフォーマンスに影響を与える要素が非常に広範囲 →思ったような性能が出ない場合、確認箇所が多い • アーキテクチャそのもの (Producer-Broker-Consumerの繋ぎ方が悪い?) • Kafka実装 (コードのどこかの処理が重い?) • 各種設定 (要件と相性の悪い設定が記述されている?) • JVM (JVMに負荷がかかる設定になっている?) • OS(特にI/O周り) (ファイルシステムが悪い?) • ネットワーク (帯域が足りない?遅延が多い?) • ハードウェア (性能不足?) 実際に社内で遭遇した事例を 紹介します 13
  • 14. Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved.Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved. 「一部だけ」リクエストを 捌ききれない
  • 15. Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved. 発生状況 一部のKafka Broker Clusterだけ Request Handler がリクエストを捌ききれない Kafka Broker (一部省略) R/W Produce Request Consume Request Request Handler File System Producer / Consumerからの リクエストを基に実際にFile Systemに 読み書きするスレッド 15 (スレッドのアイドル率が低い)
  • 16. Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved. 発生状況 Kafka Broker (一部省略) R/W Produce Request Consume Request Request Handler File System 16 一部のKafka Broker Clusterだけ Request Handler がリクエストを捌ききれない (スレッドのアイドル率が低い) 多くのクラスタでのアイドル率は90%以上 アイドル率30%を割るクラスタが発生
  • 17. Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved. 原因調査 各種設定の調査 負荷の高いクラスタと低いクラスタの設定の違いを確認 • Kafka Broker • JVM • OS • ネットワーク →パフォーマンスに影響する設定の違いはない Brokerの動作ログを確認した結果、以下の動作の違いを発見 1回のリクエストで 12メッセージ受信 通常のクラスタ 問題のクラスタ 17 リクエスト1回で受け取るメッセージの個数が違う 1回のリクエストで 1メッセージ受信
  • 18. Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved. Kafkaのバッチングについて 18 Kafkaには1回の送信に複数のメッセージをまとめて送信する バッチング機能がある → 指定メッセージ数貯まるまで or 一定時間経過まで メッセージを溜め込む バッチングの大きさ(BatchSize)を大きく →処理効率高、遅延は増大 今回はKafka ProducerのBatchSize設定も全て一緒
  • 19. Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved. Kafkaのバッチングについて 19 Kafkaには1回の送信に複数のメッセージをまとめて送信する バッチング機能がある → 指定メッセージ数貯まるまで or 一定時間経過まで メッセージを溜め込む バッチングの大きさ(BatchSize)を大きく →処理効率高、遅延は増大 時間内にメッセージが殆ど溜まっていない!!! 今回はKafka ProducerのBatchSize設定も全て一緒
  • 20. Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved. 答えはProducerに 1台あたりの秒間メッセージ数が少ないのにも関わらずPartition数が多い Producer (複数台) Broker … … Partitioner MessageMessage Batch Producerはラウンドロビンで全ての Partitionにメッセージを振り分け 指定時間内に 溜まるBatchSizeが1 Request Handlerが 高負荷に 20 並列処理するための単位
  • 21. Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved. パラメータ調整/構成変更で対処? Producerの数を減らせば良い? • ビジネス要件で不可能 • サービスのサーバ群が高可用性とパフォーマンスの両立を求めており、 Producerの台数が非常に多い。 • 1台あたりの流量は少なく、台数が多い構成を変更できない Partitionを減らせばいい? • Kafkaの機能制約 • Partitionを減らす操作はKafkaでは簡単にできない タイムアウトを長くすればいい? • ビジネス要件で不可能 • 遅延が長くなり、転送のリアルタイム性が犠牲になる 21
  • 22. Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved. 送信先partitionを固定 (keyed message) Producer Broker … … Partitioner Keyed Message Keyed Message Batch ProducerごとにKeyを設定 秒間メッセージ数が少ないのに多くのPartitionに分散していることが問題 同一のProducerから送信するメッセージは全て同じPartitionに振り分けられるように 同じKeyを持つデータは 全て同じPartitionに振り分けられる 一定時間内に溜まるBatchSizeを大きくできる! → 無事解決 22 メッセージにKeyを付与できる
  • 23. Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved. まとめ 分散メッセージングシステムは パフォーマンスに影響する要素が多く、 原因特定や切り分けの難易度が高い • 動作ログと設定を眺めながら、 「この設定でこんな動きになるっけ?」 という違和感を嗅ぎ分けることが解決への近道 • メッセージの流量や性質に起因するパフォーマンス低下も 存在するため、日頃から設定や構成だけではなく 「どのようにデータを流しているか」も確認しておくことも重要 23