Top Banner
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 プログラミング
17

20100724 HBaseプログラミング

Jan 15, 2015

Download

Documents

Takuya UESHIN

 
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
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プログラミング