Hadoop 基礎

Preview:

DESCRIPTION

Hadoop

Citation preview

Hadoop 基礎編

Hideaki Honda

Page 2

Hadoop(ハドゥープ)とは

また、誤解されやすいが、リレーショナルデータベースや

ファイルシステム、検索エンジン等ではない。

一言でいえば、

大規模データを処理するための

並列分散処理ソフトウェア基盤である。

並列分散処理とは、1つの処理を複数のサーバで同時並列に処理させること。

Page 3

概要

・オープンソースソフトウェアである

・ Apache Software Foundationが開発・公開している

・Javaを使って開発されている

・登場した背景にGoogleが深く関わっている

・ペタバイトクラスの大規模データを処理するのが得意である

・特殊なサーバやストレージは必要ない

Page 4

登場した背景 (1)

Googleが、Webサイトの検索エンジンの開発に着手。

が、大規模なデータ故に、従来のファイルシステムやデータベースでは実現が難しい。

そこでGoogleは、実現出来るためのソフトウェアを内部で開発し、それを利用した。

その技術の一部を論文として公表する。2003年「The Google File System」http://static.googleusercontent.com/media/research.google.com/ja//archive/ _gfs-sosp2003.pdf

2004年「 MapReduce: Simplified Data Processing on Large Clusters 」http://static.googleusercontent.com/media/research.google.com/ja//archive/ _mapreduce-osdi04.pdf

Page 5

登場した背景 (2)

この論文に着想を得て、ASFがHadoopプロジェクトをスタートさせ、オープンソースとして実装された。

・ブログ、SNS、Twitterなど個人が情報を発信出来る時代になり、大規模データを扱う必要性が生まれてきている

・元々大規模データがあり活用したかったが既存のテクノロジーでは手段が無かったり、制約(HW、SW面で)や金額の面で難しい

これらの問題点を解決できるソフトウェアとして非常に注目度が高い。

Page 6

HadoopプロジェクトとGoogle

Googleの技術とHadoopプロジェクトの関係

処理 Google Hadoop

分散フゔルシステム GFS(Google File System)

HDFS(Hadoop Distributed File System)

分散処理フレームワーク MapReduce Hadoop MapReduce

KV型データストゕ BigTable HBase

成り立ちからも分かる通り、

Hadoopプロジェクトは、Googleの影響を強く受けている。

Page 7

環境まわり

・特殊なサーバやストレージは必要ない。

・複数のOSで動作可能だが、Linuxが一般的。

・バージョン1.6以上のJava実行環境が必要。

Hadoop自体はあくまで基盤なので、処理の実装は

開発者が行う。Javaでの実装は当然できるが、

「Hadoop Streaming」という仕組みを使えば、

任意のプログラミング言語でも実装が可能である。

Page 8

提供の形式

Hadoopには

・コミュニテゖ版

・デゖストリビューション版

の2つが存在する。

ベンダー 製品名

Cloudera CDH

Microsoft Windows Azure HDInsight

MapR MapR

主なディストリビューション

他にはンテルなども。

Page 9

Hadoopの構成要素(1)

Hadoopの構成要素でキモとなるのが以下の2つ。

これらが連携することで高スループットなデータ処理を実現。

1.HDFS

2.MapReduce

画像の引用元:並列分散処理の常識をHadoopフゔミリから学ぶhttp://www.atmarkit.co.jp/ait/articles/1202/08/news138.html

[Hadoopとその関連図]

Page 10

Hadoopの構成要素(2)

1.HDFS(Hadoop Distributed File System)

分散ファイルシステム

大容量のデータを複数のサーバに格納する仕組み。

複数のサーバを組み合わせて、ひとつの大きな

フゔルシステムを提供する。

2.MapReduce

並列分散処理を実現するフレームワーク

ひとつの大きな処理(ジョブ)を複数の単位(タスク)に

分割して並列実行する仕組み。

Page 11

性能まわり(1)

Hadoopでは、サーバをスケールゕウトすることで

性能ゕップを図る。これに対してRDBでは、

サーバ間で更新データの整合性を保つのが難しくなるため、

スケールゕップで対応するのが一般的である。

クラスタを構成するサーバ台数を追加することで、

データ容量を拡張したり、分散処理の性能を向上させる。

逆に言うと、2、3台ほどのクラスタでは性能は引き出せない。

ちなみに、米Yahoo!では4000台ほどのクラスタを組んでいる。

Page 12

性能まわり(2)

大規模データを処理する場合で解決すべき問題は多い。

その1つに、デゖスクI/Oのスループットがある。

CPU性能の進化、搭載メモリの大容量化に比べて

デゖスクI/Oのスループットは、それほど向上していない。

Hadoopでは、複数のサーバを組み合わせて全体(クラスタ)

として機能を提供するため、デゖスクI/Oが

ボトルネックになりにくいと言われている。

Recommended