[[PageOutline]]
= '''''HBase''''' =
== 【簡易安裝手冊】 ==
* How to download and run HBase? in about 10 Minutes.
* 以下有幾個簡單的步驟:(包含了下載.安裝及配置HBase)
* 首先需要先下載HBase最新且穩定的版本[http://www.apache.org/dyn/closer.cgi/hadoop/hbase/ Download]
* 接著將下載的檔案移到你想要跑HBase的目錄下,如/home/user/hbase
* 移動到/home/user/hbase此目錄下
{{{
$ cd /home/user/hbase
}}}
* 編輯conf/hbase-env.sh檔案,加入以下這行 (需視使用者的JAVA路徑而定)
{{{
$ vi conf/hbase-env.sh
export JAVA_HOME=/usr/lib/jvm/java-6-sun-1.6.0.03
}}}
* 啟動hbase
{{{
$ bin/start-hbase.sh
}}}
* 可以在預設的logs/目錄下看到不少logs檔案
* 可以執行以下指令進到HQL指令模式,可以試試看
{{{
$ bin/hbase shell
Hbase Shell, 0.0.2 version.
Copyright (c) 2007 by udanax, licensed to Apache Software Foundation.
Type 'help;' for usage.
hql > help;
Type 'help COMMAND;' to see command-specific usage.
+-------------------------+-------------------------+-------------------------+
| Command | Description | Example |
+-------------------------+-------------------------+-------------------------+
| EXIT | Exit shell | EXIT; |
+-------------------------+-------------------------+-------------------------+
| ALTER | Alter structure of table| ALTER TABLE table_name A|
| | | DD column_spec | ADD (co|
| | | lumn_spec, column_spec, |
| | | ...) | CHANGE column_fam|
| | | ily column_spec | DROP c|
| | | olumn_family_name | CHAN|
| | | GE column_spec; |
+-------------------------+-------------------------+-------------------------+
| CREATE | Create tables | CREATE TABLE table_name |
| | | (column_family_name [MAX|
| | | _VERSIONS=n] [MAX_LENGTH|
| | | =n] [COMPRESSION=NONE|RE|
| | | CORD|BLOCK] [IN_MEMORY] |
| | | [BLOOMFILTER=NONE|BLOOMF|
| | | ILTER|COUNTING_BLOOMFILT|
| | | ER|RETOUCHED_BLOOMFILTER|
| | | VECTOR_SIZE=n NUM_HASH=|
| | | n], ...) |
+-------------------------+-------------------------+-------------------------+
| INSERT | Insert values into table| INSERT INTO table_name (|
| | | column_name, ...) VALUES|
| | | ('value', ...) WHERE ro|
| | | w='row_key' [TIMESTAMP '|
| | | timestamp']; |
+-------------------------+-------------------------+-------------------------+
| DROP | Drop tables | DROP TABLE table_name [,|
| | | table_name] ...; |
+-------------------------+-------------------------+-------------------------+
| TRUNCATE | Truncate table is used t| TRUNCATE TABLE table_nam|
| | o clean all data from a | e; |
| | table | |
+-------------------------+-------------------------+-------------------------+
| DESCRIBE | Print table information | [DESCRIBE|DESC] table_na|
| | | me; |
+-------------------------+-------------------------+-------------------------+
| JAR | Hadoop RunJar util | JAR jarFile [mainClass] |
| | | arguments...; |
+-------------------------+-------------------------+-------------------------+
| FS | Hadoop FsShell; entering| FS [-option] arguments..|
| | a lone 'FS;' will emit | ; |
| | usage | |
+-------------------------+-------------------------+-------------------------+
| DELETE | Delete table data | DELETE {column_name, [, |
| | | column_name] ... | *} FR|
| | | OM table_name WHERE row=|
| | | 'row-key'; |
+-------------------------+-------------------------+-------------------------+
| SELECT | Select values from table| SELECT {column_name, [, |
| | | column_name] ... | expr[|
| | | alias] | * } FROM table_|
| | | name [WHERE row='row_key|
| | | ' | STARTING FROM 'row-k|
| | | ey' [UNTIL 'stop-key']] |
| | | [NUM_VERSIONS = version_|
| | | count] [TIMESTAMP 'times|
| | | tamp'] [LIMIT = row_coun|
| | | t] [INTO FILE 'file_name|
| | | ']; |
+-------------------------+-------------------------+-------------------------+
| SHOW | Show information about s| SHOW TABLES [or substitu|
| | elected title | tion variable name]; |
+-------------------------+-------------------------+-------------------------+
| CLEAR | Clear the screen | CLEAR; |
+-------------------------+-------------------------+-------------------------+
hql > help;
Type 'help COMMAND;' to see command-specific usage.
+-------------------------+-------------------------+-------------------------+
| Command | Description | Example |
+-------------------------+-------------------------+-------------------------+
| EXIT | Exit shell | EXIT; |
+-------------------------+-------------------------+-------------------------+
| ALTER | Alter structure of table| ALTER TABLE table_name A|
| | | DD column_spec | ADD (co|
| | | lumn_spec, column_spec, |
| | | ...) | CHANGE column_fam|
| | | ily column_spec | DROP c|
| | | olumn_family_name | CHAN|
| | | GE column_spec; |
+-------------------------+-------------------------+-------------------------+
| CREATE | Create tables | CREATE TABLE table_name |
| | | (column_family_name [MAX|
| | | _VERSIONS=n] [MAX_LENGTH|
| | | =n] [COMPRESSION=NONE|RE|
| | | CORD|BLOCK] [IN_MEMORY] |
| | | [BLOOMFILTER=NONE|BLOOMF|
| | | ILTER|COUNTING_BLOOMFILT|
| | | ER|RETOUCHED_BLOOMFILTER|
| | | VECTOR_SIZE=n NUM_HASH=|
| | | n], ...) |
+-------------------------+-------------------------+-------------------------+
| INSERT | Insert values into table| INSERT INTO table_name (|
| | | column_name, ...) VALUES|
| | | ('value', ...) WHERE ro|
| | | w='row_key' [TIMESTAMP '|
| | | timestamp']; |
+-------------------------+-------------------------+-------------------------+
| DROP | Drop tables | DROP TABLE table_name [,|
| | | table_name] ...; |
+-------------------------+-------------------------+-------------------------+
| TRUNCATE | Truncate table is used t| TRUNCATE TABLE table_nam|
| | o clean all data from a | e; |
| | table | |
+-------------------------+-------------------------+-------------------------+
| DESCRIBE | Print table information | [DESCRIBE|DESC] table_na|
| | | me; |
+-------------------------+-------------------------+-------------------------+
| JAR | Hadoop RunJar util | JAR jarFile [mainClass] |
| | | arguments...; |
+-------------------------+-------------------------+-------------------------+
| FS | Hadoop FsShell; entering| FS [-option] arguments..|
| | a lone 'FS;' will emit | ; |
| | usage | |
+-------------------------+-------------------------+-------------------------+
| DELETE | Delete table data | DELETE {column_name, [, |
| | | column_name] ... | *} FR|
| | | OM table_name WHERE row=|
| | | 'row-key'; |
+-------------------------+-------------------------+-------------------------+
| SELECT | Select values from table| SELECT {column_name, [, |
| | | column_name] ... | expr[|
| | | alias] | * } FROM table_|
| | | name [WHERE row='row_key|
| | | ' | STARTING FROM 'row-k|
| | | ey' [UNTIL 'stop-key']] |
| | | [NUM_VERSIONS = version_|
| | | count] [TIMESTAMP 'times|
| | | tamp'] [LIMIT = row_coun|
| | | t] [INTO FILE 'file_name|
| | | ']; |
+-------------------------+-------------------------+-------------------------+
| SHOW | Show information about s| SHOW TABLES [or substitu|
| | elected title | tion variable name]; |
+-------------------------+-------------------------+-------------------------+
| CLEAR | Clear the screen | CLEAR; |
+-------------------------+-------------------------+-------------------------+
hql >
}}}
* 要結束hbase server 可用以下指令,而避免使用kill pid指令來殺掉pid,尤其是恐怖的指令kill -9 pid
{{{
$ bin/stop-hbase.sh
}}}
* 解釋: kill -9 是當 kill -15 砍不掉的時候 才用,kill -15 會去幫你注意檔案或裝置讀寫有沒有關起來,kill -9 就不管,直接停掉process (reference from sunny)
* 注意:如果有要跑一個遠端的HDFS,而希望可以用hbase連接,此時需要編輯conf/hbase-site.xml檔案,如下
{{{
$ vi conf/hbase-site.xml
hbase.rootdir
file:///tmp/hbase-${user.home}/hbase
hdfs://localhost:9000/hbase
The directory shared by region servers.
Should be fully-qualified to include the filesystem to use.
}}}
== 【常見問題】 ==
1. HBase資料庫系統在執行關閉伺服器指令後,再重新啟動時裡面的資料表都會遺失? [[BR]]
Ans: 在hbase/conf目錄裡有一個預設的組態檔hbase-default.xml,裡面的hbase.rootdir屬性預設值是"file:///tmp/hbase-${user.home}/hbase", 這表示hbase的檔案系統預設是掛載在使用本機的/tmp目錄底下,如果是沒有特別去備份/tmp目錄,或是把/tmp掛載到ram disc裡的情況下,裡面的資料庫資料會在重新啟動作業系統後被作業系統自動清空,因此,只要把hbase.rootdir指定到其他可以永續存放的磁碟空間,就可以解決資料表存放的問題。hbase.rootdir可以直接設定在hbase-default.xml裡或是hbase-site.xml,hbase系統讀取設定檔的優先權順序是hbase-site.xml高於hbase-default.xml,如果想保留原本的預設值,一般是建議直接放到hbase-site.xml就可以了。屬性內容如下:
{{{
value可以自由設定路徑,description非必填,name則是固定的屬性名稱
hbase.rootdir
file:///${user.home}/hbase/dbstored
The directory shared by region servers.
Should be fully-qualified to include the filesystem to use.
}}}
== 【研究團隊】 ==
* 此網頁內容為國網中心雲端技術研究小組之雲端資料庫(Cloud DB)研究人員之共同研究心得分享,內容如有疏誤請多包含。
* 技術顧問: 王耀聰
* 研究人員: 陳惠珊,陳威宇,王心怡
* 編輯人員: 陳惠珊,王心怡
== 【相關網址】 ==
* [http://mypaper.pchome.com.tw/news/chris0426/3/1311004270/20081103154837/ Hbase 的簡易安裝手冊] - 引用本篇文章