目前我們有一個需求,需要使用Sqoop建立一個基于SSL的連接,將資料從MySQL提取到HDFS。根據AWS和Sqoop的相關檔案,我們已經完成了如下命令的拼接:
sqoop-import \
--connect "jdbc:mysql://remote-db.amazonaws.com.cn:3306/TSTWOWDB?verifyServerCertificate=false&useSSL=true&requireSSL=true&sslMode=VERIFY_IDENTITY&trustCertificateKeyStoreUrl=/home/etl/ivan/ssl/clientkeystore.jks&trustCertificateKeyStorePassword=xxxxxx" \
--username "TEST_USER" --password "xxxxxx" \
--table "t_wrong_qrcodes" \
--target-dir /tmp/ivan/t_wrong_qrcodes \
-m 1
其中,'/home/etl/ivan/ssl/clientkeystore.jks'為提交服務器的本地檔案路徑。
任務啟動后,報如下錯誤:Caused by: java.io.FileNotFoundException: /mnt/home/etl/ivan/ssl/clientkeystore.jks (No such file or directory),這似乎是因為Sqoop啟動了Map-Reduce任務,但是每個上都沒有這樣的檔案路徑'/mnt/home/etl/ivan/ssl/clientkeystore.jks'計算節點。
如何設定準確的屬性,操作有無損失?
Sqoop 版本 - 1.4.7
參考:
- https://docs.amazonaws.cn/en_us/emr/latest/ReleaseGuide/emr-sqoop-thinkations.html
- https://sqoop.apache.org/docs/1.4.7/SqoopUserGuide.html
- 連接到 MySQL 資料庫時關于 SSL 連接的警告
uj5u.com熱心網友回復:
到目前為止,我們已經解決了。注意以下三點:
- 將信任存盤檔案,命名
jks檔案,同步到每個計算節點。如果您使用 Aws 或其他云服務,您應該將信任存盤檔案放到所有節點,如果您使用實體佇列,則包括任務節點。 - 該屬性
trustCertificateKeyStoreUrl應該是有效的 url,可以以file:/,例如,trustCertificateKeyStoreUrl=file:/home/hadoop/ssl/clientkeystore.jks - 將屬性設定
useSSL為true,否則它不會轉換使用SSL 來加密連接。
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/338633.html
上一篇:如何使用代理將boost::asio連接到HTTPS服務器?
下一篇:地球上的自簽名證書
