21
Hadoopとその周辺の紹介 BPStyle #41 tokibito

Hadoopとその周辺の紹介

Embed Size (px)

Citation preview

Page 1: Hadoopとその周辺の紹介

Hadoopとその周辺の紹介

BPStyle #41

tokibito

Page 2: Hadoopとその周辺の紹介

Apache Hadoopとは

● 分散処理基盤○ HDFS - 分散ファイルシステム○ MapReduce - 分散処理フレームワーク

● Apache財団のプロジェクト● Javaで作られている● http://hadoop.apache.org/

Page 3: Hadoopとその周辺の紹介

HDFSとは

● 分散ファイルシステムのサービス● Unixのファイルシステムのように、ディレクトリや

パーミッション、所有者の概念がある● 大きく分けて2つのコンポーネントで構成

○ NameNode - 各ファイルのメタ情報を管理○ DataNode - 実データを持つ

Page 4: Hadoopとその周辺の紹介

NameNodeとDataNodeのイメージ

NameNode

DataNode

HDD

DataNode

HDD

DataNode

HDD

NameNodeが1台でDataNodeが複数台

Page 5: Hadoopとその周辺の紹介

HDFSの操作

$ hdfs dfs -ls /user/tokibitoFound 3 itemsdrwx------ - tokibito tokibito 0 2013-12-06 09:00 /user/tokibito/.Trashdrwxrwxrwx - tokibito tokibito 0 2013-12-04 18:18 /user/tokibito/tab1-rw-r--r-- 3 tokibito tokibito 419 2013-12-06 15:34 /user/tokibito/test.tsv$ hdfs dfs -put test.txt /user/tokibito/$ hdfs dfs -ls /user/tokibito/Found 4 itemsdrwx------ - tokibito tokibito 0 2013-12-06 09:00 /user/tokibito/.Trashdrwxrwxrwx - tokibito tokibito 0 2013-12-04 18:18 /user/tokibito/tab1-rw-r--r-- 3 tokibito tokibito 419 2013-12-06 15:34 /user/tokibito/test.tsv-rw-r--r-- 3 tokibito tokibito 5 2014-01-08 11:18 /user/tokibito/test.txt$ hdfs dfs -cat /user/tokibito/test.txthoge

hdfs dfsコマンドを使ってファイルを操作できるput get mv rm ls mkdirなどのサブコマンドがある

Page 6: Hadoopとその周辺の紹介

MapReduceとは

● 分散処理フレームワーク● 大きく分けて2つのコンポーネントで構成

○ JobTracker○ TaskTracker

● ジョブ(Job)○ Map処理とReduce処理の組み合わせ

■ org.apache.hadoop.mapreduce.Mapper● 分割された入力データを並列処理

■ org.apache.hadoop.mapreduce.Reducer● Mapperの処理結果を一つにまとめる

○ jarパッケージにしてJobTrackerに登録する

Page 7: Hadoopとその周辺の紹介

JobTrackerとTaskTrackerのイメージ

JobTracker

TaskTracker TaskTracker TaskTracker

JobTrackerが1台でTaskTrackerが複数台TaskTrackerでMap/Reduce処理が実行される

Page 8: Hadoopとその周辺の紹介

Map処理とReduce処理のイメージ

Input

Map処理

Reduce処理Map処理

Map処理

Output

Job

Page 9: Hadoopとその周辺の紹介

MapReduceを使うのは面倒くさい

● Javaで処理を書く必要がある● jarを作ってJobTrackerに登録しないといけない● SQL使いたい

→そこでApache Hive

Page 10: Hadoopとその周辺の紹介

Apache Hive

● Hadoop上のクエリエンジン● SQLで問い合わせ

○ SQLからMapReduceタスクを生成して実行

● Javaで実装されている● http://hive.apache.org/

Page 11: Hadoopとその周辺の紹介

Hiveの操作

hive> show databases;OKdefaulttokibitoTime taken: 2.379 secondshive> use tokibito;OKTime taken: 0.047 secondshive> show tables;OKtab1Time taken: 0.143 secondshive> select * from tab1;OK7 NULL1 NULL1 foo2 hoge3 bar45 NULLTime taken: 1.971 seconds

hiveコマンドで対話シェルを起動する

Page 12: Hadoopとその周辺の紹介

Hiveは遅い?

● 小さなデータに対してクエリした場合でも数十秒かかったりすることがある○ HDFSへのアクセスのオーバーヘッドが大きい○ MapReduce処理が遅い

→そこでCloudera Impala

Page 13: Hadoopとその周辺の紹介

Cloudera Impala

● Hadoop上のクエリエンジン● SQLで問い合わせ

○ ImpalaDaemonがSQLをコンパイルして実行(LLVM)● MapReduce処理の最適化

○ Impaladのノードと同じマシンのDataNodeを直接参照■ ネットワーク転送のオーバーヘッド軽減

● C++で実装● Hiveのメタ情報を利用

○ hiveのテーブルを参照できる

● 現状ではHiveの全機能はカバーできてない● http://impala.io/

Page 14: Hadoopとその周辺の紹介

Impalaの操作impala-shellコマンドで対話シェルを起動する

[slave1:21000] > use tokibito;Query: use tokibito[slave1:21000] > select * from tab1;Query: select * from tab1Query finished, fetching results ...+----+-------+| id | col_1 |+----+-------+| 7 | NULL || 1 | foo || 2 | hoge || 3 | bar || 4 | || 5 | NULL || 1 | NULL |+----+-------+Returned 7 row(s) in 2.46s

Page 15: Hadoopとその周辺の紹介

他のHadoop関連のプロダクト

● Apache HBase - KVS● Apache Flume - ログ収集● Apache Oozie - ワークフローエンジン● Cloudera Hue - Hadoopのフロントエンド

など

Page 16: Hadoopとその周辺の紹介

Hadoopは大変

● コンポーネントの数が多い● 依存関係の解決が面倒(バージョンも気にする

必要ある)● 複数台のサーバー管理が必要(HA構成なら最

低でも7〜11台以上)

→そこでCDHとCloudera Manager

Page 17: Hadoopとその周辺の紹介

CDH

● Cloudera's Distribution Including Apache Hadoop

● 米Cloudera社● Hadoopのパッケージ

○ rpm○ 依存関係が解決されている○ 安定したバージョンのパッケージ

● http://www.cloudera.com/content/cloudera/en/products-and-services/cdh.html

Page 18: Hadoopとその周辺の紹介

Cloudera Manager

● Hadoopクラスタの管理ツール● Webベース● ホストの管理

○ 対象の各ホストにagentをインストールする

● ホストへのCDHのインストール○ 一括で自動インストール可能

● サービスの管理○ どのホストでどのサービスを動かすかをWebUIから一括

設定可能

● http://www.cloudera.com/content/cloudera/en/products-and-services/cloudera-manager.html

Page 19: Hadoopとその周辺の紹介

Hadoopの利点は?

● 一台で処理できないような量のデータを扱える○ MapReduce

● 一台で保存できないような量のデータを扱える○ HDFS○ 容量が足りなければ台数を増やせばよい○ 台数を増やせばパフォーマンスも上がる

● メモリに載り切らないようなデータを現実的な時間で処理できる

● 正規化されていないデータを処理できる

Page 20: Hadoopとその周辺の紹介

Hadoopの欠点は?

● 速くはない○ メモリに乗る程度のデータ量ならRDBMSを使ったほう

がかなり速い

● 推奨マシンスペックは低くない○ Impalaの推奨メモリは128GB以上

■ コモディティサーバー≠安価なサーバー

○ 最低でも1ノードあたり4〜8GB程度ないと、まともに動

かない

● 最小構成のサーバー台数が多い○ HA構成ならマスター3台、スレーブ4〜8台以上

● コンポーネント数が多く、複雑なのでトラブルシューティングは大変