协处理器部署:在不重新启动hbase的情况下更换jar将生效吗?

协处理器部署:在不重新启动hbase的情况下更换jar将生效吗?,hbase,Hbase,让我们假设这个情况 我在hbase-site.xml中声明了一个协处理器 <property> <name>hbase.coprocessor.region.classes</name> <value>my.co.processor</value> <property> 如果我以后在协处理器中发现一个bug,我可以在所有区域服务器中替换该jar文件而不重新启动整个hbase吗 如果我想添加另一个协处理器,那么我想我必须重新

让我们假设这个情况

我在hbase-site.xml中声明了一个协处理器

<property>
<name>hbase.coprocessor.region.classes</name>
<value>my.co.processor</value>
<property>
  • 如果我以后在协处理器中发现一个bug,我可以在所有区域服务器中替换该jar文件而不重新启动整个hbase吗

  • 如果我想添加另一个协处理器,那么我想我必须重新启动整个Hbase,对吗? 我知道我可以在hbase shell中为每个表声明,但我认为如果我有许多表要应用新的协处理器,就不需要考虑这个选项


  • 您可以将协处理器加载到特定的HTable: hTableDescriptor.addCoprocessor(类名、路径、协处理器.PRIORITY\u用户,null);
    这样,您只需要禁用表、添加协处理器和启用表

    您可以用相同的名称替换jar文件,并使用滚动重启来避免停机。通过这种方式,您的所有罐子都将重新加载。但是,在加载协处理器类时,请注意不要出现异常;否则,您应该停止您的hbase群集并复制已更正的JAR并启动群集。

    这样做不会在VM中重新加载类。
    export HBASE_CLASSPATH="${HBASE_HOME}/lib/coprocessor.jar"