1. 程式人生 > >HBase技術與應用實踐 | HBase2.0重新定義小物件實時存取

HBase技術與應用實踐 | HBase2.0重新定義小物件實時存取

本次分享來自中國HBase技術社群第七屆MeetUp成都站,分享嘉賓天引 阿里巴巴 技術專家專注在大資料領域,擁有多年分散式、高併發、大規模系統的研發與實踐經驗,先後參與HBase、Phoenix、Lindorm等產品的核心引擎研發,目前負責阿里上萬節點的HBase As a Service的發展與落地。
分享主題:HBase2.0重新定義小物件實時存取
內容概要:小物件,特別指1K~10MB範圍的資料,比如圖片,短視訊,文件等廣泛的存在於人工智慧,醫療,教育,生活分享,電子商務等領域。HBase2.0在MOB技術的加持下重新定義小物件實時存取,具有低延遲,讀寫強一致,檢索能力強,水平易擴充套件等關鍵能力。本文介紹了MOB特性的原理與實現,以及與經典物件儲存相比,MOB帶來的差異性與優勢。

下載連結:http://hbase.group/slides/167

參考連結:HBase2.0重新定義小物件實時存取


1.背景介紹

HBase2.0加持MOB技術,支援小物件實時存取,具有讀寫強一致,低延遲,高併發等特點,併兼容所有企業級特性如Snapshot,Replication。

MOB問題背景諸如以下問題:

  • IO放大:

    • 多副本

    • WAL

    • Flush

    • Compaction

  • 資源限制

    • ECS 16核64G 5Gbps

    • 高效雲盤140MBps

    • ECS15個掛載點

  • 寫入瓶頸

    • Compaction落後導致檔案數上升,進而導致flush延遲,進而導致記憶體瓶頸,最終阻塞寫入;同時檔案數過多導致查詢慢

    • 假設網路IO放大係數=5,則實際可用頻寬為5Gbps / 8 / 5 = 128MB/s,對於1MB物件單機能提供的TPS=128


2.MOB原理與背景

解決思路:降低Compaction的頻率,一天或者一週做一次合併。

  • 系統架構

dd156832cce5b348e160b8af7c68c64de281a272 47bb5763adf3f517dc2e8c3c8a6c68fa313b1eff 1122d64344788c5c15a3ad5212b8c8e195a59bf4 c98e4f8873e1f27e7eecf68a4138ceeafd4aca0e e84e72ed4adf9eec73ad67be8ad02dc2dd9fcec0
  • MOB合併策略

    • 分組合並

      • 按照檔案所屬分割槽以及日期兩個維度進行分割槽,分割槽內的檔案進行合併稱為:PartitionedMobCompactor

    • 預設每日合併

      • 按天分割槽,小於閾值的檔案參與合併,閾值預設為1028MB

    • 周月合併

      • 周合併,按周分割槽,當前周文件小於閾值的參與,其它周的檔案小於7*閾值的參與

      • 月合併,按月分割槽,當前周不參與,本月周小於7*閾值參與,其它月小於28*閾值的參與

  • MOB快取

    • 檔案控制代碼快取

      • hbase.mob.file.cache.size = 1000

      • LRU cache

    • MOB物件快取

      • 複用BlockCache

  • 使用方式

    • Shell訪問

      • hbase> create 't1', {NAME => 'f1', IS_MOB => true, MOB_THRESHOLD => 102400} 

      • hbase> alter ‘t1’, {NAME => ‘f1’, IS_MOB => true, MOB_THRESHOLD => 102400} 

    • Java API

      • HColumnDescriptor hcd = new HColumnDescriptor(“f”);

        hcd.setMobEnabled(true);

        hcd.setMobThreshold(102400L);


3.MOB VS. 傳統物件儲存

  • 回顧物件儲存

    • 模型

      • KV 結構

      • 一組KV組成的集合成為Bucket

      • 缺少靈活性

    • API

      • 支援字首掃描,獲取符合條件的Keys

      • 通過Key獲取物件

      • 檢索能力弱

    • 訪問協議

      • REST

      • 簡潔,語言無關

      • 消耗更多的連結和網路頻寬

    • 計費模式

      • 按請求次數計費

      • 請求頻率越高成本越高

      • Bug可能引發計費災難

  • 雲HBase與物件儲存對比


d32a089b8764e637cb0fc4e4cf1773a0eb6166ec
  • 從一條SQL開始

    • 使用者表T:包含三個屬性S1、S2、S3

      屬性的大小為50bytes左右,包含一個物件資料Object從100KB~10MB

      S1

      S2

      S3

      Object

      查詢 select Object from T where S1 = xxx and S2 > yyy and S3 < zzz

  • 物件儲存方案

    • 設計邏輯表為:S1+S2+S3 => Object,將S1、S2、S3組合成一個key

6bba5d7068ff04c1241a26196cce764e0945008e
    • 優勢

      • 讀寫強一致

      • 支援水平擴充套件

    • 劣勢

      • 實時性差,一次請求要查詢N次伺服器

      • 檢索能力不足,僅支援key的字首檢索

      • 當屬性列增多,特別是動態增加的情況下,物件儲存很難支援(key會變得非常複雜)

  • MySQL+物件儲存

fdc774c44ed1d894fda1542a67baf6dfb12cf433
    • 優勢

      • 檢索能力強

      • 支援儲存結構化資料

    • 劣勢

      • 實時性差,一次請求要查詢N次伺服器

      • 讀寫存在不一致問題

      • 不支援動態列

      • 運維複雜

  • HBase MOB

d1bf4030d6a655ace6bc616d0898f3b7f8e7c8fd
    • 優勢

      • 實時查詢,延遲低

      • 讀寫強一致

      • 檢索能力強

      • 支援儲存結構化資料

      • 支援動態列

      • 支援水平擴充套件

      • 易於維護

  • 各方案對比

01ca3ab2eaf64cbbfeb240db753067f9b7f985a3

4.總結與展望

HBase2.0重新定義了小物件實時存取的業務訪問方式,不再是索引+物件的多次查詢,提供簡潔的一體化解決方案。具有訪問延遲低,讀寫強一致,檢索能力強,水平易擴充套件等關鍵能力;並且具備動態列,多版本等靈活的功能;最後一體化的解決方案簡化了使用者端的程式碼,也減少了服務端的運維成本。

後續發展包括:

  • 整合OSS

    • 將冷資料歸檔到OSS,優化成本

  • 提升MOB合併能力

    • 目前由Master執行,考慮改為分散式

  • 獨立配置

    • MOB可以採用不同於主體表的壓縮,編碼,塊大小等配置

703a1490a1db961932a35f7312a73617d02d41a6 d2833c50467ef870b668288b1018cc7f510bf47b 46fb5f8a30283e9ab4507d31cd80302a91af0991 238bfb8dd09b20ae59d81f374c5a9b39ea36c183 398637b87ece336d72b75353a663f1076794d7d4 1d076bb86dac4dc52b0272a59b09aa194730e8f4 9a42f0523f338268b9f8ed33a05b5feeef61f1a2 0b0394cb39a03ce366f32edb59c9b39b730819f8 16282fb007f1f976511de39b32bc21e37b6eb187 f0435df655fcda871291bfeafaa06fc10d9977c8 86b139c07a48c97bff51031e7028b3494dfdf870 dd8eff608de760980691aebccbe1fa34faab65c5 259568ccec75f182d8831305a213768f9df4ef81 ceecfe445cd709e2cfefac81fdf35f990e24652c 53e2a3671fe1b4d8865d8d8aaeb773a518e94f02 2d0cf30bb8a7ba12b2db35f62feb4c95e9f3facb b86ea6aa2a391d50b45928ac6cf4e05b14d5d298 f27c3e5bd5d47eba606c456808a24292fc0b894b 682267e37bfb56089b4ac6152504c6479ef27f99 be9c89ae19333e7751cdb278b32d685385110934 366cbc298ee771ad2610c9fb626a399854985ec1 bb05a8893d21322d283e650f2b124a0cf77261ca

相關推薦

HBase技術應用實踐 | HBase2.0重新定義物件實時存取

本次分享來自中國HBase技術社群第七屆MeetUp成都站,分享嘉賓天引 阿里巴巴 技術專家專注在大資料領域,擁有多年分散式、高併發、大規模系統的研發與實踐經驗,先後參與HBase、Phoenix、Lindorm等產品的核心引擎研發,目前負責阿里上萬節點的HBase As a Service的發展與落地。 分

後臺開發核心技術應用實踐pdf-帶書籤和原始碼

因為後臺開發所需要的技術廣泛而堅深,要成為一名後臺開發工程師門檻很高,所以相關人才比較緊缺。作者是在騰訊工作多年的後臺開發工程師,不僅技術精湛,而且在處理大量實際業務的過程中積累了豐富的開發經驗。在這本書中,她不僅首次為後臺開發工程師勾勒出了完整的知識能力體

後臺開發-核心技術應用實踐筆記(linux程式記憶體空間佈局)

linux下C程式的記憶體五區:程式碼段:存放程式執行程式碼的一塊區域。資料段:包括初始化資料段和未初始化資料段。初始化資料段用於存放已初始化的全域性變數和已初始化的靜態變數。未初始化資料段用於存放未初始化的全域性變數和未初始化的靜態變數。字串常量區:存放字串常量堆:存放程式

全面解讀 NoSQL 資料庫 Redis 的核心技術應用實踐

網際網路和Web的蓬勃發展正在改變著我們的世界,隨著網際網路的不斷髮展和壯大,企業資料規模越來越

後臺開發 -- 核心技術應用實踐

後臺開發 核心技術與應用實踐 . C++程式設計常用技術 最好不要在標頭檔案中使用名稱空間,很容易造成命名衝突。 strlen與sizeof的區別: strlen是函式,在執行時才能計算,傳入引數是char*指標,返回字串長度。 sizeof()是運算子,而不是一個函式,在編譯時就計算好了,用於計算

後臺開發:核心技術應用實踐 -- C++

本書介紹的“後臺開發”指的是“服務端的網路程式開發”,從功能上可以具體描述為:伺服器收到客戶端發來的請求資料,解析請求資料後處理,最後返回結果。 ### C++程式設計常用技術 include 一個 .h 檔案,就是等於把整個 .h 檔案給複製到程式中,include 一個 cpp 檔案也是如此。使用in

後臺開發:核心技術應用實踐--執行緒程序間通訊

## 多執行緒 程序在多數早期多工作業系統中是執行工作的基本單元。程序是包含程式指令和相關資源的集合,每個程序和其他程序一起參與排程,競爭 CPU 、記憶體等系統資源。每次程序切換,都存在程序資源的儲存和恢復動作,這稱為上下文切換。程序的引入可以解決多使用者支援的問題,但是多程序系統也在如下方面產生了新的問

HBase2.0在360的技術改進應用實踐

一、HBase在360的使用情況 從資料來看,360目前共有27個HBase叢集,其中線上叢集9個,綜合叢集3個。整個360共有12500個HBase節點,單叢集最多有2184個RegionServer。360 的HBase叢集共有1885個Table以及719703個Region,而單表最大的Region

區塊鏈技術應用回顧

融資 戰略 int -i 零售 高效 net 互聯網 理財 區塊鏈(BlockChain)是分布式數據存儲、點對點傳輸、共識機制、加密算法等計算機技術的 新型應用模式。所謂共識機制是區塊鏈系統中實現不同節點之間建立信任、獲取權益的數學算法。這次是再次回顧了,筆

php核心技術最佳實踐知識點(上)

mode roc url mys 修改 class null nbsp (上) 一.基礎 1.serialize:序列化一個類,只是保存了類的屬性,所以還需要反序列化unserialize的時候包含該類. 2.對於將array轉為object,這個轉換因為沒有具體的類,所以

php核心技術最佳實踐知識點(下)

清空 倒序 var 統計 apache this is_null 技術 其他 九.緩存 1.緩存三大要素:命中率, 緩存更新策略,緩存最大數據量 2.命中率(mysql為例):mysql提供了一系列的query cache的global status來提現數據庫緩存的情況:

存儲技術應用

udev product pro 徹底 重新掛載 登錄 ip協議 交換機 集中管理 存儲技術與應用 存儲技術分類 DAS直連式存儲 將存儲設備通過SCSI接口或光纖通道直接連接到計算機上,不能實現數據與其他主機共享,占用服務器操作系統 NAS網絡技術存儲 一

01: 存儲技術應用 、 iSCSI技術應用 、 udev配置 、 NFS網絡文件系統 、 Mul

nas stat 準備 lib www 獲取 自定義 rul tip 存儲的是什麽? 數據數據存儲的介質? 永久存儲(硬盤) 臨時存儲(內存)存儲位置? 雲存儲 內存存儲 硬盤存儲存儲類型? 共享存儲 分布式存儲存儲技術? DAS

嵌入式技術應用專業畢業以後可以做什麽

簡單 軟件工程師 嵌入式硬件 images 操作 inux c語言、 根據 c語言 很多電子愛好者都會學習嵌入式技術,在學之前感覺好神秘的樣子,而當你學完之後,你才發現嵌入式大概可以劃分為兩種,一種是嵌入式軟件技術,一種是嵌入式硬件技術。咱們今天就重點說說軟件方面的吧!  

百度強勢入場,AI們集體打 call:揭秘百度智能客服背後的語音技術應用

一起 直接 net sap pac 上下 應用 class 例子 兩年前的今天,AI流行下圍棋;今天,AI流行打電話……這個潮流的最近一次上演,是幾天前的百度AI開發者大會上,李彥宏現場播放了百度AI客服邀請開發者的真實電話錄音。當時我就在現場,第一通電話裏那位開發者方言比

葉聰:朋友圈背後的計算機視覺技術應用

平臺 假設 計算 互動 hog 雲計 做成 基於 出發 歡迎大家前往騰訊雲+社區,獲取更多騰訊海量技術實踐幹貨哦~ 本文由雲加社區技術沙龍 發表於雲+社區專欄 演講嘉賓:葉聰,騰訊雲AI和大數據中心高級研發工程師。在多年的雲計算系統研發經歷中,負責領導了多個百萬級用戶

《深度學習:原理應用實踐》中文版PDF

應用 href 書籍 nag tex 原理 圖片 water images 下載:https://pan.baidu.com/s/1YljEeog_D0_RUHjV6hxGQg 《深度學習:原理與應用實踐》中文版PDF,帶目錄和書簽; 經典書籍,講解詳細; 如圖: 《深度學

Ansible自動化運維:技術最佳實踐

資深運維人員聯手打造。 掌握大規模叢集運維管理的必備參考。 詳細講解Ansible自動化運維方式與技巧。 Ansible是DevOps語言之一,是第一款可以讀/寫跨平臺的“Infrastructure-as-code”工具,從系統管理者到開發者,都可使用Ansible自動化部署並

方興未艾的語音合成技術應用

https://mp.weixin.qq.com/s?__biz=MzI0ODcxODk5OA==&mid=2247498490&idx=2&sn=a995453c626c1df20899986f46e0561f&scene=21#wechat_redirect

溫習《PHP 核心技術最佳實踐》這本書

匹配 9.4 表達式 穩定 處理 變量 mem 分布式 內容 再次看這本書,順手提煉了一下大致目錄,以便後續看見目錄就知道大概講的些什麽內容 PHP 核心技術與最佳實踐 1、面向對象思想的核心概念 1.1 面向對象的『形』與『本』 1.2 魔術方法的應用