请选择 进入手机版 | 继续访问电脑版
点击联系客服
客服QQ:509006671 客服微信:mengfeiseo
查看: 93|回复: 50

sqoopexport导出映射100% reduce 0%卡纸的原因及解决方案

[复制链接]

1

主题

1

帖子

-7

积分

限制会员

积分
-7
发表于 2021-2-17 16:05:37 | 显示全部楼层 |阅读模式
这篇文章主要介绍了导致sqoop  export导出映射100% REDUCE  0%的各种原因和解决方法,具有很好的参考价值,希望对大家有帮助。一起跟着编来看看

我把这种bug称为典型的“哈姆雷特”bug,是指“即使报告错误的情况,网络上也可能有各种错别字的解决方法”的bug。不知道哪个是问题。(另一方面)。

先看导入命令:

[根@主机25 ~] #

SQ  OOP  export-connect  ' JDBC  : MySQL  3360//172.16 . XXX  . XXX  33603306/DB  name?use  unicode=truecharacterencoding=utf-8 '

- username=root  - password==
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运行所需的默认资源需求。
解决方案如下:
在yarn-site.xml中加入如下配置:

yarn.nodemanager.resource.memory-mb
20480


yarn.scheduler.minimum-allocation-mb
2048


yarn.nodemanager.vmem-pmem-ratio
2.1

关闭yarn重启就好了!!!
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。如有错误或未考虑完全的地方,望不吝赐教。
来源:脚本之家
链接:https://www.jb51.net/article/203322.htm
回复

使用道具 举报

0

主题

128

帖子

123

积分

注册会员

Rank: 2

积分
123
发表于 2021-2-17 16:05:45 | 显示全部楼层
LZ说的很不错
回复

使用道具 举报

1

主题

96

帖子

99

积分

注册会员

Rank: 2

积分
99
发表于 2021-2-17 16:26:26 | 显示全部楼层
找到好贴不容易,我顶你了,谢了
回复

使用道具 举报

1

主题

116

帖子

94

积分

注册会员

Rank: 2

积分
94
发表于 2021-2-17 16:47:24 | 显示全部楼层
LZ说的很不错
回复

使用道具 举报

1

主题

115

帖子

110

积分

注册会员

Rank: 2

积分
110
发表于 2021-2-17 17:08:29 | 显示全部楼层
看帖回帖是美德!
回复

使用道具 举报

1

主题

107

帖子

100

积分

注册会员

Rank: 2

积分
100
发表于 2021-2-17 17:29:09 | 显示全部楼层
好好 学习了 确实不错
回复

使用道具 举报

0

主题

104

帖子

87

积分

注册会员

Rank: 2

积分
87
发表于 2021-2-17 17:49:58 | 显示全部楼层
小手一抖,积分到手!
回复

使用道具 举报

1

主题

107

帖子

85

积分

注册会员

Rank: 2

积分
85
发表于 2021-2-17 18:10:29 | 显示全部楼层
小手一抖,积分到手!
回复

使用道具 举报

1

主题

105

帖子

96

积分

注册会员

Rank: 2

积分
96
发表于 2021-2-17 18:31:06 | 显示全部楼层
我是个凑数的。。。
回复

使用道具 举报

1

主题

126

帖子

120

积分

注册会员

Rank: 2

积分
120
发表于 2021-2-17 18:51:17 | 显示全部楼层
前排支持下分享
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|无图版|手机版|小黑屋|汕头@IT精英团

Powered by Discuz! X3.4 © 2020 Comsenz Inc.

GMT+8, 2021-3-9 18:31 , Processed in 0.115483 second(s), 24 queries .

快速回复 返回顶部 返回列表