当前位置: 首页 > 编程笔记 >

sqoop export导出 map100% reduce0% 卡住的多种原因及解决

莫泓
2023-03-14
本文向大家介绍sqoop export导出 map100% reduce0% 卡住的多种原因及解决,包括了sqoop export导出 map100% reduce0% 卡住的多种原因及解决的使用技巧和注意事项,需要的朋友参考一下

我称这种bug是一个典型的“哈姆雷特”bug,就是指那种“报错情况相同但网上却会有各种五花缭乱解决办法”的bug,让我们不知道哪一个才是症结所在。

先看导入命令:

[root@host25 ~]# 
sqoop export --connect "jdbc:mysql://172.16.xxx.xxx:3306/dbname?useUnicode=true&characterEncoding=utf-8" 
--username=root --password=xxxxx --table rule_tag --update-key rule_code 
--update-mode allowinsert 
--export-dir /user/hive/warehouse/lmj_test.db/rule_tag --input-fields-terminated-by '\t' 
--input-null-string '\\N' --input-null-non-string '\\N' -m1

这个导入命令语法上其实是完全没问题的。

接下来是报错:

#截取部分
19/06/11 09:39:57 INFO mapreduce.Job: The url to track the job: http://dthost25:8088/proxy/application_1554176896418_0537/
19/06/11 09:39:57 INFO mapreduce.Job: Running job: job_1554176896418_0537
19/06/11 09:40:05 INFO mapreduce.Job: Job job_1554176896418_0537 running in uber mode : false
19/06/11 09:40:05 INFO mapreduce.Job: map 0% reduce 0%
19/06/11 09:40:19 INFO mapreduce.Job: map 100% reduce 0%
19/06/11 09:45:34 INFO mapreduce.Job: Task Id : attempt_1554176896418_0537_m_000000_0, Status : FAILED
AttemptID:attempt_1554176896418_0537_m_000000_0 Timed out after 300 secs
19/06/11 09:45:36 INFO mapreduce.Job: map 0% reduce 0%
19/06/11 09:45:48 INFO mapreduce.Job: map 100% reduce 0%
19/06/11 09:51:04 INFO mapreduce.Job: Task Id : attempt_1554176896418_0537_m_000000_1, Status : FAILED
AttemptID:attempt_1554176896418_0537_m_000000_1 Timed out after 300 secs
19/06/11 09:51:05 INFO mapreduce.Job: map 0% reduce 0%
19/06/11 09:51:17 INFO mapreduce.Job: map 100% reduce 0%
19/06/11 09:56:34 INFO mapreduce.Job: Task Id : attempt_1554176896418_0537_m_000000_2, Status : FAILED
AttemptID:attempt_1554176896418_0537_m_000000_2 Timed out after 300 secs
19/06/11 09:56:35 INFO mapreduce.Job: map 0% reduce 0%
19/06/11 09:56:48 INFO mapreduce.Job: map 100% reduce 0%
19/06/11 10:02:05 INFO mapreduce.Job: Job job_1554176896418_0537 failed with state FAILED due to: Task failed task_1554176896418_0537_m_000000
Job failed as tasks failed. failedMaps:1 failedReduces:0
19/06/11 10:02:05 INFO mapreduce.Job: Counters: 9
 Job Counters 
 Failed map tasks=4
 Launched map tasks=4
 Other local map tasks=3
 Data-local map tasks=1
 Total time spent by all maps in occupied slots (ms)=2624852
 Total time spent by all reduces in occupied slots (ms)=0
 Total time spent by all map tasks (ms)=1312426
 Total vcore-seconds taken by all map tasks=1312426
 Total megabyte-seconds taken by all map tasks=2687848448
19/06/11 10:02:05 WARN mapreduce.Counters: Group FileSystemCounters is deprecated. Use org.apache.hadoop.mapreduce.FileSystemCounter instead
19/06/11 10:02:05 INFO mapreduce.ExportJobBase: Transferred 0 bytes in 1,333.3153 seconds (0 bytes/sec)
19/06/11 10:02:05 WARN mapreduce.Counters: Group org.apache.hadoop.mapred.Task$Counter is deprecated. Use org.apache.hadoop.mapreduce.TaskCounter instead
19/06/11 10:02:05 INFO mapreduce.ExportJobBase: Exported 0 records.
19/06/11 10:02:05 ERROR tool.ExportTool: Error during export: Export job failed!
Time taken: 1340 s 
task IDE_TASK_ADE56470-B5A3-4303-EA75-44312FF8AA0C_20190611093945147 is complete.

可以看到,导入任务在INFO mapreduce.Job: map 100% reduce 0%时停住了,停了5分钟,然后任务自动重跑,又卡住停了5分钟,最后任务报了个超时的错误。

很显然,任务失败的直接原因是超时,但是超时的原因是因为导入过程的mapreduce任务卡住了,那mapreduce为什么会卡住呢?这个报错日志中并没有提到,这就是查原因时最麻烦的地方。

先说一下结果,最后查了很久才发现,是因为有一行的数据长度,超过了mysql设定的字段长度。也就是在往varchar(50)的字段里导入字符串“字符串很长很长很长很长很长很长很长很长很长”时,任务就阻塞住了。

在这里也跟大家汇总一下网上的各种原因,大家可以逐个检查

在map 100% reduce 0%时卡住的可能原因:(以往mysql导出为例)

1、长度溢出。导入的数据超过了mysql表的字段设定长度

解决办法:重设字段长度即可

2、编码错误。导入的数据不在mysql的编码字符集内

解决办法:其实在mysql数据库中对应UTF-8字符集的不是utf8编码,而是utf8mb4编码。所以当你的导入数据里有若如Emoji表情或者一些生僻汉字时,就会导不进去造成阻塞卡住。所以你需要注意两点:

(1)导入语句中限定useUnicode=true&characterEncoding=utf-8,表示以utf-8的格式导出;

(2)mysql建表语句中有ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

3、内存不足。导入数据量可能过大,或者分配内存太少

解决办法:要么分批导入,要么给任务分配更多内存

4、主机名错误。

解决办法:这个好像是涉及到主机名的配置问题

5、主键重复 。

解决办法:这是因为你导入的数据中有重复的主键值,要针对性处理一下数据

补充:sqoop从数据库到处数据到hdfs时mapreduce卡住不动解决

在sqoop时从数据库中导出数据时,出现mapreduce卡住的情况

经过百度之后好像是要设置yarn里面关于内存和虚拟内存的配置项.我以前没配置这几项,也能正常运行。但是这次好像运行的比较大。出现此故障的原因应该是,在每个Docker分配的内存和CPU资源太少,不能满足Hadoop和Hive运行所需的默认资源需求。

html" target="_blank">解决方案如下:

在yarn-site.xml中加入如下配置:

<property> 
 <name>yarn.nodemanager.resource.memory-mb</name> 
 <value>20480</value> 
</property> 
<property> 
 <name>yarn.scheduler.minimum-allocation-mb</name> 
 <value>2048</value> 
</property> 
<property> 
 <name>yarn.nodemanager.vmem-pmem-ratio</name> 
 <value>2.1</value> 
</property> 

关闭yarn重启就好了!!!

以上为个人经验,希望能给大家一个参考,也希望大家多多支持小牛知识库。如有错误或未考虑完全的地方,望不吝赐教。

 类似资料:
  • 本文向大家介绍java 出现NullPointerException的原因及解决办法,包括了java 出现NullPointerException的原因及解决办法的使用技巧和注意事项,需要的朋友参考一下 java 出现NullPointerException的原因及解决办法 日常开发过程中,最常见的异常莫过于NullPointerException,之前的时候,只是知道去找到报错的位置,然后去解决

  • 我正在使用2.1.0 SDK和cloudshell来启动我的工作。 (606330F83AB2470F):工作流失败。原因:(606330F83AB24C58):数据流似乎卡住了。请联系Dataflow团队,网址是http://stackoverflow.com/questions/tagged/google-cloud-dataflow。

  • iPhone在低电量模式会导致three.js项目掉帧与卡顿 在做Telegram Mini APP开发的时候遇到的问题,正常模式下无异常; 在iPhone进入低电量模式后,Mini APP里的three.js会出现严重的掉帧和卡顿。 在未显示three.js的内容时页面内存用量130M, 启用后内存用量在150M~163M。 请问是什么原因导致的?和CPU降频、动效被简化相关吗?有无解决办法?

  • 本文向大家介绍Mysql查询很慢卡在sending data的原因及解决思路讲解,包括了Mysql查询很慢卡在sending data的原因及解决思路讲解的使用技巧和注意事项,需要的朋友参考一下 因为编写了一个Python程序,密集的操作了一个Mysql库,之前数据量不大时,没发现很慢,后来越来越慢,以为只是数据量大了的原因,但是后来慢到不能忍受了,查了半天,索引能用的都用上了,执行一次还是要3到

  • 本文向大家介绍详谈php ip2long 出现负数的原因及解决方法,包括了详谈php ip2long 出现负数的原因及解决方法的使用技巧和注意事项,需要的朋友参考一下 php提供了ip2long与long2ip方法对ip地址处理。 1、ip2long — 将一个IPV4的字符串互联网协议转换成数字格式 int ip2long ( string $ip_address ) 参数: ip_addres

  • 本文向大家介绍浅谈vue在html中出现{{}}的原因及解决方式,包括了浅谈vue在html中出现{{}}的原因及解决方式的使用技巧和注意事项,需要的朋友参考一下 原因: 浏览器渲染机制,解析html结构 -> 加载外部脚本和样式表文件 -> 解析并执行脚本代码 -> 构造html dom模型 -> 加载图片等外部文件 -> 页面加载完毕。 初始化vue的js写在页面底部,也就是最后才执行js脚本