17
Presented: 07/24/2010 Copyright © 2010 Happy-Camper Street. Presentation Demo Presented: 07/24/2010 HBase プログラミング ~ Scala ソース添え ~ @ueshin [email protected] http://happy-camper.st/ HBase プログラミング HBase とは データモデル 実装 インストール デモ 問題点とトピックス HBase プログラミング

20100724 HBaseプログラミング

Embed Size (px)

DESCRIPTION

 

Citation preview

Page 1: 20100724 HBaseプログラミング

Presented: 07/24/2010Copyright © 2010 Happy-Camper Street.

Presentation Demo

Presented: 07/24/2010

HBase プログラミング~ Scala ソース添え ~

@[email protected]://happy-camper.st/

HBaseプログラミング

HBase とは

データモデル

実装

インストール

デモ

問題点とトピックス

HBaseプログラミング

Page 2: 20100724 HBaseプログラミング

Presented: 07/24/2010Copyright © 2010 Happy-Camper Street.

Presentation Demo

Presented: 07/24/2010

HBase とはHBase is the Hadoop database.

- 大規模データ (billions of rows X millions of columns)

- ランダムアクセス・リアルタイム読み書き

カラム指向分散データベース

- Bigtable: A Distributed Storage System for Structured Data

- Hadoop (HDFS) 上に構築

・自動シャーディング

・テーブル構造が柔軟

・インデックスなし

・クエリが単純化

・Hadoop MapReduce サポート

・一貫性、CAS 操作

・高可用性

・クラスタのモニタリングと監視

HBaseプログラミング

HBase とは

データモデル

実装

インストール

デモ

問題点とトピックス

HBaseプログラミング > HBase とは

Page 3: 20100724 HBaseプログラミング

Presented: 07/24/2010Copyright © 2010 Happy-Camper Street.

Presentation Demo

Presented: 07/24/2010

データモデルBigtable を参考に

Column "contents:" Column "anchor:" Column "mime:" Row Key Time Stamp

"com.cnn.www" "CNN"

"CNN.com"

"text/html"

"anchor:cnnsi.com"

"anchor:my.look.ca"

"<html>..."

"<html>..."

"<html>..."

t8

t6

t5

t3

t9

セルの値を取得するには・・・

  - テーブル名

  - Row Key

  - カラムファミリー

  - 修飾子

  - バージョンRow = Map<byte[], Map<byte[], Map<Long, byte[]>>>

実際問題、こんな感じ。

例 ) webtable

- 行の特定に Row Key

- あるカラムファミリーに対して、任意の数のカラムを持てる

HBaseプログラミング > データモデル

HBaseプログラミング

HBase とは

データモデル

実装

インストール

デモ

問題点とトピックス

物理配置

その他

Page 4: 20100724 HBaseプログラミング

Presented: 07/24/2010Copyright © 2010 Happy-Camper Street.

Presentation Demo

Presented: 07/24/2010

物理配置物理的には、カラムファミリー毎に保存

リージョン

Row Key の範囲によって分割された領域- リージョンのサイズが大きくなると自動的に分割されていく

Column "contents:" Row Key Time Stamp

"jp.co.cnn"

"<html>..."

"<html>..."

"<html>..." t5

t3

t6

Column "anchor:" Row Key Time Stamp

"jp.co.cnn" "CNN"

"CNN.com"

"anchor:cnnsi.com"

"anchor:my.look.ca" t8

t9

Column "mime:" Row Key Time Stamp

"jp.co.cnn" "text/html"t9

リージョン2

Column "contents:" Row Key Time Stamp

"com.cnn.www"

"<html>..."

"<html>..."

"<html>..." t5

t3

t6

Column "anchor:" Row Key Time Stamp

"com.cnn.www" "CNN"

"CNN.com"

"anchor:cnnsi.com"

"anchor:my.look.ca" t8

t9

Column "mime:" Row Key Time Stamp

"com.cnn.www" "text/html"t9

リージョン1

HBaseプログラミング

HBase とは

データモデル

実装

インストール

デモ

問題点とトピックス

物理配置

その他

HBaseプログラミング > データモデル > 物理配置

Page 5: 20100724 HBaseプログラミング

Presented: 07/24/2010Copyright © 2010 Happy-Camper Street.

Presentation Demo

Presented: 07/24/2010

耐障害性HDFS の NameNode が SPOF

CAP 定理クラスタが分断した場合には、状況によってはシステム停止

ACID 特性1つの Row に対するロックを取得できる

- Row 内のデータの更新を Atomic に実行することが可能。

- Row 内のデータの Consistency は保証される。

- 複数の Row にまたがる更新の Atomicity は確保できない。

HBaseプログラミング

HBase とは

データモデル

実装

インストール

デモ

問題点とトピックス

物理配置

その他

HBaseプログラミング > データモデル > その他

Page 6: 20100724 HBaseプログラミング

Presented: 07/24/2010Copyright © 2010 Happy-Camper Street.

Presentation Demo

Presented: 07/24/2010

実装

HMaster

RegionServer RegionServer RegionServer

ZooKeeper クラスタ

HDFS

- リージョン割り当て

- リージョンサーバーの障害回復

- 0 個以上のリージョン

- 読み書き要求

- リージョン分割管理

- クラスタ管理

HBaseプログラミング

HBase とは

データモデル実装

インストール

デモ

問題点とトピックス

HBase の操作

書き込み

読み込み

その他

HBaseプログラミング > 実装

Page 7: 20100724 HBaseプログラミング

Presented: 07/24/2010Copyright © 2010 Happy-Camper Street.

Presentation Demo

Presented: 07/24/2010

HBase の操作 : メタデータ

RegionServer RegionServer RegionServer

ZooKeeper クラスタ

HDFS

1. -ROOT- の位置取得

2. -ROOT- から、.META. の位置取得3. .META. からリージョンの位置取得

クライアント

HBaseプログラミング

HBase とは

データモデル実装

インストール

デモ

問題点とトピックス

HBase の操作

書き込み

読み込み

その他

HBaseプログラミング > 実装 > HBase の操作

Page 8: 20100724 HBaseプログラミング

Presented: 07/24/2010Copyright © 2010 Happy-Camper Street.

Presentation Demo

Presented: 07/24/2010

HBase の操作 : 書き込み

RegionServer RegionServer RegionServer

ZooKeeper クラスタ

HDFS

1. 書き込み

2. コミットログ追記

3. メモリキャッシュに追加

4. メモリキャッシュが一杯になったらフラッシュ

クライアント

HBaseプログラミング

HBase とは

データモデル実装

インストール

デモ

問題点とトピックス

HBase の操作

書き込み

読み込み

その他

HBaseプログラミング > 実装 > HBase の操作 > 書き込み

Page 9: 20100724 HBaseプログラミング

Presented: 07/24/2010Copyright © 2010 Happy-Camper Street.

Presentation Demo

Presented: 07/24/2010

HBase の操作 : 読み込み

RegionServer RegionServer RegionServer

ZooKeeper クラスタ

HDFS

1. 読み込み

2. メモリキャッシュを調べる

3. フラッシュファイルを調べる

クライアント

HBaseプログラミング

HBase とは

データモデル実装

インストール

デモ

問題点とトピックス

HBase の操作

書き込み

読み込み

その他

HBaseプログラミング > 実装 > HBase の操作 > 読み込み

Page 10: 20100724 HBaseプログラミング

Presented: 07/24/2010Copyright © 2010 Happy-Camper Street.

Presentation Demo

Presented: 07/24/2010

Compactions

リージョン分割

minor compaction

major compaction

- フラッシュファイルの数が閾値を超えると1つにまとめる。

- リージョンに属するすべてのフラッシュファイルを定期的に1つにまとめる。

フラッシュファイルのサイズが閾値を超えるとリージョン分割

1. 親リージョンがオフラインに

2. .META. に記録して HMaster に通知

3. HMaster が新規リージョンをアサイン

- この間このリージョンへの読み書きは一時停止

- クライアントは子リージョンがオンラインになるまで待ち。

HBaseプログラミング

HBase とは

データモデル実装

インストール

デモ

問題点とトピックス

HBase の操作

書き込み

読み込み

その他

HBaseプログラミング > 実装 > その他

Page 11: 20100724 HBaseプログラミング

Presented: 07/24/2010Copyright © 2010 Happy-Camper Street.

Presentation Demo

Presented: 07/24/2010

インストールファイルのダウンロード

解凍

起動 (スタンドアロンモード )

http://www.apache.org/dyn/closer.cgi/hbase/ から適当なミラーサーバーを選択し、

最新のファイルをダウンロード。 (2010/7/24 現在、0.20.5 が最新安定版 )

適当なディレクトリに解凍。

% pwd/usr/local% tar zxvf /path/to/hbase-0.20.5.tar.gz% ln -s hbase-0.20.5 hbase% mkdir hbase/logs

% /usr/local/hbase/bin/start-hbase.sh

HBaseプログラミング

HBase とは

データモデル実装

インストール

デモ

問題点とトピックス

最小設定(擬似分散モード)

最小設定(完全分散モード)

HBaseプログラミング > インストール

Page 12: 20100724 HBaseプログラミング

Presented: 07/24/2010Copyright © 2010 Happy-Camper Street.

Presentation Demo

Presented: 07/24/2010

最小設定 ( 擬似分散モード )

hbase-site.xml

<configuration> <property> <name>hbase.rootdir</name> <value>hdfs://localhost:9000/hbase</value> </property></configuration>

hadoop-env.sh

export HADOOP_CLASSPATH=/usr/local/hbase/conf :/usr/local/hbase/hbase-0.20.5.jar :/usr/local/hbase/lib/zookeeper-3.2.2.jar

hbase-env.sh

export HBASE_CLASSPATH=/usr/local/hadoop/conf

HBaseプログラミング > インストール > 最小設定(擬似分散モード)

HBaseプログラミング

HBase とは

データモデル実装

インストール

デモ

問題点とトピックス

最小設定(擬似分散モード)

最小設定(完全分散モード)

Page 13: 20100724 HBaseプログラミング

Presented: 07/24/2010Copyright © 2010 Happy-Camper Street.

Presentation Demo

Presented: 07/24/2010

最小設定 ( 完全分散モード )hbase-site.xml

<configuration> <property> <name>hbase.rootdir</name> <value>hdfs://node0:9000/hbase</value> </property> <property> <name>hbase.cluster.distributed</name> <value>true</value> </property> <property> <name>hbase.zookeeper.quorum</name> <value>node0</value> </property></configuration>

regionservers

rs01rs02・・・

HBaseプログラミング

HBase とは

データモデル実装

インストール

デモ

問題点とトピックス

最小設定(擬似分散モード)

最小設定(完全分散モード)

HBaseプログラミング > インストール > 最小設定(完全分散モード)

Page 14: 20100724 HBaseプログラミング

Presented: 07/24/2010Copyright © 2010 Happy-Camper Street.

Presentation Demo

Presented: 07/24/2010

Demoやること

Twitter Streaming API からデータ取り込み

取り込んだデータを MapReduce で解析

データモデル

- 言語 (user:lang) で集計- ソース (status#source) で集計- ハッシュタグ (status#textから抽出) で集計

Column "user:" Column "status:" Row Key ts

"000000000059e658" Status

Status

"status:0000000466161916"

"status:0000000465e3d8a1"5891672L

"Takuya UESHIN"

"user:id"

"user:name"

"ja" "user:lang"

・・・

t1

t2

http://stream.twitter.com/1/statuses/sample.xml?delimited=length

http://hadoop.happy-camper.st/browser/trunk/hbase-twitter

HBaseプログラミング

HBase とは

データモデル

実装

インストール

デモ

問題点とトピックス

HBaseプログラミング > デモ

Page 15: 20100724 HBaseプログラミング

Presented: 07/24/2010Copyright © 2010 Happy-Camper Street.

Presentation Demo

Presented: 07/24/2010

HBaseプログラミング

HBase とは

データモデル

実装

インストール

デモ

問題点とトピックス

HBaseプログラミング

問題点

ファイルディスクリプタの枯渇

メモリ設定

- メモリを大量に使います。

- スワップアウトが起きない範囲でできるだけ大きく設定する。

- Region Server、HDFS Data Node、Hadoop Task Tracker を同居させるなら最低でも 8GB。

- データファイルをオープンしたまま。

- ファイルシステムの ulimit を超えがち。

- ファイルディスクリプタの ulimit の値を増やす必要がある。

などなど、設定、大変みたいです。。。

Page 16: 20100724 HBaseプログラミング

Presented: 07/24/2010Copyright © 2010 Happy-Camper Street.

Presentation Demo

Presented: 07/24/2010

HBaseプログラミング

HBase とは

データモデル

実装

インストール

デモ

問題点とトピックス

HBaseプログラミング

トピックスApache Top Level Project へ昇格 (2010/03/10)

Pig/Hive インテグレーション

0.20.6 リリース準備中。

 - 7/26 まで VOTE やってます

バージョンのつけ方が変わります。

 - 0.20 現安定版

 - 0.89 開発版

  → 0.90、1.0 へ

- Twitter で Pig と HBase の統合を開発中

- Facebook で Hive と HBase の統合を開発中

などなど、大手も力入れてます。

Page 17: 20100724 HBaseプログラミング

Presented: 07/24/2010Copyright © 2010 Happy-Camper Street.

Presentation Demo

Presented: 07/24/2010

ご静聴ありがとうございました。

HBaseプログラミング

HBase とは

データモデル

実装

インストール

デモ

問題点とトピックス

HBaseプログラミング