1. 程式人生 > >sqoop 連線ORACLE connection reset

sqoop 連線ORACLE connection reset

生產環境的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多。觀察一段時間之後,錯誤沒有再發生,可以表示這個方法是生效了。