日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

hbase-写操作

發布時間:2025/3/15 编程问答 13 豆豆
生活随笔 收集整理的這篇文章主要介紹了 hbase-写操作 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

hbase連接過程

hbase client在寫入的數據的過程中,是直接和rs進行通信的,整個的數據寫入流程并不涉及到HMaster。那么client是如何找到對應的rs呢?流程如下:

  • client從zookeeper中獲取存儲hbase:root表的RegionServer(設為rs1)的地址信息,hbase考慮到hbase:meta表過大,存儲到了不同的region中,需要一個hbase:root的表對hbase:meta表的元數據進行存儲。在0.98版本后,hbase:mata表不在split,只有一個region,也去除掉了hbase:root表,client的訪問過程也不用進行這一步。
  • client訪問rs1,從hbase:root表中獲取對應hbase:meta表的RegionServer(rs2)的地址信息。這里有些問題?hbase:root中如何知道一條數據應該寫入哪個RegionServer?而這個對應的RegionServer應該存儲在哪個hbase:meta中?在下面介紹hbase:meta表介紹。
  • client訪問rs2,從hbase:meta表中獲取對應要訪問的region的RegionServer(rs3)的地址信息。
  • client訪問rs3,和rs3進行數據交互。這里是具體的數據插入流程看下面兩個具體的步驟(hbase客戶端流程和hbase服務器端流程)。

meta表和root表格式:

?

meta表結構例子:

?root表結構例子:

?

  • 回答一下上面步驟二問題,從上面的root表中可以知道,RowKey里面包含了具體的表信息,這里就可以排除其他表,在regioninfo里面有具體的startKey和endKey信息,這里可以判斷該條數據是否在這個區間。通過這兩個信息就可以查找到對應meta表的rs地址。同理可以在meta表中查到到對應的數據交互的rs。
  • 還有一個問題,是否每次put數據都需要進行這3次連接?其實不用的,每次client和hbase進行通信后,將訪問過的meta表信息存儲在本地。數據首先從本地的緩存中獲取meta表數據,直接訪問rs進行數據交互。

?

hbase客戶端流程

  • 用戶提交put請求。hbase client提交可以設置autoflush參數,該參數默認autoflush=true,表示put請求會直接提交給服務器進行處理。可以設置為autoflush=false,這樣的話put請求數據首先會存放在buffer中,等待本地的buffer數據大小達到閾值之后才會提交。很明顯,兩種方式的有優缺點在于,方式一數據寫入慢,但是不會丟數據,方式二寫入快,但是存在丟數據的風險。
  • 在提交數據之前,client通過meta表查找到對應rowkey所屬的rs,如果的批量提交,會將rowkey對應不同的rs分組,每個分組分別批量提交。
  • hbase服務器端流程

    ?

    數據的寫入流程:

    • 數據首先寫入到wal中
    • 然后數據寫入到MemStore中
    • 當MemStore中的數據大小超過閾值,flush到HFile中

    當機器出現宕機情況,因為wal和HFile中的數據存儲在hdfs中,并不會出現數據丟失情況,數據丟失的是在MemStore中尚未flush到HFile的數據,可以從wal將這部分數據從新恢復

    ?

    轉載于:https://www.cnblogs.com/cnblog-ycc/p/9841499.html

    總結

    以上是生活随笔為你收集整理的hbase-写操作的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。