Hadoopスタートアップセミナー
NECラーニング テクノロジー研修事業部 土井 正宏
Hadoopの概要
▌
高スケーラブルな分散管理基盤
▌
2つのコア機能
▌分散ファイルシステム(HDFS) ▌分散処理フレームワーク(Map/Reduce)▌
BigDataの管理基盤として注目
NEC Group Internal Use Only
OS OS
Hadoop分散ファイルシステム(HDFS) OS 分散処理基盤(Map/Reduce)
Apache Hadoop(以下 Hadoop)は高い拡張性を持つ分散処理基盤ソフトウェアで、 BigData の管理基盤として注目されています。Hadoop は以下の機能を提供します。
分散ファイルシステム(HDFS)
複数サーバーの HDD を束ねて仮想的なファイルシステムを構成する機能
分散処理フレームワーク(Map/Reduce)
BigData概要
▌
無尽蔵に増え続ける非構造データ(表で管理できない)
例:メール本文、つぶやき、アクセスログ・・・▌
更新は発生しない
一度送ったメール本文はあとから修正できない▌
解析→構造化が必要
そのままだとゴミデータの山Page 3 © NEC Corporation 2010
社員の情報(表構造) メール本文(非構造データ) BigData とは無尽蔵に増え続けるデータのことです。BigData には以下の特徴があります。 非構造データ(例:電子メール、つぶやき、画像データなど) 非構造データとは、データ項目に分類できないデータのことです。例えば、社員の情 報は社員番号や社員名といった、全社員に共通する項目に分類できますが、社員が送付 したメールの本文は決まった項目に分類できません。 更新がない BigData は一度送付した電子メールの内容は変更することができないように、基本的 には更新処理は発生しません。 メール以外にも、ブログ、つぶやき、画像データ、映像データ、GPS の位置情報、アクセス ログといったデータも BigData に分類されます。 BigData はそのままの状態では情報がまとまっていないため、ビジネスに活用できません。 よって、共通する項目を見つけ出してデータを構造化する必要があります。
なぜBigDataが注目されているのか?
▌
今まではBigDataをビジネスに活用できなかった
長期的に保存できない(大容量のストレージが必要) 解析処理に大量のCPUリソースを食う▌
古いデータは削除
▌
Hadoopの登場によりBigDataを活用しやすくなった
▌
BigDataの中にビジネスに有益な情報が眠っている
業績UP 新しいサービスの創出Page 4 © NEC Corporation 2010
今まで企業は保有リソースの問題から、BigData をビジネスに活用することができませんで したが、現在では Hadoop の登場によって、BigData を扱いやすくなりました。
一部の企業で BigData が活用され、その結果業績アップにつながった事例が報告されており、 現在注目を集めています。
Hadoopの活用場面
BigData解析 DWH/BI 基幹系バッチ処 理の高速化 センサー ネット ワークPage 5 © NEC Corporation 2010
Hadoop の活用場面は現在様々な企業で模索されておりますが、現状では主に以下の4つの 用途で活用できると考えられます。 BigData 解析 DWH/BI 基幹バッチ処理の高速化 センサーネットワーク
BigData解析
▌
テキストマイニング
▌
ソーシャルメディア分析
つぶやき、ブログの解析
▌
思いもよらなかった製品・サービスの強み、弱みを発見
Page 6 © NEC Corporation 2010
BigData 収集 分析結果 好評・丌評 若者に人気 ・・・etc 分析 つぶやき ブログ BigData を分散処理により解析します。解析結果は DWH にロードし、従来の BI ツールで分 析することができます。 また、BigData は自社内だけにとどまらず、ソーシャルメディアの中にも存在しています。 例えば、ブログやつぶやきの文字列からキーワードを抜き出して整理、集計すると企業や製品の 好感度を把握することができます。
DWH/BI
▌
レコメンドシステム(おすすめ)
RDBよりも高速に処理
▌
エコシステムの活用
Hive、Pig→構造データの解析
Page 7 © NEC Corporation 2010
購入 履歴 分析 分析結果
ECサイト
アクセス ログ あなたへのおすすめ商品は… DWH/BI 用途での活用例として、EC サイトの商品ページへのアクセスや購入履歴の分析結 果を「おすすめ商品」として提示する、レコメンドシステムが挙げられます。このような処理は RDB でも実現できますが、Hadoop により、分析時間が格段に短縮された事例が報告されてい ます。 また、この用途では明確な構造をもったデータを扱うことが多いので、Hive や Pig といった 関連プロダクトを活用することで、より効率よく分析できます。センサーネットワーク
▌
GPSや各種センサーが収集した情報を解析
▌
渋滞予測、気象予報、電力予測・・・etc
Page 8 © NEC Corporation 2010
車載GPS 温度・湿度 センサー 電力計 各種センサーが収集する情報の管理もまた、Hadoop が得意とする場面です。Hadoop のス ケーラビリティにより、センサーが送り続けるデータを効率よく管理できます。 車載 GPS から渋滞を予測したり、スマートフォンの GPS からショッピングモール内の人の 流れを解析したり、電力計の情報から必要な電力量を予測するなどの用途で活用できると考えら れます。
基幹系バッチ処理の高速化
▌
Hadoopのスケーラビリティを活用して、一時的に超高性能な処理基盤を
構築
▌
月次、日次バッチ処理の高速化
▌
Iaasの活用
Page 9 © NEC Corporation 2010
平常時 バッチ処理実行時 バッチ処理終了 Hadoop のスケーラビリティを利用し、Hadoop クラスタを一時的なスーパーコンピュータ ーとして利用することも考えられます。また、IaaS のサービスを活用すれば、自社内にリソー スを所有する必要がなく、費用削減につながります。
Hadoopクラスタの構成
▌
マスタースレーブ方式
▌
マスター
メタデータを管理(NameNode) ジョブを監視(JobTracker)▌
スレーブ
データを保存(DataNode) タスクを実行(TaskTracker)Page 10 © NEC Corporation 2010
マスターノード群 スレーブノード群 NameNode Hadoopクラスタ JobTracker Secondary NameNode TaskTracker
DataNode TaskTrackerDataNode
TaskTracker DataNode Hadoop クラスタは構成するサーバー間に親子関係があり、親をマスターノード、子をスレ ーブノードと言います(マスタースレーブ方式)。マスターノードとスレーブノードの役割は以 下の通りです。 マスターノード NameNode:HDFS のメタデータを管理 JobTracker:Map/Reduce のタスクを監視 スレーブノード DataNode:データブロックを保存 TaskTracker:Map/Reduce のタスクを実行 各プロセスは別々の物理サーバーで起動することもできますが、一般的に NameNode と JobTracker、DataNode と TaskTracker をそれぞれ共存させます。
分散ファイルシステム(HDFS)
▌
スレーブノード(DataNode)のディスクを仮想的に一台に見せる
▌
マシンを追加するだけで簡単に拡張可能
▌
データブロックに分割
▌
レプリカを保持
Page 11 © NEC Corporation 2010
100G 100G 100G
300G
ブロックA データB ブロックC ブロックA データB ブロックC ファイルHadoop のコア機能の一つである HDFS(Hadoop 分散ファイルシステム:Hadoop Distributed File System)は、スレーブノードの HDD を束ねて、大容量の仮想ストレージを 構成します。空き容量が減ってきた際は、新規スレーブノードを立ち上げることで簡単に容量を 増やすことができます。 ファイルを HDFS 上に配置すると、データブロックという単位に分割されて、スレーブに配 置されます。各データブロックは障害に備え、別ノードにコピー(レプリカ)を持っています。 マスターノードがスレーブノードの死活監視を行っており、スレーブが停止すると該当するデー タブロックのレプリカを作成します。この仕組みにより、常に一定数のレプリカが保障されます。
ハンズオン
▌
HDFS上にローカルのファイルをアップロードします
▌
WebUI ( http://master:50070 )でクラスタの構成を確認
▌
HDFS上にディレクトリを作成
▌
HDFSにファイルをロード
▌
WebUI ( http://master:50070 )でファイルを確認
Page 12 © NEC Corporation 2010
本セミナーでは、講師マシンをマスターとする Hadoop クラスタを操作します。
2. HDFS 上にディレクトリを作成します。端末を開き、以下のコマンドを実行します。 [hadoop@localhost ~]$ hadoop dfs -mkdir foo
[hadoop@localhost ~]$ hadoop dfs –ls ・・・
drwxr-xr-x - hadoop supergroup 0 2012-02-05 14:22 /user/hadoop/foo ・・・
3. ”data”ファイルを HDFS 上に配置します。 [hadoop@localhost ~]$ hadoop dfs -put data ./foo
※大きなサイズのファイルを配置するため、時間がかかります。 [hadoop@localhost ~]$ hadoop dfs -ls ./foo
Found 1 items
-rw-r--r-- 3 hadoop supergroup 256900332 2012-02-05 14:23 /user/hadoop/foo/data
4. アップロードしたファイルを WebUI から確認します。
「Brouse File System」→「user」→「hadoop」→「foo」→「data」の順にクリ ックします。
4 ブロック×3 レプリカに分割されてい ることを確認します。
Map/Reduce
▌
分散処理のフレームワーク
▌
Jobの自動管理
▌
データローカリティの実現
Page 13 © NEC Corporation 2010
プログラム(Job) Job
Task Task Task
Task Task Task JobをTaskに分解 Taskを実行 Map/Reduce は、Hadoop が提供する分散処理のフレームワークです。ユーザーは実行し たい処理をジョブとして渡すと、JobTracker がタスクに分解し、各 TaskTracker に割り当 てます。TaskTracker は割り当てられたタスクを実行します。なお、従来の分散処理と違い、 ユーザーはタスク割り当てを意識する必要がありません。また、JobTracker がタスクの進行 を監視し、エラーが起きたタスクは再実行します。そのため、プログラムにエラー処理を記述す る必要がありません。 スレーブノードは可能な限り、自分が管理するデータブロックを処理します。そのため、ノー ド間のデータの通信が発生しにくく、ネットワークトラフィックを抑制できます。このことをデ ータローカリティといいます1。
Map/Reduceのしくみ
▌
Map
分析の対象となる<Key,Value>ペアを作成▌
Shuffle&Sort
Keyの値でソートし集約▌
Reduce
各<Key,Value>ペアに対し、処理を行う (例:Valueの値の合計値を求める)Page 14 © NEC Corporation 2010
Map/Reduce の処理は以下の3つのフェーズで構成されています。ただし、Job を定義する 際に、ユーザーが指定するのは Map と Reduce の処理内容のみで、Shuffle&Sort については 定義する必要はありません。 Map 分析の対象になる<Key,Value>のペアを作成します。例えば、Hadoop のサンプルプ ログラムに含まれる wordcount(文章中の英単語を数える)では、<単語,1>のペア作り ます(例:<To,1>) Shuffle&Sort
Map の実行結果を Key の値で集約し、<Key,Values>のペアを作ります。この処理は 自動的に行われます2(例:<To,1,1>)
Reduce
Values に対し、集計などの処理を行います。wordcount では、Values の値の合計 値を算出します(例:<To,2>)
ハンズオン
▌
Map/Reduceサンプルプログラムを実行(WordCount)
▌
事前に用意されたプログラムでdataを解析
▌
WebUI ( http://master:50030 )でM/Rの進行を確認
▌
WebUI ( http://master:50070 )で出力ファイルを確認
Page 15 © NEC Corporation 2010
1. プログラムを実行します。HDFS 上の”data”ファイルに出現する単語をカウントし ます。
2. JobTracker の WebUI ( http://master:50030 )から Map/Reduce の進行を確認し ます。画面に表示された job_id をチェックします。
…
12/02/05 14:54:44 INFO mapred.JobClient: Running job: job_201202051408_0002 12/02/05 14:54:45 INFO mapred.JobClient: map 0% reduce 0%
12/02/05 14:55:28 INFO mapred.JobClient: map 11% reduce 0% 12/02/05 14:55:29 INFO mapred.JobClient: map 19% reduce 0% 12/02/05 14:55:30 INFO mapred.JobClient: map 30% reduce 0% 12/02/05 14:55:31 INFO mapred.JobClient: map 43% reduce 0%
3. NameNode の WebUI ( http://master:50070 )から作成されたファイルの中身を確 認します。
Hadoop注意点(よくある誤解)
▌
Hadoopはデータベースではない(データベースの下のレイヤーに相当)
▌
従来のデータベースに置き換わる技術ではない
▌
共有ストレージとしての利用はできない
小さなファイルの管理には向かない ファイルの中身の編集ができない▌
内容の変更がなく無尽蔵に増加していくBigDataの管理に特化
Page 16 © NEC Corporation 2010
OS OS Hadoop SQL Server Oracle OS OS HBase Hadoop はデータベースのソフトウェアではありません。HDFS はデータベースの下のレイ ヤーに位置します。現在 HDFS 上にデータを格納するデータベースのソフトウェアとして、 NoSQL データベースの HBase が提供されています。 また、HDFS は共有ストレージとしての利用はできません。HDFS はシステム上、小さなフ ァイルの格納には向きません。ファイル数が増えるとメタデータが増大し、NameNode を圧迫 するからです。また、Hadoop は IO 分散による高スループットを目的として設計されており、 低レイテンシな特性が求められる操作には向いていません。 さらに、HDFS 上のファイルは、メモ帳などで中身を変更することができません。以上のこ とから、Hadoop は共有ストレージの代わりではなく、BigData の管理に特化した基盤ソフト ウェアと言えます。
Page 17