Upload
voquynh
View
222
Download
3
Embed Size (px)
Citation preview
© Copyright 2011 Hewlett-Packard Development Company, L.P. The information
contained herein is subject to change without notice.
1
Linux勉強会 ~Hadoopと高可用性~
Hadoop入門
日本ヒューレット・パッカード株式会社 ESSNプリセールス統括本部 エンタープライズサーバー・ストレージ技術第1本部 Linuxソリューション部 Cloudera Certified Administrator for Apache Hadoop'CCAH(認定技術者 古賀 政純 Twitter: @masazumi_koga 2012年4月21'土(
2
Hadoop とは
3
背景:データ処理のニーズの変化
定型処理 非定型処理
• 人間が介在しない完全な自動化が可
能
• 厳密さが求められる
• トランザクション管理
• データ量は多くてもGbytesオーダー
• 給与計算、売上集計、伝票処理など
•人間の介在が必要
•厳密さよりカバレッジ重視(データ量が
重要)
•データ量はTbytes~Pbytesオーダーにな
り得る
•スケールアウトによる性能向上
•統計データ作成、検索、データ・マイ
ニングなど
RDBMSが得意とする領域 RDBMSが苦手とする領域
従来からの定型処理に加え近年では、非定形処理が必要になってきた。
4
Hadoopが必要か?
• ペタ級のデータ処理
–テラ級ならRDBMSで処理可能
項目 RDBMS Hadoop
データサイズ ~テラ ペタ
想定データ操
作
小さなデータ
参照/更新
大きなデータ
挿入/参照
レスポンス 速い 遅い
スケールアッ
プ・アウト
せいぜい1ケタ
台のサーバ
数十台~数千
台
データ構造 構造化データ 準構造化デー
タ
データサイズ大
データサイズ小
レスポンス長い
レスポンス短い
DWH アプライアンス
RDBMS
5
Hadoop開発の歴史的経緯 GoogleFileSystemやMapReduceなどと呼ばれる分散処理技術を独自に開発。ソースコードではなく、その仕組みを論文として発表'2004年(
膨大なデータに対する検索処理で課題を抱えていたYahoo Inc.は、著名なエンジニアであるDoug Cutting氏を中心に上記論文を元に、Hadoopを開発。 Apache Hadoopプロジェクトとして公開され、オープンソースソフトウェアとして開発が進む。
米国を中心に利用が進み、Hadoop自体も様々な改良が加えられる。
日本でも導入事例が増えつつある。
6
なにをHadoopに期待するか
–過去できない/できなかったことの実現
−ペタ級のデータ処理
従来方式との差がなにか実感できるようなことがで
きないか
やっぱり、データ検索/集計だよね
レポートのたびにJavaで開発する
のは…
7
業務系ITにおける、RDBMS、DWH および Hadoopの位置づけ
RDBMS Oracle / MySQL MS SQL Server など
データウェアハウス RDBMS/DWH専用機
トランザクション処理
Hadoopクラスタ
データ分析
BI
データ蓄積
非構造型データ 膨大な過去データ
複雑かつ大量のデータを高速に分析
8
結局、Hadoopとは?
既存のRDBMSと置き換わるものではない
9
Hadoopの分散ファイルシステム'HDFS(を知る
10
HDFSのデータ保持、管理概要
Name Node
Master Node
1 2 3 4
ブロック
1 4
クライアント
データ
4 1 1 4
2 2 2 3
3 3
問い合わせ
メタデータ管理 DataNode 状態監視
ブロック管理
1 2 3
4
DataNodes
Name Nodeを利用して、
データをブロックに分割し、DataNodeに配置
1つのブロックを複数の、DataNodeに複製'複製数:3(
11
HDFSを体験しよう: 例1(巨大なファイルをHDFSにコピー&様子を見る
•HDFSに置きたいファイルを生成する。今回はファイルサイズが10GBのファイルを生成する。 # dd if=/dev/zero of=/tmp/file10GB bs=1024M count=10
# ls -lh /tmp/file10GB
-rw-r--r-- 1 root root 10G 3月 1 02:41 /tmp/file10GB
コピー元の巨大ファイル: /tmp/file10GB
分散FS HDFS
12
HDFSを体験しよう: 例1(巨大なファイルをHDFSにコピー&様子を見る
HDFS上に保存用のディレクトリを生成する。Cloudera版Hadoopにおいて、 HDFSの操作は、アカウントhdfsで行う。 # su – hdfs
$ whoami
hdfs
$ hadoop fs –mkdir /user/hdfs/BIGFILEDIR/
Name Nodeの/tmpに作成した10GBのファイルfile10GBをHDFSにコピーする。 $ hadoop fs -put /tmp/file10GB /user/hdfs/BIGFILEDIR/
上記コマンドを実行することで、データノードで構成されているHDFSに、目的のファイル file10GBがコピーされる。
13
HDFSを体験しよう: 例1(巨大なファイルをHDFSにコピー&様子を見る •WebブラウザでHDFSの使用量を確認する。Webブラウザで、Name NodeのIPアドレスまたはホスト名に50070ポートでアクセスする。
Webブラウザをリロードすると、「DFS Used」の値が変化することがわかる。 上記例は、10GBのファイルのコピー途中での様子 '4GBあたりまでコピーした状態で画面ダンプを取得した(
10GBのファイルのコピー操作を 行う前の段階。 「DFS Usedは1.41MB」である。
HDFS上にファイルfile10GBがコピーされていることを確認する。 $ hadoop fs -ls /user/hdfs/BIGFILEDIR/
Found 1 items
-rw-r--r-- 2 hdfs supergroup 10737418240 2011-03-01 02:51 /user/hdfs/BIGFILEDIR/file10GB
14
HDFSの基礎
•前提となる考え •構成されるノードは障害率が高いという前提で進める。 •安価なサーバーはいつダウンしてもおかしくないという考え。
•ファイルサイズ •HDFSで取り扱うファイルは 数TB~PBクラス •一つのファイルサイズが巨大
•アクセス •ファイルはライトワンス。 •大規模なストリーミングリード。 •ランダムアクセスはしない。
•性能、特徴 •安定したスループットを目的とする。 •低レイテンシではない。
ブロック'128MB(
ブロック'128MB(
ブロック'128MB(
ブロック'128MB(
ブロック'128MB(
ブロック'128MB(
ブロック'128MB(
ブロック'128MB(
HDFSのブロック書き込み例
ブロック'128MB(
ブロック'128MB(
ブロック'128MB(
ブロック'128MB(
ブロック'128MB(
ブロック'128MB(
ブロック'128MB(
ブロック'128MB(
HP ProLiant DL2000
15
Hadoopが提供するMap Reduceを知る
16
Map処理とReduce処理の例: 文字例のカウントを行う
<Hello, 1回出現> <World, 1回出現> <Bye, 1回出現> <World, 1回出現>
<Hello, 2個> <World, 2個> <Bye, 1個> <Bob, 1個>
出力 Bob 1 Bye 1 Hello 2 World 2
Map
Reduce
<Hello, 1回出現> <Bob, 1回出現>
入力
Hello World Bye World
Hello Bob
Hello World Bye
World
Hello Bob
Map
テキストの1行目
テキストの2行目
処理対象となるログデータ等を入力にする。 Map処理: ログデータを行毎に処理して、検索結果をキーと値の組にする Reduce処理: 同じキー'文字列(を集計し、結果を出す。
17
Map Reduceを体験しよう: 例2(テキストファイルの単語数をカウントする
•対象のテキストファイル例: /usr/share/doc/glibc-2.5/以下のテキストファイル「NEWS」
調査対象となる
入力ファイル:/usr/share/doc/glibc-2.5/NEWSファイル Map Reduce the 315
* 314
NEW: 313
and 192
C 173
to 152
ISO 149
for 147
9x 141
of 135
The 127
by 115
…
…
得たい結果: 単語数のリスト
GNU C Library NEWS -- history of user-visible changes.
2006-09-29
Copyright (C) 1992-2002,2003,2004,2005,2006 Free
Software Foundation, Inc.
See the end for copying conditions.
Please send GNU C library bug reports via
<http://sources.redhat.com/bugzilla/>
using `glibc' in the "product" field.
^L
Version 2.5
* For Linux, the sorting of addresses returned by
getaddrinfo now also
handles rules 3, 4, and 7 from RFC 3484. I.e., all
rules are handled.
Implemented by Ulrich Drepper.…
…
…
…
18
HDFSに配置したINDIR/NEWSファイルをHadoopのMap Reduceで分散処理を行う $ cd $HOME; pwd
/usr/lib/hadoop-0.20
$ whoami
hdfs
$ hadoop jar contrib/streaming/hadoop-streaming-0.20.2-CDH3B4.jar ¥
-file bin/map.py -mapper bin/map.py -file bin/red.py -reducer bin/red.py ¥
-input INDIR -output OUTDIR1
...
11/03/01 01:48:08 INFO streaming.StreamJob: map 0% reduce 0%
11/03/01 01:48:10 INFO streaming.StreamJob: map 50% reduce 0%
11/03/01 01:48:11 INFO streaming.StreamJob: map 100% reduce 0%
11/03/01 01:48:17 INFO streaming.StreamJob: map 100% reduce 33%
11/03/01 01:48:19 INFO streaming.StreamJob: map 100% reduce 100%
11/03/01 01:48:20 INFO streaming.StreamJob: Job complete: job_201102281749_0005
11/03/01 01:48:20 INFO streaming.StreamJob: Output: OUTDIR1
$ hadoop dfs -ls
Found 2 items
drwxr-xr-x - hdfs supergroup 0 2011-03-01 01:10 /user/hdfs/INDIR
drwxr-xr-x - hdfs supergroup 0 2011-03-01 01:48 /user/hdfs/OUTDIR1
•出力するディレクトリにOUTDIR1を指定したので HDFS上にOUTDIR1が生成されていることがわかる
Hadoop Streamingを利用することで、Javaで記述しなくても、PythonやPerlなどの スクリプトでMapReduceを実現できる。
Map Reduceを体験しよう: 例2(テキストファイルの単語数をカウントする
19
Hadoop Hive
20
データウェアハウスとしてHive
– Facebookのジョブの95%は、Hive –非常に早く書くことができ、普通は約10分しかかからない – HiPalというwebベースのツール
•Hiveを使うビジネスアナリストが、簡単にクエリを書ける
•データウェアハウスにロードされている20000のテーブルを調べることができる
•'HiPalは、公開されていない(
–日に1回のバッチ処理からリアルタイムなクエリにずっと近いものに変化
–最も速いクエリを1分以内で返すことができるシステムを開発
することが、全く新しい領域のアプリケーションを切り開くキーとなる
21
FacebookのHadoopの現状
–Facebookは、引き続きHadoop技術に投資
–彼らが使っているHive (彼らが始めた) や HBase のよ
うなオープンソース プロジェクトに貢献
–コンピューティング クラスタで、大規模なデータを処理
–Hadoopとのデータベースの統合
–高可用性、低遅延なアプリケーションをサポートする
アーキテクチャを有している。
22
Hadoopのシステム構成例
23
Hadoopのシステム構成考慮点: 小規模から大規模クラスタ構成'1000ノード(へ
Hadoop管理ノード: •Hadoop Name Node •Hadoop Job Tracker
Lights
-Out1
00
HP ProLiant SL170s G6
ラック
HP ProLiant SL170s G6 x1 CPU: 2x QC Xeon Mem: 18GB Disk : 500GB x 4 SAS
Lights
-Out1
00
ラック
コアスイッチ 'アグリゲーション(
コアスイッチ 'アグリゲーション(
ネームノード'HA( セカンダリ・ネームノード
ジョブ・トラッカー
ジョブ・トラッカーの フェールバック先
ジョブ・トラッカーの フェールバック先
HP CMU/HP SIM Nagios/Ganglia
10GbE 10GbE 10GbE
管理ノード・ラック
•Name Nodeは大容量メモリで構成: データノードのデータ量が大きくなると、ネームノードのメモリ中のメタデータが大きくなるため。 •Name NodeはHA化 •Heartbeat + DRBD
24
HadoopにおけるRack Awareness構成例
Rack2 Rack3
– エンクロージャ障害、ラック障害に対応させるためのHadoopの機能
– レプリカはラックを跨いでHDFSに保存される
– NameNodeはラックを跨いでHA化
Rack1
Client Client
Block 1
BLock 2
Block 3
ファイル
処理
ファイルは、
ブロックに分割される
Block 1
BLock 2
Block 3
Block 1
BLock 2
Block 3
レプリカ:3
Rack Awareness:
ブロックはラックをまたいでレプリケーションさせる。
所属するラックまたはエンクロージャをIPアドレス
の範囲などで区分けし、Hadoopに設定。
25
Hadoopのシステム構成考慮点: Nagiosを使ったHadoopクラスタの監視
Data nodeのtasktrackerのポート監視を行う NagiosプラグインをNagiosにインストール
Data nodeのポート監視を行う NagiosプラグインをNagiosにインストール
HDFSのディスク使用量を監視する Nagiosプラグインcheck_hadoop_metrics をインストール
26
Hadoopのシステム構成考慮点: Gangliaを使ったHadoopクラスタの監視
Name NodeとData Nodeのマルチキャスト アドレスは異なる値にすることが望ましい /etc/sysconfig/network-scripts/route-ethXの値
/etc/hadoop/conf.XXXにあるhadoo-metrics.properties ファイルにDFSに関する マルチキャストアドレスを記述
27
Hadoopのシステムインテグレーション
28
Hadoopのサイジング: コモディティハードウェアはローエンドという意味ではない
The Hadoop Distributed File System (HDFS) is a distributed file system designed to run on commodity hardware.
Cloudera社のサイトにあるData nodeとTask Trackerのハードウェア例: http://www.cloudera.com/blog/2010/03/clouderas-support-team-shares-some-basic-hardware-recommendations/ 抜粋: There are four types of nodes in a basic Hadoop cluster. We refer here to a node as a machine performing a particular task. Most of the machines will function as both datanodes and tasktrackers. As we described, these nodes both store data and perform processing functions. We recommend the following specifications for datanodes/tasktrackers in a balanced Hadoop cluster:
•4 1TB hard disks in a JBOD (Just a Bunch Of Disks) configuration •2 quad core CPUs, running at least 2-2.5GHz •16-24GBs of RAM (24-32GBs if you’re considering HBase) •Gigabit Ethernet
出典: http://hadoop.apache.org/common/docs/r0.18.0/hdfs_design.pdf
29
Hadoopのサイジング: コモディティハードウェアはローエンドという意味ではない
出典:http://hadoopblog.blogspot.com/2010/05/facebook-has-worlds-largest-hadoop.html
FacebookにおけるHadoop Data Node1台あたりのスペック: CPU: 16コア Mem: 32GB Disk: 12~24TB
30
Hadoopのサイジング: コモディティハードウェアはローエンドという意味ではない
出典: http://developer.yahoo.com/blogs/ hadoop/posts/2010/05/scalability_of_the_hadoop_dist/
1億個のファイル'2億ブロックを参照(を格納するために、Name Node は最低でも60GB のRAM を持つべきである。
Yahooが提案するHadoopの性能に関する考察 •1億ファイルではName Nodeのメモリ60GB以上必要 •1PBの物理ストレージ容量確保には、メタデータ用のRAMが約1GB必要 •1億ファイルに必要なHDFSクラスタは、10000ノードで、1ノードあたり8TBのディスクが必要
31
• 2011年下半期以降
米国HPにおけるHadoop/OSSの取り組み・最新情報
米国本社HPのOSS取り組み・最新情報
32
Hadoop in a Data Warehouse
Apache Hadoop
Flume Connector
SQOOP Connector
MySQL
H D F S Log Files
Relational Data
Extract, Transform & Load
海外OSS最新情報
33
eBay 海外Hadoop情報
•使用しているコンポーネント •Java MapReduce •Pig •Hive •HBase
•用途: •検索 •研究
•監視 •Ganglia •Nagios
出典: http://vimeo.com/24541769 '2011年時点(
34
Hadoop at Macy’s 海外Hadoop情報
出展:http://www.basas.com/newsletters/20110705/Presentation/Kerem%20Tomak.ppt
35
HP POD
コンテナ型データセンター HP PODに搭載されている
HP ProLiant SLシリーズ
HP POD内のHP ProLiantサーバー 米国本社HP最新情報
データセンターの耐荷重を気
にせず空き倉庫に設置
OSSを駆使した大規模分散
システムを導入されるお客様
向けに適
36
Thank you!!