linotice

linotice

2016.11.09

Apache Kafkaをテーマに、日本最大級のデータを持つヤフーの知見を紹介する勉強会「D&S Data Night Vol.3」を開催

ヤフーデータプラットフォーム本部の森谷大輔が登壇している画像

8月31日に開催された「D&S Data Night Vol.3」のセッションテーマは「Apache Kafka」。ヤフーではKafkaをどのように活用しているかについてご紹介したイベントの概要をレポートします!

Kafka 0.8.1.1を0.10.0にアップデートする

最初の登壇者である森谷大輔が発表したセッションタイトルは「Kafka 0.10.0 アップデート、プロダクション100ノードでやってみた」。概要は以下の通りとなります。

▲ データプラットフォーム本部 森谷大輔

2012年から、アプリログやソーシャルログといったさまざまなデータソースをリアルタイムに利用できるように、Kafkaによるストリーム処理プラットフォームを構築しています。

Kafkaを採用した5つの理由と、2016年8月初旬に行ったKafka(broker)クラスタの一部のKafka0.8.1.1からKafka0.10.0にバージョンアップデートについて、バージョンアップデートをこのタイミングで行った理由、注意したポイント、実際に発生した課題に対しての具体的な対応方法を紹介しました。

Kafka0.10.0の大きな変更点「Rack Aware」と「Kafka Streams」

次にご紹介する登壇者は那和泰明。セッションタイトルは「Kafka0.10.0について」。

▲ データプラットフォーム本部 那和泰明

那和は、データプラットフォーム本部で2010年からデータパイプラインの設計・構築・運用などに携わっています。

セッションでは、2016年春に公開されたKafka 0.10.0の追加機能の中から「Rack Awareness」と「Kafka Streams」についての紹介を行いました。
「Rack Awareness」についての話では、サーバー障害だけでなくラック障害時にもクラスタが継続稼働できるよう、冗長性の担保を行う重要性とKafka 0.10.0から導入されたbroker.rackを用いたパーティションのアサインの基本動作を紹介しました。

ストリーム処理用のlibraryである「Kafka Streams」については、KTable(record stream)とKStream(changelog stream)の違いと、KafkaのLog Compactionという機能について紹介を行いました。

画像左alt

次世代Producerをどう開発する?

安藤俊介のセッションタイトルは「簡単なようで悩ましいProducerどうするか話」。

Producerとはアクセスログなど、転送したいデータのファイルをtailしてKafka brokerにデータを送信するための仕組み。現在、社内では性能1台8000req/sec。現在、新しいパイプラインに移行するにあたり、Producerも移行することを目指しています。

移行に際してボトルネックになっている課題を解決するために、ProducerはSource(tail)、Processors(パースやシリアライズなどの処理)、Buffer(送信)、Sink(送信)という4コンポーネントで構成。Go言語で独自実装し、Processorsを並列にすることでパフォーマンス向上が見込めるようにしています。

さらに、シリアライズにAvro、Buffer/SinkにKafkaのためのGoライブラリであるsaramaを採用していることや、ファイル圧縮にgzip、lz4、snappyなどを試した実例を紹介し、その課題と技術的な解決策について持論を展開しました。

セッション後の懇親会は熱い技術談義!

セッション終了後の懇親会では、登壇者以外の社員も参加。ピザを食べながら、セッションに関する質疑応答だけではなく、Kafkaに関する熱い技術談義があちこちで行われました。

ヤフーがこのような勉強会を開催するのは、データ活用に関するコミュニティを醸成し、盛り上げていきたいという思いから。データに関心のある方は、ぜひ次回の勉強会で語り合いましょう!


◆おすすめ関連記事
D&S Data Naight主催者が語る「ヤフーから情報発信をすることで日本のデータ産業を盛り上げたい──『D&S Data Night』主催者インタビュー」

採用情報 公式SNSアカウント

このページの先頭へ