1. 环境

Hadoop  Sqoop awsEMR
2.8.5 1.4.7 5.26.0

2.错误描述

在使用Sqoop抽取MySQL数据时,使用hdfs作为缓存,s3作为hive的存储地址,命令如下。

sqoop import "-Dorg.apache.sqoop.splitter.allow_text_splitter=true" -Dmapreduce.job.queuename=default \
--connect jdbc:mysql://${host}:${port}/${db}?tinyInt1isBit=false\&zeroDateTimeBehavior=convertToNull \
--username ${user} \
--password ${password} \
--hive-import \
--hive-overwrite \
--hive-database ${hiveDb} \
--hive-table ${hiveTable} \
--fields-terminated-by '\0x01' \
--lines-terminated-by '\n' \
--null-string '\\N' \
--null-non-string '\\N' \
--hive-partition-key pt \
--hive-partition-value ${pt} \
--hive-delims-replacement ' ' \
--target-dir hdfs:///vova-bd-prod/sqoop-tmp/${db}/${table} \
--query "select ${hive_columns} from ${table} where \$CONDITIONS" \
--split-by ${split_id} -m ${mapers}

抽取到hdfs之后,需要distcp到s3,这时发生错误如下:

FAILED Container [pid=3951,containerID=container_1567749318934_0017_01_000010] is running beyond physical memory limits. Current usage: 1.1 GB of 1 GB physical memory used; 8.1 GB of 5 GB virtual memory used. Killing container.

3.原因以及解决方法

使用sqoop导入数据,distcp使用hadoop-discp-*.jar的jar包,因为这个jar包内置"distcp-default.xml"配置文件,jar包路径:/usr/lib/hadoop/hadoop-distcp-2.8.5-amzn-4.jar。

里面的配置代码如下,它会覆盖'mapred-site.xml' and 'yarn-site.xml'的map、reduce内存配置。

################
<property>
<name>mapred.job.map.memory.mb</name>
<value>1024</value>
</property> <property>
<name>mapred.job.reduce.memory.mb</name>
<value>1024</value>
</property>
################

所以我们在Sqoop后边加上这个参数就可以了,

sqoop import "-Dorg.apache.sqoop.splitter.allow_text_splitter=true" -Dmapred.job.map.memory.mb=4096  -Dmapred.job.reduce.memory.mb=4096

记一次Sqoop抽数据异常的更多相关文章

  1. Sqoop 抽数报错: java.io.FileNotFoundException: File does not exist

    Sqoop 抽数报错: java.io.FileNotFoundException: File does not exist 一.错误详情 2019-10-17 20:04:49,080 INFO [ ...

  2. 解决sqoop抽数报错:IO Error: Connection reset

    遇到的问题:进行sqoop抽数时,虽然能成功执行,但是过程中有很多这样的信息 19/11/20 15:17:11 INFO mapreduce.Job: Task Id : attempt_15737 ...

  3. 记一次tomcat线程创建异常调优:unable to create new native thread

    测试在进行一次性能测试的时候发现并发300个请求时出现了下面的异常: HTTP Status 500 - Handler processing failed; nested exception is ...

  4. 记一次未解决的异常:java.lang.NoClassDefFoundError: net/sf/json/JSONObject

    原因:Jetty会导致这个问题,Tomcat可以正常启动   一.异常产生现象 使用json-lib转换实体类/字符串,跑单元测试没问题,但是启动jetty后调用JSONArray.fromObjec ...

  5. 记一次sqoop同步到mysql

    工作中需要用到将hive的数据导一份到mysql中,需求是这样的:hive每天会产生一份用户标签(tag)发生变化的结果表user_tag,这份结果同步到mysql中,并且保持一份全量表,存储当前用户 ...

  6. 记一次Dubbo服务注册异常

            公司项目重构,把dubbo版本从2.5.8升级为2.6.2.升级后在本地运行一点问题都没有:可是通过公司自研的发布系统将项目发布到测试环境的linux服务器下面后,出现了dubbo服务 ...

  7. 记一次kubernetes集群异常: kubelet连接apiserver超时

    Background kubernetes是master-slave结构,master node是集群的大脑, 当master node发生故障时整个集群都"out of control&q ...

  8. 记一次java.lang.NoClassDefFoundError异常

    前阵子做了个评论过滤敏感词的功能,本地测试没有任何问题,然后就部署到线上服务器,通知相关人员线上测试.大约过了十来天,那货和我说接口出问题了,当时一脸懵逼,用了十来天突然出问题了???好吧,出问题了咱 ...

  9. 记一次SpringContextHolder.getBean出现异常NoClassDefFoundError: Could not initialize class

    代码如下: public class TestUtils { private static UserDao logDao = SpringContextHolder.getBean(UserDao.c ...

随机推荐

  1. Noip 模拟题 T2 数字对

    2.数字对 [题目描述] 小H是个善于思考的学生,现在她又在思考一个有关序列的问题. 她的面前浮现出一个长度为n的序列{ai},她想找出一段区间[L, R](1 <= L <= R < ...

  2. 关于shell输出的一些问题

    有时候在调试程序中需要将打印到屏幕上的信息保存中,一般情况下可以使用 >fileName,应该注意到有些情况下程序可能会在标准错误输出中输出这些内容,这时需要时 progam 2>1.tx ...

  3. 初学mysql 如何删除数据库 如何安装mysql

    廖老师官网链接 这两个表格有个映射关系,就是根据Grade_ID可以在班级表中查找到对应的所有班级: 也就是Grade表的每一行对应Class表的多行,在关系数据库中,这种基于表(Table)的一对多 ...

  4. Python字典元素的增加删除和取出字典所有的键和值

    一.增加一个或多个元素 d = {'a': 1} d.update(b=2) #也可以 d.update({‘b’: 2}) print(d) # {'a': 1, 'b': 2} d['e'] = ...

  5. input输入框只能输入数字和英文逗号

    <input type="text"  onkeyup="this.value=this.value.replace(/[^\d\,]/g,'')"> ...

  6. AGC033D Complexity

    题意 给出一个\(n*m\)的\(0,1\)矩阵,若一个矩阵中的所有元素都相同,则这个矩阵的代价为\(0\),如果不是则选择一种将它分成两个子矩阵的方案,代价为所有方案中(两个子矩阵的代价的较大值+\ ...

  7. Linux 删除文件夹和文件的命令(强制删除包括非空文件)

    linux删除目录很简单,很多人还是习惯用rmdir,不过一旦目录非空,就陷入深深的苦恼之中,现在使用rm -rf命令即可.直接rm就可以了,不过要加两个参数-rf 即:rm -rf 目录名字-r 就 ...

  8. mysql delete别名

    有一个表的数据比较大,然后需要进行关联删除,删除的时候发现如下SQL报错:ELETE FROM test.test1 a WHERE EXISTS (SELECT 1 FROM test.test2 ...

  9. H5最佳格式

    <!doctype html><html lang="en"><head> <meta charset="UTF-8" ...

  10. mysql与Oracle的区别:

    1.  Oracle是大型数据库而Mysql是中小型数据库,Oracle市场占有率达40%,Mysql只有20%左右,同时Mysql是开源的而Oracle价格非常高. 2. Oracle支持大并发,大 ...