Sqoop 导入SQlServer数据时报错

在使用Sqoop将SQLServer数据导入HDFS的过程中,遇到Container内存超出限制的问题。错误显示物理内存使用1.0GB,虚拟内存使用2.5GB,而配置只允许2.1GB的虚拟内存。这可能是由于`yarn.nodemanager.vmem-pmem-ratio`设置不当导致的。解决方案包括禁用虚拟内存检查、增大`mapreduce.map.memory.mb`、调整`yarn.nodemanager.vmem-pmem-ratio`比例,以及检查是否存在内存泄漏和数据倾斜问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1 Sqoop将业务数据SQLServer数据导入到HDFS时,出现如下错误

Container [pid=19170,containerID=container_e43_1604046194386_1457_01_000004] is running 802816B beyond the ‘PHYSICAL’ memory limit. Current usage: 1.0 GB of 1 GB physical memory used; 2.5 GB of 2.1 GB virtual memory used
在这里插入图片描述
错误分析:

1.0GB 任务所占的物理内存

1GB: mapreduce.map.memory.mb 参数默认设置大小(设置的是物理内存)

2.5GB:程序所占用的虚拟内存

2.1GB: mapreduce.map.memory.mb 乘以 yarn.nodemanager.vmem-pmem-ratio 得到的

其中 yarn.nodemanager.vmem-pmem-ratio是虚拟内存和物理内存的占比,在yarn-site.xml中设置,默认值是2.1

注:mapreduce.map.memory.mb和mapreduce.reduce.memory.mb默认为0,表示会根据最大堆大小 和 堆与容器的比值 设置 需要的物理内存。如果没有指定最大堆大小,则物理内存默认设置为1G

很明显,Container占用了2.5G的虚拟内存,但是分配给Container的却只有2.1G,所以kill掉了这个Continer,

上面只是map中产生的报错,当然也有可能在reduce中

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值