Apache HBase的現狀和發展

一、HBase是什么

HBase(Hadoop Database),是一個基于Google BigTable論文設計的高可靠性、高性能、可伸縮的分布式存儲系統。

它有以下特征:

1.HBase仍然是采用行存儲的,采用松散表的結構來獲得動態列的功能;

2.原生海量數據分布式存儲。在單個數據庫中可以存檔GB甚至上pb。在一行中也可以存儲上百萬列。任何大小的數據量都適合采用HBase;

3.不僅支持隨機查詢,還支持范圍查詢;

4.高吞吐,低延遲。一個集群可以有上千萬個dps,平均的延遲可以做到一毫秒之內;

5.在線NOSQL數據庫;

6.多版本,增量導入,多維刪除。

\"\"

1.1 HBase的四大基因

1.1.1自動分區

最開始的時候,我們的數據庫是單機的數據庫。慢慢的我們發現單機的數據庫無法承受數據和訪問的爆發式增長。因此就出現了分庫分表的方案。將數據庫和表拆分到多個服務器上,然后利用中間件作為一個路由。這里就會遇到一個問題,隨著數據的增加,中間件就會成為一個瓶頸。如果請求量爆發式增長的時候,要加載新的進去,整個物理的變化需要進行搬遷之后才能夠進行使用。

而在HBase中,使用的是自動分區功能。當訪問量和請求量增加的時候它可以自動的進行數據分片,以應對數據和請求的爆發式增長。

\"\"

1.1.2 LSM-Tree

LSM(Log Structured Merge)Tree,它的一個重要的功能就是隨機寫變成順序寫。

現在LSM模型是大數據庫的標配。它主要包括如下幾個特點:

1)寫吞吐量高;

2)不受hdd隨機寫瓶頸和ssd隨機寫入放大干擾;

3)超強數據導入能力。

\"\"

1.1.3 存儲計算分離

HBase本身不會存任何數據。數據都是存儲在底層的HDFS中。存儲計算分離有以下好處:負載均衡更高效、資源擴容更節省、存儲優化更便捷。

\"\"

1.1.4 HBase生態

HBase有一個非常強大的朋友圈。具體見下:

\"\"

1.2 場景

HBase是幾乎可以滿足所有的大數據場景需求。比如說對象存儲,比如說推薦系統。比如說用來存儲訂單,用來存儲聊天記錄。高性能推送的朋友圈應用的場景。針對一些其他的場景,我們可以利用HBase加上組件能力來實現這些場景的應用。比如說HBase加Linux,來實現NEWSQL的數據庫。比如說HBase加上geomesa來實現時空數據的存儲,滴滴就是采用這種方案來存儲他們的軌跡數據。在物聯網場景,可以采用HBase加openjsdb來存儲海量的時序數據。

\"\"

1.3使用HBase的商業公司

基本上每一個大型的公司都在使用HBase。

\"\"

1.4 HBase特性總結

HBase,為大數據而生,有LSM樹:離線導入效率巨高 、實時寫入吞吐大、增量導入隔離性強;伸縮性強;TTL:數據時效性,系統自動處理、時效性的個性化設置;多版本:數據的第三維度、高效刪除方式;動態列:數據發散的利器;協處理器:數據校正、高效適應個性化;異構介質多副本存儲:海量與實時的性價比滿足;Erasure Code:因大而生。

\"\"

二、HBase社區的發展

2.1 HBase的起源

HBase于2006年誕生于Powerset,一家從事自然語言處理和搜索的創業公司(后被微軟收購)

HBase的實現基于Google發布的BigTable論文,用來解決 Hadoop中隨機讀寫效率低下的問題。HBase最初的開發人員是MichaelStack和JimKellerman。2007年4月,HBase做為一個模塊提交到Hadoop的代碼庫中,代碼量~8000行,2010年5月HBase成為Apache的頂級項目,同年,Facebook把HBase使用在其消息平臺中。

2.2 HBase項目現狀

目前HBase的代碼已經超過100萬行,HBase仍然是最活躍的Apache項目之一,擁有76個Committer,42位PMC,共有328位Contributor,其中14位 Committer/PMC 來自中國。

\"\"

2.3 HBase目前版本

HBase目前版本眾多。見下圖:

\"\"

三、HBase2.0

3.1 HBase2.0版本發布歷史

HBase2.0的發布是一部血淚史,因為在四年前已經有這個版本了,由于一些因素,造成了沒有人管理。最后花了一年多的時間才穩定他的版本發布出來,他的Release Manger多次更換,才把他發布出來。由此,我們吸取了這次教訓,我們以后會做好版本控制,把控好發布的節奏。

\"\"

3.2 新功能

3.2.1 Region Replica

Region Replica這個功能在1.2版本中已經存在,但是為什么叫做新功能呢?是因為之后修改了很多bug,在1.4版本才穩定下來,然后1.4和2.0是同時發布的。在CAP理論中,HBase一直是一個CP系統,遵循強一致的讀寫語義,所以Server宕機后需要一定的恢復時間,如果宕機了,客戶端可以從另外的副本中去讀取數據,Region Replica為數據分片Region準備了多個副本,host在不同的RegionServer上,同時,客戶端也可以做到,對多個副本同時發請求,然后做到選擇最快速的那個副本,提供高可用讀,宕機0影響,規避抖動,毛刺,降低P999延遲;缺點是需要額外耗費CPU/Memory資源,但不會占用額外空間。

\"\"

3.2.2 讀寫鏈路Off-heap

第二個新功能是全鏈路Off-heap,意思就是讀寫鏈路數據端到端Off-heap,減少java GC帶來的停頓,進一步降低P999延遲,提高吞吐。這個功能我們從兩方面來實現的:寫鏈路Off-heap,我們使用在RPC層使用Netty的Off-heap ByteBuffer,使用支持Off-heap的Protobuf。同時使用Off-heap的Chunk 來存儲Memstore中的KeyValue。

在讀鏈路Off-heap方面,使用Off-heap的Bucket Cache,HBase自己管理內存的,我們從Bucket Cache讀取數據的時候,先要從Protobuf做一次拷貝,因為可能讀取的時候,發生內存不夠了,再次分配的情況。在讀取對Bucket Cache進行引用計數,保證讀取的時候,內存不會被回收掉,讀取時不再需要先拷貝到heap,對Bucket Cache進行了一系列性能優化。

\"\"

后面這是HBase官方放著阿里巴巴在雙十一對HBase優化之后的對比圖,可以看到優化之后他的請求的曲線更加平穩,吞吐量增長了30%,這個案例大家可以去HBase的官方去看一下。

\"\"

3.2.3 In Memory Compaction

在HBase2.0中另外一個重磅的功能就是In Memory Compaction,以前我們知道HBase中使用的數據結構是java中原生的跳表,但是跳表依然是一個松散的結構,這樣的話,雖然內存不斷的在增大,但是刷到之后,會造成通過In memory的flush不會到hdfs上,反而回轉到更加緊湊的CellArrayMap這個結構,同時多個CellArrayMap會在內存中做compaction,使內存的使用更加緊湊。然后通過In memory的flush和compaction,在內存中可以存儲更多的數據,因此可以提高讀性能,同時減少磁盤IO,減輕compaction小文件造成的寫放大。這個功能社區也有介紹。

\"\"

3.2.4 小對象存儲MOB

之前我們建議在HBase上不要存很大的KV值,但是MOB(Moderate Object Storage) 功能使HBase能高效地存儲那些100k~10M 中等大小的對象。這使得用戶可以把文檔、圖片對象保存到HBase系統中,用戶寫入的小對象flush成一個獨立文件,原有的KV中的value只存這個對象的引用路徑,對于存儲對象文件,更少地進行compaction來減少寫入放大效應。

\"\"

3.2.5 Assignment MangerV2

這是一個非常重要的模塊,HBase中的狀態流轉,建表刪表,都需要在Assignment MangerV2上進行,之前舊AM系統參與角色多,狀態更新混亂,效率低,無事務保證,容易出現RIT問題。所以AM V2使用ProcedureV2來保證 Table/Region狀態轉換在master重啟后仍然能恢復執行,然后去除了Zookeeper做為中間角色,Master/RegionServer直接交互,Region assign/unassgin速度大大提升。

\"\"

3.2.6 其他

在HBase2.0中,還有非常多的新功能,具體如下:

\"\"

3.3 兼容性和升級建議

建議如下:

\"\"

四、HBase未來規劃

4.1 HBaseConAsia \u0026amp; 開發者圓桌會議

HBase眾多開發者也會參加這個會議,參與討論它的未來發展方向。

4.2 更加易用

HBase已經提供了,Java的API,但是這個案例不太友好,我們目前打算提供Native的SQL接口,能夠做到輕量級的SQL支持、內置的二級索引方案、與Spark SQL更好地結合等功能。

\"\"

4.3 更高性能

在以后的版本中,不用在對HBase的性能擔心了,我們在以后的版本中準備從Use CCSMap to improve HBase YGC tim、全鏈路異步化、基于非易失存儲的WALLess方案等方面努力成為LSM模型下性能最好的Java存儲引擎。

\"\"

4.4 更強擴展性和穩定性

這個方面我們以下幾個方面來解決:

\"\"

五、如何成為Committer

\"\"
\"\"

作者介紹

楊文龍,阿里巴巴技術專家HBase社區Committer\u0026amp;PMC,Ali-HBase內核負責人,對分布式存儲系統的設計、實踐具備豐富的大規模生產的經驗。

本文來自楊文龍在 DataFun 社區的演講,由 DataFun 編輯整理。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/279753.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/279753.shtml
英文地址,請注明出處:http://en.pswp.cn/news/279753.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Java的接口、繼承與多態

接口 java只支持單繼承,即一個類只能有一個父類,因此需要接口來實現多重繼承。 接口的定義 類和接口的區別:一個類通過繼承接口的方式,從而來繼承接口的抽象方法。類描述對象的屬性和方法,接口則包含類要實現的方法。 …

dvd刻錄軟件_如何在Windows 7中刻錄照片和視頻DVD(無需額外的軟件)

dvd刻錄軟件Software like DVD Flick is great for burning video to DVDs, but Windows 7 actually includes built-in DVD burning software. Strangely, it’s the last time the company did so—while Windows 8 and Windows 10 can play back DVD movies, they can’t cr…

如何實現office不同語言界面切換

前面我討論了《如何實現win7不同語言界面切換》,很巧今天又有網友問到如何實現 office的語言界面切換呢。嘿,那我們就繼續來玩轉界面吧。 office2007和office2010也支持輕松的進行語言界面切換,操作步驟也很簡單。 Office 語言界面包 (LIP) 是…

Mysql-高可用集群[MyCat中間件使用](三)

服務器-節點: 4臺 mysql-主: 192.168.2.40mysql-從-node-0: 192.168.2.41mysql-從-node-1: 192.168.2.42mycat: 192.168.2.45操作過程 1.搭建mysql主從節點2.搭建mycat中間件節點3.mycat服務配置4.測試讀寫分離,讀的分發1.搭建mysql主從節點 Mysql-高可用集群主從單一模式-binl…

yum安裝mysql5.6

1.檢查系統是否安裝其他版本的MYSQL數據 yum list installed | grep mysql yum -y remove mysql-libs.x86_64 2.安裝及配置 wget http://repo.mysql.com/mysql-community-release-el6-5.noarch.rpm rpm -ivh mysql-community-release-el6-5.noarch.rpm yum repolist all | grep…

離開互聯網行業_如何使用互聯網再也不會離開家

離開互聯網行業Thanks to the Internet, activities like “going outside” or “being a productive member of the community” are becoming increasingly optional parts of daily life. When your inner hermit feels like putting on his vampire cape, simple tricks l…

iOS 11開發教程(十三)iOS11應用編輯界面添加視圖

iOS 11開發教程(十三)iOS11應用編輯界面添加視圖 在iOS中添加視圖的方式有兩種:一種是使用編輯界面添加視圖;另一種是使用代碼添加視圖。以下是這兩個方式的詳細介紹。 1.編輯界面添加視圖 使用編輯界面添加視圖是一個相當簡單的工…

限流算法(記錄cyc大佬的專欄)

限流的必要性 如果一段時間內請求的數量過大,就會給服務器造成很大壓力,可能導致服務器無法提供其它服務。 計數器算法 通過一個計數器 counter 來統計一段時間內請求的數量,并且在指定的時間之后重置計數器。該方法實現簡單,但是…

bzoj 1024 [ SCOI 2009 ] 生日快樂 —— 遞歸

題目:https://www.lydsy.com/JudgeOnline/problem.php?id1024 因為每次把一塊切成兩塊,所以可以枚舉從哪里切開,然后遞歸求解; 一開始用了不太對的貪心思路,想著一定去切較長邊,但看來不一定。 代碼如下&a…

HBase存儲剖析與數據遷移

1.概述 HBase的存儲結構和關系型數據庫不一樣,HBase面向半結構化數據進行存儲。所以,對于結構化的SQL語言查詢,HBase自身并沒有接口支持。在大數據應用中,雖然也有SQL查詢引擎可以查詢HBase,比如Phoenix、Drill這類。但…

windows os x_如何立即在OS X上獲取Windows樣式的窗口捕捉

windows os xApple’s recent announcement that the upcoming OS X release (El Capitan or 10.11) will finally, at long last, come with the ability to snap windows to your screen edges. A feature Windows users have enjoyed since 2009. 蘋果公司最近宣布即將發布的…

Install Odoo 11 on CentOS 7

2019獨角獸企業重金招聘Python工程師標準>>> Odoo is the most popular all-in-one business software in the world. It offers a range of business applications including CRM, website, e-Commerce, billing, accounting, manufacturing, warehouse, project m…

創建maven項目,配置maven地址

2019獨角獸企業重金招聘Python工程師標準>>> 在eclipse中,新建maven項目next第二步,選擇webapp輸入id及包名,完成新建給項目build path,添加1.8版本jdk和tomcat項目右鍵屬性 project Facets,切換成web項目&…

如何在Excel中隱藏單元格,行和列

There may be times when you want to hide information in certain cells or hide entire rows or columns in an Excel worksheet. Maybe you have some extra data you reference in other cells that does not need to be visible. 有時您可能想在某些單元格中隱藏信息或在…

金三銀四,跳槽為敬

不是不想跳,是如今的市場水冷,挪不開腳。 三月有“黃金”。 過去很多年,這個被譽為市場黃金期的階段,最熱鬧的旗幟屬于房地產,其次是人才市場。跳槽二字,充滿誘惑。對每一個想要改變的人而言,…

yum搭建本地倉庫、國內源、下載rpm包、源碼安裝

yum搭建本地倉庫[rootlocalhost ~]# mount /dev/cdrom /mnt/mount: /dev/sr0 寫保護,將以只讀方式掛載cp -r /etc/yum.repos.d /etc/yum.repos.d.bak[rootlocalhost ~]# cp -r /etc/yum.repos.d/ /etc/yum.repos.d.ori/ //復制rm -f /etc/yum.repos.d/*[rootlocalh…

如何在Word文檔中添加頁眉或頁腳

Headers and footers are useful for adding things such as page numbers, dates, file names, and disclaimers to documents. Word allows you to add headers and footers with built-in, ready-made layouts or add your own custom headers and footers. 頁眉和頁腳對于在…

python基礎知識-8-三元和一行代碼(推導式)

python其他知識目錄 1、三元運算(三目運算) 三元運算符就是在賦值變量的時候,可以直接加判斷,然后賦值格式:[on_true] if [expression] else [on_false]res 值1 if 條件 else 值2 其他語言類似結構:判段的…

雙11成交多少和我無關,但這個魔性MV真的讓我笑噴!

今年天貓雙11,印象最深的就是“祝你雙11快樂”這句話!它讓大家感覺到雙11不再只是一個購物節,而是一個能引起廣泛共鳴、讓大家有快樂情感的真正節日。以往的傳統節日,都有一個標志性的符號,正如腦海中的每年春晚&#…

ios beta 下載_如何回滾到iOS 10(如果您使用的是iOS 11 Beta)

ios beta 下載So you’ve installed the iOS 11 beta and, well, you don’t love it. No problem, because you can roll right back to iOS 10. 因此,您已經安裝了iOS 11 Beta ,但是,您不喜歡它。 沒問題,因為您可以直接回滾到i…