自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

你應(yīng)該知道的HBase基礎(chǔ),都在這兒了

大數(shù)據(jù)
2006 年10 月Google 發(fā)布三架馬車之一的《Bigtable:A Distributed Storage System for Strctured Data》論文之后,Powerset 公司就宣布 HBase 在 Hadoop 項(xiàng)目中成立,作為子項(xiàng)目存在。今天,螞蟻金服的南俊從基礎(chǔ)開始講起,希望有助于增強(qiáng)大家在實(shí)際業(yè)務(wù)中對(duì) HBase 的理解。

阿里妹導(dǎo)讀:2006 年10 月Google 發(fā)布三架馬車之一的《Bigtable:A Distributed Storage System for Strctured Data》論文之后,Powerset 公司就宣布 HBase 在 Hadoop 項(xiàng)目中成立,作為子項(xiàng)目存在。后來,在2010 年左右逐漸成為 Apache 旗下的一個(gè)***項(xiàng)目??赡苁菍?shí)際應(yīng)用中包裝得太好,很多人對(duì)于 HBase 的認(rèn)識(shí)止步于 NoSQL 。今天,螞蟻金服的南俊從基礎(chǔ)開始講起,希望有助于增強(qiáng)大家在實(shí)際業(yè)務(wù)中對(duì) HBase 的理解。

一、 HBase 簡(jiǎn)介 

​你應(yīng)該知道的 HBase 基礎(chǔ),都在這兒了

HBase 名稱的由來是由于其作為 Hadoop Database 存在的,用來存儲(chǔ)非結(jié)構(gòu)化、半結(jié)構(gòu)化數(shù)據(jù)。 

​你應(yīng)該知道的 HBase 基礎(chǔ),都在這兒了

要想知道 HBase 的用途,就需要看一看其在 Apache 的 Hadoop 生態(tài)系統(tǒng)中的位置,可以看到 HBase 是構(gòu)建在 HDFS 之上的,這是由于 HBase 內(nèi)部管理的文件全部都是存儲(chǔ)在 HDFS 當(dāng)中的。同時(shí),MapReduce 這個(gè)計(jì)算框架在 HBase 之上又提供了高性能的計(jì)算能力來處理海量數(shù)據(jù)。此外還有一些像 Pig、Hive 用來提供高層語言的支持。還有 Sqoop 用來完成傳統(tǒng)數(shù)據(jù)庫到 HBase 之間的數(shù)據(jù)遷移。類似衍生出來的新技術(shù)還有很多,有興趣的同學(xué)可以自己去了解一下。 

​你應(yīng)該知道的 HBase 基礎(chǔ),都在這兒了

Google 的三架馬車 BigTable、GFS、MapReduce 現(xiàn)在在開源社區(qū)中都能找到對(duì)應(yīng)的實(shí)現(xiàn)。HBase 就是 Bigtable 的開源實(shí)現(xiàn),當(dāng)然這句話不是完全正確,因?yàn)閮烧咧g還是有些差異的。但是主要還是基于 BigTable 這個(gè)數(shù)據(jù)模型開發(fā)的,因此也是具有 Key-Value 特征的,同時(shí)也就具有 Bigtable 稀疏的、面向列的這些特性。

也是由于 HBase 利用 HDFS 作為它的文件系統(tǒng),因此它也具有 HDFS 的高可靠性和可伸縮性。和 Hadoop 一樣,HBase 也是依照橫向擴(kuò)展,通過不斷地通過添加廉價(jià)的服務(wù)器來增加計(jì)算和存儲(chǔ)的能力。BigTable 利用 Chubby 來進(jìn)行協(xié)同服務(wù),HBase 則是利用 Zookeeper 來對(duì)整個(gè)分布式系統(tǒng)進(jìn)行協(xié)調(diào)服務(wù)。正是因?yàn)橥ㄟ^HDFS 的高可靠可伸縮性,以及應(yīng)用了 Bigtable 的稀疏的面向列的這些高效的數(shù)據(jù)組織形式。所以 HBase 才能如此地適合大數(shù)據(jù)隨機(jī)和實(shí)時(shí)讀寫。

二、 HBase 基本概念

這里介紹一下 HBase 的一些基本概念: 

​你應(yīng)該知道的 HBase 基礎(chǔ),都在這兒了

RowKey(行鍵),顧名思義也就是我們?cè)陉P(guān)系型數(shù)據(jù)庫中常見的主鍵,它是Unique 的,在 HBase 中這個(gè)主鍵可以是任意的字符串,其***長(zhǎng)度是64K,在內(nèi)部存儲(chǔ)中會(huì)被存儲(chǔ)為字節(jié)數(shù)組,HBase 表中的數(shù)據(jù)是按照 RowKey 的字典序排列的,例如很多索引的實(shí)現(xiàn),包括地理空間索引很大程度就是依賴這個(gè)特性。

不過也要注意一個(gè)點(diǎn),現(xiàn)實(shí)當(dāng)中期望排序是1、2、3、4...10,而在 HBase 中1 后面緊跟的會(huì)是10。因此,在設(shè)計(jì)行鍵的時(shí)候一定要充分地利用字典序這個(gè)特性,將一下經(jīng)常讀取的行存儲(chǔ)到一起或者靠近,減少Scan 的耗時(shí),提高讀取的效率。這里一定要說的一點(diǎn)是,行鍵設(shè)計(jì)真的很重要,例如做組合行鍵時(shí)將時(shí)間排前面,導(dǎo)致寫熱點(diǎn)(曾經(jīng)踩過的坑,記憶猶新)。

Column Family(列族),它是由若干列構(gòu)成,是表 Schema 的一部分,所以需要在創(chuàng)建表的時(shí)候就指定好。但也不是所表創(chuàng)建完之后就不能更改列族,只是成本會(huì)比較大,因此不建議更改。HBase 中可允許定義的列族個(gè)數(shù)最多就20多個(gè)。列族不僅僅能夠幫助我們構(gòu)建數(shù)據(jù)的語義邊界,還能有助于我們?cè)O(shè)置某些特性,比如可以指定某個(gè)列族內(nèi)數(shù)據(jù)的壓縮形式。一個(gè)列族包含的所有列在物理存儲(chǔ)上都是在同一個(gè)底層的存儲(chǔ)文件當(dāng)中。

Column (列),一般都是從屬于某個(gè)列族,跟列族不一樣,列的數(shù)量一般的沒有強(qiáng)限制的,一個(gè)列族當(dāng)中可以有數(shù)百萬個(gè)列,而且這些列都可以動(dòng)態(tài)添加的。這也是我們常說的 HBase 面向列的優(yōu)點(diǎn),不像傳統(tǒng)的關(guān)系型數(shù)據(jù)庫,調(diào)整一下 Schema 都需要擔(dān)心對(duì)于生產(chǎn)的影響。

Version Number(版本號(hào)),HBase 中每一列的值或者說是每個(gè)單元格的值都是具有版本號(hào)的,默認(rèn)使用的系統(tǒng)當(dāng)前的時(shí)間戳,精確到毫秒。當(dāng)然也可以是用戶自己顯式地設(shè)置,我們是通過時(shí)間戳來識(shí)別不同的版本,因此如果要自己設(shè)置的話,也要保證版本號(hào)的唯一性。用戶也可以指定保存指定單元格的*** N 個(gè)版本,或者某個(gè)時(shí)間段的版本,這個(gè)是可以在配置中配置的。一個(gè)單元格里面是數(shù)據(jù)是按照版本號(hào)降序的。也就是說***寫入的值會(huì)被***讀取。

Cell(單元格),一個(gè)單元格就是由前面說的行鍵、列標(biāo)示、版本號(hào)唯一確定的,這里說的列標(biāo)示包括列族和列名。Cell 中的數(shù)據(jù)是沒有類型的,全部都是字節(jié)碼。

三、HBase 表邏輯視圖 

​你應(yīng)該知道的 HBase 基礎(chǔ),都在這兒了

由于 HBase 表的一個(gè)單元格是由多維決定的,我這里嘗試用一個(gè)二維的電子表格來展示??梢越Y(jié)合前面說的 HBase 的基本概念來理解。可以看到通過二維表格來展示一個(gè)成績(jī)表,中間有很多單元格是空的,整體看起來很稀疏,需要說明的是在 HBase 的實(shí)際存儲(chǔ)中這些空的單元格并不占存儲(chǔ)。 

​你應(yīng)該知道的 HBase 基礎(chǔ),都在這兒了

四、HBase 表物理視圖

物理視圖比較復(fù)雜,下面以圖來展示一個(gè) HBase 表從宏觀到微觀到物理存儲(chǔ)。盡量以最簡(jiǎn)單到方式展示物理視圖的幾個(gè)層次。

表的橫向切分(TableRegion) 

​你應(yīng)該知道的 HBase 基礎(chǔ),都在這兒了

Region 的分裂 

​你應(yīng)該知道的 HBase 基礎(chǔ),都在這兒了

Region 的分布 

​你應(yīng)該知道的 HBase 基礎(chǔ),都在這兒了

Region 的存儲(chǔ)結(jié)構(gòu) 

​你應(yīng)該知道的 HBase 基礎(chǔ),都在這兒了

一個(gè) Region 是由一個(gè)或多個(gè) Store 組成。每一個(gè) Store 其實(shí)就是一個(gè)列族。每個(gè)Store 又是由一個(gè) memStore 和 0 個(gè)或者多個(gè) storeFile 組成。memStore 是存儲(chǔ)在內(nèi)存中,storeFile 是存儲(chǔ)在 HDFS 中,有時(shí)候也稱作 HFile。數(shù)據(jù)都會(huì)先寫入memStore,一旦 memStore 超過給的的***值之后,HBase 就會(huì)將memStore 持久化為 storeFile。

五、HBase 集群結(jié)構(gòu) 

​你應(yīng)該知道的 HBase 基礎(chǔ),都在這兒了

一個(gè) HBase 集群一般由一個(gè) Master 和多個(gè) RegionServer 組成。

  • 客戶端庫:可以通過 HBase 提供的各式語言API 庫訪問集群。API 庫也會(huì)維護(hù)一個(gè)本地緩存來加快對(duì) HBase 對(duì)訪問,比如緩存中記錄著 Region 的位置信息。
  • Maste 節(jié)點(diǎn):主要為各個(gè) RegionServer 分配 Region,負(fù)責(zé) RegionServer 對(duì)負(fù)載均衡,管理用戶對(duì)于 Table 對(duì) CRUD 操作。
  • RegionServer:維護(hù) Region,處理對(duì)這些 Region 對(duì)IO 請(qǐng)求,負(fù)責(zé)切分在運(yùn)行過程中變過大的 Region。
責(zé)任編輯:未麗燕 來源: 阿里云云棲社區(qū)
相關(guān)推薦

2019-04-19 08:25:13

HBase基礎(chǔ)Google

2019-01-24 08:19:17

云服務(wù)多云云計(jì)算

2013-05-27 09:33:13

Windows 8.1

2021-11-01 08:00:00

Java異常處理開發(fā)

2022-10-12 08:22:44

Guava工具Collection

2018-06-26 04:49:46

運(yùn)營(yíng)商流量漫游提速降費(fèi)

2020-09-09 08:45:27

IOC容器高并發(fā)

2021-07-06 05:23:05

軟件限免游戲Steam

2019-10-29 15:28:40

Refs組件前端

2022-09-15 14:22:19

協(xié)作規(guī)范前后端

2021-12-09 08:16:40

JVM參數(shù)系統(tǒng)

2017-08-25 12:06:36

Facebook

2021-02-01 08:39:26

JTAG接口Jlink

2018-08-07 15:18:01

2017-08-28 16:40:07

Region切分觸發(fā)策略

2017-12-08 10:42:49

HBase切分細(xì)節(jié)

2018-11-28 10:39:01

5G網(wǎng)絡(luò)運(yùn)營(yíng)商

2020-06-02 07:00:00

會(huì)話安全黑客攻擊

2017-08-29 11:21:03

微軟

2022-09-22 08:00:00

API開發(fā)數(shù)據(jù)
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)