「[増補改訂]ビッグデータを支える技術」第4章と第5章を読んだ感想
こんにちは!前回に引き続き、「増補改訂 ビッグデータを支える技術 ——ラップトップ1台で学ぶデータ基盤のしくみ」を読んだので、その感想をシェアしますね。今回は第4章と第5章についてお話しします。
第4章:ビッグデータの蓄積
ファイルサイズの管理
ビッグデータの蓄積において、ファイルサイズの管理は重要です。ファイルが小さすぎると、多数のファイルを管理するオーバーヘッドが発生し、効率が悪くなります。逆に、大きすぎるファイルは扱いが難しくなるため、1MBから1GBの間くらいが推奨されています。小さいファイルは統合し、大きいファイルは分割することが効果的です。適切なファイルサイズの選定がシステムのパフォーマンスに影響する、大事なポイントだそうです。
書き込みの工夫
データの書き込みが増えていくと、プロセス時間とイベント時間の差異を考慮する必要があります。バルク型のデータとストリーミング型のデータの違いを理解し、定期的にまとめて書き込む工夫が求められます。例えば、バルク型データは一定の時間ごとに一括で処理し、ストリーミング型データはリアルタイムに逐次処理します。リアルタイムにデータを集めるにはメッセージブローカーを利用し、メッセージを欠損なく、重複なく送信し書き込みを完了させることが重要です。このため、Kafkaなどのメッセージングシステムを導入することが推奨されています。
第5章:ビッグデータのパイプライン
ワークフロー管理とは
ビッグデータのパイプラインにおいて、ワークフロー管理ツールは欠かせません。タスクの実行に失敗するリスクを減らすために使われ、タスクを定期的に実行し、その結果を通知する機能を持っています。有名なツールとしては、Apache AirflowやLuigiが挙げられます。これらのツールは、データパイプラインの管理を簡単にし、トラブルシューティングを容易にします。
冪等性の重要性
冪等(読み方は「べきとう」)な操作(何度繰り返しても同じ結果になる操作)はデータ処理において重要です。例えば、SQLでテーブルを消してから作り直す操作は冪等な操作の一例です。しかし、現実には常に冪等なタスクを実装できるとは限りません。過去データを全て消すのは非効率で、予期せぬ性能の劣化を招く可能性があります。このため、テーブルパーティショニングを使って1日ごとなどの区切りで置き換えを行う工夫が必要です。具体的には、日次、週次、月次などのパーティションを設定することで、データの管理とアクセス効率を向上させることができます。
バッチ型とストリーミング型のデータフロー
ワークフロー全体を冪等にするためには、バッチ型のデータフローとストリーミング型のデータフローの違いを理解することが重要です。バッチ型では定期的に大量のデータを処理し、ストリーミング型ではリアルタイムにデータを処理します。具体的な例として、バッチ型は夜間に大量のログデータを処理し、日中のレポート作成に利用されます。一方、ストリーミング型はリアルタイムでの株価分析やSNSのトレンド解析に使用されます。それぞれのフローに合わせた適切な管理が求められます。
データパイプラインの実装例
この章では、実際のデータパイプラインの実装例も紹介されています。例えば、データソースからデータを収集し、データをクリーニングして変換し、最終的にデータマートにロードする一連の流れが解説されています。特に、データのクリーニングや変換では、PythonやSQLを使った具体的なコード例もあり、実践的な知識を得ることができます。
感想
この本を読んで、ビッグデータの蓄積とパイプライン管理について深く理解できました。特に、ファイルサイズの管理や冪等性の重要性について学ぶことができ、実際のデータ基盤の構築に役立てられると感じました。また、ワークフロー管理ツールの活用や具体的なデータフローの設計についても、多くのヒントを得ることができました。次回は、6章と7章に触れていきたいと思います。
今回もご覧いただきありがとうございました!