非エンジニアでも分かるhadoopのお話
自社でもhadoop環境が整ってきたわけですが,僕は非エンジニアなのでhadoopの実装部分はノータッチでした。
↑公式アイコンのゾウさん。
これではアナリストの名が廃るということで,同僚から勧められた
(かの有名な城田真琴さんの著書)
を今更ながら読ませていただきました。→分かりやすかった!!
この本を元に,色々調べてとりまとめてみたので,参考になれば嬉しいです!
ビッグデータとは?
一言でいうならば,3V
volume:データ量
variety:多様性(構造化データ+非構造化データ)
velocity:データの生成頻度
以上の3つを特性として持つデータ群を指します。
hadoopって結局なに?
イメージ図↓↓ 手書き...
HDFSというデータ保持システムを基盤に
MapReduceという処理を行うっていうイメージです。
元々,googleが2012年にMapReduceという処理方式を発表しました。
そのMapReduceをオープンソースとして実装したフレームワークがHadoop。
と言われても,,,,
よく分からんと思うので,
この2つの大きな概念を順番に説明していきますね。
1.HDFSとは
要はデータを複数のディスクに分散させて,並列処理を行うことで
たくさんのデータを処理できちゃうっていうこと。
(子供)DataNode:それぞれがデータを保持する。
(お父さん)NameNode:それぞれのDataNodeがどんなデータを保持しているかを管理する。
お父さんがJobTrackerで全てのタスクを管理し,子供が持つTaskTrackerにタスクを振り分ける。
→子供はTaskTrackerを元にお手伝いをする。
こういう構造で並列処理を可能にしているわけですね。
2.MapReduceとは
Map→Reduceという2つの処理を順番に行います。
Map:分散したデータから,欲しいデータのみを集めてくる
地図を片手に,欲しいデータがどこが探してもってくる。
Reduce:Mapにより抽出されたデータを整理して,処理・出力
集めてきたデータをまとめる。
分散処理機構に対して,どう演算しているのかって部分です。
ざっと説明するとこんな感じです。
もう一回見返すと,こんな感じ↓
何となく分かりましたか?
--------------------------------------------
補足...でも大事
Hbaseとは
HDFSの上位レイヤーにあり,データの入出力先として使うデータストレージ。
HDFSではインデックスを参照したデータアクセスはできないけど,
Hbaseを用いることでkeyによるランダムアクセスが可能になります。
RDBMS(Relational Database Management System)と同じく,KVS(Key-Value Store)形式なんだけど,
非構造化データを保持するために,特殊な構造をしています。
RDBMSはカラムに一つの値が入るけど,
Hbaseではカラムファミリと呼ぶものがあり,
そこに複数の修飾子があって,それぞれにvalueが格納されます。
↓こんな感じのイメージ
(画像引用元:http://www.atmarkit.co.jp/ait/articles/1202/27/news128_2.html)
Hiveとは
Facebookが開発した,やんごとなき基盤ソフト!!!
これのお陰で僕も気軽にhadoopに触れられるのです。ありがたや~。
イメージ↓↓
Hadoopのみだと,HDFSからデータを抽出するには,Javaプログラムを実行する必要がありました。
しかし,Hiveを共に実装することで,HDFSのデータをRDBMSのようにテーブル化し,HiveQLというSQLライクな言語でデータを扱えるようになったのです。
facebookの技術力,おそろしや~。。。
Pigとは
これ,公式のアイコンです。
イメージ図 ↓↓
Hadoopクラスタに投げるMap関数とReduce関数は,本来Javaで書きます。
でもPigを使えば,簡単に書けちゃう。
Hueとは
phpmyadminとかphppgadminとかと同じようなものです。
これのお陰で,より多くの人がhadoopに触れられるようになります!
--------------------------------------------
とまあ,hadoop周りのお話は以上です。
非エンジニアの方も,「hadoopってどういう仕組み?」って聞かれたスラスラ答えられたら,かっこいいですよね。
こういった知識がエンジニアさんとの信頼にも繋がっていくと思うのです。
また今度自分で実装してみたいな。
以上!
↓少しでも興味あったら,是非読んでみるといいと思います。