エンジニアステップ

初心者エンジニア(1年目~3年目くらい)のための技術ブログ

「ビッグデータを支える技術」の感想

「ビッグデータを支える技術」を読みました。

技術評論社は毎回良い本を出してくれます。

 

想定読者

  • ビッグデータを扱うエンジニア
  • 作業を自動化したいデータサイエンティスト
  • OSやRDBの基本的な知識は前提
  • Pythonの知識も必要(サンプルコードを読むなら)

 

ということで、本ブログの対象読者である初心者エンジニアにはちょっと難し目な本です。

 

ビッグデータの背景知識

ビッグデータの背景知識が色々と学べます。分かりやすい本です。

 

ビッグデータの歴史

  • 2011年まで:Hadoop、NoSQLなどの基盤技術の発展
  • 2012年まで:クラウド型DWH、BIツールの普及
  • 2013年以降:ストリーム処理やアドホック分析環境の拡充

 

Hadoop

データ保存と、データ処理を大量のコンピュータで行うための仕組みがHadoopです。

Hadoopは、Googleで開発された分散処理のフレームワークMapReduceを参考にして作られています。

※2004年にGoogleが論文で発表

Hadoop上でSQLのようなクエリ言語を実行するためのSWはHiveです。

 

NoSQL

KVS、ワイドカラムストア、ドキュメントストア、グラフDBなどがNoSQLの代表的なデータベース種別です。

 詳しくは下記↓

www.engineer-step.com

 

そして、NoSQLDBに書き込み、Hadoopで分散処理するという流れが2011年ごろ定着したそうです。

 

ビッグデータの技術

ビッグデータに必要な技術は一つでありません。

複数技術の組み合わせ(サブシステムの組み合わせ)で実現できます。

  • データパイプライン:次々と受け渡されていくデータによって構成されるシステム
  • データ収集:バルク型、ストリーミング型というデータ転送方法があります。
  • 分散ストレージ:集めたデータを格納するところ。例:AmazonS3などのオブジェクトストレージに保存する
  • 分散データ処理:MapReduceが使われていた部分。データを加工し、その結果を外部DBなどへと書き出す
  • ワークフロー管理:パイプライン全体の動作を管理する技術。バッチ処理や、管理者に通知する

などなど。

 

「ビッグデータを支える技術」の感想

ビッグデータの入力から、出力(分析やリアルタイムな処理)までの流れについて一通り学べる本でした。

  • どのようにデータを集めるか
  • どのようにデータを保存するか
  • どのようにデータを処理するか
  • どのようにデータを表現するか

など、大規模になった途端どれだけ大変かということが分かります。

データベースも分散にした途端、トランザクションどうする、みたいなところで一気に面倒くさくなりますけど、同じような話がたくさんあります。

 

特に近年は技術が発展して、次々と新たな方法が出てきていますし、前提とする知識がたくさん必要になっています。

更に言うと、解説記事もなかなか少なく、皆が手探りでやっている…というところで、技術者としては挑戦しがいがあるのですが、大変ですね。

 

いちばん大事なのは、データを集めて、保持して、使うというそれぞれのモジュールの役割をしっかりと切り分けて考えること。

あとは業務によって、前提となる条件が違うので、それに合わせて選ぶことですね(結局それをやるためには、比較できるだけの知識が必要だから難しいんですけど)