当我使用一个映射器运行Sqoop时,我有一个EMR群集,用于将700万条记录查询作为Avro文件传输到S3。 30分钟(+-5分钟)后,映射任务有时会被杀死,有时只是保持状态运行(永不结束),但是另一个映射任务被创建并更改为状态运行,就像替换上一个任务一样,并且该工作从未结束。如果我更改查询以返回大约一百万条记录,则该作业正常结束。查看日志,我只发现了这个
2019-10-31 10:20:29,991 INFO [RMCommunicator Allocator] org.apache.hadoop.mapreduce.v2.app.rm.RMContainerAllocator: Killing taskAttempt:attempt_1572476771816_0004_m_000000_4004 because it is running on unusable node:ip-10-0-2-41.us-east-2.compute.internal:8041
有人可以为此提供解决方案吗?
答案 0 :(得分:0)
您需要将mapreduce.task.timeout
设置为0
。根据{{3}}:
如果任务既不读取输入,不写入输出也不更新其状态字符串,则终止该任务之前的毫秒数。值为0将禁用超时。
我认为Sqoop不会让YARN知道它仍在运行,因此映射器被杀死。