【问题描述】:
测试terasort,遇到过下面的错误:
Error: java.io.EOFException: read past eof
at org.apache.hadoop.examples.terasort.TeraInputFormat$TeraRecordReader.nextKeyValue(TeraInputFormat.java:261)
Error:
18/03/20 08:02:36 INFO mapreduce.Job: Task Id : attempt_1412690505174_0006_m_000034_0, Status : FAILED
Error: java.io.EOFException: read past eof
at org.apache.hadoop.examples.terasort.TeraInputFormat$TeraRecordReader.nextKeyValue(TeraInputFormat.java:261)
at org.apache.hadoop.mapred.MapTask$NewTrackingRecordReader.nextKeyValue(MapTask.java:533)
at org.apache.hadoop.mapreduce.task.MapContextImpl.nextKeyValue(MapContextImpl.java:80)
at org.apache.hadoop.mapreduce.lib.map.WrappedMapper$Context.nextKeyValue(WrappedMapper.java:91)
at org.apache.hadoop.mapreduce.Mapper.run(Mapper.java:144)
at org.apache.hadoop.mapred.MapTask.runNewMapper(MapTask.java:764)
at org.apache.hadoop.mapred.MapTask.run(MapTask.java:340)
at org.apache.hadoop.mapred.YarnChild$2.run(YarnChild.java:167)
at java.security.AccessController.doPrivileged(Native Method)
at javax.security.auth.Subject.doAs(Subject.java:415)
at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1556)
at org.apache.hadoop.mapred.YarnChild.main(YarnChild.java:162)
多个角度进行了分析验证:
1)如果只保证文件最后一行是100个字符,中间行有少于100字符,执行还是报错。
2)保证每一行都是100字符(行数也要多一些,我这有可用的示例数据,如附件),执行ok;
3)上一个可用示例数据,最后一行去掉1个字符,执行报跟之前一样的错。
【初步结论】
TeraInoutFormat文件大小是RECORD_LENGTH的精确倍数
因为生成的数据如果某一行比RECORD_LENGTH(一般都是100字节)小,可能会导致这样的问题。
1:选取的split个数:samples = Math.min(10, splits.length); ,改变map的RECORD_LENGTH长度小于100,一般为99:
2:删除结果目录(如果有的话),否则执行报错:
hdfs dfs -rm -r -skipTrash /tmp/terasort-output
3:
将terasort程序提交执行:
nohup yarn jar /usr/hdp/2.3.4.0-3485/hadoop-mapreduce/hadoop-mapreduce-examples-2.7.1.2.3.4.0-3485.jar terasort -Dmapred.reduce.tasks=50 /tmp/tcode /tmp/terasort-output
查看结果:
登录华三DataEngine平台(https://10.154.74.145:8443/,用户名密码:admin/admin),点击“服务-Yarn-快速连接-ResourceManager UI”
在map阶段,TotalOrderPartition通过trie查找来确定mapper中某个record被送往哪个reducer,然后才由reducer进行局部排序,reducer中各个数据块的大小关系是在查找过程中才由trie来确定下来,这个参数需要经过调试来确定
该案例暂时没有网友评论
✖
案例意见反馈
亲~登录后才可以操作哦!
确定你的邮箱还未认证,请认证邮箱或绑定手机后进行当前操作