Hive SQL 和 MR 异常之 reduce拉取数据失败
来源:互联网 发布:印度入侵中国边界知乎 编辑:程序博客网 时间:2024/06/11 02:05
主要错误:
2016-12-23 09:43:10,656 INFO [fetcher#6] org.apache.hadoop.mapreduce.task.reduce.ShuffleSchedulerImpl: assigned 7 of 7 to hadoopserver04:13562 to fetcher#62016-12-23 09:43:10,656 INFO [fetcher#10] org.apache.hadoop.mapreduce.task.reduce.Fetcher: fetcher#10 - MergeManager returned status WAIT ...2016-12-23 09:43:10,656 INFO [fetcher#10] org.apache.hadoop.mapreduce.task.reduce.ShuffleSchedulerImpl: hadoopserver10:13562 freed by fetcher#10 in 1455ms2016-12-23 09:43:10,657 INFO [fetcher#10] org.apache.hadoop.mapreduce.task.reduce.ShuffleSchedulerImpl: Assigning hadoopserver10:13562 with 2 to fetcher#102016-12-23 09:43:10,657 INFO [fetcher#10] org.apache.hadoop.mapreduce.task.reduce.ShuffleSchedulerImpl: assigned 2 of 2 to hadoopserver10:13562 to fetcher#102016-12-23 09:43:10,657 WARN [main] org.apache.hadoop.mapred.YarnChild: Exception running child : org.apache.hadoop.mapreduce.task.reduce.Shuffle$ShuffleError: error in shuffle in fetcher#9at org.apache.hadoop.mapreduce.task.reduce.Shuffle.run(Shuffle.java:134)at org.apache.hadoop.mapred.ReduceTask.run(ReduceTask.java:376)at org.apache.hadoop.mapred.YarnChild$2.run(YarnChild.java:163)at java.security.AccessController.doPrivileged(Native Method)at javax.security.auth.Subject.doAs(Subject.java:422)at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1671)at org.apache.hadoop.mapred.YarnChild.main(YarnChild.java:158)Caused by: java.lang.OutOfMemoryError: Java heap spaceat org.apache.hadoop.io.BoundedByteArrayOutputStream.<init>(BoundedByteArrayOutputStream.java:56)at org.apache.hadoop.io.BoundedByteArrayOutputStream.<init>(BoundedByteArrayOutputStream.java:46)at org.apache.hadoop.mapreduce.task.reduce.InMemoryMapOutput.<init>(InMemoryMapOutput.java:63)at org.apache.hadoop.mapreduce.task.reduce.MergeManagerImpl.unconditionalReserve(MergeManagerImpl.java:305)at org.apache.hadoop.mapreduce.task.reduce.MergeManagerImpl.reserve(MergeManagerImpl.java:295)at org.apache.hadoop.mapreduce.task.reduce.Fetcher.copyMapOutput(Fetcher.java:514)at org.apache.hadoop.mapreduce.task.reduce.Fetcher.copyFromHost(Fetcher.java:336)at org.apache.hadoop.mapreduce.task.reduce.Fetcher.run(Fetcher.java:193)
主要错误信息:Error: org.apache.Hadoop.mapreduce.task.reduce.Shuffle$ShuffleError: error in shuffle in fetcher#43
解决办法:限制reduce的shuffle内存使用
Hive:set mapreduce.reduce.shuffle.memory.limit.percent=0.1;
MR:job.getConfiguration().setStrings("mapreduce.reduce.shuffle.memory.limit.percent", "0.1");
原理分析:reduce会在map执行到一定比例启动多个fetch线程去拉取map的输出结果,放到reduce的内存、磁盘中,然后进行merge。当数据量大时,拉取到内存的数据就会引起OOM,所以此时要减少fetch占内存的百分比,将fetch的数据直接放在磁盘上。
mapreduce.reduce.shuffle.memory.limit.percent:每个fetch取到的map输出的大小能够占的内存比的大小。默认是0.25。因此实际每个fetcher的输出能放在内存的大小是reducer的Java heap size*0.9*0.25。
0 0
- Hive SQL 和 MR 异常之 reduce拉取数据失败
- hadoop异常之 reduce拉取数据失败 (error in shuffle in fetcher)
- Hive优化(2)之系统评估reduce数为1的MR Job优化
- Hive 之 排序和reduce设置
- hive——拉取数据的一个实例
- Python自动化拉取Mysql数据并装载到Hive
- Python自动化拉取Mysql数据并装载到Hive
- hive优化策略之控制map数和reduce数
- wget拉取文件失败
- 数据拉取
- 拉取全部数据
- execl 数据拉取
- hive优化之------控制hive任务中的map数和reduce数
- hive优化之------控制hive任务中的map数和reduce数
- hive优化之--控制hive任务中的map数和reduce数<转>
- hive优化之 —— 控制hive任务中的map数和reduce数
- hive优化之------控制hive任务中的map数和reduce数
- hive优化之-控制hive任务中的map数和reduce数
- Ipad项目初涉UISplitViewController
- Andriod底层第三课---启动流程
- 手把手教你理解梯度下降法
- 【LeetCode007算法/编程练习C++】数字逆序(atol)
- 单点登录的原理和简单实现
- Hive SQL 和 MR 异常之 reduce拉取数据失败
- 简单的界面登录实现(struts+hibernate实现)
- ios 自定义相册开发
- Visual Studio常用快捷键
- ubuntu14安装maven
- Android官方下拉刷新控件SwipeRefreshLayout+ListView 介绍
- 蓝鸥iOS从零基础到精通就业-C语言入门 17指针二
- cron表达式详解
- 怎么用ABBYY FineReader自定义工作区