1. <strong id="7actg"></strong>
    2. <table id="7actg"></table>

    3. <address id="7actg"></address>
      <address id="7actg"></address>
      1. <object id="7actg"><tt id="7actg"></tt></object>

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

        共 3490字,需瀏覽 7分鐘

         ·

        2021-06-22 16:06

        背景

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

        現(xiàn)狀

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

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

        HBase適用場(chǎng)景

        對(duì)象存儲(chǔ):不少的頭條類、新聞?lì)惖牡男侣?、網(wǎng)頁(yè)、圖片存儲(chǔ)在HBase之中,一些病毒公司的病毒庫(kù)也是存儲(chǔ)在HBase之中。

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

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

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

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

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

        HBase基礎(chǔ)概念

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

        表名:類比MySql中表名。

        列族:一組列的集合為列族。列族下的列可以N個(gè)。

        列名稱:存在列族下的單個(gè)列,列族下的名稱。

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

        HBase整體架構(gòu)

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

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

        集群與協(xié)同工作

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

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

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

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

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

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

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

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

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

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

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

        5.HFile讀取后,會(huì)將多級(jí)索引加載在BlockCache中,用于讀加速

        最佳實(shí)踐

        HBase主要特點(diǎn)(人資績(jī)效數(shù)據(jù)預(yù)處理平臺(tái)實(shí)踐適配的特點(diǎn))

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

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

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

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

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

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

        HBase缺點(diǎn)

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

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

        HBase注意事項(xiàng)

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

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

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

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

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

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

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

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


        HBase寫入最近30天TP99


        HBase寫入均值


        HBase查詢速度TP99


        HBase查詢均值



        推薦閱讀:

        世界的真實(shí)格局分析,地球人類社會(huì)底層運(yùn)行原理

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

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

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

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

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

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

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

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

        瀏覽 64
        點(diǎn)贊
        評(píng)論
        收藏
        分享

        手機(jī)掃一掃分享

        分享
        舉報(bào)
        評(píng)論
        圖片
        表情
        推薦
        點(diǎn)贊
        評(píng)論
        收藏
        分享

        手機(jī)掃一掃分享

        分享
        舉報(bào)
        1. <strong id="7actg"></strong>
        2. <table id="7actg"></table>

        3. <address id="7actg"></address>
          <address id="7actg"></address>
          1. <object id="7actg"><tt id="7actg"></tt></object>
            琪琪色网 | 亚州AV综合色区无码一区 | 日韩成人电影在线 | 午夜精品 | 伊人精品在线视频 | free性hd黑人 | ass最极品女人下部pics | 九色PORNY成人原创 | 国产精品666 | 艹逼免费网站 |