欧美一级特黄大片做受成人-亚洲成人一区二区电影-激情熟女一区二区三区-日韩专区欧美专区国产专区

為什么不建議在HBase中使用過多的列族

這篇文章給大家介紹為什么不建議在HBase中使用過多的列族,內(nèi)容非常詳細,感興趣的小伙伴們可以參考借鑒,希望對大家能有所幫助。

在尚志等地區(qū),都構建了全面的區(qū)域性戰(zhàn)略布局,加強發(fā)展的系統(tǒng)性、市場前瞻性、產(chǎn)品創(chuàng)新能力,以專注、極致的服務理念,為客戶提供網(wǎng)站建設、網(wǎng)站設計 網(wǎng)站設計制作定制網(wǎng)站建設,公司網(wǎng)站建設,企業(yè)網(wǎng)站建設,品牌網(wǎng)站建設,成都全網(wǎng)營銷推廣,成都外貿(mào)網(wǎng)站制作,尚志網(wǎng)站建設費用合理。

我們知道,一張 HBase 表包含一個或多個列族。HBase 的官方文檔中關于 HBase 表的列族的個數(shù)有兩處描述:A typical schema has between 1 and 3 column families per table. HBase tables should not be designed to mimic RDBMS tables. 以及 HBase currently does not do well with anything above two or three column families so keep the number of column families in your schema low.

上面兩句話其實都是說一件事,HBase 中每張表的列族個數(shù)建議設在1~3之間。其實,HBase 支持的列族個數(shù)并沒有限制,但為什么文檔建議在1~3之間呢?我將從幾個方面來闡述這么做的原因。

 

列族數(shù)對 Flush 的影響

在 HBase 中,調(diào)用 API 往對應的表插入數(shù)據(jù)是會寫到 MemStore 的,而 MemStore 是一種內(nèi)存結構,每個列族對應一個 MemStore(和零個或多個 HFile)。如果我們的表有兩個列族,那么相應的 Region 中存在兩個 MemStore,如下圖:

為什么不建議在HBase中使用過多的列族

從上圖可以看出,越多的列族,將會導致內(nèi)存中存在越多的 MemStore;而儲存在 MemStore 中的數(shù)據(jù)在滿足一定條件的時候?qū)M行 Flush 操作;每次 Flush 的時候,每個 MemStore 將在磁盤生產(chǎn)一個 HFile 文件,如下:

為什么不建議在HBase中使用過多的列族

這樣會導致越多的列族最終持久化到磁盤的 HFile 越多。更要命的是,當前 Flush 操作是 Region 級別的,也就是說, Region 中某個 MemStore 被 Flush,同一個 Region 的其他 MemStore 也會進行 Flush 操作。當表有很多列族,而且列族之間數(shù)據(jù)不均勻,比如一個列族有100W行,一個列族只有10行,這樣會導致持久化到磁盤的文件數(shù)很多,同時有很多小文件,而且每次 Flush 操作也涉及到一定的 IO 操作。

 

列族數(shù)對 Split 的影響

我們知道,當 HBase 表中某個 Region 過大(比如大于 hbase.hregion.max.filesize 配置的大小。當然,Region 分裂并不是說整個 Region 大小加起來大于 hbase.hregion.max.filesize 就拆分,而是說 Region 中某個最大的 Store/HFile/storeFile 大于 hbase.hregion.max.filesize 才會觸發(fā) Region 拆分的),會被拆分成兩個。如果我們有很多個列族,而這些列族之間的數(shù)據(jù)量相差懸殊,比如有些列族有 100W 行,而有些列族只有10行,這樣在 Region Split 的時候會導致原本數(shù)據(jù)量很小的 HFile 文件進一步被拆分,從而產(chǎn)生更多的小文件。注意,Region Split 是針對所有的列族進行的,這樣做的目的是同一行的數(shù)據(jù)即使在 Split 后也是存在同一個 Region 的。

 

列族數(shù)對 Compaction 的影響

與 Flush 操作一樣,目前 HBase 的 Compaction 操作也是 Region 級別的,過多的列族也會產(chǎn)生不必要的 IO。

 

列族數(shù)對 HDFS 的影響

我們知道,HDFS 其實對一個目錄下的文件數(shù)有限制的(dfs.namenode.fs-limits.max-directory-items)。如果我們有 N 個列族,M 個 Region,那么我們持久化到 HDFS 至少會產(chǎn)生 NM 個文件;而每個列族對應底層的 HFile 文件往往不止一個,我們假設為 K 個,那么最終表在 HDFS 目錄下的文件數(shù)將是 NM*K,這可能會操作 HDFS 的限制。

 

列族數(shù)對 RegionServer 內(nèi)存的影響

前面說了,一個列族在 RegionServer 中對應于一個 MemStore。而 HBase 從 0.90.1 版本開始引入了 MSLAB(Memstore-Local Allocation Buffers,參考HBASE-3455),這個功能默認是開啟的(通過hbase.hregion.memstore.mslab.enabled),這使得每個 MemStore 在內(nèi)存占用了 2MB (通過hbase.hregion.memstore.mslab.chunksize 配置)的 buffer。如果我們有很多的列族,那么光 MemStore 的緩存就會占用很多的內(nèi)存。

關于列族數(shù)設置的建議

在設置列族之前,我們最好想想,有沒有必要將不同的列放到不同的列族里面。如果沒有必要最好放一個列族。如果真要設置多個列族,但是其中一些列族相對于其他列族數(shù)據(jù)量相差非常懸殊,比如1000W相比100行,是不是考慮用另外一張表來存儲相對小的列族。

關于為什么不建議在HBase中使用過多的列族就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。

新聞名稱:為什么不建議在HBase中使用過多的列族
鏈接地址:http://aaarwkj.com/article32/ipdgpc.html

成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供自適應網(wǎng)站電子商務、網(wǎng)站改版、建站公司、微信小程序網(wǎng)站內(nèi)鏈

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

小程序開發(fā)
日韩精品人妻一区二区免| 中文字幕一区二区三区三级| 日韩中文在线中文网三级| 青青草成人一区二区三区| 日韩欧美亚洲国产一区久久精品| 在线蜜臀av中文字幕| 射精视频在线观看免费| 国产亚洲欧美日韩看国产| 人人爽人人妻人人澡| 激情啪啪啪的免费网站| 国产精品一区二区av麻豆| 婷婷五五月深爱开心激情| 国产成人综合亚洲欧美在线| 91麻豆国产在线视频| 性生活视频在线观看免费| 国语精品对白交换日韩| 亚洲成在人天堂一区二区| 久久综合亚洲鲁鲁五月天| 日韩精品一区二区三区人妻视频| 久久精品国产精油按摩| 日韩精品少妇一区二区在线看| 国产亚洲精品第一最新| 日韩欧美国产麻豆一区精品| 亚洲免费av一区二区| 欧美日韩福利视频在线| 在线观看日韩精品电影| 亚洲综合色视频在线播放| 欧美成人精品午夜一区二区| 真实国产熟女一区二区三区| 日本sm视频在线观看| 中国女人内射69xx| 国产精品推荐不卡一区| 日本一二三四卡久久精品| 日韩欧美亚洲制服丝袜| 国产麻豆三级在线观看| 蜜臀视频在线观看免费| 日韩美女搞黄色的网站| 国产不卡一区不卡二区| 欧美日韩精品一区二区视频永久免| 国产免费看黄色的网站| 国产夫妻一区二区三区|