1 基本介紹1.1 前言HBase – Hadoop Database,是一個分布式的、面向列的開源數(shù)據(jù)庫,該技術(shù)來源于 Fay Chang 所撰寫的Google論文“Bigtable:一個結(jié)構(gòu)化數(shù)據(jù)的 分布式存儲系統(tǒng) ”。就像Bigtable利用了Google文件系統(tǒng)(File System)所提供的分布式數(shù)據(jù)存儲一樣,HBase在Hadoop之上提供了類似于Bigtable的能力。HBase是Apache的Hadoop項目的子項目。 HBase不同于一般的關(guān)系數(shù)據(jù)庫,它是一個適合于非結(jié)構(gòu)化數(shù)據(jù)存儲的數(shù)據(jù)庫。另一個不同的是HBase基于列的而不是基于行的模式。 HBase是一個高 可靠 性、高性能、面向列、可伸縮的 分布式存儲系統(tǒng) ,利用HBase技術(shù)可在廉價PC Server上搭建起大規(guī)模 結(jié)構(gòu) 化 存儲 集群。 2 安裝和使用2.1 下載HBase的官方網(wǎng)站http://www./dyn/closer.cgi/hbase/上面可以下載到各種版本。目前用最新版本是0.98.2,建議下載stable目錄下的穩(wěn)定版本。 2.2 安裝安裝依賴基礎(chǔ)要求 1. Linux操作系統(tǒng) 根據(jù)HBase的官方介紹,HBase沒有在windows下測試過,因而,我們都是將HBase安裝在Linux操作系統(tǒng)上。我本機安裝的Ubuntu 12.04的虛擬機。 2. Jdk HBase需要jdk支持其運行,jdk版本要求是1.6及其以上。 這里暫且把Linux虛擬機的安裝和虛擬機上jdk的安裝過程跳過,可以參照網(wǎng)上其他相關(guān)資料執(zhí)行。 HBase的安裝方法比較簡單,將我們下載的HBase的安裝包hbase-0.94.20.tar.gz拷貝到Linux的根目錄下。 接著執(zhí)行以下命令和配置,之后啟動HBase: 1. 解壓縮安裝包 root@ubuntu:/# tar xfz hbase-0.94.20.tar.gz root@ubuntu:/# cd hbase-0.94.20 2. 配置數(shù)據(jù)存儲目錄 正如官方文檔描述的那樣,這時我們可以直接啟動HBase,這樣的話,使用的數(shù)據(jù)存儲目錄為 /tmp/hbase-${user.name},也就意味著,我們一旦重啟Linux,我們先前存儲的數(shù)據(jù)就將丟失。 Linux下執(zhí)行以下命令: root@ubuntu:/# cd /hbase-0.94.20/conf/ root@ubuntu:/hbase-0.94.20/conf# vi hbase-site.xml 之后,修改配置文件內(nèi)容為: <?xml version='1.0'?> <?xml-stylesheet type='text/xsl'href='configuration.xsl'?> <configuration> <property> <name>hbase.rootdir</name> <value>file:///hbase_data/hbase</value> </property> </configuration> 3. 啟動HBase root@ubuntu:/hbase-0.94.20/conf# ../bin/start-hbase.sh starting master, logging to/hbase-0.94.20/bin/../logs/hbase-root-master-ubuntu.out 至此,單機模式啟動HBase已經(jīng)完成了。HBase的停止腳本是相同目錄下的stop-hbase.sh。 2.3 HBase安裝模式在上一節(jié)中我們提到,我們安裝的是單機模式。單機模式表示,我們所有的服務(wù)都運行在一個JVM上,包括HBase和Zookeeper。 另外,HBase還有兩種安裝模式:偽分布式模式和分布式模式。 偽分布式模式是把進(jìn)程運行在一臺機器上,但不是一個JVM。 完全分布式模式就是把整個服務(wù)被分布在各個節(jié)點上了 。 偽分布式模式和分布式模式依賴安裝較多其他組件和服務(wù),安裝過程較為復(fù)雜,將會在另一篇文章中專門介紹。 3 開始一個例子大多數(shù)技術(shù)人員happy的時候開始了。我們開始一個簡單的Helloworld。 3.1 使用HBase shell連接HBase使用HBase自帶的客戶端連接工具,連接到HBase: 3.2 創(chuàng)建User表輸入以下命令并執(zhí)行: 3.3 對User表簡單地增刪改查往User表中插入一條信息: 查詢剛才插入的信息: 3.4 檢查數(shù)據(jù)存儲目錄我們看一下之前我們配置的數(shù)據(jù)存儲目錄的變化: 我們可以看到,在之前配置的數(shù)據(jù)存儲目錄下,已經(jīng)新添加了一些用于存儲我們剛才存入的數(shù)據(jù)的文件了。 4 HBase基礎(chǔ)定義和概念4.1 表HBase是一個數(shù)據(jù)庫,數(shù)據(jù)以表的形式存儲在Hbase中。 正如我們在hello world中定義中的User表類似,HBase的表的結(jié)構(gòu)如下所示:
4.2 行、列族、列行以rowkey作為唯一標(biāo)示。Rowkey是一段字節(jié)數(shù)組,這意味著,任何東西都可以保存進(jìn)去,例如字符串、或者數(shù)字。行是按字典的排序由低到高存儲在表中。 列族是列的集合。要準(zhǔn)確表示一個列,需要“列族:列名”的方式。例如Hello world中的name列,應(yīng)該被表示為“personalinfo:name”。 值得注意的是,列族被要求在創(chuàng)建表時指定,但列不需要,可以隨時使用的時候創(chuàng)建。另外,一個列族的成員在文件系統(tǒng)上都存儲在一起,因而列族中的所有列的存取方式都是一致的。HBase的存儲優(yōu)化就都針對列族級別,例如,我們可以考慮將經(jīng)常需要一起取出來分析的信息,都存儲在一個列族上。 5 HBase常用的操作為了方便大家開發(fā)過程中快速查詢,這里分類介紹最常見的HBase命令。HBase shell中支持的所有命令,可以通過help命令來列舉出來。如下所示: 這里只是截取了前部分命令,尚有部分命令不能再上圖中顯示。 5.1 一般命令5.1.1 status功能:查詢服務(wù)器狀態(tài) 使用: 5.1.2 version功能:查詢HBase版本信息 使用: 5.1.3 whoami功能:查看連接的用戶 使用: 5.2 DDL命令5.2.1 Create創(chuàng)建表功能:創(chuàng)建一個表。正如之前提到的,創(chuàng)建一個表時,不指定具體的列名,但要指定列族名。 使用:create ‘表名’,’列族名1’,’列族名2’ 5.2.2 disable失效表功能:失效一個表。當(dāng)需要修改表結(jié)構(gòu)、刪除表時,需要先執(zhí)行此命令。 使用: 5.2.3 enable使失效表有效功能:使表有效。在失效表以后,需要執(zhí)行此命令,以使得表可用。 使用: 5.2.4 alter修改表結(jié)構(gòu)功能:修改表結(jié)構(gòu),包括新增列族、刪除列族等 使用: 新增列族(記得在執(zhí)行alter之前,要先disable表) 刪除列族 重命名列族 列族不能被重命名。重命名一個列族的通常途徑是使用API創(chuàng)建一個有著期望名稱的新的列族,然后將數(shù)據(jù)復(fù)制過去,最后再刪除舊的列族。 5.2.5 describe查看表結(jié)構(gòu)功能:查看表結(jié)構(gòu) 使用: 5.2.6 list列舉數(shù)據(jù)庫中的所有表功能:查看數(shù)據(jù)庫中所有的表 使用: 5.2.7 drop刪除表功能:刪除指定的表 使用: 5.3 DML命令5.3.1 put插入數(shù)據(jù)功能:插入一條數(shù)據(jù)到指定的表中。對于同一個rowkey,如果執(zhí)行兩次put,則第二次被認(rèn)為是更新操作。 使用:put ‘表名’,’列族名1:列名1’,’值’ 5.3.2 get獲取數(shù)據(jù)功能:獲取數(shù)據(jù) 使用: 獲取指定rowkey的指定列族指定列的數(shù)據(jù) 獲取指定rowkey的指定列族所有的數(shù)據(jù) 獲取指定rowkey的所有數(shù)據(jù) 獲取指定時間戳的數(shù)據(jù) 5.3.3 Count計算表的行數(shù)功能:計算表的行數(shù) 使用: 5.3.4 put更新數(shù)據(jù)詳見5.3.1 5.3.5 scan全表掃描數(shù)據(jù)功能:掃描全表所有數(shù)據(jù) 使用: 5.3.6 delete刪除數(shù)據(jù)功能:刪除表中的數(shù)據(jù) 使用: 刪除指定rowkey的指定列族的列名的數(shù)據(jù) 刪除指定rowkey的指定列族的數(shù)據(jù) 5.3.7 deleteall刪除整行數(shù)據(jù)功能:刪除整行數(shù)據(jù) 使用: 5.3.8 truncate刪除全表數(shù)據(jù)功能:刪除表中所有的數(shù)據(jù)。正如你看到的,在HBase的help命令里并沒有 使用: |
|