Sqoop:在映射任务期间从 SQL Server 抛出"The TCP/IP connection to the host x.x.x.x, port 1433 has failed"导入



在带有Sqoop 1.4.6的HDP 2.3.2上,我正在尝试从SQL Server 2008导入表。

我能够成功地连接到SQL Server,因为我可以列出数据库和表等

然而,每次在导入过程中,我都会遇到以下错误:

错误:java.lang.RuntimeException:java.lang.RountimeException:com.microsoft.sqlserver.jdbc.SQLServerException:TCP/IP连接到主机x.x.x.x,端口1433出现故障。错误:"连接已超时出来验证连接属性。确保SQL Server正在主机上运行,并接受位于的TCP/IP连接端口。请确保到该端口的TCP连接未被阻止通过防火墙。".

同样,我实际上能够成功地从SQL Server导入,但只有在几次重试之后。然而,无论导入成功还是失败,我总是会收到上面提到的错误,我想知道是什么原因导致了问题?每当进口失败时,就必须不断地重复进口,这相当麻烦。

我已经关闭了SQL Server上的连接超时,尽管Hadoop集群和SQL Server的连接通过了我们的公司防火墙,但我们的管理员告诉我,防火墙上的超时是3600秒。进口产品在接近这个水平之前就失败了。

这只是我使用的一个sqoop命令的示例:

sqoop import 
--connect "jdbc:sqlserver://x.x.x.:1433;database=CEMHistorical" 
--table StreamSummary --username hadoop 
--password-file hdfs:///user/sqoop/.adg.password --hive-import 
--hive-overwrite --create-hive-table --split-by OfferedTime 
--hive-table develop.streamsummary --map-column-hive Call_ID=STRING,Stream_ID=STRING,OriginalCall_ID=STRING,TransactionID=TIMESTAMP

更新:

在与我们的网络团队取得联系后,似乎这绝对是一个网络问题。为了添加上下文,Hadoop集群与SQL Server位于不同的VLAN上,它要经过许多防火墙。为了测试,我尝试从与Hadoop集群位于同一VLAN内的不同SQL Server导入,但我根本没有遇到这个异常。

将此作为参考发布在此处:

我从未收到我们网络团队关于防火墙日志的回复,但我们的NameNode的操作系统已损坏,必须重新格式化并重新安装HDP。出于某种原因,我们不再遇到这个错误了。

原始集群和新安装之间的一个区别是,我们有4个节点(1个名称节点和3个数据节点),它们在一台服务器中进行了虚拟化。现在,我们正在运行一个单节点集群(HDP 2.3.4),服务器上没有虚拟化。

相关内容

最新更新