日日操夜夜添-日日操影院-日日草夜夜操-日日干干-精品一区二区三区波多野结衣-精品一区二区三区高清免费不卡

公告:魔扣目錄網(wǎng)為廣大站長(zhǎng)提供免費(fèi)收錄網(wǎng)站服務(wù),提交前請(qǐng)做好本站友鏈:【 網(wǎng)站目錄:http://www.ylptlb.cn 】, 免友鏈快審服務(wù)(50元/站),

點(diǎn)擊這里在線咨詢客服
新站提交
  • 網(wǎng)站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會(huì)員:747

老劉今天復(fù)習(xí)HBase知識(shí)發(fā)現(xiàn)很多資料都沒有把概念說清楚,有很多專業(yè)名詞一筆帶過沒有解釋。比如這個(gè)框架高性能、高可用,那什么是高性能、高可用?怎么實(shí)現(xiàn)的高性能高可用?沒說!

如果面試官聽了你說的,會(huì)有什么反應(yīng)?我的感覺就是你說的東西都是別人的,沒有自己的理解。所以老劉才會(huì)寫用大白話講大數(shù)據(jù)這個(gè)系列,就是爭(zhēng)取把東西講清楚,講明白!如果覺得老劉寫得不錯(cuò),給老劉點(diǎn)個(gè)贊吧!

01 HBase知識(shí)點(diǎn)

大白話詳解大數(shù)據(jù)HBase,老劉真的很用心

 

第1點(diǎn):HBase的定義

大白話詳解大數(shù)據(jù)HBase,老劉真的很用心

 

官網(wǎng)畫紅框中直接就說,HBase是一個(gè)分布式、可擴(kuò)展的大數(shù)據(jù)存儲(chǔ)Hadoop數(shù)據(jù)庫(kù)。試想下,你是面試官,別人這樣回答你,你會(huì)不會(huì)滿意?老劉覺得學(xué)的東西要用自己的話講出來,才是真正的掌握。

在老劉看來,HBase,即Hadoop database,即Hadoop數(shù)據(jù)庫(kù)。

它的數(shù)據(jù)通常存儲(chǔ)在HDFS上,HDFS為HBase提供了高可靠性的底層存儲(chǔ)的支持;利用Hadoop MapReduce來處理HBase中的海量數(shù)據(jù),為HBase提供了高性能的計(jì)算能力;利用ZooKeeper為HBase提供了穩(wěn)定的服務(wù)。

根據(jù)上述所說,就可以總結(jié)為HBase是一個(gè)建立在HDFS之上,具有高可靠、高性能、可擴(kuò)展、支持海量數(shù)據(jù)存儲(chǔ)的分布式數(shù)據(jù)庫(kù)。

一般是在存儲(chǔ)數(shù)據(jù)比較大的時(shí)候,并且對(duì)讀寫性能要求比較高的時(shí)候,才會(huì)用到HBase數(shù)據(jù)庫(kù)。

那你們知道什么是讀寫性能比較高嗎?那就是讀的比較快、寫的也比較快的時(shí)候,才是讀寫性能比較高!

第2點(diǎn):HBase的特點(diǎn)

1)極易擴(kuò)展

HBase底層依賴HDFS,當(dāng)磁盤空間不足的時(shí)候,我們只需要?jiǎng)討B(tài)增加DataNode節(jié)點(diǎn)就可以了。當(dāng)然也可以通過增加服務(wù)器來對(duì)集群的存儲(chǔ)進(jìn)行擴(kuò)容。

2)海量存儲(chǔ)

可以存儲(chǔ)大批量的數(shù)據(jù)。在存儲(chǔ)海量數(shù)據(jù)的前提下,能在幾十到百毫秒內(nèi)返回?cái)?shù)據(jù)。這點(diǎn)和HBase的極易擴(kuò)展性非常相關(guān)。正因?yàn)镠Base良好的擴(kuò)展性,才為海量數(shù)據(jù)的存儲(chǔ)提供了便利。

3)列式存儲(chǔ)(這里一定要搞清楚列式存儲(chǔ)和行式存儲(chǔ)的區(qū)別)

這里的列式存儲(chǔ)其實(shí)說的是列族存儲(chǔ),HBase是根據(jù)列族來存儲(chǔ)數(shù)據(jù)的。列族下面可以有非常多的列,列族在創(chuàng)建表的時(shí)候就必須要指定了。

4)稀疏

稀疏主要是針對(duì)HBase列的靈活性,在列族中,你可以指定任意多的列,在列數(shù)據(jù)為空的情況下,是不會(huì)占用存儲(chǔ)空間的。

5)數(shù)據(jù)類型單一

它所有的數(shù)據(jù)都是以字節(jié)數(shù)組進(jìn)行存儲(chǔ)。

第3點(diǎn):HBase表的數(shù)據(jù)模型

大白話詳解大數(shù)據(jù)HBase,老劉真的很用心

 

先給出一張HBase的設(shè)計(jì)表,根據(jù)這張表進(jìn)行介紹表的結(jié)構(gòu)。

rowkey行鍵

1)它是表(table)的主鍵,table中的記錄按照rowkey的字典序進(jìn)行排序,這里就必須要說說什么是字典序?

有多機(jī)構(gòu)的資料就是一筆帶過,一點(diǎn)也不負(fù)責(zé),讓人非常不爽。老劉就不得不去搜搜字典序排序的相關(guān)知識(shí)。

通俗地講,字典序排序大概就是兩個(gè)作比較的內(nèi)容從第一個(gè)字母開始比較,按照ASCII碼表比較大小,小的放在前面,第一個(gè)相同就比較下一個(gè),都相同且一個(gè)比較完了,則短的排在前面。

常見ASCII碼的大小規(guī)則:0~9<A~Z<a~z

2)rowkey行鍵它可以是任意的字符串,其中它的最大長(zhǎng)度是 64KB,實(shí)際應(yīng)用中長(zhǎng)度一般為 10-100bytes。

Column Family列族

1)HBase表中的每個(gè)列,都?xì)w屬于某個(gè)列族。

2)列族是表的schema的一部分(而列不是),即建表時(shí)至少指定一個(gè)列族。

3)比如我們創(chuàng)建user表,包含info、data兩個(gè)列族,代碼就為create 'user', 'info', 'data'。

Column列

列肯定是表的某一個(gè)列族下的一個(gè)列,用列族名:列名表示,比如`info`列族下的`name`列,就表示為`info:name`。

Cell單元格

大白話詳解大數(shù)據(jù)HBase,老劉真的很用心

 

如上圖,我們通過指定rowkey行鍵、列族、列,就可以確定的一個(gè)Cell單元格。在Cell中的數(shù)據(jù)是沒有任何類型的,全部都是以字節(jié)數(shù)組的形式進(jìn)行存儲(chǔ)的。

Timestamp時(shí)間戳

這個(gè)說的就是可以對(duì)表中的Cell多次賦值,每次賦值操作時(shí)的時(shí)間戳timestamp,可看成Cell值的版本號(hào)version number。

也就是一個(gè)Cell可以有多個(gè)版本的值的意思。

第4點(diǎn):HBase架構(gòu)

大白話詳解大數(shù)據(jù)HBase,老劉真的很用心

 

從圖中可以看出,這是一個(gè)非常典型的主從架構(gòu)。下面詳細(xì)說下各個(gè)組件:

Client客戶端

Client它是操作HBase集群的入口,利用Client,再通過RPC與HMaster進(jìn)行通信,可以完成表的增、刪、改操作。也可以通過RPC與RegionServer通信,完成讀寫表數(shù)據(jù)的操作。

一般我們可以利用HBase shell或者JAVA API進(jìn)行編程,完成上述表的操作。

ZooKeeper集群

ZooKeeper是什么有什么用,老劉已經(jīng)在ZooKeeper框架那篇文章中詳細(xì)講解了,大家可以去看看。那它在HBase集群中的作用,就非常明顯了,① 它實(shí)現(xiàn)了HMaster的高可用,多HMaster間進(jìn)行主備選舉。② 保存了HBase的元數(shù)據(jù)信息meta表。③ 對(duì)HMaster和HRegionServer各個(gè)節(jié)點(diǎn)進(jìn)行監(jiān)控。

HMaster

HBase集群也是主從架構(gòu),HMaster是主角色,是集群的老大,主要負(fù)責(zé)管理表和Region。

那它管理表和Region做一些什么呢?

1)管理Client對(duì)表的增刪改的一些操作;

2)管理Region的操作就會(huì)比管理Client多一點(diǎn)。當(dāng)Region分裂后,負(fù)責(zé)新Region分配到指定的HRegionServer上;當(dāng)HRegionServer宕機(jī)后,負(fù)責(zé)其上的region的遷移;以及管理HRegionServer之間的負(fù)載均衡。

那大家有沒有了解負(fù)載均衡,什么是負(fù)載均衡?

舉個(gè)例子,一個(gè)網(wǎng)站最開始建立的時(shí)候,它的訪問量比較小,但當(dāng)它的流量變得特別大的時(shí)候,并發(fā)量就變得特別大了,網(wǎng)站就會(huì)出現(xiàn)訪問延遲的一些現(xiàn)象。這個(gè)時(shí)候呢,就需要用到負(fù)載均衡了。以前這個(gè)網(wǎng)站是一個(gè)單一服務(wù)器,現(xiàn)在就可以配置多個(gè)服務(wù)器集群,那樣就可以把訪問流量分發(fā)到集群中的不同服務(wù)器上,這樣就大大減少了單一服務(wù)器上的壓力,也就是負(fù)載均衡想要做的事。

HRegionServer

它是HBase集群中從角色,是集群中的小弟。它主要負(fù)責(zé)響應(yīng)客戶端的讀寫數(shù)據(jù)請(qǐng)求,以及負(fù)責(zé)管理一系列的Region。

Region

它是HBase集群中分布式存儲(chǔ)的最小單元,一個(gè)Region對(duì)應(yīng)一個(gè)Table表的部分?jǐn)?shù)據(jù)。簡(jiǎn)單理解就是表存儲(chǔ)在HBase中,并且都是以Region為單位進(jìn)行存儲(chǔ)。

第5點(diǎn):HBase shell命令

說一些常用的基礎(chǔ)操作命令:

創(chuàng)建user表,包含info、data兩個(gè)列族
create 'user', 'info', 'data'

使用put命令向user表中插入信息,row key為rk0001,列族info中添加名為name的列,值為zhangsan
put 'user', 'rk0001', 'info:name', 'zhangsan'

獲取user表中row key為rk0001的所有信息(即所有cell的數(shù)據(jù))
get 'user', 'rk0001'
獲取user表中row key為rk0001,info列族的所有信息
get 'user', 'rk0001', 'info'

更新數(shù)據(jù)操作 將user表的f1列族版本數(shù)改為5
alter 'user', NAME => 'info', VERSIONS => 5

刪除數(shù)據(jù)以及刪除表操作
刪除user表row key為rk0001,列標(biāo)示符為info:name的數(shù)據(jù)
delete 'user', 'rk0001', 'info:name'

清空表數(shù)據(jù)
truncate 'user'

刪除表
首先需要先讓該表為disable狀態(tài),使用命令:
disable 'user'
然后使用drop命令刪除這個(gè)表
drop 'user'
注意:如果直接drop表,會(huì)報(bào)錯(cuò):Drop the named table. Table must first be disabled創(chuàng)建user表,包含info、data兩個(gè)列族
create 'user', 'info', 'data'

使用put命令向user表中插入信息,row key為rk0001,列族info中添加名為name的列,值為zhangsan
put 'user', 'rk0001', 'info:name', 'zhangsan'

獲取user表中row key為rk0001的所有信息(即所有cell的數(shù)據(jù))
get 'user', 'rk0001'
獲取user表中row key為rk0001,info列族的所有信息
get 'user', 'rk0001', 'info'

更新數(shù)據(jù)操作 將user表的f1列族版本數(shù)改為5
alter 'user', NAME => 'info', VERSIONS => 5

刪除數(shù)據(jù)以及刪除表操作
刪除user表row key為rk0001,列標(biāo)示符為info:name的數(shù)據(jù)
delete 'user', 'rk0001', 'info:name'

清空表數(shù)據(jù)
truncate 'user'

刪除表
首先需要先讓該表為disable狀態(tài),使用命令:
disable 'user'
然后使用drop命令刪除這個(gè)表
drop 'user'
注意:如果直接drop表,會(huì)報(bào)錯(cuò):Drop the named table. Table must first be disabled

再說一下HBase的高級(jí)操作命令:

顯示服務(wù)器狀態(tài)
status 'node01'

顯示HBase當(dāng)前用戶
whoami

顯示當(dāng)前所有的表
list

統(tǒng)計(jì)指定表的記錄數(shù)
count 'user' 

檢查表是否存在,適用于表量特別多的情況
exists 'user'

檢查表是否啟用或禁用
is_enabled 'user'
is_disabled 'user'

禁用一張表/啟用一張表
disable 'user'
enable 'user'

刪除一張表,記得在刪除表之前必須先禁用
drop

上述都是HBase shell命令的內(nèi)容,還有用JAVA API進(jìn)行表操作的內(nèi)容,但是這部分老劉就不講解了,有需要的話,可以聯(lián)系老劉,我會(huì)分享給你。

02 HBase總結(jié)

今天是HBase知識(shí)點(diǎn)的第一部分,老劉盡量用大白話講這些知識(shí)點(diǎn)講述出來了,如果還有疑問,可以聯(lián)系老劉哦!

最后希望今天講的內(nèi)容對(duì)大數(shù)據(jù)感興趣的同學(xué)有幫助,也希望能夠得到大家的批評(píng)和指點(diǎn)。

分享到:
標(biāo)簽:HBase
用戶無頭像

網(wǎng)友整理

注冊(cè)時(shí)間:

網(wǎng)站:5 個(gè)   小程序:0 個(gè)  文章:12 篇

  • 51998

    網(wǎng)站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會(huì)員

趕快注冊(cè)賬號(hào),推廣您的網(wǎng)站吧!
最新入駐小程序

數(shù)獨(dú)大挑戰(zhàn)2018-06-03

數(shù)獨(dú)一種數(shù)學(xué)游戲,玩家需要根據(jù)9

答題星2018-06-03

您可以通過答題星輕松地創(chuàng)建試卷

全階人生考試2018-06-03

各種考試題,題庫(kù),初中,高中,大學(xué)四六

運(yùn)動(dòng)步數(shù)有氧達(dá)人2018-06-03

記錄運(yùn)動(dòng)步數(shù),積累氧氣值。還可偷

每日養(yǎng)生app2018-06-03

每日養(yǎng)生,天天健康

體育訓(xùn)練成績(jī)?cè)u(píng)定2018-06-03

通用課目體育訓(xùn)練成績(jī)?cè)u(píng)定