27
Hadoop 黄色い象使いへの道 ~Hadoop徹底入門より~ 株式会社NTTデータ 基盤システム事業本部 システム方式技術BU 課長代理 下垣 徹

【17-E-3】Hadoop:黄色い象使いへの道 ~「Hadoop徹底入門」より~

Embed Size (px)

Citation preview

Page 1: 【17-E-3】Hadoop:黄色い象使いへの道 ~「Hadoop徹底入門」より~

Hadoop 黄色い象使いへの道

~Hadoop徹底入門より~

株式会社NTTデータ 基盤システム事業本部

システム方式技術BU 課長代理

下垣 徹

Page 2: 【17-E-3】Hadoop:黄色い象使いへの道 ~「Hadoop徹底入門」より~

Copyright © 2010 NTT DATA CORPORATION

Hadoop概要

Hadoop適用事例

「Hadoop徹底入門」の読み方

黄色い象 (= Hadoop) 使いへの道

Hadoop利用時のよくある質問

本日のアジェンダ

1

Page 3: 【17-E-3】Hadoop:黄色い象使いへの道 ~「Hadoop徹底入門」より~

Copyright © 2010 NTT DATA CORPORATION

Hadoopの概要Hadoopの概要

2

Page 4: 【17-E-3】Hadoop:黄色い象使いへの道 ~「Hadoop徹底入門」より~

Copyright © 2010 NTT DATA CORPORATION

その前に・・・ Googleの基盤技術

Googleは独自の基盤技術を用いて、大規模データを対象としたサービスを展開

Googleは、自ら 「クラウドコンピュータを持ってサービス展開している」 という

Web検索 ログ解析 Gmail Google Maps ・・・

独自に建造したデータセンタ

Google File System (GFS)

MapReduce BigTable

Sawzall

グーグルプラットフォーム

分散ファイルシステム

分散処理フレームワーク キー・バリュー型データストア

プログラミング言語

論文:The Google File System (2003年)論文:

MapReduce: Simplified Data Processing on Large Clusters(2004年)

3

Page 5: 【17-E-3】Hadoop:黄色い象使いへの道 ~「Hadoop徹底入門」より~

Copyright © 2010 NTT DATA CORPORATION

Hadoop とは?

オープンソースの大規模分散処理フレームワークGoogleの基盤ソフトウェアのオープンソースのクローン

大きなデータを並列に読み、データのローカリティを活かしてデータ処理する

高いスケーラビリティにより、小さく始めて大きく活用できる

Bank of America、VISA、JP Morgan Chase & Co、GE (General Electric)、AOL、CMCC(中国移動通信)、Baidu (百度)、国内テレコム事業者、Yahoo! 、Facebook 、Twitter、eBay、楽天 なども活用

ログ解析やレコメンデーションエンジン、検索エンジンなどでの活用が主流今後は、DWH/BI領域での活用が進む

Yahoo! のHadoop環境がソート処理の世界記録を樹立1TBのデータソートを62秒で実現 (2009年5月)

大きく2つのコンポーネントで構成される分散ファイルシステム: HDFS (Hadoop Distributed File System)

大規模分散処理フレームワーク: Hadoop MapReduce Framework

4

Page 6: 【17-E-3】Hadoop:黄色い象使いへの道 ~「Hadoop徹底入門」より~

Copyright © 2010 NTT DATA CORPORATION

集中管理型の分散システム

分散処理ジョブやデータの管理はマスタサーバで実施

スレーブサーバは、分散処理の実行やデータの実体を保存

スレーブサーバのクラスタへの参加・離脱は自動的

- 各ノードはマスターサーバに定期

的に通知する

HDFS

マスター: NamaNode

スレーブ: DataNode

MapReduce

マスター: JobTracker

スレーブ: TaskTracker

Hadoop – クラスタの全体像

5

Hadoopマスタサーバ

Hadoopスレーブサーバ (DataNode/TaskTracker)

HadoopクライアントL2/L3スイッチ

NameNode JobTracker

L2スイッチ

Page 7: 【17-E-3】Hadoop:黄色い象使いへの道 ~「Hadoop徹底入門」より~

Copyright © 2010 NTT DATA CORPORATION

低価格サーバの大量使用による故障の発生が前提の設計

データの多重化で可用性を担保する

従来とは運用利便性の考え方が異なる

分散ファイルシステムHDFSとMapReduceフレームワーク

6

Client

NameNode

SW SW SW

ブロックに分割してランダムに分散配置

コピーをラックの内外に多重作成して冗長化

DataN

odes

Rack

SHUFFLE

MAP

REDUCE

大規模分散処理向けフレームワークGoogleが検索インデックス作成のため考案

少なくとも5000台までスケールアウトしても性能向上することが知られている

HDFS MapReduce

Page 8: 【17-E-3】Hadoop:黄色い象使いへの道 ~「Hadoop徹底入門」より~

Copyright © 2010 NTT DATA CORPORATION

Hadoopの特徴

個別設計する必要なく、分散処理を実現

従来、プログラムごとに分散処理方式を設計する必要があった- データの配置や分散、分散処理の分割、各ノード間の通信 etc…

Hadoopでは、MapReduceフレームワークによって、プログラム個別に分散処理ロジックを用意することなく、分散処理を気楽に利用できる

高いスケーラビリティ

サーバ台数を増やすことで、保存するデータサイズ、計算処理能力、バッチ処理の I/O性能を柔軟に拡張できる

特にI/O性能は数台規模でも効果あり (上限の実績は~4000台)

コモディティサーバ利用を前提とした設計

IAサーバ+Linuxなど容易に入手できるコモディティ品で構築できる

一部のサーバが故障しても、サービスの可用性に影響を及ぼさない

様々なデータに対応

どのようなデータでも格納できる

格納時ではなく利用時にデータを意味付ける

7

Page 9: 【17-E-3】Hadoop:黄色い象使いへの道 ~「Hadoop徹底入門」より~

Copyright © 2010 NTT DATA CORPORATION

Hadoopの適用事例Hadoopの適用事例

8

Page 10: 【17-E-3】Hadoop:黄色い象使いへの道 ~「Hadoop徹底入門」より~

Copyright © 2010 NTT DATA CORPORATION 9

Hadoopの適用領域

特に向いている領域数10ギガバイト~テラバイト~ペタバイト級のデータを扱うシステムバッチ処理的なアプリケーションリアルタイム性が求められる処理の前処理

一般的な利用例ログ解析 POSデータ解析、広告分析、トラヒック解析などレコメンデーション クリック・ストリーム分析、関係グラフ解析など検索 転置インデックス作成、検索精度向上データマイニング 取引情報の分析・監査、不整データの抽出など機械学習 大量データのパターン分析、分類などデータ変換 動画、テキスト、音楽高度なETL

日本での利用事例も数多く報告されるようになってきた2011/02/22 「Hadoop Conference Japan 2011」に注目!

Page 11: 【17-E-3】Hadoop:黄色い象使いへの道 ~「Hadoop徹底入門」より~

Copyright © 2010 NTT DATA CORPORATION

Hadoopの適用事例

Twitter・Facebook・ブログといったメディアからデータを蓄積し、顧客の感性分析を行う

MySQLで42時間かかっていた処理をHadoopを用いることで48分で完了

GE (GereralElectric)

過去2年間で730億ものトランザクション=36TBのデータが生成

分析にこれまで1カ月かかっていたものが、Hadoopによって13分に

VISA

広告のインプレッションログ解析、レコメンデーション、ランキング集計などで使用

Perlスクリプトによる処理からHadoopに移行 / 20台程度のクラスタ

楽天

4TBのデータが毎日新規に生成される/135TBのデータを毎日処理

Hadoopで処理したデータをOracle RACやMySQLに格納して利用しているものも

Facebook

DWH(データウェアハウス)製品とHadoopを比較し、特性を評価

顧客動向分析のためにログなどを収集、分析するHadoopクラスタを構築中

リクルート

国立国会図書館・公立図書館・大学図書館・等の蔵書を横断的に検索するシステム

異なるデータソースからの重複・関連したデータに対する書誌同定・グループ化をHadoopで実施し、検索インデックスを作成

国立国会図書館

5億人のユーザのCDRデータを処理、5~8TB/日

商用のDB製品、DWH製品を利用していたがHadoopに移行

スケーラビリティの確保、ローコスト化・柔軟性の確保を実現

China Mobile

3年分のログの処理に26日→Hadoopで20分に短縮

現在82ペタバイトのデータを処理、全体で計25,000台のクラスタを有する

米Yahoo!

10

Page 12: 【17-E-3】Hadoop:黄色い象使いへの道 ~「Hadoop徹底入門」より~

Copyright © 2010 NTT DATA CORPORATION

「Hadoop徹底入門」「Hadoop徹底入門」

11

Page 13: 【17-E-3】Hadoop:黄色い象使いへの道 ~「Hadoop徹底入門」より~

Copyright © 2010 NTT DATA CORPORATION

「Hadoop徹底入門」の読み方 (1/3)

まずは第1章~第5章・第6章まで続けて読む

第1章 Hadoopってなんだろう?

第2章 Hadoopの導入

第3章 Hadoop分散ファイルシステム HDFS

第4章 Hadoop MapReduceフレームワーク

- 第3章・第4章→「前半は理論、後半は使い方・管理」の構成

第5章 MapReduceプログラミング入門

- ワードカウントを例に、MRUnit・デバッグ技法まで解説

第6章 SQL的インターフェイス Hive

- JavaでMapReduceを書きたくない/全く書けないなら5章スキップも

残りの章は必要に応じて読みたいところから

第10章 性能向上のためのチューニング

- SequenceFile、圧縮、メモリ/JVM/OSチューニング

204ページ

234ページ

全437ページ

12

Page 14: 【17-E-3】Hadoop:黄色い象使いへの道 ~「Hadoop徹底入門」より~

Copyright © 2010 NTT DATA CORPORATION

「Hadoop徹底入門」の読み方(2/3)

Hadoopにおける高い信頼性および運用性の実現を補助する内容を記載

第7章:環境構築の効率化

- Kickstart、Puppet を用いた環境構築の自動化

第8章:運用監視とシステムの可視化

- Ganglia を用い、Hadoop に適した監視を実現

第9章:可用性の向上

- Heartbeat、DRBD を用いてマスターサーバの冗長化を実現

13

Page 15: 【17-E-3】Hadoop:黄色い象使いへの道 ~「Hadoop徹底入門」より~

Copyright © 2010 NTT DATA CORPORATION

「Hadoop徹底入門」 の読み方(3/3)

Hadoopの利用価値をさらに高める各種ツール群を紹介

Hive(6章):SQL的な言語でMapReduceを実行

Pig(11.2章):データの流れ記述する独自言語でMapReduceを実行

Mahout:Hadoop上で機械学習を容易に実行するためのライブラリ群

HBase(11.1章):カラム指向型Key-Valueストアデータの追記や少量データの扱いを容易に実現

Thrift(11.3章):HDFSに対する操作を各種言語で実現

他に:

- Oozie:Hadoop上のジョブの管理を実現するワークフローエンジン

- Sqoop:DBMSからのデータ移行連携

- HUE:Hadoopに対する操作をGUIにて提供するデスクトップツール

14

Page 16: 【17-E-3】Hadoop:黄色い象使いへの道 ~「Hadoop徹底入門」より~

Copyright © 2010 NTT DATA CORPORATION

Hive の利用

Hive で SQL的インターフェースが利用可能に!

Java によるコーディングは苦手でも、SQL なら分かるという人は多い

Hadoop利用者の裾野拡大に大きく寄与

とはいえ、あくまでも SQL 「的」 なだけ → HiveQL ≠ SQL標準準拠

UPDATE 文が無い

DELETE 文が無い

INSERT INTO 文(追記)ではなく、INSERT OVERWRITE 文(上書き)

細かな構文の違いはマニュアルを見ながら慣れるしかない

次ページ以降で、HiveQL の初心者がとまどいがちなポイントを解説

http://wiki.apache.org/hadoop/Hive

15

Page 17: 【17-E-3】Hadoop:黄色い象使いへの道 ~「Hadoop徹底入門」より~

Copyright © 2010 NTT DATA CORPORATION

初心者がとまどいがちな HiveQL の例(1/3)

データロード/アンロード

Hive外のデータの取り込み = LOAD文

-とくにHDFS内のデータからの LOAD は “mv” コマンドのイメージ!

Hive内のデータの取り出し = INSERT OVERWRITE … SELECT … 文

-INSERT は1レコードを追加するためのものではない

HDFS

Hive テーブル

LOAD DATA… INSERT OVERWRITE…SELECT…

「元データが消えた?」なんて思わないように。

16

Page 18: 【17-E-3】Hadoop:黄色い象使いへの道 ~「Hadoop徹底入門」より~

Copyright © 2010 NTT DATA CORPORATION

初心者がとまどいがちな HiveQL の例(2/3)

日付時刻データの扱い → Hiveには日付時刻型がない

1. Hive へは STRING 型で格納 ‘yyyy-MM-dd HH:mm:ss’

日付時刻計算は:

A)引数が STRING の組み込みの関数を利用する:

→ 日付差分datediff() など

B)unix_timestamp(‘yyyy-MM-dd HH:mm:ss’) で UNIX タイムスタ

ンプに変換してから処理

2. もしくは初めから BIGINT 型に UNIX タイムスタンプ値を格納

17

Page 19: 【17-E-3】Hadoop:黄色い象使いへの道 ~「Hadoop徹底入門」より~

Copyright © 2010 NTT DATA CORPORATION

初心者がとまどいがちな HiveQL の例(3/3)

データのソート

ORDER BY 句 : 全出力結果のソート

SORT BY 句 : Reducer ごとのソート

FROM句でのテーブル名の羅列不可 → JOIN 句を利用

(×) SELECT t1.c1, t2.c2 FROM t1, t2 WHERE t1.c1 = t2.c1;

(○) SELECT t1.c1, t2.c2 FROM t1 JOIN t2 ON t1.c1 = t2.c1;

IN/EXISTS 句がない → LEFT SEMI JOIN で代用

(×)SELECT a.key, a.value FROM a WHERE a.key IN (SELECT b.key FROM B);

(○) SELECT a.key, a.val FROM a LEFT SEMI JOIN b on (a.key = b.key);

1818

Page 20: 【17-E-3】Hadoop:黄色い象使いへの道 ~「Hadoop徹底入門」より~

Copyright © 2010 NTT DATA CORPORATION

黄色い象使いへの道黄色い象使いへの道

19

Page 21: 【17-E-3】Hadoop:黄色い象使いへの道 ~「Hadoop徹底入門」より~

Copyright © 2010 NTT DATA CORPORATION

黄色い象使いになるために ~ よくある質問 ~

Hadoop 初心者の方からよく質問を受ける内容をまとめてみました

1. RDBMS的な機能は無いんですか?

2. Hadoopへのマイグレーションってどう?

3. どの「Hadoop」を使えばよい?

20

Page 22: 【17-E-3】Hadoop:黄色い象使いへの道 ~「Hadoop徹底入門」より~

Copyright © 2010 NTT DATA CORPORATION

1. RDBMS的な機能は無いんですか?

そもそも Hadoop は RDBMS でありません!

「トランザクションは概念は無いんですか?」

「1レコードの更新/削除をする機能は無いんですか?」

「B-Tree インデックスが無いんですか?」

…このような機能はHadoopにはありません!

RDBMSの世界で「常識」だと思われるものを捨てて、大容量データを効率よく処理するために特化した作りだと認識すべき

Hadoopは「銀の弾丸」ではない!→ 「適材適所」の観点で

例)大量データの前処理をHadoopで+結果をRDBMSに格納し検索しやすく

Solr NoSQL

代替手段

21

Page 23: 【17-E-3】Hadoop:黄色い象使いへの道 ~「Hadoop徹底入門」より~

Copyright © 2010 NTT DATA CORPORATION

2. Hadoopへのマイグレーションってどう?

商用RDBMS/DWHからのマイグレーションはやれなくはないが、それなりに工数がかかる、ことが多い

根本的に、工数がかかるのは Hadoop に限った話ではない

NTTデータではマイグレーションの障壁を下げるための取り組みを実施

Hadoopの利用を「マイグレーションによるコスト削減」だけを目的にされると辛い、ことが多い

Hadoopの利用目的に「何かの壁をぶち破るために」があってしかるべき

「何か」 = 処理時間、データ量、etc.

マイグレーション前と同じ機能/品質/SLAを求められると辛い、ことが多い商用RDBMS/DWH と Hadoop の機能差異

RDBMSでの処理をそのまま置き換えても高速にならない→ Hadoop に適する形=「大量データの一括処理」へのリファクタリングが必要

22

Page 24: 【17-E-3】Hadoop:黄色い象使いへの道 ~「Hadoop徹底入門」より~

Copyright © 2010 NTT DATA CORPORATION

Hadoopに適した処理への書き換え

RDBMSで実行中のバッチ処理をHadoopに移植する場合、Hadoopでの性能を引き出すようなチューニングが必要チューニングの実施例 (RDBMS → Hadoop + Hive)1. 既存のRDBMSでの処理

- 索引検索によって少量の件数を抽出するクエリが複数からなるバッチ処理

2. チューニングなしで処理をそのまま Hive に移植すると

- 基本的には1クエリ=1MapReduceジョブ に変換される

- MapReduceジョブ起動のオーバーヘッドが大きく、移植による性能向上が見られず:1ジョブあたりのオーバーヘッド=約20秒(本検証環境において)

3. チューニング後、既存のRDBMSの処理で2.9時間かかっていた処理を、Hiveでは0.8時間で実現

- 並列分散処理を意識し、 1回のMapReduceジョブで済むように複数の条件を一括で処理することで性能向上

MapReduceジョブ数を極力減らすようにチューニングするのが得策!少量データを繰り返し処理するより、一括して処理したほうが Hadoop に適する

23

Page 25: 【17-E-3】Hadoop:黄色い象使いへの道 ~「Hadoop徹底入門」より~

Copyright © 2010 NTT DATA CORPORATION

3. どの「Hadoop」を使えばよい?

Hadoopではどのバージョン/パッケージを使うのかはやや悩ましい問題

コミュニティから提供中のコア部分の 新版は 0.21 系2010/08/23 v0.21.0 リリース

しかしHadoop周辺プロダクトの多くは0.21系での動作を未サポートHive, Pig, HBase など、主要なプロダクトは 0.20 系でのみ動作可能

新機能をできる限り使いたい

コミュニティ版Hadoopv0.21系

安定性重視周辺プロダクトとの組合せ保証

Cloudera’s Distribution for Hadoop (CDH) v0.20系

CDH自体は無償だが、必要に応じてサブスクリプション・サポート(有償)を利用することも可能

24

Page 26: 【17-E-3】Hadoop:黄色い象使いへの道 ~「Hadoop徹底入門」より~

Copyright © 2010 NTT DATA CORPORATION 25

まとめ

Hadoopの概要について説明しました。Hadoopの適用事例を紹介しました。

「Hadoop徹底入門」の読み方がわかりました。これでみなさんも「黄色い象使い」になれました。

Page 27: 【17-E-3】Hadoop:黄色い象使いへの道 ~「Hadoop徹底入門」より~

Copyright © 2010 NTT DATA CORPORATION 26