【发布时间】:2020-04-21 08:28:04
【问题描述】:
我正在尝试设置 Sqoop 导入,以将查询从 Intersystems Caché 拉入 Hive 表;我已成功连接,但在映射阶段开始 2 分钟后作业失败,并显示连接超时消息。
我将提供 sqoop 作业和以下消息:
sqoop import
-Dhadoop.security.credential.provider.path=jceks://hdfs/user/bigdata/myCachePWD.password.jceks
--connect jdbc:Cache://server:1972/database
--username my_username
--password-alias myCachePWD.password.alias
--table sds.T00055_PCTE
--hive-database stg_splunk
--hive-table t00055_pcte
--hive-overwrite
--hive-import
--num-mappers 10
--as-parquetfile
--compress
--compression-codec org.apache.hadoop.io.compress.SnappyCodec
--warehouse-dir /user/hive/warehouse/stage/
--driver com.intersys.jdbc.CacheDriver
--split-by DT_ICLO
这里是相关的错误日志:
19/12/30 16:24:14 INFO mapreduce.JobSubmitter:提交令牌 工作:job_1577368744752_0394 19/12/30 16:24:15 信息 impl.YarnClientImpl:提交的申请 application_1577368744752_0394 19/12/30 16:24:15 INFO mapreduce.Job: 跟踪作业的网址: http://[SERVER]:8088/proxy/application_1577368744752_0394/ 19/12/30 16:24:15 INFO mapreduce.Job:正在运行的作业: job_1577368744752_0394 19/12/30 16:24:46 信息 mapreduce.Job:工作 job_1577368744752_0394 在超级模式下运行:假 19/12/30 16:24:46 INFO mapreduce.Job: map 0% reduce 0% 19/12/30 16:27:25 INFO mapreduce.Job:任务 ID:尝试_1577368744752_0394_m_000000_0,状态 :失败错误:java.lang.RuntimeException: java.lang.RuntimeException:java.sql.SQLException:[缓存 JDBC] 通信链路故障:连接超时(Connection timed 出)在 org.apache.sqoop.mapreduce.db.DBInputFormat.setDbConf(DBInputFormat.java:170) 在 org.apache.sqoop.mapreduce.db.DBInputFormat.setConf(DBInputFormat.java:161) 在 org.apache.hadoop.util.ReflectionUtils.setConf(ReflectionUtils.java:73) 在 org.apache.hadoop.util.ReflectionUtils.newInstance(ReflectionUtils.java:133) 在 org.apache.hadoop.mapred.MapTask.runNewMapper(MapTask.java:755) 在 org.apache.hadoop.mapred.MapTask.run(MapTask.java:341) 在 org.apache.hadoop.mapred.YarnChild$2.run(YarnChild.java:164) 在 java.security.AccessController.doPrivileged(Native Method) 在 javax.security.auth.Subject.doAs(Subject.java:422) 在 org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1920) 在 org.apache.hadoop.mapred.YarnChild.main(YarnChild.java:158) 引起 作者:java.lang.RuntimeException:java.sql.SQLException:[缓存 JDBC] 通信链路故障:连接超时(Connection timed 出)在 org.apache.sqoop.mapreduce.db.DBInputFormat.getConnection(DBInputFormat.java:223) 在 org.apache.sqoop.mapreduce.db.DBInputFormat.setDbConf(DBInputFormat.java:168) ... 10 更多原因:java.sql.SQLException: [Cache JDBC] 通信链路故障:连接超时(Connection timed 出)在 com.intersys.jdbc.CacheConnection.connect(CacheConnection.java:1063) 在 com.intersys.jdbc.CacheConnection.(CacheConnection.java:370) 在 com.intersys.jdbc.CacheDriver.connect(CacheDriver.java:211) 在 java.sql.DriverManager.getConnection(DriverManager.java:664) 在 java.sql.DriverManager.getConnection(DriverManager.java:247) 在 org.apache.sqoop.mapreduce.db.DBConfiguration.getConnection(DBConfiguration.java:302) 在 org.apache.sqoop.mapreduce.db.DBInputFormat.getConnection(DBInputFormat.java:216) ... 11 更多
我不确定我是否得到了正确的驱动程序;我将缓存驱动程序从DBeaver 复制到/var/lib/sqoop 并在sqoop 作业中使用com.intersys.jdbc.CacheDriver;虽然它确实连接,所以我不确定这是驱动程序版本问题还是其他一些服务器端配置......
任何见解将不胜感激。
【问题讨论】:
-
您是否能够使用 sqoop list-databases 或 list-tables 或 eval 测试连接。 sqoop eval ........“从表中选择计数(*)”。还要检查上面 sqoop 输出的 url 链接中的日志。 (跟踪作业的网址:.......)
-
是的,sqoop eval 在 namenode 和其中一个工作节点上工作,但不是来自其他节点......这就是我发现它是防火墙问题的原因。感谢您的意见!
标签: hadoop sqoop intersystems-cache