一、问题详情
- 今天在对sqoop上运行import到HDFS时,一直卡住在map阶段,map与reduce都是显示0%,但是导入的数据量非常小,虚拟机内存也足够。后面寻找原因,应该是yarn的内存设置不够问题。
#执行的语句
bin/sqoop import \
--connect jdbc:mysql://oracle12c:3306/gmall \
--username root \
--password root \
--query 'select id,login_name from user_info where id>=1 and id<=20 and $CONDITIONS' \
--target-dir /user_info \
--delete-target-dir \
--fields-terminated-by '\t' \
--num-mappers 2 \
--split-by id
二、问题解决
- 在yarn-site.xml配置文件中修改如下配置,之前的总内存设置(resource.memory-mb)只有2046,现在增加到3072。单个容器的最小内存(minimum-allocation-mb)设置256。设置好之后保存退出,重启yarn服务,最后在执行sqoop的导入命令就能成功了。
<!--nodemanager 必须拥有大于等于1024的内存空间-->
<property>
<name>yarn.nodemanager.resource.memory-mb</name>
<value>3072</value>
</property>
<property>
<name>yarn.nodemanager.resource.cpu-vcores</name>
<value>2</value>
</property>
<property>
<name>yarn.scheduler.minimum-allocation-mb</name>
<value>256</value>
- 注意!在重新执行导入任务之前,要先kill掉之前的导入任务,不然可能也会卡住。
hadoop job -list #查看hadoop正在运行的job任务
hadoop job kill job名称 #结束掉运行的任务
版权声明:本文为qq_42346659原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。