-[[HBaseとはどんなNoSQLデータベースなのか? 日本語で読める情報を集めてみた:http://www.publickey1.jp/blog/10/hbasenosql.html]]

-[[KeyValueストア:http://lunarium.info/arc/index.php/KeyValue%E3%82%B9%E3%83%88%E3%82%A2]]
-[[HBaseの利用:http://lunarium.info/arc/index.php/HBase%E3%81%AE%E5%88%A9%E7%94%A8]]
--[[SQLとHBaseの操作比較:http://lunarium.info/arc/index.php/SQL%E3%81%A8HBase%E3%81%AE%E6%93%8D%E4%BD%9C%E6%AF%94%E8%BC%83]]
-[[HBase 基礎文法最速マスター:http://d.hatena.ne.jp/Takao/20100204]]
-[[HBase v.s. MySQL:http://d.hatena.ne.jp/scinfaxi/20100617/1276807922]]
-[[HBaseメモ:http://www.ne.jp/asahi/hishidama/home/tech/apache/hbase/]]

-[[第1回HBaseとCassandraの討論会のメモ:http://blog.goo.ne.jp/hishidama/e/de2482835a64caf9c3c2791f79712f63]]
-[[Key-Value Store (KVS) 入門 [PDF]:http://www-06.ibm.com/jp/domino01/mkt/cnpages7.nsf/ec7481a5abd4ed3149256f9400478d7d/4925722f004efe9249257728001b017c/$FILE/KVS_Introduction_v1_2.pdf]]
-[[HBasics An Introduction to Hadoop HBase HUGUK, April 14th,:http://www.docstoc.com/docs/25442379/HBasics-An-Introduction-to-Hadoop-HBase-HUGUK-April-14th]]

* 概要 [#kd223fb1]
-HadoopのHDFS上に構築されたデータベース
-ランダムアクセス、シーケンシャルアクセス共に低レイテンシで行えるデータストア
-テーブルはリージョンに自動的に分割され、リージョンはワーカーノードにランダムに割り当てられる
-テーブル構造は柔軟で、行を書き込むときに自由にカラムを追加できる
-データ型はByte配列
-カラム指向
-リアルタイム、MapReduce処理の両方に対応可能
-自動シャーディング
-インデックスは持たない
-レコードはキー順に格納される
-SQLはサポートされない
-強い一貫性
--更新前の古いデータが見えることはない
--レコードに関する操作はアトミック

* HBaseの構成要素 [#s5cdb55e]
** テーブル・ファイル [#jde9d85d]
-名前の付いたTableに、Rowと呼ばれる従来のRDBでいうレコードに相当する形式でデータを保持
-各データはKeyと任意の数のColumnを持っており、Key順に並べられて保持されている
-同一のTableでも保持するColumnの数が大きく変化する為にTableはまばらな状態で蓄えられる
-Columnの名称は"<Family>:<Label>"という形式になっており、<Family>と<Label>とで任意の大きさのByteArrayになっている
-実File上ではColumnFamilies毎に分かれて保存されている
-HBaseのTableはRowKeyの昇順、Column名の昇順、Timestampの降順の順で並べられたRowの塊に見えるが、実際は一定範囲毎にRowを区切り、Region(BigTableのTabletに相当)と呼ばれるファイルの形で保存される
-Regionは先頭Key(実ファイル含む)から末尾Key(実ファイル含まず)を含んでおり、適切な順で並べられたRegionファイルが、一個のTableに相当する
-Regionファイルの内部で各ColumnFamilyはHStoreとして保存される

** サーバ [#oca0b17f]
-HBaseMaster (HM)
--リージョンファイルのロードバランシング
-HRegionServer (RS)
--リージョンファイルの保持
--読み込み、書き込み
-ZooKeeper (ZK)
--Rootテーブルの位置情報保持
--HBaseMasterの情報保持
-HDFS
--分散ファイルシステム
--データの複製を保存

* 使い方 on Mac OS X [#fce913a5]
-[[HBase/Hadoop on Mac OS X:http://blog.ibd.com/howto/hbase-hadoop-on-mac-ox-x/]]
-[[Cygwin で Hadoop 0.20.1 を動かす:http://blog.livedoor.jp/maru_tak/archives/50751495.html]]
-[[HBase Clusterの作り方:http://lunarium.info/arc/index.php/HBase_Cluster%E3%81%AE%E4%BD%9C%E3%82%8A%E6%96%B9]]

** Hadoopのインストール・起動/停止 [#lf2d37a7]
-Hadoop の[[ダウンロード:http://www.apache.org/dyn/closer.cgi/hadoop/core/]]
-HBase の[[ダウンロード:http://www.apache.org/dyn/closer.cgi/hadoop/hbase/]]
-展開してできたフォルダを /usr/local/ に移動し、シンボリックリンクを張る
 $ cd /usr/local
 $ sudo ln -s hadoop-0.20.2 hadoop
 $ sudo ln -s hbase-0.20.6 hbase
-/usr/local/hadoop/conf/hadoop-env.sh の JAVA_HOME を編集
 export JAVA_HOME=/System/Library/Frameworks/JavaVM.framework/Versions/CurrentJDK/Home
-Hadoop用にSSHのキーファイルを生成
 $ ssh-keygen -t dsa -P '' -f ~/.ssh/id_dsa_for_hadoop
 $ cat ~/.ssh/id_dsa_for_hadoop.pub >> ~/.ssh/authorized_keys
-/usr/local/hadoop/conf/hadoop-env.sh の HADOOP_SSH_OPTS を編集
 export HADOOP_SSH_OPTS="-i /Users/$USER/.ssh/id_dsa_for_hadoop"

-設定ファイル(/usr/local/hadoop/conf/*.xml)の編集
--core-site.xml
 <configuration>
   <property>
     <name>fs.default.name</name>
     <value>hdfs://localhost:9000</value>
   </property>
 </configuration>

--hdfs-site.xml
 <configuration>
   <property>
     <name>dfs.replication</name>
     <value>1</value>
   </property>
 </configuration>

--mapred-site.xml
 <configuration>
   <property>
     <name>mapred.job.tracker</name>
     <value>localhost:9001</value>
   </property>
 </configuration>

-初回だけ以下を実行
 $ /usr/local/hadoop/bin/hadoop namenode -format

-起動
 $ /usr/local/hadoop/bin/start-all.sh
 
-プロセス確認
 $ ps ax | grep hadoop
 org.apache.hadoop.mapred.JobTracker
 org.apache.hadoop.hdfs.server.namenode.NameNode
 org.apache.hadoop.mapred.TaskTracker
 org.apache.hadoop.hdfs.server.namenode.SecondaryNameNode
 org.apache.hadoop.hdfs.server.datanode.DataNode

-停止
 $ /usr/local/hadoop/bin/stop-all.sh

-管理画面
--[[NameNode:http://localhost:50070/]]
--[[JobTracker:http://localhost:50030/]]

** HBaseのインストール・起動/停止 [#c22e3450]
-/usr/local/hbase/conf/hbase-env.sh の JAVA_HOME を編集
 export JAVA_HOME=/System/Library/Frameworks/JavaVM.framework/Versions/CurrentJDK/Home
 export HBASE_CLASSPATH=/usr/local/hadoop/conf
 export HBASE_SSH_OPTS="-i /Users/$USER/.ssh/id_dsa_for_hadoop"

-テスト
 $ /usr/local/hbase/bin/hbase shell

-起動
 $ /usr/local/hbase/bin/start-hbase.sh
-停止
 $ /usr/local/hbase/bin/stop-hbase.sh

** HBase shell でテスト [#j7bac66f]
 $ /usr/local/hbase/bin/hbase shell
 hbase(main):001:0> help
 hbase(main):002:0> create "mylittletable", "mylittlecolumnfamily"
 hbase(main):003:0> describe "mylittletable"
 hbase(main):004:0> put "mylittletable", "myrow", "mylittlecolumnfamily:x", "v"
 hbase(main):005:0> get "mylittletable", "myrow"
 hbase(main):006:0> scan "mylittletable"

* パフォーマンス [#a512978a]
-[[Cassandra versus HBase performance study:http://www.mail-archive.com/cassandra-user@incubator.apache.org/msg02312.html]]
--[[High level summary:http://www.brianfrankcooper.net/pubs/ycsb-v4.pdf]]
--[[Detailed paper:http://www.brianfrankcooper.net/pubs/ycsb.pdf]]

** チューニング [#l0e48d78]
-[[HBase:Java VM の GC とメモリー関連の設定:http://jp.hmaster.info/2010/06/hbase-java-vm-gc.html]]

-HBase を安定稼動させるためには、Java VM のレスポンス悪化を防ぐことが非常に重要
-サーバーには十分な RAM を搭載し、Java VM のヒープサイズや、カーネルパラメータ(vm.swappiness)も適切に設定する必要がある
--HBase の一般的な構成、Region Server、HDFS Data Node、Hadoop Task Trackerを同じサーバー上で稼働させるためには、最低でも、8GB の RAM を搭載する必要がある。20GB前後搭載するのが一般的。

-[[Facebook の HDFS クラスターは 21 PB !!!:http://agilecat.wordpress.com/2010/06/25/]]
--21 PB of storage in a single HDFS cluster
--2000 machines
--12 TB per machine (a few machines have 24 TB each)
--1200 machines with 8 cores each + 800 machines with 16 cores each
--32 GB of RAM per machine
--15 map-reduce tasks per machine

* 運用 [#rd64a0c2]
-[[私たちがHBaseを使い続ける理由 Part 1:http://groups.google.com/group/nosql-ja/msg/80e49f5348b00d60]]

* 各言語での使用 [#f2f1b7d7]
** Scala [#vb72c650]
-[[Hbase/Scala:http://wiki.apache.org/hadoop/Hbase/Scala]]
-[[HBase MapReduce in Scala:http://happy-camper.st/lang/java/hbase/hbase-mapreduce-in-scala.html]]
-[[ScalaからHBaseを使ってみる(0.20.6):http://www.mwsoft.jp/programming/hadoop/hbase_scala.html]]

* 事例 [#nfda5f45]
-[[Facebook の HBase は、毎月 1350億 メッセージを処理する!:http://agilecat.wordpress.com/2010/11/18/facebook-%E3%81%AE-hbase-%E3%81%AF%E3%80%81%E6%AF%8E%E6%9C%88-1350%E5%84%84-%E3%83%A1%E3%83%83%E3%82%BB%E3%83%BC%E3%82%B8%E3%82%92%E5%87%A6%E7%90%86%E3%81%99%E3%82%8B%EF%BC%81-cloud-cloudcomputing/]]

トップ   編集 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS