日韩黑丝制服一区视频播放|日韩欧美人妻丝袜视频在线观看|九九影院一级蜜桃|亚洲中文在线导航|青草草视频在线观看|婷婷五月色伊人网站|日本一区二区在线|国产AV一二三四区毛片|正在播放久草视频|亚洲色图精品一区

分享

HBase使用教程 - 推酷

 bzol 2015-09-11

1     基本介紹

1.1 前言

HBase – Hadoop Database,是一個(gè)分布式的、面向列的開源數(shù)據(jù)庫(kù),該技術(shù)來源于 Fay Chang 所撰寫的Google論文“Bigtable:一個(gè)結(jié)構(gòu)化數(shù)據(jù)的 分布式存儲(chǔ)系統(tǒng) ”。就像Bigtable利用了Google文件系統(tǒng)(File System)所提供的分布式數(shù)據(jù)存儲(chǔ)一樣,HBase在Hadoop之上提供了類似于Bigtable的能力。HBase是Apache的Hadoop項(xiàng)目的子項(xiàng)目。

HBase不同于一般的關(guān)系數(shù)據(jù)庫(kù),它是一個(gè)適合于非結(jié)構(gòu)化數(shù)據(jù)存儲(chǔ)的數(shù)據(jù)庫(kù)。另一個(gè)不同的是HBase基于列的而不是基于行的模式。

HBase是一個(gè)高 可靠 性、高性能、面向列、可伸縮的 分布式存儲(chǔ)系統(tǒng) ,利用HBase技術(shù)可在廉價(jià)PC Server上搭建起大規(guī)模 結(jié)構(gòu)存儲(chǔ) 集群。

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下測(cè)試過,因而,我們都是將HBase安裝在Linux操作系統(tǒng)上。我本機(jī)安裝的Ubuntu 12.04的虛擬機(jī)。

2.   Jdk

HBase需要jdk支持其運(yùn)行,jdk版本要求是1.6及其以上。

這里暫且把Linux虛擬機(jī)的安裝和虛擬機(jī)上jdk的安裝過程跳過,可以參照網(wǎng)上其他相關(guān)資料執(zhí)行。

HBase的安裝方法比較簡(jiǎn)單,將我們下載的HBase的安裝包hbase-0.94.20.tar.gz拷貝到Linux的根目錄下。

接著執(zhí)行以下命令和配置,之后啟動(dòng)HBase:

1.   解壓縮安裝包

root@ubuntu:/# tar xfz hbase-0.94.20.tar.gz

root@ubuntu:/# cd hbase-0.94.20

2.   配置數(shù)據(jù)存儲(chǔ)目錄

正如官方文檔描述的那樣,這時(shí)我們可以直接啟動(dòng)HBase,這樣的話,使用的數(shù)據(jù)存儲(chǔ)目錄為 /tmp/hbase-${user.name},也就意味著,我們一旦重啟Linux,我們先前存儲(chǔ)的數(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.   啟動(dòng)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

至此,單機(jī)模式啟動(dòng)HBase已經(jīng)完成了。HBase的停止腳本是相同目錄下的stop-hbase.sh。

2.3 HBase安裝模式

在上一節(jié)中我們提到,我們安裝的是單機(jī)模式。單機(jī)模式表示,我們所有的服務(wù)都運(yùn)行在一個(gè)JVM上,包括HBase和Zookeeper。

另外,HBase還有兩種安裝模式:偽分布式模式和分布式模式。

偽分布式模式是把進(jìn)程運(yùn)行在一臺(tái)機(jī)器上,但不是一個(gè)JVM。

完全分布式模式就是把整個(gè)服務(wù)被分布在各個(gè)節(jié)點(diǎn)上了 。

偽分布式模式和分布式模式依賴安裝較多其他組件和服務(wù),安裝過程較為復(fù)雜,將會(huì)在另一篇文章中專門介紹。

3     開始一個(gè)例子

大多數(shù)技術(shù)人員happy的時(shí)候開始了。我們開始一個(gè)簡(jiǎn)單的Helloworld。

3.1 使用HBase shell連接HBase

使用HBase自帶的客戶端連接工具,連接到HBase:

3.2 創(chuàng)建User表

輸入以下命令并執(zhí)行:

3.3 對(duì)User表簡(jiǎn)單地增刪改查

往User表中插入一條信息:

 

查詢剛才插入的信息:

 

3.4 檢查數(shù)據(jù)存儲(chǔ)目錄

我們看一下之前我們配置的數(shù)據(jù)存儲(chǔ)目錄的變化:

我們可以看到,在之前配置的數(shù)據(jù)存儲(chǔ)目錄下,已經(jīng)新添加了一些用于存儲(chǔ)我們剛才存入的數(shù)據(jù)的文件了。

4     HBase基礎(chǔ)定義和概念

4.1 表

HBase是一個(gè)數(shù)據(jù)庫(kù),數(shù)據(jù)以表的形式存儲(chǔ)在Hbase中。

正如我們?cè)趆ello 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作為唯一標(biāo)示。Rowkey是一段字節(jié)數(shù)組,這意味著,任何東西都可以保存進(jìn)去,例如字符串、或者數(shù)字。行是按字典的排序由低到高存儲(chǔ)在表中。

列族是列的集合。要準(zhǔn)確表示一個(gè)列,需要“列族:列名”的方式。例如Hello world中的name列,應(yīng)該被表示為“personalinfo:name”。

值得注意的是,列族被要求在創(chuàng)建表時(shí)指定,但列不需要,可以隨時(shí)使用的時(shí)候創(chuàng)建。另外,一個(gè)列族的成員在文件系統(tǒng)上都存儲(chǔ)在一起,因而列族中的所有列的存取方式都是一致的。HBase的存儲(chǔ)優(yōu)化就都針對(duì)列族級(jí)別,例如,我們可以考慮將經(jīng)常需要一起取出來分析的信息,都存儲(chǔ)在一個(gè)列族上。

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)建一個(gè)表。正如之前提到的,創(chuàng)建一個(gè)表時(shí),不指定具體的列名,但要指定列族名。

使用:create ‘表名’,’列族名1’,’列族名2’

5.2.2 disable失效表

功能:失效一個(gè)表。當(dāng)需要修改表結(jié)構(gòu)、刪除表時(shí),需要先執(zhí)行此命令。

使用:

5.2.3 enable使失效表有效

功能:使表有效。在失效表以后,需要執(zhí)行此命令,以使得表可用。

使用:

5.2.4 alter修改表結(jié)構(gòu)

功能:修改表結(jié)構(gòu),包括新增列族、刪除列族等

使用:

新增列族(記得在執(zhí)行alter之前,要先disable表)

刪除列族

 

重命名列族

列族不能被重命名。重命名一個(gè)列族的通常途徑是使用API創(chuàng)建一個(gè)有著期望名稱的新的列族,然后將數(shù)據(jù)復(fù)制過去,最后再刪除舊的列族。

5.2.5 describe查看表結(jié)構(gòu)

功能:查看表結(jié)構(gòu)

使用:

 

5.2.6 list列舉數(shù)據(jù)庫(kù)中的所有表

功能:查看數(shù)據(jù)庫(kù)中所有的表

使用:

 

5.2.7 drop刪除表

功能:刪除指定的表

使用:

5.3 DML命令

5.3.1 put插入數(shù)據(jù)

功能:插入一條數(shù)據(jù)到指定的表中。對(duì)于同一個(gè)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í)間戳的數(shù)據(jù)

5.3.3 Count計(jì)算表的行數(shù)

功能:計(jì)算表的行數(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命令里并沒有

使用:

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

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多