前回のElasticseachを調べていくうちにHadoopという言葉に出会った。
なんとなく聞いたことはあって「なんかいっぱいのサーバに分散処理させてる」くらいの認識しかなかったのでHadoopとはなんぞやというコトをまとめていきたい。
■目標
Hadoopを理解する。
Hadoopの概念を理解する。
Hadoopの活用方法
■Hadoopを理解する。
Hadoop とはオープンソースとして公開されている大規模・大容量データの分散処理技術、ソフトウェア。
Web検索技術に行き詰まりを感じていたGoogleが論文として「Google File System」「Google Map Reduce」を発表、後にDougCutting氏主導の元、Javaで実装されたのがHadoopのようです。
Googleが発表した「Google File System」、「Google Map Reduce」 の論文はどういう理論なのかを調べてみました。
Google File System【分散ファイルシステム】とは
分散ファイルシステムとはコンピュータネットワークを通して共有しつつファイルにアクセスできるシステム。
Google Map Reduceとは
コンピューター機器のクラスター上でも巨大なデータセットに対する分散コンピューチングを支援するフレームワーク。上の分散ファイルシステムを支えるフレームワーク的な感じかな。
■Hadoopの概念を理解する
Hadoopは三つのシステムから成り立っている。
上記の二つの論文を参考に組み立てられたHadoop Distributed File SystemとHadoop Map Reduceと、構造化データををサポートしたDB(HBase)。
分散処理する為のHadoop Map Reduce
MapReduceは「Map」「Reduce」「Shuffle」三つのフェーズから成り立っている。
「Map」ではそれぞれのデータにkey, valueを割り振り
「Shuffle」で割り振ったデータを統合・結合する。
「Reduce」で結合・統合したデータの処理を行う。
分散ファイルシステムのHadoop Distributed File System(HDFS)
HDFSでは管理するファイルの読み書きを高速化する為、大きなファイルを一定の大きさに分割し、複数の記憶装置に分散して保存、読み込みや書き込みだけを並列に実行できるようにしている。
どのファイルをどのように分割し、どの装置に格納したかを一元管理する「NameNode」、分割されたファイルを保存する「DataNode」の二つから成り立つ。
■Hadoopの使い所
Hadoopの強みは数時間かかるようなバッチ処理でも複数マシンに分散して処理をし、高速化きるので、大量のデータを計算・分析する処理に向いている。
レコメンデーションの計算や統計解析などの場面では大いに役に立つ。
参考記事
https://www.ibm.com/developerworks/jp/web/library/wa-introhdfs/
Hadoop入門に最適なチュートリアルサイトまとめ・比較7つ|#mayonez [マヨネーズ]