sqoop 連線ORACLE connection reset
阿新 • • 發佈:2018-12-27
生產環境的sqoop去抽取oracle資料庫, 不定期就會有些JOB顯示錯誤connection reset. 檢視SQOOP官方文件,連結地址:
https://sqoop.apache.org/docs/1.4.6/SqoopUserGuide.html#_oracle_connection_reset_errors
說是因為JDBC加密獲取隨機數導致時間超時。提示SQOOP在抽取時新增如下引數即可:
-D mapred.child.java.opts="-Djava.security.egd=file:/dev/../dev/urandom"
但實際情況是,新增之後仍然會有失敗,那麼可以認為,要麼問題的根源和隨機數無關,要麼這個引數並不能解決問題。
參與了官方文件,也提到隨機數的問題,cloudera給出的方案是使用rngd-tool去提高隨機數的熵池。官方認為通過下面命令查詢的池子數量經常少於500,那麼就是用rngd-tool去增加熵池
cat /proc/sys/kernel/random/entropy_avail
既然新增mapred.child.java.opts不能生效,那麼就打算使用這個方法來試一下,如果還不行,那麼可以確認connection reset與熵池無關。
新增方法為:yum install rngd-tool 安裝,然後編輯 /etc/sysconfig/rngd ,新增:
EXTRAOPTIONS="-r /dev/urandom"
最後service rngd start啟動,再次查詢entropy_avail,數值一直在3000多。觀察一段時間之後,錯誤沒有再發生,可以表示這個方法是生效了。