sqoop导出参数(sqoop export导出 map100% reduce0% 卡住的多种原因及解决)
sqoop导出参数
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运行所需的默认资源需求。
解决方案如下:
在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重启就好了!!!
以上为个人经验,希望能给大家一个参考,也希望大家多多支持开心学习网。如有错误或未考虑完全的地方,望不吝赐教。
原文链接:https://blog.csdn.net/IKnowNothinglee/article/details/91862751
- mongodb中mapreduce实例
- 织梦仿站流程图解(织梦sitemap地图实时推送给百度的教程)
- dedecms如何更改主页模板(织梦dedecms sitemap路径修改方法)
- sqoop导出参数(sqoop export导出 map100% reduce0% 卡住的多种原因及解决)
- reactmap给了key仍然提示错误(react为什么不推荐使用index作为key)
- pythonlambda是什么函数(Python之lambda匿名函数及map和filter的用法)
- django查找路径(Django Sitemap 站点地图的实现方法)
- phpredis存储对象(PHP使用redis位图bitMap 实现签到功能)
- vue中的mapgetter优势(vuex 中辅助函数mapGetters的基本用法详解)
- xm文档使用教程(xmapp环境搭建注意事项说明)
- dede软件标签(发掘dede自带的google sitemap功能)
- nginx跨域怎么用(如何利用map实现Nginx允许多个域名跨域)
- asp.net中Server.MapPath的使用
- MongoDB的MapReduce的用法
- python线程安全队列(Python 限制线程的最大数量的方法Semaphore)
- dedecms模板特点(在Dedecms下面生成Google Sitemap的方法)
- 辱华品牌新百伦官宣新代言人IU,个别粉丝希望get爱豆同款(辱华品牌新百伦官宣新代言人IU)
- 巅峰时期被爆床照,曾被选国民最讨厌女星,IU不为人知的黑历史(巅峰时期被爆床照)
- 每天1万吨牛奶倒进下水道,美国大萧条一幕重现(每天1万吨牛奶倒进下水道)
- 如何看待美国数十万加仑牛奶倒下水道 历史又重演了(如何看待美国数十万加仑牛奶倒下水道)
- 历史惊人的相似,美国80万加仑牛奶倒入下水道,意味着什么(历史惊人的相似)
- 美国数十万加仑牛奶倒进下水道,世界会重演1929年的大萧条吗(美国数十万加仑牛奶倒进下水道)
热门推荐
- node.js缓存区(如何利用node实现静态文件缓存详解)
- ftp服务器登录错误(登陆FTP服务器提示530 Login authentication failed 错误的解决方法)
- vue用于动态切换组件的内置组件(Vue 可拖拽组件Vue Smooth DnD的使用详解)
- vio更新后怎么是黑页面(vite2.0 踩坑实录)
- sql server 进阶教程(SQL Server游标的介绍与使用)
- vue项目做过哪些打包优化(Vue项目优化的一些实战策略)
- react组件之间通信(React传递参数的几种方式)
- javascript函数工具有哪些(如何让你的JavaScript函数更加优雅详解)
- vue 网页打印(vue打印功能实现的两种方法总结)
- localstorage底层技术(浅谈Web Storage API的使用)
排行榜
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9