2015-05-08 28 views
4

我們假設這種情況。協處理器部署:更換jar而不重啓hbase會生效嗎?

我在HBase的-site.xml中聲明的協處理器

<property> 
<name>hbase.coprocessor.region.classes</name> 
<value>my.co.processor</value> 
<property> 

和hbase-env.sh我宣佈協處理器的classpath這樣

export HBASE_CLASSPATH="${HBASE_HOME}/lib/coprocessor.jar" 
  1. 如果我發現一個bug在那之後的協處理器中,我可以在所有區域服務器中替換那個jar文件而不重新啓動整個hbase嗎?

  2. 如果我想添加另一個協處理器,那麼我認爲我必須重新啓動整個Hbase,我是否正確? 我知道我可以在每個表的hbase shell中聲明,但我認爲如果我有許多表應用新的協處理器,這不是一種選擇。

回答

-1

可以協處理器加載到特定的HTable: hTableDescriptor.addCoprocessor(類名,路徑,Coprocessor.PRIORITY_USER,NULL); 這樣,您只需要禁用表,添加協處理器和啓用表。

+0

這樣做將不會重新加載虛擬機中的類。 –

0

您可以用相同的名稱替換這些jar文件,並使用滾動重啓來避免停機。通過這種方式,所有的罐子都將被重新加載。但是,當你的協處理器類被加載時要小心不要有異常;否則,您應該停止hbase羣集並複製更正的jar和啓動羣集。

相關問題