本記事は、株式会社ギックスの運営していた分析情報サイト graffe/グラーフ より移設されました(2019/7/1)
問題!1日分のデータを処理するためのプログラムが1日で終わらない
本日は「Hadoop(ハドゥープ)」という言葉を解説します。Hadoopをひとことで説明すると、
「巨大データの取り扱いを目的とした分散処理のフレームワーク」
です。意味がわかりませんよね?これから説明させてください。
Hadoopというキーワードを理解するためには、まずHadoopが求められるにいたった理由を理解する必要があります。ビッグデータ分析に代表されるような「巨大なデータを処理したい」という要求は近年高まるばかりです。コンピュータ自身の性能も向上していますが、処理したいデータ量の増大速度はコンピュータの性能向上速度をはるかに上回っています。ここでIT関連企業はいよいよ「1日分のデータを処理するためのプログラムが1日で終わらない」という問題から逃げられなくなってきたのです。
Hadoopはこの問題を解決するために生まれたプログラムです。Hadoopの利用者は自作したデータ処理のプログラムや他者が開発したツールプログラムをHadoop内に組み込んでビッグデータ処理を行っています。この為Hadoopはプログラムのカテゴリの中でも「フレームワーク」もしくは「プログラム基盤」と呼ばれています。
Hadoopの処理方法は「分散処理」です。巨大なデータの処理速度を向上させるには基本的に3つの方法しかありません。
- プログラムの処理ロジックを磨き上げる
- 処理するコンピュータの性能をパワーアップする
- 処理するコンピュータの台数を増やして処理をする
このうち上記aは今の状態では向上限界が近いと思ってください。上記bはそれなりに有効ですがコンピュータのパワーを1000倍に上げるのはコスト的にも困難です。また1000倍界王拳のコンピュータを用意したとしてこのコンピュータがヒマな時間はコストの無駄使いになってしまいます。そこで上記cです。これが「分散処理」とよばれる方法です。ビッグデータ処理に必要なマシン台数を増やしてよってたかって並列に処理を行う。マシン台数は増減に対して柔軟なので目標処理時間に対して最適な台数を用意すればそれでよい。これが現在のビッグデータ処理業務に対する要求に最もマッチした答えとなっています。しかしてこの分散処理、口で言うほど単純ではありません。並列に用意された各コンピュータはそのままではバラバラに動くばかりで処理全体の効率化や協調性をおもんばかる事などしてくれません。
そこでHadoopの登場です。
Hadoopは処理を行うために並列で用意されたコンピュータをその制御下に置き、それらに対して小分けにされた処理を割り振り、処理状況の管理(モニタリング)を行い、各コンピュータで処理された結果を回収しひとつにまとめます。Hadoopの制御下におかれたコンピュータ群が「あたかも一つの巨大なコンピューターであるかのように振る舞い、ビッグデータ処理という目的をはたす」この「処理基盤」を形成することこそがHadoopの役割なのです。
ここまで説明させていただいたうえで上記の言葉を繰り返します。Hadoopとは、
「巨大データの取り扱いを目的とした分散処理のフレームワーク」
なのです。
データ分析用語:索引