[爆卦]hbase資料庫是什麼?優點缺點精華區懶人包

雖然這篇hbase資料庫鄉民發文沒有被收入到精華區:在hbase資料庫這個話題中,我們另外找到其它相關的精選爆讚文章

在 hbase資料庫產品中有9篇Facebook貼文,粉絲數超過7萬的網紅iThome,也在其Facebook貼文中提到, 臉書Messenger起初的設計類似電子郵件,用戶登入後在收件箱可以看到訊息,後來逐漸演變為即時通訊系統,時至今日Messenger每月有超過13億的用戶,一天傳送近17億個表情符號。 臉書為此更改了後端系統,包括資料庫的搬移,從HBase換成兼顧RocksDB與MySQL特色的MyRocks...

  • hbase資料庫 在 iThome Facebook 的精選貼文

    2018-06-27 16:21:15
    有 203 人按讚


    臉書Messenger起初的設計類似電子郵件,用戶登入後在收件箱可以看到訊息,後來逐漸演變為即時通訊系統,時至今日Messenger每月有超過13億的用戶,一天傳送近17億個表情符號。

    臉書為此更改了後端系統,包括資料庫的搬移,從HBase換成兼顧RocksDB與MySQL特色的MyRocks,還為了不影響龐大的用戶,設計了兩套搬移流程,兩周的時間完成99.9%的帳戶遷移。

  • hbase資料庫 在 Kewang 的資訊進化論 Facebook 的最佳貼文

    2018-01-10 13:44:00
    有 8 人按讚

    TL;DR

    如果發現 hbase shell 在 scan 或 count 的筆數與你預期筆數不一致的話,就 split region 看看吧。

    --- 以下是前言,還真長 XD ---

    最近都在忙著新版本上線,所以小編也好一陣子沒發文了。不過這幾天有個有趣的案例,想跟大家分享一下。

    有在看小編文章的大概會知道我們產品的資料庫是以 HBase 建置而成的,而 HBase 最重要的組成就是 rowkey 了。若 rowkey 設計錯誤輕微可以使用 column 來救,嚴重的甚至要砍掉整筆 row,重新設計 rowkey 才能解決。

    兩年前在設計某 table 的 rowkey 時,不小心忘了對 rowkey 做 salt (HBase 基礎之一,避免 scan 時產生 hotspotting),如果又沒切 region 的話 (HBase 基礎之一,避免 scan 時產生 hotspotting),這些資料在建立時都會跑到同一個 region,在 scan 的時候效能會超差。

    像這種例子就算使用 column 來救也完全沒辦法,所以小編就打算把整筆 row 砍掉重新把 salt 加上去。

    --- 以下是追蹤過程 ---

    原 rowkey 開頭及加上 salt 之後的新 rowkey 開頭如下:

    * 原:A000001、新:DNhA000001
    * 原:A000002、新:dMfA000002
    * 原:A000003、新:p9OA000003
    * 以此類推

    原 rowkey 相同 pattern (A000XXX) 的 row 有 2000 萬筆 (在 hbase shell 內使用 count 來計算 table 的資料量),所以這次 rebuild 總共會刪除原 rowkey 共 2000 萬筆,新增新 rowkey 共 2000 萬筆。

    在使用 HBase 的 Java API 執行增刪 rebuild 後,在 hbase shell 使用 count 計算 table 的資料量時卻只有 900 萬筆。一開始小編還以為是 compaction 跟 flush 的問題,所以強制對 table 做了下面幾個動作,以確保資料有在 HFile 裡面正確地寫入及刪除:

    * 確認資料都會刪除:compact、major_ compact
    * 確認資料都會寫入:flush

    但執行完後再跑一次 count 也是一樣只有 900 萬筆,所以就開始找問題點了。

    後來又使用 HBase 的 exists API,確認有找到 2000 萬筆的資料。一開始小編以為是 MapReduce 的問題,因為 HBase 計算 row count 是使用 MapReduce 來執行的,但找了一堆資料都沒人說有類似問題。後來想說在 hbase shell 內使用 scan {COLUMNS => "cf:XX"} 將所有的資料都拿出來,發現也是只有 900 萬筆,所以初步排除是 MapReduce 的問題。

    後來比對了新增的 rowkey 及目前 scan 出來的 rowkey,發現 scan 出來的 rowkey 只有到 GbVA000017 而已,後面的 H-Z、a-z 開頭的全部都沒出現。所以小編使用 hbase shell 的 get 指令,確認在 Java API 新增的 rowkey (A-Z、a-z 開頭的) 是否存在於 table 內,發現用 get 可以拿的到資料。討論後用 scan 加 start rowkey 試試,結果如下:

    * STARTROW => "GbVA000017":只找到一筆
    * STARTROW => "H":可以找到 H 之後的所有資料

    看了這結果,真的覺得非常奇怪啊!!!

    後來大神 Cowman Chiang 說要不要試著用 split 讓 HBase 重切 region 看看,等於是 rebuild region 的意思,因為 split 會使用字母順序切分成不同的 region,讓 row 重新分散。split 完之後再做一次 count 果然就找到 2000 萬筆資料了啊。

    感恩 Cowman Chiang 讚嘆 Cowman Chiang!!!

    --- 以下是結論 ---

    目前看起來就是 region 發生異常,還不知道是什麼原因會造成這次事件的發生。但如果發現 scan 或 count 的筆數與你預期的內容不一致的話,就 split region 看看吧。

    --- 本次追蹤使用工具 ---

    * Linux: grep, cat, cut, sort, sed, comm, wc, less, head
    * Java: exists, scan, get, put, BufferedReader
    * hbase shell: snapshot, split, compact, major_compact, flush, restore_snapshot, scan, get, disable, enable, clone_snapshot, list_snapshots

    --- 20180112 後記 ---

    後來把 snapshot 還原之後,重新做了一次 rebuild 再做 count,結果還是一樣只有 900 萬筆,然後用 hbase hbck -repair 試著看看是否能把 region 修復 (有 4 個 inconsistencies),修復完後一樣是 900 萬筆。

    也有同事說到會不會是資料塞太快的關係,造成 region 無法 split 完整才會發生這個問題。對於這個說法,小編也還在研究看看,有什麼進度會再分享給大家知道。

    #hbase #hadoop #mapreduce #hotspotting

  • hbase資料庫 在 Kewang 的資訊進化論 Facebook 的最讚貼文

    2017-09-09 21:10:07
    有 15 人按讚

    都忘了小編自己兩年前有推薦過 Triton Ho 的課程,但可惜最近應該是不會再開了,只能期待如果有來台灣工作的話,多挖一些內容來補充一下了!

    ---

    [推薦] RDBMS課程簡介

    上個月去聽了RDBMS的課程,講師 Triton Ho 是一位香港來的資深DBA,常在BackendTW分享一些與系統架構及資料庫設計有關的內容,算是言之有物的一位強者。(與他類似的台灣還有幾位,像是 @ant 以及 @gslin ,也都是非常厲害的大大)

    這門課程不像是大學學的資料庫系統,講了一堆1NF,2NF,3NF以及到底是1..N / N..N / 1..1這類的理論。比較著重在於實務方面的應用,也把他曾在香港空運中心工作的經驗分享給大家。

    雖然沒講到normal form或是relationship這類東西,但加了一些以前上課沒聽過的內容。主要是資料庫的底層實作,比如SX lock, MVCC, Isolation, B+ tree, SQL 2003, row locking......等。

    最後一天的課程也介紹了一些大型系統的開發實務,像是caching要如何設計、defense in depth、positive feedback......等。

    雖然目前主力都在HBase,但這幾天學了這麼多東西,了解到RDBMS以及NoSQL的底層實作很多都是非常類似,重點還是擺在key的設計上面。所以算是吃了大力丸吧。

    如果你是後端開發人員或是系統管理者,絕對推薦你們去上這門課程,一定不會讓你們失望的。

    有興趣的可以先看看先修課程:https://drive.google.com/file/d/0B-UTE7EObr6ydDZOZXNLRko5UTQ/view

    今年11月還有一次上課的機會:https://www.facebook.com/events/853886477999933/

    PS. 因為講者是香港人,所以口音有點重,有時候會聽不太懂,但不影響整體上課內容

    #rdbms

你可能也想看看

搜尋相關網站