概述

  参考博客(http://blog.csdn.net/carl810224/article/details/52224441)编写EndPoint协处理器,编写完成后使用Maven打包(使用assembly插件,指定descriptorRefs值为jar-with-dependencies,将依赖的jar包也加进来),再将jar包上传到HDFS上,然后使用添加协处理器到指定表:

disable 'test_table'
alter 'test_table',METHOD=>'table_att','coprocessor'=>'hdfs://nameservice:/sum.jar|com.hbase.demo.endpoint.SumEndPoint|100'
enable 'test_table'
describe 'test_table'

卸载处理器:

alter 'test_table',METHOD=>'table_att_unset',NAME=>'coprocessor$1'

coprocessor$1表示第一个协处理,可以通过describe命令查看表加载的处理器信息。

  使用alter添加endpoint之后,输入decribe查看表信息,发现表信息中心增加了coprocessor字段,事实上这并不表示已经加载成功。然后运行client程序,报错信息是

“hbase.ipc.CoprocessorRpcChannel:Call failed on IOException”

“UnknownProtocolException:No registered coprocessor service found for name SumService in region test_table.......”

  查看RegionServer日志,发现错误信息是

“RegionCoprocessorHost:Failed to load coprocessor com.hbase.demo.endpoint.SumEndPoint”
“java.lang.LinkageError:loader constraint violation in interface itable initialization:when resolving method
  com.hbase.demo.endpoint.SumEndPoint.getService()Lcom/google/protobuf/Service;... the class loader......
    have different Class objects for the type obuf/Service;used in the signature...."

实际上协处理器并没有加载成功。

为什么没有加载成功

  “java.lang.LinkageError:loader constraint violation in interface itable initialization...”表示发生了jar包冲突,就是一个工程中不止1个jar包中包含了完全相同的类,JVM不确定应该使用哪个jar包,解决办法就是直接删除多余jar包(确保jar包其余类不会被工程使用)。由于使用Maven的assembly插件打包时,选择了“jar-with-dependencies”的方式将依赖的所有jar包也打到了EndPoint中,在加载EndPoint时,EndPoint对应jar包中的类与HBase ClassPath中某个jar包对应的类完全相同,JVM不确定应该使用哪个Jar包,因此加载不成功。

怎么加载成功

   找到了原因,对应的解决方法就很简单了,去掉Maven的assembly插件中的“jar-with-dependencies”选项,仅将SumEndPoint.java和Sum.java打到jar包中,然后重新加载就可以了。

  最后,Hbase 1.2.0使用protobuf作为RPC协议,因此需要首先下载protobuf变异.proto文件生成对应的.java文件,下载地址:github.com/google/protobuf/releases,Hbase 1.2.0对应protoc-2.5.0-win32.zip。下载完成后,进入bin目录,变异proto文件

proto --java_out=./ sum.proto

HBase EndPoint加载失败的更多相关文章

  1. VS2013打开项目Web加载失败

    今天打开一个好久没打开过的老项目,发现web加载失败,如图: 然后重新加载项目,提示: 一开始直接在网上找答案,结果看的答案都不靠谱,只好自己动手了, 先看了 这里面是基础配置:大概看过后,又去看了提 ...

  2. 如何解决SoftekBarcode.dll加载失败的问题

    本文转自:慧都控件网 Softek Barcode Reader Toolkit是专门从事于条形码读取技术的软件公司Softek旗下一款著名的条码读取工具包.最近有部分用户反映在运行此工具包时会遇到“ ...

  3. 解决父类加载iframe,src参数过大导致加载失败

    原文:解决父类加载iframe,src参数过大导致加载失败 <iframe src="*******.do?param=****" id="leftFrame&qu ...

  4. 关于 mobile sui a外链 老是出现加载失败的解决办法

    mobile sui 框架里面的a本身都绑了了一个ajax方法,ajax只能处理同域,跨域就会出现问题 ,所以mobile sui 中的a如果是外链的话就会出现加载失败的提示,这种明显的bug,让用户 ...

  5. 包加载失败 未能正确加载包“xxx”...

    打开vs2008或者2005如果弹出一个警告对话框 包加载失败 未能正确加载包“xxx” ...... 的字样,就可以用以下方法解决. 在cmd下运行带参数的devenv.exe: "d(盘 ...

  6. cocos2dx 3.3创建新项目 和 VS2012解决方案加载失败问题

     首先创建新项目,步骤如下: 1.进入cocos2d-x-3.3\tools\cocos2d-console\bin目录,按住shift+鼠标右键 2.输入 cocos new 项目名 –p 包名 – ...

  7. vs2008包加载失败

    由于安装vs2008sp1后,新建项目报错,解决未遂,于是重装vs2008,装完后又出现包加载失败问题: Microsoft.Data.Entity.Design.Package.MicrosoftD ...

  8. npapi加载失败的几个原因

    本文只讨论加载失败的原因,不复述npapi的使用教程 1. 资源文件是否加上 MIMEType命名的id,和html中的<object>的标签是否对应 如果不相同加载必然失败: 2. 注册 ...

  9. Cocos2d-xvision3.0加载失败,和,Vs2012环境搭建

    1.安装好VS2012,下载Cocos2d-x3.0 双击击win32 sln运行VS2012 如果加载失败点击程序运行,输入devenv.exe /resetuserdata 回车,然后再进入VS, ...

随机推荐

  1. JS设计模式——2.初识接口

    什么是接口 接口提供了一种用以说明一个对象应该具有哪些方法的手段. 接口之利 1.接口具有自我描述性从而促进代码的重用 2.接口有助于稳定不同中的类之间的通信方式 3.测试和调试也变得更轻松 接口之弊 ...

  2. scrapy 爬虫踩过的坑(I)

    问题1:正则表达式没问题,但是爬虫进不了item方法 分析: 1. 可能是下载不到list 页面的内容.可以用 scrapy shell url 进行测试 2. 可能是allowed_domains ...

  3. js base64加密解密

    var base64EncodeChars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/" ...

  4. select count(*) from user注入

    先来看一条sql语句: mysql; +------+----------+----------+------------+ | id | username | password | flag | + ...

  5. juery中循环遍历json数组

    var dataList=[]; var stock0={stockcode:"007758",stockname:"商业政7",state:"1&q ...

  6. ACM International Collegiate Programming Contest World Finals 2014

    ACM International Collegiate Programming Contest World Finals 2014 A - Baggage 题目描述:有\(2n\)个字符摆在编号为\ ...

  7. URAL题解三

    URAL题解三 URAL 1045 题目描述:有\(n\)个机场,\(n-1\)条航线,任意两个机场有且只有一种方案联通.现有两个恐怖分子从\(m\)号机场出发,第一个人在机场安装炸弹,乘坐飞机,引爆 ...

  8. 学习笔记(二) 瓜娃(guava)的API快速熟悉使用

    1,大纲 让我们来熟悉瓜娃,并体验下它的一些API,分成如下几个部分: Introduction Guava Collection API Guava Basic Utilities IO API C ...

  9. java基础9 main函数、this、static、super、final、instanceof 关键字

    一.main函数详解 1.public:公共的.权限是最大的,在任何情况都可以访问  原因:为了保证jvm在任何情况下都可以访问到main法2.static:静态,静态可以让jvm调用更方便,不需要用 ...

  10. GPS 与 北斗 初步对比

    一.脉冲 GPS每秒可获得一次卫星星历电文,秒脉冲的误差服从正态分布,锁住的可用卫星达到四颗以上时,授时脉冲的1精度在100 ns以内:当锁住的可用卫星少于四颗时,解算方程组的信息不够充分,授时精度将 ...