博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Hadoop运维记录系列(十七)
阅读量:6699 次
发布时间:2019-06-25

本文共 1100 字,大约阅读时间需要 3 分钟。

上个月通过email,帮朋友的朋友解决了一个Cloudera的Spark-SQL无法访问HBase做数据分析的问题,记录一下。

首先,对方已经做好了Hive访问HBase,所以spark-sql原则上可以通过调用Hive的元数据来访问Hbase。但是执行极慢,而且日志无报错。中间都是邮件沟通,先问了几个问题,是否启用了Kerberos,是否Hive访问Hbase正常,HBase shell访问数据是否正常等等,回答说没有用Kerberos,Hive访问Hbase正常,spark-sql读取Hive元数据也正常,Hbase shell也正常,就是spark-sql跑不了。

其次,对方有两套环境,实验室环境可以跑,但是生产环境不能跑,然后实验室和生产环境版本和各种xml配置都完全一样,所以实在找不到不能跑的原因了。

前期看日志,由于没有任何WARN或ERROR,所以很难排查,初步推断是由于配置错误造成的,但是哪里配置错误,因为都是邮件,无法确定。后来对方又发过来一个日志,说约3小时后报错,显示如下。

Job aborted due to stage failure: Task 0 in stage 0.0 failed 4 times, most recent failure: Lost task 0.3 in stage 0.0 (TID 3, BData-h2): org.apache.hadoop.hbase.client.NoServerForRegionException: Unable to find region for in xxxxxxxx after 35 tries.

spark界面中的这段报错证明了确实是配置错误的这个推断,这个报错通常是由于Spark无法通过API访问Hbase的Region造成的。那么,如果是cloudera版的,都是预先就已经做好兼容性了,所以可以排除因兼容性问题导致的无法访问,那么只能有一个原因就是配置错误。

接着对比了一下实验室环境和生产环境的spark启动日志,发现两边所加载的jar包不一致,推断是spark-env或者是hbase-env配置有出入导致的,将这一推断告知对方,并建议将hbase/lib/*和hbase-site.xml等文件写入到spark的SPARK_DIST_CLASSPATH中。于是对方将hbase/lib和/etc/hbase/conf路径添加到SPARK_DIST_CLASSPATH中,问题解决。

这个排错是个特别小的问题,但是本着可能会对他人有帮助,同时自己别忘了的原则,还是记录一下。

转载地址:http://scloo.baihongyu.com/

你可能感兴趣的文章
网站在线压力测试工具Load Impact
查看>>
案例:隐秘而低调的内存泄露(OOM)
查看>>
白盒测试不是测试,更不高级
查看>>
mysql query cache
查看>>
win7在未关闭vmware情况下直接关机,导致虚拟机无法克隆
查看>>
LAMP架构,纯文本作品
查看>>
幽幽的灵光射不出你想要的疯狂
查看>>
Servlet与JSP间的传值问题
查看>>
C#获取硬件信息
查看>>
正则表达式匹配多个字符串中的一个
查看>>
root用户登录mysql后新建用户提示1045错误
查看>>
iOS面试题(三)
查看>>
更改Docker默认的images存储位置
查看>>
Sublime Text3中文环境设置
查看>>
Mobius反演的套路
查看>>
u-boot文件夹
查看>>
SecureCRT:保存输出日志的方法
查看>>
vueX的使用
查看>>
Android的TextView在显示文字的时候,如果有段中文有英文,有中文,有中文标点符号,你会发现,当要换行的时候遇到中文标点, 这一行就会空出很多空格出来...
查看>>
bupt summer training for 16 #3 ——构造
查看>>