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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人文社科 > 生活经验 >内容正文

生活经验

2021年大数据HBase(十六):HBase的协处理器(Coprocessor)

發布時間:2023/11/28 生活经验 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 2021年大数据HBase(十六):HBase的协处理器(Coprocessor) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

全網最詳細的大數據HBase文章系列,強烈建議收藏加關注!?

新文章都已經列出歷史文章目錄,幫助大家回顧前面的知識重點。

目錄

系列歷史文章

HBase的協處理器(Coprocessor)

一、起源

二、協處理器主要的分類

三、HBase的協處理器_ObServer

四、HBase的協處理器_Endpoint

五、概念總結

六、加載的方式

1、靜態加載

2、動態加載:

七、卸載的方式

1、禁用表: ? ? ?

2、修改表: 刪除協處理器的配置信息 ? ? ?

3、啟動表 ? ?

八、HBase的協處理器總結


系列歷史文章

2021年大數據HBase(十七):HBase的360度全面調優

2021年大數據HBase(十六):HBase的協處理器(Coprocessor)

2021年大數據HBase(十五):HBase的Bulk Load批量加載操作

2021年大數據HBase(十四):HBase的原理及其相關的工作機制

2021年大數據HBase(十三):HBase讀取和存儲數據的流程

2021年大數據HBase(十二):Apache Phoenix 二級索引

2021年大數據HBase(十一):Apache Phoenix的視圖操作

2021年大數據HBase(十):Apache Phoenix的基本入門操作

2021年大數據HBase(九):Apache Phoenix的安裝

2021年大數據HBase(八):Apache Phoenix的基本介紹

2021年大數據HBase(七):Hbase的架構!【建議收藏】

2021年大數據HBase(六):HBase的高可用!【建議收藏】

2021年大數據HBase(五):HBase的相關操作-JavaAPI方式!【建議收藏】

2021年大數據HBase(四):HBase的相關操作-客戶端命令式!【建議收藏】

2021年大數據HBase(三):HBase數據模型

2021年大數據HBase(二):HBase集群安裝操作

2021年大數據HBase(一):HBase基本簡介

HBase的協處理器(Coprocessor)

一、起源

Hbase 作為列族數據庫最經常被人詬病的特性包括:

  • 無法輕易建立“二級索引”
  • 難以執 行求和、計數、排序等操作

比如,在舊版本的(<0.92)Hbase 中,統計數據表的總行數,需要使用 Counter 方法,執行一次 MapReduce Job 才能得到。雖然 HBase 在數據存儲層中集成了 MapReduce,能夠有效用于數據表的分布式計算。然而在很多情況下,做一些簡單的相加或者聚合計算的時候, 如果直接將計算過程放置在 server 端,能夠減少通訊開銷,從而獲 得很好的性能提升

于是, HBase 在 0.92 之后引入了協處理器(coprocessors),實現一些激動人心的新特性:能夠輕易建立二次索引、復雜過濾器(謂詞下推)以及訪問控制等。

二、協處理器主要的分類

  • ObServer
  • Endpoint

三、HBase的協處理器_ObServer

ObServer 類似于傳統數據庫中的觸發器,當發生某些事件的時候這類協處理器會被 Server 端調用。

ObServer Coprocessor 就是一些散布在 HBase Server 端代碼中的 hook 鉤子, 在固定的事件發生時被調用。

比如: put 操作之前有鉤子函數 prePut,該函數在 put 操作 執行前會被 Region Server 調用;在 put 操作之后則有 postPut 鉤子函數

以 Hbase2.0.0 版本為例,它提供了三種觀察者接口:

  • RegionObserver:提供客戶端的數據操縱事件鉤子: Get、 Put、 Delete、 Scan 等
  • WALObserver:提供 WAL 相關操作鉤子。
  • MasterObserver:提供 DDL-類型的操作鉤子。如創建、刪除、修改數據表等。
  • 到 0.96 版本又新增一個 RegionServerObserver

下面是以 RegionObserver 為例子講解 Observer 這種協處理器的原理:

  • 比如客戶端發起get請求
  • 該請求被分派給合適的RegionServer和Region
  • coprocessorHost攔截該請求,然后在該表上登記的每個RegionObserer上調用preGet()
  • 如果沒有被preGet攔截,該請求繼續送到Region,然后進行處理
  • Region產生的結果再次被coprocessorHost攔截,調用postGet()處理
  • 加入沒有postGet()攔截該響應,最終結果被返回給客戶端

四、HBase的協處理器_Endpoint

  • Endpoint 協處理器類似傳統數據庫中的存儲過程,客戶端可以調用這些 Endpoint 協處理器執行一段 Server 端代碼,并將 Server 端代碼的結果返回給客戶端進一步處理,最常見的用法就是進行聚集操作
  • 如果沒有協處理器,當用戶需要找出一張表中的最大數據,即max 聚合操作,就必須進行全表掃描,在客戶端代碼內遍歷掃描結果,并執行求最大值的操作。這樣的方法無法利用底層集群的并發能力,而將所有計算都集中到 Client 端統一執 行,勢必效率低下。
  • 利用 Coprocessor,用戶可以將求最大值的代碼部署到 HBase Server 端,HBase 將利用底層 cluster 的多個節點并發執行求最大值的操作。即在每個 Region 范圍內 執行求最大值的代碼,將每個 Region 的最大值在 Region Server 端計算出,僅僅將該 max 值返回給客戶端。在客戶端進一步將多個 Region 的最大值進一步處理而找到其中的最大值。這樣整體的執行效率就會提高很多

下圖是 EndPoint 的工作原理:

五、概念總結

  • observer 允許集群在正常的客戶端操作過程中可以有不同的行為表現
  • endpoint 允許擴展集群的能力,對客戶端應用開放新的運算命令
  • observer 類似于 RDBMS 中的觸發器,主要在服務端工作
  • endpoint 類似于 RDBMS 中的存儲過程,主要在 服務器端、client 端工作
  • observer 可以實現權限管理、優先級設置、監控、 ddl 控制、 二級索引等功能
  • endpoint 可以實現 min、 max、 avg、 sum、 distinct、 group by 等功能

六、加載的方式

1、靜態加載

  • 通過修改 hbase-site.xml 這個文件來實現
  • 啟動全局 aggregation,能過操縱所有的表上的數據。只需要添加如下代碼:

注意: 為所有 table 加載了一個 cp class,可以用” ,”分割加載多個 class

2、動態加載:

  • 啟用表 aggregation,只對特定的表生效
  • 通過 HBase Shell 來實現,disable 禁用表
  • 添加 aggregation , 添加后啟用表即可
hbase> alter 'mytable', METHOD => 'table_att','coprocessor'=>'|org.apache.Hadoop.hbase.coprocessor.AggregateImplementation||'

七、卸載的方式

1、禁用表: ? ? ?

disable 'test' 

2、修改表: 刪除協處理器的配置信息 ? ? ?

alter ‘test’, METHOD => 'table_att_unset', NAME => 'coprocessor$1’ 

3、啟動表 ? ?

enable 'test'

八、HBase的協處理器總結

Hbase的協處理器主要有二大類: ObServer 和 Endpoint

  • ObServer: 可以將其看做是攔截器(過濾器 觸發器), 可以基于這種協處理器對Hbase相關操作進行監控(鉤子 Hook)

    • 例如: 監控用戶插入到某個表操作, 插入之前要打印一句話

    • ObServer所提供一些類, 這些類可以監控到HBase中各種操作: 對數據的CURD 對表的CURD 對region的操作 對日志操作

    • ObServer能做什么事情?

      • 1) 記錄操作日志

      • 2) 權限的管理

  • Endpoint: 可以看做數據庫中存儲過程,也可以看做在java代碼中封裝一個方法(功能), 將這個方法放置服務端, 讓服務器進行執行操作, 客戶端只需要拿到服務端執行結果即可

    • 作用: 執行一些聚合操作: 求和 求差 求最大 ....


  • 📢博客主頁:https://lansonli.blog.csdn.net
  • 📢歡迎點贊 👍 收藏 ?留言 📝 如有錯誤敬請指正!
  • 📢本文由 Lansonli 原創,首發于 CSDN博客🙉
  • 📢大數據系列文章會每天更新,停下休息的時候不要忘了別人還在奔跑,希望大家抓緊時間學習,全力奔赴更美好的生活?

總結

以上是生活随笔為你收集整理的2021年大数据HBase(十六):HBase的协处理器(Coprocessor)的全部內容,希望文章能夠幫你解決所遇到的問題。

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