發布時間: 2019-06-09 09:07:22
1.HBase數據模型介紹
在 HBase 中,數據模型同樣是由表組成的,各個表中又包含數據行和列,在這些表中存儲了 HBase 數據。在本節中,我們將介紹 HBase 數據模型中的一些術語。
2.HBase數據模型術語
表(Table)
HBase 會將數據組織進一張張的表里面,一個 HBase 表由多行組成。
行(Row)
HBase 中的一行包含一個行鍵和一個或多個與其相關的值的列。在存儲行時,行按字母順序排序。出于這個原因,行鍵的設計非常重要。目標是以相關行相互靠近的方式存儲數據。常用的行鍵模式是網站域。如果你的行鍵是域名,則你可能應該將它們存儲在相反的位置(org.apache.www,org.apache.mail,org.apache.jira)。這樣,表中的所有 Apache 域都彼此靠近,而不是根據子域的第一個字母分布。
列(Column)
HBase 中的列由一個列族和一個列限定符組成,它們由:(冒號)字符分隔。
列族(Column Family)
出于性能原因,列族在物理上共同存在一組列和它們的值。在 HBase 中每個列族都有一組存儲屬性,例如其值是否應緩存在內存中,數據如何壓縮或其行編碼是如何編碼的等等。表中的每一行都有相同的列族,但給定的行可能不會在給定的列族中存儲任何內容。
列族一旦確定后,就不能輕易修改,因為它會影響到 HBase 真實的物理存儲結構,但是列族中的列標識(Column Qualifier)以及其對應的值可以動態增刪。
列限定符(Column Qualifier)
列限定符被添加到列族中,以提供給定數據段的索引。鑒于列族的content,列限定符可能是content:html,而另一個可能是content:pdf。雖然列族在創建表時是固定的,但列限定符是可變的,并且在行之間可能差別很大。
單元格(Cell)
單元格是行、列族和列限定符的組合,并且包含值和時間戳,它表示值的版本。
時間戳(Timestamp)
時間戳與每個值一起編寫,并且是給定版本的值的標識符。默認情況下,時間戳表示寫入數據時 RegionServer 上的時間,但可以在將數據放入單元格時指定不同的時間戳值。
3.HBase概念視圖
本節介紹 HBase 的概念視圖。
本節的示例是根據 BigTable 論文進行稍微修改后的示例。在本節的示例中有一個名為表 webtable,其中包含兩行(com.cnn.www 和 com.example.www)以及名為 contents、anchor 和 people 的三個列族。在本例中,對于第一行(com.cnn.www), anchor 包含兩列(anchor:cssnsi.com,anchor:my.look.ca),并且 contents 包含一列(contents:html)。本示例包含具有行鍵 com.cnn.www 的行的5個版本,以及具有行鍵 com.example.www 的行的一個版本。contents:html 列限定符包含給定網站的整個 HTML。錨(anchor)列族的限定符每個包含與該行所表示的站點鏈接的外部站點以及它在其鏈接的錨點(anchor)中使用的文本。people 列族代表與該網站相關的人員。
列名稱:按照約定,列名由其列族前綴和限定符組成。例如,列內容: html 由列族contents和html限定符組成。冒號字符(:)從列族限定符分隔列族。
webtable 表如下所示:
?
?
此表中顯示為空的單元格在 HBase 中不占用空間或實際上存在。這正是使 HBase “稀疏”的原因。表格視圖并不是查看 HBase 數據的唯一可能的方法,甚至是最準確的。以下代表與多維地圖相同的信息。這只是用于說明目的的模擬,可能并不嚴格準確。
4.HBase物理視圖
盡管在 HBase 概念視圖中,表格被視為一組稀疏的行的集合,但它們是按列族進行物理存儲的??梢噪S時將新的列限定符(column_family:column_qualifier)添加到現有的列族。
ColumnFamily anchor 表:
?
ColumnFamily contents 表:
HBase 概念視圖中顯示的空單元根本不存儲。因此,對時間戳為 t8 的 contents:html 列值的請求將不返回任何值。同樣,在時間戳為 t9 中一個anchor:my.look.ca 值的請求也不會返回任何值。但是,如果未提供時間戳,則會返回特定列的最新值。給定多個版本,最近的也是第一個找到的,因為時間戳按降序存儲。因此,如果沒有指定時間戳,則對行 com.cnn.www 中所有列的值的請求將是: 時間戳 t6 中的 contents:html,時間戳 t9 中 anchor:cnnsi.com 的值,時間戳 t8 中 anchor:my.look.ca 的值。
上一篇: Java培訓_Java NIO的緩沖區GUAVA介紹
下一篇: CentOS7安裝到Docker