阿里云EMR3.2 hbase/phoenix客户端BUG
错误现象:
1. 今早在EMR3.2的生产新集群上执行导出操作,hbase org.apache.hadoop.hbase.mapreduce.Export safeclound.tb_ammeter /backup/tb_ammeter 1 1531843200000 1532016000000
2. 错误表现:
执行job任务显示:
2018-07-19 17:07:26,113 INFO [main] mapreduce.Job: Task Id : attempt_1529895044112_7775_m_000002_1, Status : FAILEDError: java.io.IOException: Cannot create a record reader because of a previous error. Please look at the previous logs lines from the task's full log for more details. at org.apache.hadoop.hbase.mapreduce.TableInputFormatBase.createRecordReader(TableInputFormatBase.java:174) at org.apache.hadoop.mapred.MapTask$NewTrackingRecordReader.(MapTask.java:515)
at org.apache.hadoop.mapred.MapTask.runNewMapper(MapTask.java:758)
at org.apache.hadoop.mapred.MapTask.run(MapTask.java:341)
at org.apache.hadoop.mapred.YarnChild$2.run(YarnChild.java:164)
at java.security.AccessController.doPrivileged(Native Method)
at javax.security.auth.Subject.doAs(Subject.java:422)
at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1727)
at org.apache.hadoop.mapred.YarnChild.main(YarnChild.java:158)
Caused by: java.lang.IllegalStateException: The input format instance has not been properly initialized. Ensure you call initializeTable either in your constructor or initialize method
at org.apache.hadoop.hbase.mapreduce.TableInputFormatBase.getTable(TableInputFormatBase.java:585)
at org.apache.hadoop.hbase.mapreduce.TableInputFormatBase.createRecordReader(TableInputFormatBase.java:169)
... 8 more
然后查看日志:
Caused by: java.lang.ClassNotFoundException: org.apache.hadoop.hbase.ipc.controller.ServerRpcControllerFactory
....
解决方法(经联系阿里工程师,提供以下方案):
1. 创建客户端使用的hbase配置
> mkdir /tmp/hbase-client-conf
> cp /etc/ecm/hbase-conf/* /tmp/hbase-client-conf
> vim /tmp/hbase-client-conf/hbase-site.xml
删除phoenix相关的配置,保存:
hbase.rpc.controllerfactory.class
hbase.master.loadbalancer.class
hbase.region.server.rpc.scheduler.factory.class
hbase.coprocessor.master.classes
2. 执行命令时指定使用客户端配置
hbase --config /tmp/hbase-client-conf org.apache.hadoop.hbase.mapreduce.Export safeclound.tb_ammeter /backup/tb_ammeter 1 1531843200000 1532016000000
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
用javascript进行一个简单的机器学习小实例
虽然它可能不是机器学习传统选择的开发语言,但是JavaScript正在证明有能力完成这样的工作——即使它目前还不能与主要的机器学习语言Python竞争。在进一步学习之前,让我们做一下机器学习的介绍。 根据Skyhoshi这个有着超过13年开发人员的实际经验,机器学习赋予计算机根据所提供的数据进行学习的能力,并且识别模式,然后得出结论,而不需要明确的人为干预。 从传统上来说,JavaScript在机器学习中不常用,有以下两个主要的原因,包括有限的库支持和实现的复杂性。 虽然如此,JavaScript最近已经颇欢迎了,主要是因为在客户端上有完整的部署机器学习应用的广泛机会。 在这篇文章中,我将演示一个简单的机器学习辅导项目,它展示了JavaScript也能够为机器学习应用提供动力。 对于这个相对简单的项目,我将使用Neal.js程序文件,它是一
- 下一篇
SpringBoot整合Elasticsearch报错availableProcessors is already set to [4], ...
Springboot整合Elasticsearch报错 今天使用SpringBoot整合Elasticsearch时候,相关的配置完成后,启动项目就报错了。 nested exception is java.lang.IllegalStateException: availableProcessors is already set to [4], rejecting [4] 我网上查询了一下,有人是是因为整合了Redis的原因。但是我把Redis相关的配置去掉后,问题还是没有解决,最后有人说是因为netty冲突的问题。 也有人给出了解决方式就是在项目初始化钱设置一下一个属性。在初始化之前加上System.setProperty("es.set.netty.runtime.available.processors", "false"); @Configuration public class ElasticSearchConfig { @PostConstruct void init() { System.setProperty("es.set.netty.runtime.availab...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- Jdk安装(Linux,MacOS,Windows),包含三大操作系统的最全安装
- Linux系统CentOS6、CentOS7手动修改IP地址
- SpringBoot2整合Thymeleaf,官方推荐html解决方案
- CentOS6,7,8上安装Nginx,支持https2.0的开启
- CentOS6,CentOS7官方镜像安装Oracle11G
- 设置Eclipse缩进为4个空格,增强代码规范
- CentOS7,8上快速安装Gitea,搭建Git服务器
- CentOS7编译安装Cmake3.16.3,解决mysql等软件编译问题
- CentOS7,CentOS8安装Elasticsearch6.8.6
- SpringBoot2整合MyBatis,连接MySql数据库做增删改查操作