HBase協(xié)處理器Coprocessor怎么使用

這篇文章主要介紹“HBase協(xié)處理器Coprocessor怎么使用”,在日常操作中,相信很多人在HBase協(xié)處理器Coprocessor怎么使用問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對(duì)大家解答”HBase協(xié)處理器Coprocessor怎么使用”的疑惑有所幫助!接下來,請(qǐng)跟著小編一起來學(xué)習(xí)吧!

創(chuàng)新互聯(lián)2013年開創(chuàng)至今,是專業(yè)互聯(lián)網(wǎng)技術(shù)服務(wù)公司,擁有項(xiàng)目做網(wǎng)站、網(wǎng)站建設(shè)網(wǎng)站策劃,項(xiàng)目實(shí)施與項(xiàng)目整合能力。我們以讓每一個(gè)夢想脫穎而出為使命,1280元興隆臺(tái)做網(wǎng)站,已為上家服務(wù),為興隆臺(tái)各地企業(yè)和個(gè)人服務(wù),聯(lián)系電話:18982081108

    要使您的協(xié)處理器對(duì)HBase可用,必須靜態(tài)(通過HBase配置)或動(dòng)態(tài)(使用HBase Shell或Java API)加載它。

1.靜態(tài)加載:

    按照以下步驟靜態(tài)加載協(xié)處理器。請(qǐng)記住,您必須重新啟動(dòng)HBase來卸載靜態(tài)加載的協(xié)處理器。

a.在配置文件hbase-site.xml中定義協(xié)處理器,新增配置項(xiàng)的<name>應(yīng)該是以下內(nèi)容:

  • hbase.coprocessor.region.classes for RegionObservers andnd Endpoints.

  • hbase.coprocessor.wal.classes for WALObservers.

  • hbase.coprocessor.master.classes for MasterObservers.

<value>對(duì)應(yīng)所以加載的完整類名;

例如:要加載RegionObservers協(xié)處理器(在類SumEndPoint.java中實(shí)現(xiàn)),在hbase-site中添加以下配置:

<property>    <name>hbase.coprocessor.region.classes</name>    <value>org.myname.hbase.coprocessor.endpoint.SumEndPoint</value></property>

    如果指定多個(gè)類用于加載,則類名必須以逗號(hào)分隔??蚣車L試使用默認(rèn)的類裝入器裝入所有配置的類。因此,jar文件必須駐留在服務(wù)器端HBase類路徑中。

    以這種方式加載的協(xié)處理器將在所有表的所有區(qū)域上處于活動(dòng)狀態(tài)。這些也稱為系統(tǒng)協(xié)處理器。將為第一個(gè)列出的協(xié)處理器分配優(yōu)先級(jí)Coprocessor.Priority.SYSTEM。列表中的每個(gè)后續(xù)協(xié)處理器的優(yōu)先級(jí)值都會(huì)增加1(這會(huì)降低其優(yōu)先級(jí),因?yàn)閮?yōu)先級(jí)具有整數(shù)的自然排序順序)。
    當(dāng)調(diào)用注冊(cè)的觀察者時(shí),框架以其優(yōu)先級(jí)的排序順序執(zhí)行其回調(diào)方法。關(guān)系是任意破壞的。

b.將代碼放到HBase的類路徑中。一種簡單的方法是將jar(包含您的代碼和所有依賴項(xiàng))放到HBase安裝中的lib/目錄中。

c.重啟HBase。

2.靜態(tài)卸載

a.從hbase-site中刪除配置。

b.重啟HBase。

c.((可選))從類路徑或HBase的lib/目錄中刪除協(xié)處理器的JAR文件。

3.動(dòng)態(tài)加載

    您還可以動(dòng)態(tài)加載協(xié)處理器,而無需重新啟動(dòng)HBase。這似乎比靜態(tài)加載更可取,但是動(dòng)態(tài)加載的協(xié)處理器是在每個(gè)表的基礎(chǔ)上加載的,并且只對(duì)加載它們的表可用。因此,動(dòng)態(tài)加載的表有時(shí)被稱為表協(xié)處理器。

此外,動(dòng)態(tài)加載協(xié)處理器相當(dāng)于對(duì)表進(jìn)行模式更改,必須使表脫機(jī)才能加載協(xié)處理器。

以下說明做了如下假設(shè):

  • 一個(gè)叫做coprocessor.jar的JAR包含了協(xié)處理器實(shí)現(xiàn)以及它的所有依賴項(xiàng)。

  • 該JAR在HDFS中的某些位置 (如,hdfs://<namenode>:<port>/user/<hadoop-user>/coprocessor.jar ) 中可用。

a.使用Hbase shell加載

  使用類似以下命令加載協(xié)處理器:

hbase alter 'users', METHOD => 'table_att', 'Coprocessor'=>'hdfs://<namenode>:<port>/user/<hadoop-user>/coprocessor.jar| org.myname.hbase.Coprocessor.RegionObserverExample|1073741823|arg1=1,arg2=2'

    協(xié)處理器框架將嘗試從協(xié)處理器表屬性值中讀取類信息。該值包含由管道(|)字符分隔的四段信息:

    1)文件路徑:包含協(xié)處理器實(shí)現(xiàn)的jar文件必須位于所有區(qū)域服務(wù)器都可以讀取它的位置,您可以將文件復(fù)制到每個(gè)區(qū)域服務(wù)器上的本地磁盤,但建議將其存儲(chǔ)在HDFS中。

    2)類名:協(xié)處理器的完整類名。

    3)優(yōu)先級(jí):一個(gè)整數(shù)??蚣軐⑹褂脙?yōu)先級(jí)確定在同一個(gè)鉤子上注冊(cè)的所有配置的觀察者的執(zhí)行順序。此字段可以留空。在這種情況下,框架將分配一個(gè)默認(rèn)的優(yōu)先級(jí)值。

    4)參數(shù)(可選):這個(gè)字段被傳遞給協(xié)處理器實(shí)現(xiàn)。這是可選的。

    驗(yàn)證協(xié)處理器加載成功。

hbase(main):04:0> describe 'users'

 b.使用JavaAPI加載(all HBase versions)

    下面的Java代碼展示了如何使用HTableDescriptor的setValue()方法在users表上加載協(xié)處理器。

TableName tableName = TableName.valueOf("users");String path = "hdfs://<namenode>:<port>/user/<hadoop-user>/coprocessor.jar";Configuration conf = HBaseConfiguration.create();Connection connection = ConnectionFactory.createConnection(conf);Admin admin = connection.getAdmin();HTableDescriptor hTableDescriptor = new HTableDescriptor(tableName);HColumnDescriptor columnFamily1 = new HColumnDescriptor("personalDet");columnFamily1.setMaxVersions(3);hTableDescriptor.addFamily(columnFamily1);HColumnDescriptor columnFamily2 = new HColumnDescriptor("salaryDet");columnFamily2.setMaxVersions(3);hTableDescriptor.addFamily(columnFamily2);hTableDescriptor.setValue("COPROCESSOR$1", path + "|"+ RegionObserverExample.class.getCanonicalName() + "|"+ Coprocessor.PRIORITY_USER);admin.modifyTable(tableName, hTableDescriptor);

c.使用JavaAPI(HBase 0.96+ only)

    在HBase 0.96及更新版本中,HTableDescriptor的addCoprocessor()方法提供了一種更簡單的方法來動(dòng)態(tài)加載協(xié)處理器。

TableName tableName = TableName.valueOf("users");Path path = new Path("hdfs://<namenode>:<port>/user/<hadoop-user>/coprocessor.jar");Configuration conf = HBaseConfiguration.create();Connection connection = ConnectionFactory.createConnection(conf);Admin admin = connection.getAdmin();HTableDescriptor hTableDescriptor = new HTableDescriptor(tableName);HColumnDescriptor columnFamily1 = new HColumnDescriptor("personalDet");columnFamily1.setMaxVersions(3);hTableDescriptor.addFamily(columnFamily1);HColumnDescriptor columnFamily2 = new HColumnDescriptor("salaryDet");columnFamily2.setMaxVersions(3);hTableDescriptor.addFamily(columnFamily2);hTableDescriptor.addCoprocessor(RegionObserverExample.class.getCanonicalName(), path,Coprocessor.PRIORITY_USER, null);admin.modifyTable(tableName, hTableDescriptor);

注意:

    這里不能保證框架將成功加載給定的協(xié)處理器。例如,shell命令既不保證jar文件存在于特定的位置,也不驗(yàn)證給定的類是否實(shí)際包含在jar文件中。

4.動(dòng)態(tài)卸載

  a.更改表以刪除協(xié)處理器

hbase> alter 'users', METHOD => 'table_att_unset', NAME => 'coprocessor$1'

    b.使用JavaAPI卸載

    使用setValue()或addCoprocessor()方法在不設(shè)置協(xié)處理器值的情況下重新加載表定義。這將刪除附加到表上的任何協(xié)處理器。

TableName tableName = TableName.valueOf("users");String path = "hdfs://<namenode>:<port>/user/<hadoop-user>/coprocessor.jar";Configuration conf = HBaseConfiguration.create();Connection connection = ConnectionFactory.createConnection(conf);Admin admin = connection.getAdmin();HTableDescriptor hTableDescriptor = new HTableDescriptor(tableName);HColumnDescriptor columnFamily1 = new HColumnDescriptor("personalDet");columnFamily1.setMaxVersions(3);hTableDescriptor.addFamily(columnFamily1);HColumnDescriptor columnFamily2 = new HColumnDescriptor("salaryDet");columnFamily2.setMaxVersions(3);hTableDescriptor.addFamily(columnFamily2);admin.modifyTable(tableName, hTableDescriptor);

到此,關(guān)于“HBase協(xié)處理器Coprocessor怎么使用”的學(xué)習(xí)就結(jié)束了,希望能夠解決大家的疑惑。理論與實(shí)踐的搭配能更好的幫助大家學(xué)習(xí),快去試試吧!若想繼續(xù)學(xué)習(xí)更多相關(guān)知識(shí),請(qǐng)繼續(xù)關(guān)注創(chuàng)新互聯(lián)網(wǎng)站,小編會(huì)繼續(xù)努力為大家?guī)砀鄬?shí)用的文章!

網(wǎng)站欄目:HBase協(xié)處理器Coprocessor怎么使用
文章分享:http://bm7419.com/article14/pcddde.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站排名、網(wǎng)站內(nèi)鏈企業(yè)網(wǎng)站制作、面包屑導(dǎo)航網(wǎng)站收錄、網(wǎng)站導(dǎo)航

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

成都定制網(wǎng)站網(wǎng)頁設(shè)計(jì)