1. 程式人生 > >Hbase 表的設計原則 ————總結

Hbase 表的設計原則 ————總結

1、列族的數量及列族的勢

建議將HBase列族的數量設定的越少越好。當強,對於兩個或兩個以上的列族HBase並不能處理的很好。這是由於HBase的Flushing和壓縮是基於Region的。當一個列族所儲存的資料達到Flushing的閾值時,該表中所有列族將同時進行Flushing操作。這將帶來不必要的I/O開銷,列族越多,該特性帶來的影響越大。

此外,還要考慮到同一個表中不同列族所儲存的記錄數量的差別,即列族的勢(Cardinality)。當兩個列族數量差別過大時會使包含記錄數量較少列族的資料分散在多個Region上,而Region有可能儲存在不同的RegionServer上。這樣,當進行查詢或scan操作的時候,系統效率將會受到影響。

在多列簇的情況下,注意各列簇資料的數量級要一致。如果兩個列簇的數量級相差太大,會使數量級少的列簇的資料掃描效率低下。
將經常查詢和不經常查詢的資料放到不同的列簇。

2、行鍵(RowKey)的設計

首先應該避免使用時序或單調(遞減/遞增)行鍵。因為當資料到來的時候,HBase首先需要根據記錄的行鍵來確定儲存的位置,即Region的位置,如果使用時序或單調行鍵,那麼連續到來的資料將被分配到同一個Region中,而此時系統的其他Region/RegionServer處於空閒狀態,這是分散式最不希望看到的狀態。

       如果rowkey是整型,用二進位制的方式比用string來儲存更節約空間
      合理的控制rowkey的長度,儘可能短,因為rowkey的資料也會存在每個Cell中。
      如果需要將表預分裂為多個region是,最好自定義分裂的規則。

3、儘量最小化行鍵和列族的大小

在HBase中,一個具體的值由儲存該值的行鍵、對應的列(列族:列)以及該值的時間戳決定。HBase中索引是為了加速隨即訪問的速度,索引的建立是基於“行鍵+列族:列+時間戳+值”的,如果行鍵和列族的大小過大,甚至超過值本身的大小,納悶將會增加索引的大小。並且在HBase中資料記錄往往非常之多,重複的行鍵、列將不但使索引的大小過大,也將加重系統的負擔

4、版本的數量

預設情況下為3個,可以通過HColumnDescriptor進行設定,建議不要設定的過大

相關推薦

Hbase 設計原則 ————總結

1、列族的數量及列族的勢 建議將HBase列族的數量設定的越少越好。當強,對於兩個或兩個以上的列族HBase並不能處理的很好。這是由於HBase的Flushing和壓縮是基於Region的。當一個

Hbase設計總結

1. Row Key是HBase表結構設計中很重要的一環,它設計的好壞直接影響程式和HBase互動的效率和資料儲存的效能。    2. Base的表結構比傳統關係型資料庫更靈活,你能儲存任何二進位制資料在表中,而且無關資料型別。    3. 在相同的列族中所有資料都具有相同

hbase設計優化原則 ***** 生產環境中使用小結

精準 密碼學 表示 ems 格式 就會 特性 存儲 可能 2019/2/28 星期四 hbase表設計優化原則 https://www.cnblogs.com/qingyunzong/p/8696962.html表設計1、列簇設計  追求的原則是:在合理範圍內能盡量少的減

Hbase設計

技術分享 設計 解決 寫入 bsp mil 一定的 mem 閾值 HBase與RDBMS的區別: Hbase的cell具有版本描述(versioned),行是有序的,列(Qualifier)在所屬列簇(column families)存在是,由客戶端添加。 Hbase中沒

Hbase 設計和高級屬性

table key-value 功能 建表 額外 version 前綴 size 必須 1、compression   默認值是 NONE 即不使用壓縮, 這個參數意思是該列族是否采用壓縮,采用什麽壓縮算 法   方法: create ‘table‘,{NAME=>‘

HBase設計----預分割槽和雜湊儲存

  hbase設計存在一個常見的問題便是HBase對於row的不均衡分佈,它們被儲存在一個唯一的rowkey區間中,被稱為region,區間的範圍被稱為Start Key和End Key。 熱門資料key連續,導致熱門資料被分到同一個region中,即同一個伺服器節點中,會導致

hive 關聯hbase 命令和總結

    在hive shell中建立關聯表的命令如下: CREATE TABLE hive表名(rowkey date-type, value1 date-type, value2 date-type, value3 date-type) STO

Hbase Rowkey設計原則

長度越短越好   Rowkey是一個二進位制碼流,Rowkey的長度被很多開發者建議說設計在10~100個位元組,不過建議是越短越好,不要超過16個位元組。   原因如下:  (1)資料的持久化檔案HFile中是按照KeyValue儲存的,如果Row

6大設計原則總結

單一職責原則 單一職責原則的目標是類,通過設計介面,使得類從功能上更加純粹,只有一種職責。 這樣設計介面後,整體會更加清晰明瞭,條理分明。不會有混亂的感覺。 里氏替換原則 總結起來很簡單,父

設計模式常用設計原則總結

一、單一職責原則(SRP) 就一個類而言,應該僅有一個引起它變化的原因。 舉個栗子 俄羅斯方塊,下落,旋轉,碰撞判斷,移動,堆積遊戲邏輯可以在不同平臺複用,介面和遊戲邏輯要分離。 總結 如果一個類承擔的職責過多,就等於把這些職責耦合在一起,一個職責的變化可能消弱

資料庫設計原則

資料庫三正規化: * 第一正規化(1NF): 資料庫表的每一列都是不可分割的基本資料項,同一列中不能有多個值,即實體中的某個屬性不能有多個值或者不能有重複的屬性。(保持資料的原子性) 第二正規化(2NF): 滿足1NF後,要求表中的所有列,都必須依賴於主鍵,而不能有任何一列與

14.大資料學習之旅——HBASE設計&HBase優化

HBASE表設計 Rowkey設計 Rowkey是不可分割的位元組數,按字典排序由低到高儲存在表中。 在設計HBase表時,Rowkey設計是最重要的事情,應該基於預期的訪問模式來為Rowkey建 模。Rowkey決定了訪問HBase表時可以得到的效能,原因有兩個: 1)R

HBase RowKey設計原則(全面)

這段時間實在太忙了,工作和備考幾乎用盡了所有時間,以前的愛好都漸漸遠離了,現在也就更新部落格這個小喜好了,每天看到日益增長的訪問量還是挺開心的,能幫到別人也是一種快樂。這篇HBase的行健設計原則文

API設計原則總結

最近本人重構公司一個web API元件,總結如下幾條原則: 引數比較簡單的情況下,儘量放在URL裡面,方便使用; 引數比價複雜,或者需要加密,則放在 body 裡面; 儘量按照REST風格來,按照資

hbase rowkey設計原則 和為什麼nosql查詢速度快

HBase RowKey 概述 HBase是一個分散式的、面向列的資料庫,它和一般關係型資料庫的最大區別是:HBase很適合於儲存非結構化的資料,還有就是它基於列的而不是基於行的模式。 既然HBase是採用KeyValue的列儲存,那Rowkey就是KeyValue的K

HBase設計介紹

概述 在不久的過去,大資料的應用越來越多。為了支援這些應用以及擴充套件老的應用,很多新的資料管理系統被開發出來,被稱作大資料革命。這些系統中很多都是開源和社群驅動的。Apache Hbase就是這樣的一個系統,是一個開源的分散式的資料庫,和Google Big

Java面向物件16種設計原則(總結版)

Java面向物件16種設計原則 一   類的設計原則 1 依賴倒置原則-Dependency Inversion Principle (DIP) 2 里氏替換原則-Liskov Substitution Principle (LSP) 3 介面分隔原則-Int

Hbase rowkey 設計原則

HBase是三維有序儲存的,三維指的是:RowKey(行健)、column key(columnFamily和qualifier)、TimeStamp(時間戳),通過這三個維度我們可以對HBase中的資料進行快速定位。下面我們主要來討論RowKey的設計原則: HBas

HBase設計圖解

為什麼要進行md5 或 Hash 或進行反轉?一句話說明:負載均衡,可以將記錄平均分到不同的region比如:業務id有時候開頭是跟業務相關的一些編碼。有個可能某個編碼下面對應記錄比較多,某些編碼對應比較少。比如上圖示例中1111開頭的有3條資料。其他字首的都在3條以下所以通過md5或者其他方式進行雜湊。MD

軟體工程六大設計原則總結,案例演示

目錄 一、單一職責原則 二、介面隔離原則 三、依賴倒轉原則 四、里氏替換原則 五、開閉原則 六、迪米特原則 七、設計原則總結 八、原始碼地址