解决sqoop抽数报错:IO Error: Connection reset
问题:进行sqoop抽数时,虽然能成功执行,但是过程中有很多这样的信息
会发生很多次重新连接,有的会传输失败。
解决办法
官方给出的文档解决办法
网址:https://sqoop.apache.org/docs/1.4.6/SqoopUserGuide.html
根据官方的提示,我们可以确定是系统的熵池
熵池就是当前系统的环境噪音,熵指的是一个系统的混乱程度,系统噪音可以通过很多参数来评估,如内存的使用,文件的使用量,不同类型的进程数量等等。如果当前环境噪音变化的不是很剧烈或者当前环境噪音很小,比如刚开机的时候,而当前需要大量的随机比特,这时产生的随机数的随机效果就不是很好了
在系统计算时会产生一定数量的比特,这些比特会作为字节流返回,
java中会有两个文件来决定产生随机数,分别是/dev/urandom 和 /dev/random 后者在不能产生新的随机数时会阻塞程序,而前者不会(ublock),当然产生的随机数效果就不太好了,这对加密解密这样的应用来说就不是一种很好的选择。/dev/random 会阻塞当前的程序,直到根据熵池产生新的随机字节之后才返回,所以使用 /dev/random 比使用 /dev/urandom 产生大量随机数的速度要慢。
本错误的原因是java默认选择/dev/random文件,在没有新的随机字节是会阻塞程序,而oracle服务器长期阻塞而时间超时会产生这种错误。
解决办法:
cd $JAVA_HOME/jre/lib/security
vi java.security
修改成如下内容:
securerandom.source=file:///dev/urandom
假如如上面还会出现相同的问题,我们通过查询cloudera社区熵池小于500时也会出现这种问题
查询熵池指令:cat /proc/sys/kernel/random/entropy_avail
我们通过下载第三方插件rng-tools可以解决s
yum install rng-tools -y
启动服务:
service rngd start
再次查看熵池大小为3千多,这个时候问题就会解决。
参考网址:
https://www.cnblogs.com/hello-wei/p/11898324.html
https://blog.csdn.net/tom_fans/article/details/85060733
https://blog.csdn.net/cwclw/article/details/52797131