国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專(zhuān)欄INFORMATION COLUMN

HBase基礎(chǔ)

xfee / 1886人閱讀

摘要:回過(guò)頭來(lái)看關(guān)系數(shù)據(jù)庫(kù),雖然每個(gè)表只有兩個(gè)維度,但可以通過(guò)表之間的關(guān)系來(lái)建立高維度屬性來(lái)描述事物。屬性識(shí)別屬性可以唯一的確定一條數(shù)據(jù)在關(guān)系數(shù)據(jù)庫(kù)中作為主鍵,在中作為。

HBase的讀寫(xiě)流程設(shè)計(jì)

寫(xiě)數(shù)據(jù):先預(yù)寫(xiě)日式WAL,和寫(xiě)入內(nèi)容MemStore。WAL用來(lái)在節(jié)點(diǎn)宕機(jī)后恢復(fù)寫(xiě)入的數(shù)據(jù)。在MemStore寫(xiě)滿(mǎn)后會(huì)寫(xiě)入磁盤(pán),生成一個(gè)新的HFile,一旦寫(xiě)入不會(huì)再修改。一個(gè)列族有一個(gè)MemStore,一個(gè)列族有多個(gè)HFile。

讀數(shù)據(jù):每個(gè)列族有自己的BlockCache,用來(lái)在內(nèi)存中緩存從HFile讀入的數(shù)據(jù),采用LRU算法淘汰數(shù)據(jù)。讀數(shù)據(jù)時(shí),先從MemStore中嘗試讀取修改的數(shù)據(jù),然后檢查BlockCache緩存,最后才訪(fǎng)問(wèn)HFile。

刪除數(shù)據(jù):先給數(shù)據(jù)打上刪除標(biāo)記,HFile在大合并中才真正刪除掉這些數(shù)據(jù)。

數(shù)據(jù)坐標(biāo)

如何準(zhǔn)確的定位一個(gè)數(shù)據(jù):
rowKey -> column family -> column qualifier -> versin -> value

HBase和關(guān)系數(shù)據(jù)庫(kù)的設(shè)計(jì)思想的區(qū)別

HBase是一種鍵-值型數(shù)據(jù)庫(kù),key由rowKey -> column family -> column qualifier -> versin這些元素共同組成。

關(guān)系型數(shù)據(jù)庫(kù)每個(gè)表只有兩個(gè)維度,通過(guò)id和屬性名可以得到相應(yīng)的值。

數(shù)據(jù)庫(kù)是用來(lái)存儲(chǔ)事物的載體,關(guān)系數(shù)據(jù)庫(kù)的局限在于從兩個(gè)維度描述事物的屬性,它可以方便的展現(xiàn)事物的一級(jí)屬性,但是想要表現(xiàn)事物的多層級(jí)屬性卻不容易。如一個(gè)對(duì)象:

{
    "name":{
        "firstName":"Si",
        "lastName":"Li"
    },
    "age":10
}

在關(guān)系數(shù)據(jù)庫(kù)中存儲(chǔ)這樣一個(gè)對(duì)象,要么將屬性都提升為一級(jí)屬性,要么在name屬性中存儲(chǔ)一個(gè)json數(shù)據(jù),要么另起一個(gè)表,專(zhuān)門(mén)存儲(chǔ)name的數(shù)據(jù),并且通過(guò)name的id來(lái)關(guān)聯(lián)數(shù)據(jù)間的關(guān)系。

而HBase則是一個(gè)四維的表,描述事物的能力更強(qiáng),上述問(wèn)題只要建立一個(gè)name的列族就可以解決。

像這種key-value型數(shù)據(jù)庫(kù),key可以描述無(wú)限維度的屬性層級(jí),可以更方便的描述事物,似乎是將來(lái)數(shù)據(jù)存儲(chǔ)發(fā)展的趨勢(shì)。

回過(guò)頭來(lái)看關(guān)系數(shù)據(jù)庫(kù),雖然每個(gè)表只有兩個(gè)維度,但可以通過(guò)表之間的關(guān)系來(lái)建立高維度屬性來(lái)描述事物。從這個(gè)角度來(lái)看,關(guān)系型數(shù)據(jù)庫(kù)反而道出了事物的本質(zhì)。

面型列編程

一般情況下,現(xiàn)有數(shù)據(jù)的邏輯模型,然后物理模型根據(jù)邏輯模型進(jìn)行設(shè)計(jì)和優(yōu)化。而在HBase中,需要逆向思考,由于HBase中數(shù)據(jù)的物理存儲(chǔ)遵循一定的規(guī)則,利用好這些規(guī)則來(lái)設(shè)計(jì)邏輯模型,可以大大的提高使用數(shù)據(jù)的效率。

HBase的各層級(jí)的key都是有序排列的,從row key到qualifier按照字節(jié)遞增排列,而version則按照遞減順序排列。

HBase在一行記錄里,如果某列沒(méi)數(shù)據(jù),則不會(huì)進(jìn)行存儲(chǔ),不會(huì)占用存儲(chǔ)空間,所以說(shuō)是面向列編程。每行數(shù)據(jù)的每個(gè)列族可能會(huì)有多個(gè)HFile,但是一個(gè)列族的數(shù)據(jù)一定要在同一個(gè)物理存儲(chǔ)中。

HBase不滿(mǎn)足ACID

對(duì)于每行的操作,是原子的。

對(duì)于多行的操作,不是原子的。

掃描并不是對(duì)某一時(shí)刻的數(shù)據(jù)快照的讀取,如果某行數(shù)據(jù)被掃描到前有變更,則讀取的數(shù)據(jù)是變更后的數(shù)據(jù)。

Hadoop Mapreduce運(yùn)行原理

工作過(guò)程:
map: 負(fù)責(zé)轉(zhuǎn)化數(shù)據(jù),將key1、value1輸入轉(zhuǎn)化key2、value2輸出。
shuffle: 數(shù)據(jù)按照key分組、排序等。
reduce: 對(duì)一個(gè)key下的所有值進(jìn)行處理,產(chǎn)生最后結(jié)果。

JobTracker: 負(fù)責(zé)調(diào)度、監(jiān)控mapreduce任務(wù)。
TaskTracker: 負(fù)責(zé)實(shí)際的運(yùn)行map或reduce任務(wù)。

HBase的分布式結(jié)構(gòu)

一個(gè)表被分為多個(gè)region。RegionServer運(yùn)行在HDFS系統(tǒng)之上,是HDFS的客戶(hù)端,負(fù)責(zé)管理多個(gè)region。

如何定位region?-ROOT-.META.是兩個(gè)特殊的表,它們也放在region中。-ROOT-表只在一個(gè)region中,.META.表則可能被分到多個(gè)region中。整個(gè)定位的過(guò)程如一個(gè)3層分布式B+樹(shù):

ZooKeeper管理了表的-ROOT-的信息。

先在-ROOT-中查找,定位擁有該數(shù)據(jù)信息的.META.的region。

從.META.的region中的信息可以定位到數(shù)據(jù)在哪一個(gè)RegionServer里。

Mapreduce與HBase

HBase既可以做Mapreduce的數(shù)據(jù)源,也可以作為數(shù)據(jù)目的地。

如何在Mapreduce中做聯(lián)結(jié)操作

對(duì)于不同表中的數(shù)據(jù),通過(guò)rowKey將相關(guān)數(shù)據(jù)聯(lián)結(jié)起來(lái)的操作對(duì)于非關(guān)系型數(shù)據(jù)庫(kù)HBase來(lái)說(shuō)并非易事。

在Mapreduce中可以有以下3種聯(lián)結(jié)的實(shí)現(xiàn)方式:

在reduce側(cè)做聯(lián)結(jié)。將相同rowKey的數(shù)據(jù)在reduce任務(wù)上進(jìn)行聯(lián)結(jié),需要在map和reduce之間做數(shù)據(jù)洗牌和排序,有很大的IO開(kāi)銷(xiāo)。

在map側(cè)聯(lián)結(jié)。將兩個(gè)表中,數(shù)量小的表緩存在map節(jié)點(diǎn)中,map任務(wù)在拿到關(guān)聯(lián)鍵后從緩存中讀取相應(yīng)的值,結(jié)合后進(jìn)行發(fā)射。

在map中讀取HBase。一個(gè)表作為mapreduce的數(shù)據(jù)源,在map任務(wù)中從HBase讀取另一個(gè)表中相關(guān)聯(lián)的數(shù)據(jù)。

HBase的可用性

可用性不是一個(gè)二元特性,即不是非此即彼的,而是一種程度上的模糊屬性。HBase是高可用的,在RegionServer發(fā)生故障時(shí),它管理的數(shù)據(jù)會(huì)切換到其它的RegionServer節(jié)點(diǎn)上。

單一命名空間。HBase把數(shù)據(jù)存儲(chǔ)在一個(gè)文件系統(tǒng)上,一個(gè)RegionServer的讀寫(xiě)數(shù)據(jù)可以為其它所有RegionServer讀寫(xiě)。所以當(dāng)一個(gè)RegionServer宕機(jī)時(shí),其它RegionServer可以及時(shí)的接替它的任務(wù)。

HBase進(jìn)階 如何建模來(lái)充分發(fā)揮HBase的能力

HBase雖然號(hào)稱(chēng)是無(wú)模式的數(shù)據(jù)庫(kù),但是提前設(shè)計(jì)好數(shù)據(jù)的存儲(chǔ)schema可以更好的發(fā)揮HBase的性能。

列族一般要提前定義好,盡量少的改動(dòng)。而列可以動(dòng)態(tài)的增減,列即數(shù)據(jù)。

HBase沒(méi)有跨行實(shí)務(wù)的概念。

同一列族的數(shù)據(jù)在物理上是放在一起的,在列族中找到某一個(gè)列的大體過(guò)程是一個(gè)二分查找。所以,訪(fǎng)問(wèn)寬行要比窄行開(kāi)銷(xiāo)大。

精細(xì)的描述所需數(shù)據(jù)帶來(lái)的收益

行鍵:獲取指定行的數(shù)據(jù),該行下的所有相關(guān)HFile都會(huì)被讀取。

列族:進(jìn)一步縮小讀取HFile范圍,只讀相關(guān)的HFile。

列限定符:不會(huì)進(jìn)一步限定列族的范圍,但會(huì)減少返回?cái)?shù)據(jù)的網(wǎng)絡(luò)占用。

時(shí)間戳:進(jìn)一步減少返回?cái)?shù)據(jù)量。

反規(guī)范化

規(guī)范化是關(guān)系型數(shù)據(jù)庫(kù)中的概念,指將每個(gè)表指保存自己關(guān)心的核心數(shù)據(jù),其它的數(shù)據(jù)通過(guò)鍵來(lái)關(guān)聯(lián),通過(guò)join來(lái)查詢(xún)多個(gè)表中的數(shù)據(jù),盡量的避免同一份數(shù)據(jù)出現(xiàn)在兩個(gè)地方,避免數(shù)據(jù)的不一致性。

反規(guī)范化是HBase中的概念,指行中可以冗余部分其它表的數(shù)據(jù),以方便讀取。

規(guī)范化是寫(xiě)優(yōu)化,反規(guī)范化是讀優(yōu)化。

從關(guān)系型數(shù)據(jù)庫(kù)到非關(guān)系型數(shù)據(jù)庫(kù)

謹(jǐn)慎的將現(xiàn)有的系統(tǒng)從關(guān)系型數(shù)據(jù)庫(kù)遷移到非關(guān)系型數(shù)據(jù)庫(kù),有時(shí)候付出的代價(jià)遠(yuǎn)比你得到的收益要高。

實(shí)體

關(guān)系型、非關(guān)系型數(shù)據(jù)庫(kù)都通過(guò)表存儲(chǔ)實(shí)體。

屬性

識(shí)別屬性(可以唯一的確定一條數(shù)據(jù))在關(guān)系數(shù)據(jù)庫(kù)中作為主鍵,在HBase中作為rowKey。非識(shí)別屬性在HBase中對(duì)應(yīng)列限定符。

聯(lián)系

關(guān)系型數(shù)據(jù)庫(kù)通過(guò)外鍵,或者關(guān)系表來(lái)刻畫(huà)數(shù)據(jù)之間的關(guān)系。而HBase中沒(méi)有這種限制,只能在應(yīng)用中實(shí)現(xiàn)數(shù)據(jù)關(guān)系的代碼。

參考《HBase實(shí)戰(zhàn)》

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/75336.html

相關(guān)文章

  • HBase運(yùn)維基礎(chǔ)——元數(shù)據(jù)逆向修復(fù)原理

    摘要:本文就運(yùn)維的原理基礎(chǔ)開(kāi)始入手,重點(diǎn)講解數(shù)據(jù)完整性,以及元數(shù)據(jù)逆向工程恢復(fù)數(shù)據(jù)完整性的原理方法。小結(jié)本文介紹了運(yùn)維基礎(chǔ)原理中的數(shù)據(jù)完整性以及逆向元數(shù)據(jù)修復(fù)原理,并舉例介紹兩個(gè)逆向修復(fù)元數(shù)據(jù)的工具和實(shí)用執(zhí)行步驟。 背景鑒于上次一篇文章——云HBase小組成功搶救某公司自建HBase集群,挽救30+T數(shù)據(jù)的讀者反饋,對(duì)HBase的逆向工程比較感興趣,并咨詢(xún)?nèi)绾问褂孟鄳?yīng)工具進(jìn)行運(yùn)維等等。總的來(lái)...

    ctriptech 評(píng)論0 收藏0
  • 企業(yè)打開(kāi)云HBase的正確方式,來(lái)自阿里云云數(shù)據(jù)庫(kù)團(tuán)隊(duì)的解讀

    摘要:推出云單節(jié)點(diǎn)版本,極低成本,降低使用門(mén)檻阿里云云服務(wù)正式推出單節(jié)點(diǎn)版本,歡迎訪(fǎng)問(wèn)了解更多。最后,通過(guò)釘釘技術(shù)交流群找到阿里云的技術(shù)團(tuán)隊(duì)同學(xué)。阿里云團(tuán)隊(duì)希望通過(guò)這些星星之火,點(diǎn)燃以及整個(gè)技術(shù)生態(tài)的草原。普及,阿里云團(tuán)隊(duì)在行動(dòng)原文鏈接 摘要:?一、HBase的歷史由來(lái) HBase是一個(gè)開(kāi)源的非關(guān)系型分布式數(shù)據(jù)庫(kù)(NoSQL),基于谷歌的BigTable建模,是一個(gè)高可靠性、高性能、高伸縮的...

    wslongchen 評(píng)論0 收藏0
  • 飛馳在Mesos的渦輪引擎上

    摘要:方案二和也運(yùn)行在中。新增刪除節(jié)點(diǎn)變更配置均需要手工介入。公司已有的大多都是容器形式部署在各個(gè)服務(wù)器上。目前我們?cè)诿總€(gè)節(jié)點(diǎn)上部署了傳統(tǒng)的。在接下來(lái)的階段團(tuán)隊(duì)也會(huì)對(duì)此做進(jìn)一步的探索。 回想起第一次接觸Mesos, 當(dāng)時(shí)有很多困惑: 這到底是用來(lái)做啥的?跟YARN比有什么優(yōu)勢(shì)?有哪些大公司在使用么?。 然而現(xiàn)在技術(shù)日新月異地發(fā)展, Mesos這個(gè)生態(tài)圈也開(kāi)始被越來(lái)越多的團(tuán)隊(duì)熟悉關(guān)注, 像k8...

    xorpay 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

xfee

|高級(jí)講師

TA的文章

閱讀更多
最新活動(dòng)
閱讀需要支付1元查看
<