<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          HBase在京東人資數(shù)據(jù)預(yù)處理平臺中的實踐

          共 3490字,需瀏覽 7分鐘

           ·

          2021-06-22 16:06

          背景

          人資績效系統(tǒng)數(shù)據(jù)預(yù)處理平臺,負(fù)責(zé)接收所有上游業(yè)務(wù)量數(shù)據(jù)。具有數(shù)據(jù)量大、非結(jié)構(gòu)化數(shù)據(jù)、更新單個業(yè)務(wù)量數(shù)據(jù),查詢性能要求高等特性。通常技術(shù)上可以選擇OSS、MySql數(shù)據(jù)庫、ES等存儲方案。其中OSS云存儲方案,查詢性能與更新單個業(yè)務(wù)量數(shù)據(jù)上無法滿足。MySql數(shù)據(jù)庫如果每對接一種業(yè)務(wù)量創(chuàng)建一個表的方式,對于更新查詢等方面復(fù)雜度較高,不利于系統(tǒng)擴(kuò)展。而ES存儲量與查詢量都可以滿足,但更新單個字段不夠友好,且ES成本較高。

          現(xiàn)狀

          技術(shù)選型時,充分考慮到人資數(shù)據(jù)預(yù)處理平臺的特性,數(shù)據(jù)量大,數(shù)據(jù)非結(jié)構(gòu)化,高性能、開源穩(wěn)定等要求,選型HBase。

          HBase是一個分布式的、面向列的開源數(shù)據(jù)庫,它是一個適合于非結(jié)構(gòu)化數(shù)據(jù)存儲的數(shù)據(jù)庫,它在Hadoop之上提供了類似于Bigtable的能力,同時又是一個高可靠性、高性能、面向列、可伸縮的分布式存儲系統(tǒng),同時HBase技術(shù)可在廉價PC Server上搭建起大規(guī)模結(jié)構(gòu)化存儲集群,性價非常高。

          HBase適用場景

          對象存儲:不少的頭條類、新聞類的的新聞、網(wǎng)頁、圖片存儲在HBase之中,一些病毒公司的病毒庫也是存儲在HBase之中。

          時序數(shù)據(jù):HBase之上有OpenTSDB模塊,可以滿足時序類場景的需求。

          推薦畫像:特別是用戶的畫像,是一個比較大的稀疏矩陣,螞蟻的風(fēng)控就是構(gòu)建在HBase之上。

          時空數(shù)據(jù):主要是軌跡、氣象網(wǎng)格之類,滴滴打車的軌跡數(shù)據(jù)主要存在HBase之中,另外在技術(shù)所有大一點的數(shù)據(jù)量的車聯(lián)網(wǎng)企業(yè),數(shù)據(jù)都是存在HBase之中。

          消息/訂單:在電信領(lǐng)域、銀行領(lǐng)域,不少的訂單查詢底層的存儲,另外不少通信、消息同步的應(yīng)用構(gòu)建在HBase之上。

          Feeds流 :典型的應(yīng)用就是xx朋友圈類似的應(yīng)用。

          HBase基礎(chǔ)概念

          命名空間:類比MySql中數(shù)據(jù)庫庫名。

          表名:類比MySql中表名。

          列族:一組列的集合為列族。列族下的列可以N個。

          列名稱:存在列族下的單個列,列族下的名稱。

          RowKey:Hbase存儲采用 key-value方式,RowKey就是Key,所有的修改,查詢等操作都只能基于RowKey,必須唯一。

          HBase整體架構(gòu)

          HBase由三種類型的服務(wù)器以主從模式構(gòu)成

          Region Server:負(fù)責(zé)數(shù)據(jù)的讀寫服務(wù),用戶通過與Region server交互來實現(xiàn)對數(shù)據(jù)的訪問。每個Region服務(wù)器中包含最多1000個Region,每個Region里面包含了StartKey到EndKey的一個區(qū)間數(shù)據(jù)。
          HBase HMaster:分組分配Region和操作DDL,在集群處于數(shù)據(jù)恢復(fù)或者動態(tài)調(diào)整時,監(jiān)控所有Region Server的狀態(tài)。
          ZooKeeper:負(fù)責(zé)維護(hù)集群的狀態(tài)(某臺服務(wù)器是否在線,服務(wù)器之間數(shù)據(jù)的同步操作及Hmaster的選舉等)。

          集群與協(xié)同工作

          Region Server,會通過心跳方式與Zookeeper保持連接,并創(chuàng)建一個臨時節(jié)點,當(dāng)無法監(jiān)聽到心跳時,會通知Zookeeper,同時刪除臨時節(jié)點,而HMaser會通過zookeeper得到Region Server服務(wù)器的狀態(tài),當(dāng)服務(wù)器下線時,會進(jìn)行數(shù)據(jù)恢復(fù),容災(zāi)等操作。HMaster同樣會同Zookeeper保持心跳,用于監(jiān)控HMaster狀態(tài),當(dāng)HMaster下線時,會通過選舉方式,將HMaster集群中的一臺機(jī)器設(shè)置成Active,其他機(jī)器設(shè)置成InActive狀態(tài),來保證整個集群的高可用性。

          數(shù)據(jù)寫入過程

          1.HBase客戶端發(fā)起Put請求時,會先將數(shù)據(jù)寫入預(yù)寫日志(WAL)中,將操作記錄寫入WAL末尾。WAL用于Region Server服務(wù)器崩潰時,恢復(fù)MemStore中數(shù)據(jù),WAL存儲在Hadoop的HDFS中。

          2.數(shù)據(jù)在寫入Wal后,會將數(shù)據(jù)先寫入Region Server下Region中MemStore中(寫入緩存,內(nèi)存級別)

          3.在寫入MemStore成功后,反饋給客戶端本次寫入已經(jīng)完成。

          4.當(dāng)MemStore達(dá)到一定量級時,會通過Flush方式,生成HFile,存入Hadoop的HDFS中。HFile在生成前,會在內(nèi)存中對Key進(jìn)行升序排序,將排序好的數(shù)據(jù)順序?qū)懭際File中,并在HFile中生成一個多級索引,還有一個尾部指針。

          數(shù)據(jù)讀取過程

          1.客戶端發(fā)起請求,從Zookeeper中獲取一個叫MetaTable的元數(shù)據(jù)。注:如果本地有緩存會優(yōu)先讀取本地緩存。

          2.客戶端通過MetaTable,得知RowKey所有在的Region Server服務(wù)器得到Region位置。

          3.客戶端優(yōu)先從Region中的BlockCache(讀取緩存)中獲取數(shù)據(jù),如果BlockCache中不存在,會通過MemStore(寫入緩存)中獲取數(shù)據(jù),如果還不存在,會通過HFile中讀取,并將數(shù)據(jù)返回給客戶端。

          4.讀取HFIle時,會通過尾部指針中布隆過濾區(qū)域與時間區(qū)域,可以快讀定位RowKey是否在HFile文件當(dāng)中。

          5.HFile讀取后,會將多級索引加載在BlockCache中,用于讀加速

          最佳實踐

          HBase主要特點(人資績效數(shù)據(jù)預(yù)處理平臺實踐適配的特點)

          1.HBase為分布式列式數(shù)據(jù)庫,可以橫向進(jìn)行擴(kuò)展,解決系統(tǒng)數(shù)據(jù)量大的問題。

          2.HBase為列式存儲數(shù)據(jù)庫,一個列族下可以支持成百上千列,解決系統(tǒng)非結(jié)構(gòu)化數(shù)據(jù)存儲與更新單個列數(shù)據(jù)的問題。

          3.HBase具備毫秒級讀寫,隨機(jī)讀寫,實時讀寫,無線存儲拓展,數(shù)據(jù)高可用,多級緩存,服務(wù)不中斷,主備自動切換,異地雙活等特性,解決系統(tǒng)對于性能,存儲的問題。

          4.HBase存儲自帶多種壓縮算法,降低數(shù)據(jù)存儲量。

          5.HBase數(shù)據(jù)支持多版本,對修改的數(shù)據(jù)可以支持多個版本數(shù)據(jù)。

          6.HBase自帶數(shù)據(jù)有效期功能,對于長時間無需使用的數(shù)據(jù),可以進(jìn)行刪除。

          HBase缺點

          1.HBase核心是Rowkey的設(shè)計,Rowkey需要保證唯一的同時還需要散列,所有查詢?nèi)啃枰?jīng)過Rowkey查詢,因次需要在數(shù)據(jù)庫或者ES中建立二級索引輔助搜索。

          2.HBase為列式存儲,無法根據(jù)單獨的列進(jìn)行查詢,只能通過RowKey進(jìn)行查詢。

          HBase注意事項

          1、數(shù)據(jù)熱點問題以及解決方法
          HBase每張表下默認(rèn)會有10個Region,如果使用不正確會導(dǎo)致所有數(shù)據(jù)寫入同一個Region服務(wù)器下,造成數(shù)據(jù)熱點問題,解決數(shù)據(jù)熱點問題一共需要注意兩個方面。

          第一方面是建表時(預(yù)分區(qū)建表),要根據(jù)自己的RowKey特性選擇正確的分區(qū)規(guī)則,一共有三種方式,每種分區(qū)方式都不一樣,在這里建議使用 HexStringSplit這種方式。

          第二方面是RowKey的設(shè)計,需要保證唯一的同時盡量散列。人資側(cè)采用雪花算法生成唯一ID,對唯一ID進(jìn)行MD5轉(zhuǎn)16進(jìn)制加上反轉(zhuǎn)后的唯一ID作為RowKey,可以將數(shù)據(jù)均勻的分散到多個Region中,避免數(shù)據(jù)熱點問題。

          2、HBase批量獲取數(shù)據(jù)大小建議
          對HBase進(jìn)行批量查詢時,將批量數(shù)據(jù)控制到100以內(nèi),超過后性能會下降非常明顯。

          3、配額與限流
          申請HBase實例時需要注意,如申請時配額寫成10000QPS,意味著這個實例下所有表的讀+寫每秒不能超過10000次,超過配額后,服務(wù)會報警超出配額,并會進(jìn)行重試。當(dāng)10000次不能滿足要求時,可以申請?zhí)嵘漕~或者改成批量操作,減少與服務(wù)器連接次數(shù)。

          4、單行數(shù)據(jù)大小限制
          單行不建議超過400KB,KV存儲系統(tǒng)非對象存儲系統(tǒng)。如果Value過大會導(dǎo)致處理性能直線下降表初始化后默認(rèn)只能接受512KB大小的VALUE入庫。

          5、HBase連接注意事項
          HBase每次連接耗時較高,構(gòu)建Connect對象時,需要在程序啟動時進(jìn)行,不能在使用時進(jìn)行創(chuàng)建。

          HBase在人資績效數(shù)據(jù)預(yù)處理平臺中的性能參考


          HBase寫入最近30天TP99


          HBase寫入均值


          HBase查詢速度TP99


          HBase查詢均值



          推薦閱讀:

          世界的真實格局分析,地球人類社會底層運行原理

          企業(yè)IT技術(shù)架構(gòu)規(guī)劃方案

          論數(shù)字化轉(zhuǎn)型——轉(zhuǎn)什么,如何轉(zhuǎn)?

          企業(yè)10大管理流程圖,數(shù)字化轉(zhuǎn)型從業(yè)者必備!

          【中臺實踐】華為大數(shù)據(jù)中臺架構(gòu)分享.pdf

          華為的數(shù)字化轉(zhuǎn)型方法論

          華為如何實施數(shù)字化轉(zhuǎn)型(附PPT)

          超詳細(xì)280頁Docker實戰(zhàn)文檔!開放下載

          華為大數(shù)據(jù)解決方案(PPT)

          瀏覽 64
          點贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  最新大香蕉视频久久网 | 人人爽人人爽人人爽AV片特级 | 最新毛片在线观看 | 国产精品人妻在线 | 亚洲夜夜撸 |