中國最具影響、規模最大的大資料領域盛會—— 2013中國大資料技術大會(Big Data Technology Conference,BDTC)于2013年12月5-6日在北京舉行。 數十家領軍企業,近七十場主題演講,不僅覆蓋Hadoop生態系統與流式計算,即時計算與NoSQL、NewSQL等技術方向,還對互聯網、金融、電信、交通、醫療等創新案例,大資料資源的法律法規、 大資料商業利用的政策管制等有深入討論。
在12月5日進行的全體會議上,Apache HBase專案管理委員會主席Michael Stack對HBase的歷史、現在和未來。 HBase在2014年的演進,包括HBase 1.0.0,Multi-WAL,speculative replica read,更多的支援multe-tenancy,以及off-heap。
圖:Apache HBase專案管理委員會主席Michael Stack
以下為演講實錄:
大家好,首先我要感謝組委會給我這個機會在這裡發言,談一談Apache HBase做的事情,剛才上午談到大資料堆疊的事情。 首先我做Apache HBase專案的主席已經有一段時間了。 這是我今天要談的,主要從宏觀角度談談HBase是什麼,之後會談談它現狀未來以及未來開源專案的發展狀況。 最後也會稍微談談整個生態系統。
HBase是一個開源的分散式的,可擴展的,高一致性,低延時,非關係資料庫。 HBase是基於Apache Hadoop,核心為分散式檔案系統和MapReduce。
我們目標就是希望在商品級硬體中運行。 Apache HBase想法來自于2006年谷歌的一個論文。 我們首先在2007年開始是用Apache HBase。 如果你仔細看一看HBase獲得了包括英特爾在內的許多企業的貢獻。
資料模型簡單說一下,在HBase裡面這裡有一個表,這是一個大表,有行有列,列都是不同的類型。 這有它的主鍵,列得有不同的元素。 列你創建這個表格的時候,首先要告訴它主要的屬性是什麼,多少列,然後之後還可以再增加列。 這裡可以看到它在整個的集群當中可以分拆,可以看到這裡可以有不同的集群部分,這樣的話在讀寫部分還可以擴大一些規模。 所有這些資料都是Bytes,但是你要想歸類的話就得自己做了。 並且剛才我也提到我們基本上由列組成的這個表格,我們有比較小表格組合的機制,在HBase所有都是經過排序的,是按照字母排序的,列、行都是排過序的,以3D的形式顯示,以時間的順序排的,如果特意規定我們自己按時間的順序排, 可以看到這是一個3D的效果圖。 當然這裡有很多不同更新的版本,然後它會給你自動的顯示出來。 HBase一個核心的特性就是它的一致性很強,然後一致性比可用性在我們這裡更需要一些,它只會顯示你寫的一些東西。 讓我們能夠保證在一行當中,你比如說你這個行裡面有一百萬列,你要更新其中的10萬個,我們能夠保證這10萬個更新,你要麼都看到,要麼一個都看不見,這是HBase能保證的。
談一下架構,當然在最下面就是HDFS,可以對HBase的表格進行分類,另外也可以進行利用查詢預測一下通過伺服器端的篩查器給進行的推薦,另外我們還有協同的處理器,這裡面非常關注于安全性。 比如說他們可能有一些相關能夠推出垃圾郵件等特點。 看一下API,這裡面可能有接收,有推送,有接受,掃描,還有不同運營的方式,或者是運行的這種方式。 當然要看一下你資料級到底是什麼,然後看一下你進行什麼樣的卸載,一般來講每分鐘寫一千到兩萬次,每個節點每秒都能寫一千到兩萬次。
到底誰使用了HBase? 我們看一下這張幻燈片,他們都是使用這些相關的技術獲取相關的資料。 比如說華為,華為很長期使用我們產品,淘寶也是很長期使用我們的技術。
現在我們看一下相關的產品以及我們的安裝,我們有一些應用在Facebook裡使用的,你在Facebook發一個郵件,或者你轉帖了什麼樣的內容,這個都是基於HBase的集群的。 我們使用者都是超過一百多萬個了,涉及到成千上萬個不同的機器。 我們使用了Users,這個有很多集群進行支援的,這樣我們可以進行更好的更新,以及在整個期間都是沒有什麼問題的。 我們看一下Pinterest,他也是使用AWS,每個月PV達到十億,已使用5個生產集群,而且這個數位在不斷的增長。
Flurry給你手機應用上有服務報告的程式,我們知道他有兩個集群,每個集群有一千個節點,Flurry是我們HBase長期的使用者,他們可以進行相關內容的報告,他們有單獨的一個低延時的集群, 也就是說一秒鐘的時候達到一個M的讀取。 再來看一下Cassini,Cassini在搜索索引這塊進行了我們的應用。 在他們前端可能會有各種不同的資料的來源,所以他們也是都把它們進行了進一步的應用,放在他們搜索的索引當中。
我們看一下不同的部署的類型,實際上有時候我們有不同資料的需求,它相關的部署類型不一樣,或者特點也是不一樣的。 另外也有Facebook,比如說像在Facebook以及在他們銷售人員當中會使用這樣的功能叫時間的序列。 另外還有其他很多公司都是使用了我們相關的應用。 到底這個專案是誰來做的? 我們來看一下這張幻燈片,這裡麵包括了一個團隊,這個團隊都是在HBase進行了相關的努力和工作。 對於HBase來講我們也有不同的開發人員,但是我們現在正在鼓勵有一些新的人員新的團隊,如果你對這些非常感興趣你可以會後都找我,我們非常歡迎新的團隊能夠加入我們。
我們再看幾個幻燈片就是關於開發的一些內容。 我們現在是更加的開放的,所以我們可以看到在這塊我們需要一些説明的,這張幻燈片非常有意思,因為它給我們展示是隨著時間的承諾我們做的commits。
我們看一下HBase今天是什麼樣子的? 0.94現在性能穩定,0.96會很快的出來。 上一個月的時候剛剛推出0.96.0,我們有一些新主題希望它更穩定,操作性更強,我們希望開發相關不同的工具,希望能夠對它進行規模化,這個問題能夠實現它進一步的開發,我們希望HBase的開發人員也是進一步的參與到整個系統開發裡面,這是我們一些樣品 。 我們裡面是有一些可以插入的這樣一些外掛程式。 我們觸發器也是變得越來越智慧了。 還有我們地區的平衡器,Hadoop1、Hadoop2,還有更加智慧的地區的平衡器,有一些地區的平衡器我們需要對它的地點進行進一步的識別,另外還有一些區域的複製或者是安排等等。
在之前的時候我談到我們要保持一致性,但是我們現在有的時候因為我們在離線的時間也是越來越少了,我們希望也是能夠實現離線之後再恢復這樣一些相關工作。 如果我們一旦離線我們再上線我們希望資料儘快的進行恢復,這方面工作我們也在進行努力,這個可能需要一點時間了,因為我們集群被中斷以後必須花一定時間進行修復,然後讓集群知道,讓集群必須要醒過來, 因為資料可能被移到另外一個新的地點,所以說這樣的一個視窗是我們現在正在努力進行的工作。 如果說要是說我們整個階段各個不同的時間縮短,整個恢復的時間都會縮短了。 這是一個其他的問題,看起來沒有很大問題,但是我們也在進行這個方面的努力。
還有HBase我們在序列化這塊也做相關的工作。 有時候我們必須要進行手寫,你出去再回來可能要進行手寫,可能每一個開發人員所做的工作是不一樣的,這樣的話我們進行維護再進行進一步的開發可能比較困難,有時候可能會出現這種問題,我們看一下這個集群怎麼樣實現序列化, 整個序列化的時間可能花得比較長,我們必須將我們系統表格進行改變,以及我們檔的系統也必須要改變,這個ZooKeeper上面也有一定的改變,進行協定的改變,有時候某一個地方出現問題,進行序列化, 每一個地方發生變化在另外一個地方也需要序列化,這個可能需要一定的時間。 這是NameSpaces,還有HBase,這是基於集群的。 我們想瞭解誰到底在正在做什麼? 我們非常關注NameSpaces的安全性和對於NameSpaces分組的題 。 對於0.96版來講還有更多的事情要做,一個跨行地區內的交易等等,還有我們查詢的追訴,還有新的UI,還有線上地區的整合,還有在用戶端的輸入。 來看一下0.98版我們會非常快的發佈,現在主要在英特爾來做,這裡面我們要非常關注安全性,可視性標籤也非常重要。 所以說如果某人看表裡面相關的資料,這個資料就應該讓他知道是什麼意思。
我想說明年我們會花一定的時間就能基本完成了。 所以這是我們相關的工作。 我們對於tenancy有更多的支援。 可能有的時候我們有不同的使用者,他們可能都在一個集群上運行,所以說我們對於多的使用者同時使用的時候給他們提供更多的一個支援,所以這個方面我們還有更多這方面應用。
再來看一下生態系統,有一些非常有意思的應用現在我們開始應用了,一個是OpenTSDB,這個系統可以讓我們實現timeseries,也可以將timeseries疊加,我們可以將不同的請求進行連接, 我們可以更好的應答客戶的查詢。 有時候我們timeseries可能有時間的累計,一個月等等,在你資料庫裡面可能不能及時對他們進行分析,一個月之後對他們進行分析,如果有這個TSBD能夠將這個做非常好的維護,你幾天之後看這個還是非常清楚的看的, 這個工具非常好。 韓國小團隊一直用HBase,在上面做了一個小的系統。
HCPI大多數都是比較原始的一些東西,東西並不多,HBase一個特性就是說我們不會說雇人做什麼東西? 如果你在HBase上一個東西做的成功的話,那個所有的功勞都歸於你自己。 比如說左邊是我一個電費支出圖,比如說它可以按月然後進行顯示,也可以跟我鄰居進行一個比較,總之就是非常好的應用。 如何讓人們更好的寫應用? 在這個領域做了很多的工作,在HBase寫應用如何能夠做得更簡單。 比如說傳統意義上來,可能不讓你接觸這種底層的東西。
還有比如集體學習實驗室等等並且它也是開源的,是非常好的框架,大家有興趣想在HBase上面寫一些應用的話可以研究一下。 CDK當然是完全的HBase的專案,CDK不僅僅涉及到一部分的構建,基本上涵蓋了大部分。 SQL現在當然也有NoSQL,這是在HBase上的SQL,可以有篩檢程式、共同處理器,整個輸入效果都非常好,SQL引擎整個環境裡面都非常不錯,也可以用很多的資料來源,Drill、Cloudera等等, 這裡可以自動説明你索取資料來源,大家有興趣可以聯繫我,總結一下它可以有自由讀寫功能。 謝謝!