スキーマレスカラムナフォーマット「Yosegi」で実現する スキーマの柔軟性と処理性能を両立したログ収集システム / Hadoop / Spark Conference Japan 2019 #hcj2019
1. Copyright (C) 2019 Yahoo Japan Corporation. All Rights Reserved.
2019年03月14日
井島 洸二 / ヤフー株式会社
Hadoop / Spark Conference Japan 2019
スキーマレスカラムナフォーマット「Yosegi」で実現する
スキーマの柔軟性と処理性能を両立したログ収集システム
2. Copyright (C) 2019 Yahoo Japan Corporation. All Rights Reserved.
自己紹介
2
井島 洸二
ヤフー株式会社 データ&サイエンスソリューション統括本部
データプラットフォーム本部データデリバリー部 所属
Data Source Storage
Processing
Ingestion Analysis
ヤフーのログを収集する領域を担当する部門
に所属
主に HDFS にログを収集し、ログを処理す
るための環境を整える仕組みを担当
3. Copyright (C) 2019 Yahoo Japan Corporation. All Rights Reserved.
アジェンダ
3
• ヤフーにおけるログ収集システム
• ログ収集システムとデータフォーマット
• Yosegi と他のデータフォーマットの違い
• ネストスキーマの課題とアプローチ
• まとめ
4. Copyright (C) 2019 Yahoo Japan Corporation. All Rights Reserved.
ヤフーにおけるログ収集システム
4
• ヤフーにおけるログ収集システム
• ログ収集システムとデータフォーマット
• Yosegi と他のデータフォーマットの違い
• ネストスキーマの課題とアプローチ
• まとめ
5. Copyright (C) 2019 Yahoo Japan Corporation. All Rights Reserved.
ヤフーのログ収集システム
5
Server
Web/App
ヤフーでは日々発生する膨大なログを HDFS に保存し利
用するための「ログ収集システム」を構築している
HDFS
6. Copyright (C) 2019 Yahoo Japan Corporation. All Rights Reserved.
ログの提供部門と利用部門
6
サービス部門 データサイエンス部門
ログの仕様についての業務調整
ヤフーではデータサイエンス部門が試行錯誤を繰り返すた
め、ログの仕様変更は日々行われる
7. Copyright (C) 2019 Yahoo Japan Corporation. All Rights Reserved.
ログ収集のアプローチ
7
Schema-on-read
利用時にスキーマ定義する
収集時に制約が少ない
保存時の効率化が難しい
Schema-on-write
保存時にスキーマを定義する
収集時に制約が多い
保存時の効率化が容易
ヤフーではサービスから多種多様なログを収集するため
に、 schema-on-read のアプローチが向いている
8. Copyright (C) 2019 Yahoo Japan Corporation. All Rights Reserved.
ログ収集システムが扱っている種類と量
8
Hive のテーブル数
約900テーブル
発生するログの件数
約600億件/day
※ヤフー全体ではなく、担当システムで扱っているデータ量となります。
9. Copyright (C) 2019 Yahoo Japan Corporation. All Rights Reserved.
HDFS とデータフォーマット
9
HDFS
アクセスログ
検索ログ
購買ログ
予約・決済
etc…
定型レポート
アドホック分析
機械学習
etc…
HDFS に保存するデータフォーマットは多様なスキーマ
と膨大なログ量を考慮して選択する
多様なスキーマ 膨大なログ量の処理
10. Copyright (C) 2019 Yahoo Japan Corporation. All Rights Reserved.
従来のヤフーでのログ仕様変更の対応
10
Map 本来の使い方ではなく、JSON のように任意の
key, value を入れられる設計が採用された
ログ
共通フィールド(約40項目)
Map<String,String>
Array<Map<String,>String>
サービス共通のログフィール
ドとサービスが任意に拡張で
きるフィールドを用意。
サービスA{
検索に関する情報
}
サービスB{
商品に関する情報
}
サービスC{
コンテンツに関する情報
}
拡張フィールドには Map を
使って任意の key, value を
付与できる
11. Copyright (C) 2019 Yahoo Japan Corporation. All Rights Reserved.
ログ収集システムとデータフォーマット
11
• ヤフーにおけるログ収集システム
• ログ収集システムとデータフォーマット
• Yosegi と他のデータフォーマットの違い
• ネストスキーマの課題とアプローチ
• まとめ
12. Copyright (C) 2019 Yahoo Japan Corporation. All Rights Reserved.
保存時のデータフォーマットの要件
12
保存時のフォーマットに求められる事
複雑なスキーマを扱える
スキーマの変更に強い
読み込みの処理性能が良い
13. Copyright (C) 2019 Yahoo Japan Corporation. All Rights Reserved.
データフォーマットの選択肢
13
多様なスキーマを扱え、変更に強い
JSON
処理性能が良い
カラムナフォーマット(ORC, Parquet)
14. Copyright (C) 2019 Yahoo Japan Corporation. All Rights Reserved.
JSON
14
ルールベースで記述されているテキスト
→ スキーマを必要としない
複雑なデータ構造も表現可能
15. Copyright (C) 2019 Yahoo Japan Corporation. All Rights Reserved.
JSON の Hive テーブルの定義
15
読みたいデータ構造でテーブルを定義 テーブル定義にあわせて JSON から読み込まれる
JSON ではフィールドの順序を持たないため、Key 名で
データが参照される。
16. Copyright (C) 2019 Yahoo Japan Corporation. All Rights Reserved.
JSON のスキーマの更新業務
16
サービス担当 データ利用担当
1.ログ仕様の変更依頼
2-1.ログ仕様の更新 2-2.テーブル定義の更新
ログ仕様の更新とテーブル定義の更新は同時に行わなくても良い
17. Copyright (C) 2019 Yahoo Japan Corporation. All Rights Reserved.
Hive における JSON テーブルの更新
17
Replace Columns には対応していない
カラム単体で追加や更新をしなければならない
FAILED: Execution Error, return code 1 from org.apache.hadoop.hive.ql.exec.DDLTask. Replace
columns is not supported for table json_table_1. SerDe may be incompatible.
カラムの更新は制約が多いので、テーブルを作成しなおすか、
別にテーブルを作成してしまった方が早い
This can be done only for tables with a native SerDe (DynamicSerDe, MetadataTypedColumnsetSerDe,
LazySimpleSerDe and ColumnarSerDe).
引用: https://cwiki.apache.org/confluence/display/Hive/SerDe
18. Copyright (C) 2019 Yahoo Japan Corporation. All Rights Reserved.
JSON を利用したログ収集システム
18
API
Request JSON
message
ETL
HDFS
JSON
message
Processing
・HDFS へのアップロード
・パーティショニング
JSON をそのまま HDFS に保存するシンプルな構成が可能
JSON
File
19. Copyright (C) 2019 Yahoo Japan Corporation. All Rights Reserved.
JSON を利用した場合の課題
19
CPUリソースが枯渇
圧縮の展開
テキストのパース
スキーマの柔軟性はあるが処理数を増やすことができない
20. Copyright (C) 2019 Yahoo Japan Corporation. All Rights Reserved.
カラムナフォーマット
20
カラム方向でデータを格納、利用する
Apache Parquet , Apache ORC など
JSON など カラムナフォーマット
21. Copyright (C) 2019 Yahoo Japan Corporation. All Rights Reserved.
カラムナフォーマットの特徴
21
Pushdown による列、行のスキップ
圧縮の展開やパースの CPU リソースの
削減
カラム毎のエンコーディングと圧縮
データサイズが小さくなる