小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

HBase使用教程 - 推酷

 bzol 2015-09-11

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還有兩種安裝模式:偽分布式模式和分布式模式。

偽分布式模式是把進程運行在一臺機器上,但不是一個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)如下所示:

Row Key

Time Stamp

ColumnFamily contents

ColumnFamily anchor

'com.cnn.www'

t9

anchor:cnnsi.com = 'CNN'

'com.cnn.www'

t8

anchor:my.look.ca = 'CNN.com'

'com.cnn.www'

t6

contents:html = '<html>...'

'com.cnn.www'

t5

contents:html = '<html>...'

'com.cnn.www'

t3

contents:html = '<html>...'

4.2 行、列族、列

行以rowkey作為唯一標示。Rowkey是一段字節(jié)數(shù)組,這意味著,任何東西都可以保存進去,例如字符串、或者數(shù)字。行是按字典的排序由低到高存儲在表中。

列族是列的集合。要準確表示一個列,需要“列族:列名”的方式。例如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失效表

功能:失效一個表。當需要修改表結(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,則第二次被認為是更新操作。

使用: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命令里并沒有

使用:

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多