1.问题现象
在运行基于LZO压缩的作业中,出现了EOF异常,导致MapReduce任务异常退出。
2.问题分析
一般在处理LZO出现读数据异常的时候,往往是数据文件和索引文件出现了损坏而导致现场出现了失败的现象。
由于生产环境采用了Lzo压缩格式,同时查看索引大小同文件大小不匹配,所以通过工具进行索引文件的重新生成,进行测试。
3.验证步骤如下:
3.1找到hadoop-lzo相关的jar包
find /opt/ -name “hadoop-lzo.jar”
cp /opt/…/lib/hadoop-yarn/lib/hadoop-lzo-xxx.jar ./
lzop datafile //压缩数据文件
hdfs dfs -mkdir /data/xxx //上传数据文件
hdfs dfs -put datafile.lzo hdfs:/data/xxx
3.2通过mr作业构建Lzo压缩文件的索引
hadoop jar /path/to/hadoop-lzo-xxx.jar com.hadoop.compression.lzo.DistributedLzoIndexer /data/xxx/datafile.lzo
hdfs dfs -ls /data/xxx #查看索引文件,查看是否正常
3.3 创建完索引后,重新运行作业
mapReduce作业正常结束
说明
lzop -d datafile.lzo #解压正常,则说明数据文件正常