让我们假设这种情况。
我在hbase-site.xml中声明了一个协处理器
<property>
<name>hbase.coprocessor.region.classes</name>
<value>my.co.processor</value>
<property>
并且在hbase-env.sh中我声明了像这样的协处理器类路径
export HBASE_CLASSPATH="${HBASE_HOME}/lib/coprocessor.jar"
如果我稍后在该协处理器中发现错误,我是否可以在不重新启动整个hbase的情况下替换所有区域服务器中的该jar文件?
如果我想添加另一个协处理器,那么我想我必须重新启动整个Hbase,我是否正确? 我知道我可以在每个表的hbase shell中声明,但我认为如果我有很多表来应用新的协处理器,那么就不会考虑这个。
答案 0 :(得分:0)
您可以使用相同的名称替换jar文件,并使用滚动重启来避免停机。通过这种方式,您的所有罐子都将被重新加载。但是,在加载协处理器类时要小心没有Exception;否则,您应该停止hbase集群并复制更正后的jar并启动集群。
答案 1 :(得分:-1)
您可以将协处理器加载到特定的HTable: hTableDescriptor.addCoprocessor(className,path,Coprocessor.PRIORITY_USER,null); 这样,您只需要禁用表,添加协处理器和启用表。