Hive 0.10发布了,修正了一些bug,搞了一些新特性,对提高工作效率很有帮助,于是尝试升级了一下,然后遇到了一些问题,记录一下。

主要是看上了下面几个feature,打算换上看看。

  • 1. Allow SELECT <col> without a mapreduce job
  • 2. Implement "show create table"
  • 3. Skewed Join Optimization,optimize union sub-queries
  • 4. hiveserver bug fix.

0.10.0版本还规范了JSON的使用,Hive中的数据如果包含json,则json里必须使用双引号,以前的版本json是可以使用单引号的。

首先要吐槽一下,Apache这活干的太糙了。发布的0.10,默认情况下没法用。hive-default.xml.template复制成hive-site.xml,里面有几个地方没有写xml的封口标签,需要自己写上去。还有个地方是在注释里面用了<>,结果hive解析的时候当成了xml标签。

这都不是大问题,比较大的问题是部署上去以后,发现没法使用。不走map/reduce的查询都没问题。只要走map/red就报错。主要错误是报No LZO Codec found,cannot run.其他报错信息如下。

  1. at com.hadoop.mapred.DeprecatedLzoLineRecordReader.next(DeprecatedLzoLineRecordReader.java:35)
  2. at com.hadoop.mapred.DeprecatedLzoLineRecordReader.next(DeprecatedLzoLineRecordReader.java:85)
  3. at org.apache.hadoop.util.LineReader.readLine(LineReader.java:187)
  4. at org.apache.hadoop.util.LineReader.readLine(LineReader.java:134)
  5. at java.io.InputStream.read(InputStream.java:85)
  6. at org.apache.hadoop.io.compress.DecompressorStream.read(DecompressorStream.java:76)
  7. at com.hadoop.compression.lzo.LzopInputStream.decompress(LzopInputStream.java:255)
  8. at com.hadoop.compression.lzo.LzopInputStream.getCompressedData(LzopInputStream.java:319)
  9. at com.hadoop.compression.lzo.LzopDecompressor.setInput(LzopDecompressor.java:116)
  10. at com.hadoop.compression.lzo.LzoDecompressor.setInput(LzoDecompressor.java:208)
  11. Caused by: java.lang.ArrayIndexOutOfBoundsException
  12. ... 11 more
  13. at org.apache.hadoop.hive.shims.HadoopShimsSecure$CombineFileRecordReader.doNextWithExceptionHandler(HadoopShimsSecure.java:326)
  14. at org.apache.hadoop.hive.ql.io.HiveContextAwareRecordReader.next(HiveContextAwareRecordReader.java:108)
  15. at org.apache.hadoop.hive.ql.io.CombineHiveRecordReader.doNext(CombineHiveRecordReader.java:41)
  16. at org.apache.hadoop.hive.ql.io.CombineHiveRecordReader.doNext(CombineHiveRecordReader.java:101)
  17. at org.apache.hadoop.hive.ql.io.HiveContextAwareRecordReader.doNext(HiveContextAwareRecordReader.java:276)
  18. at org.apache.hadoop.hive.io.HiveIOExceptionHandlerUtil.handleRecordReaderNextException(HiveIOExceptionHandlerUtil.java:77)
  19. at org.apache.hadoop.hive.io.HiveIOExceptionHandlerChain.handleRecordReaderNextException(HiveIOExceptionHandlerChain.java:121)
  20. Caused by: java.io.IOException: java.lang.ArrayIndexOutOfBoundsException
  21. at org.apache.hadoop.mapred.Child.main(Child.java:249)
  22. at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1121)
  23. at javax.security.auth.Subject.doAs(Subject.java:396)
  24. at java.security.AccessController.doPrivileged(Native Method)
  25. at org.apache.hadoop.mapred.Child$4.run(Child.java:255)
  26. at org.apache.hadoop.mapred.MapTask.run(MapTask.java:372)
  27. at org.apache.hadoop.mapred.MapTask.runOldMapper(MapTask.java:436)
  28. at org.apache.hadoop.mapred.MapRunner.run(MapRunner.java:48)
  29. at org.apache.hadoop.mapred.MapTask$TrackedRecordReader.next(MapTask.java:216)
  30. at org.apache.hadoop.mapred.MapTask$TrackedRecordReader.moveToNext(MapTask.java:236)
  31. at org.apache.hadoop.hive.shims.HadoopShimsSecure$CombineFileRecordReader.next(HadoopShimsSecure.java:244)
  32. at org.apache.hadoop.hive.shims.HadoopShimsSecure$CombineFileRecordReader.doNextWithExceptionHandler(HadoopShimsSecure.java:328)
  33. at org.apache.hadoop.hive.io.HiveIOExceptionHandlerUtil.handleRecordReaderNextException(HiveIOExceptionHandlerUtil.java:77)
  34. at org.apache.hadoop.hive.io.HiveIOExceptionHandlerChain.handleRecordReaderNextException(HiveIOExceptionHandlerChain.java:121)
  35. java.io.IOException: java.io.IOException: java.lang.ArrayIndexOutOfBoundsException

尝试了一下,将HIVE_HOME指向到0.9.0,则0.10.0使用正常。而将HIVE_HOME指向到0.10.0则0.9.0也会报找不到LZO库的问题。

看来是lzo解码器的问题,但是0.9.0的hive就没有这个问题,于是用lsof抓一下进程加载的链接库。发现0.9.0会加载一个/usr/lib/liblzo2.so.2的文件,而0.10.0则没有。看来是lzo库文件的问题。重新安装一下lzo2.06的两个rpm包,并把hadoop-gpl-packing升级到最新的0.5.4-1,问题解决,map/red正常完成。

另:记录一下tasktracker重启以后的假死问题,Tasktracker重启之后,一切正常,但jobtracker中很长时间无法获取tasktracker的主机信息。主要是由于tasktracker在重启后,会删除mrlocal文件夹下面的distcache,如果运行了一段时间重启,删除文件需要很长时间。所以,先手动删除这些distcache,再重启TT,一切就正常了。

源码在src/mapred/org/apache/hadoop/mapred/TaskTracker.java

  1. // NB: deleteLocalFiles uses the configured local dirs, but does not
  2. // fail if a local directory has failed.
  3. fConf.deleteLocalFiles(SUBDIR);
  4. final FsPermission ttdir = FsPermission.createImmutable((short) 0755);
  5. for (String s : localStorage.getDirs()) {
  6. localFs.mkdirs(new Path(s, SUBDIR), ttdir);
  7. }
  8. fConf.deleteLocalFiles(TT_PRIVATE_DIR);
  9. final FsPermission priv = FsPermission.createImmutable((short) 0700);
  10. for (String s : localStorage.getDirs()) {
  11. localFs.mkdirs(new Path(s, TT_PRIVATE_DIR), priv);
  12. }
  13. fConf.deleteLocalFiles(TT_LOG_TMP_DIR);
  14. final FsPermission pub = FsPermission.createImmutable((short) 0755);
  15. for (String s : localStorage.getDirs()) {
  16. localFs.mkdirs(new Path(s, TT_LOG_TMP_DIR), pub);
  17. }

Hadoop运维记录系列(三)相关推荐

  1. Hadoop运维记录系列(十二)

    从公司离职有几天了,今天回去看同事,想一起吃饭,没成想摊上大事了.说下午hadoop集群的机房停电了,然后集群就启动不了了,几个人从下午4点多折腾到8点多还没搞定,有几台服务器找不到硬盘,还有内网pi ...

  2. Hadoop运维记录系列(十四)

    周末去了趟外地,受托给某省移动公司(经确认更正,是中国移动位置基地,不是省公司)做了一下Hadoop集群故障分析和性能调优,把一些问题点记录下来. 该系统用于运营商的信令数据,大约每天1T多数据量,2 ...

  3. Hadoop运维记录系列(十六)

    应了一个国内某电信运营商集群恢复的事,集群故障很严重,做了HA的集群Namenode挂掉了.具体过程不详,但是从受害者的只言片语中大概回顾一下历史的片段. Active的namenode元数据硬盘满了 ...

  4. Hadoop运维记录系列(二十二)

    今天下午写了一会代码,然后帮同事解决了一个hbase相关的故障分析,定位了问题根源,觉得比较有代表性,记录一下. 先说一下问题的发生与背景. 这个故障其实是分为两个故障的,第一个比较简单,第二个相对复 ...

  5. Hadoop运维记录系列(十七)

    上个月通过email,帮朋友的朋友解决了一个Cloudera的Spark-SQL无法访问HBase做数据分析的问题,记录一下. 首先,对方已经做好了Hive访问HBase,所以spark-sql原则上 ...

  6. Hadoop运维记录系列(十)

    昨天同事遇到一个hadoop故障,找了半天没看出问题,问到我这里,花了一会解决了一下,估计这是我给暴风的集群解决的最后的故障了,以后就不定给谁解决问题去了. 只截下来了Namenode的报错Log,D ...

  7. 大数据运维工作(Linux,OGG,链路监控,Hadoop运维等)

    大数据运维工程师工作内容 Linux运维手册 1. 启动/关闭集群组件 1.1 负载均衡 1)Nginx 运维命令 Copy to clipboard cd /usr/nginx/sbin #进入 s ...

  8. 云计算Python自动化运维开发实战 三、python文件类型

    为什么80%的码农都做不了架构师?>>>    云计算Python自动化运维开发实战 三.python文件类型 导语: python常用的有3种文件类型 1. 源代码     py ...

  9. 运维少年系列 python and cisco (1)

    运维少年系列 python and cisco (1) 预备知识 本系列文章需要各位具有CCNA/HCNA基础知识(知道命令怎么敲) python 本系列文章需要使用到的python版本为2.7,模块 ...

最新文章

  1. 利用循环,使得10 * 10的二维数组具有以下值,并按以下结构输出在屏幕上
  2. ExtendHelper
  3. 所有雷电接口电脑5分钟内即可破解,漏洞无法软件修复,微软Surface笑了
  4. 【LTE】LTEMIMO系统的MATLAB仿真
  5. SAP CRM Fiori应用My Opportunity的点阵外观
  6. win7分区软件_小编给你传授 win7系统给硬盘分区的修复方案 -win7系统使用教程...
  7. 忍不住了, 和大家聊聊怎么写简历吧, 关于简历的深度思考
  8. [转]Windows Shell 编程 第八章 【来源:http://blog.csdn.net/wangqiulin123456/article/details/7987961】...
  9. “请求未在nginx中配置的域名时,给浏览器返回508错误码”配置示例
  10. 【超图+CESIUM】【基础API使用示例】31、超图|CESIUM -【坐标转换】屏幕坐标转世界坐标
  11. 凸函数二阶条件的理解及常见函数解析
  12. 微信小程序农历阳历日期选择器选中日期同时获取对应农/阳历日期 这个demo问题的修改
  13. 外国人坐地铁到底玩不玩手机?
  14. python爬虫——https请求
  15. 怎么知道本台计算机的用户名和密码,访问其它电脑时“开始-运行-\输入要连接的电脑的IP,用户名和密码输入什么?...
  16. 服务网关-Zuul(二)
  17. ZYNQ开发系列——ZYNQ系统的搭建
  18. 扩展城市信道etu模型matlab仿真,【SDR】LTE信道仿真模型-EPA信道
  19. 全同胞家系如何计算遗传力及育种值
  20. echarts绘制各种图表(柱形、折线、柱形、饼图、南丁格尔、环形、中国地图散点图、百度地图散点图、词云图)

热门文章

  1. LeetCode Non-overlapping Intervals(dp,greedy)
  2. python中的eval
  3. mysql 的默认数据库mysql为什么在 workbench下看不到?
  4. 您的连接不是私密连接
  5. ●BZOJ 2669 [cqoi2012]局部极小值
  6. Linux下安装oracle提示INS-20802 Oracle Net Configuration Assistant
  7. Java--FutureTask原理与使用(FutureTask可以被Thread执行,可以被线程池submit方法执行,并且可以监控线程与获取返回值)...
  8. (转)FFMPEG解码H264拼帧简解
  9. 尝鲜:windows 7 来了
  10. VC6.0 如何改变对话框背景色