在我的群集CDH5.4中,我有一个位于私有和公共网络上的网关节点。群集位于专用网络上。 我想使用sqoop从公共网络上的数据库服务器中获取数据。当我发出命令时,地图任务失败
错误:java.lang.RuntimeException:java.lang.RuntimeException: java.sql.SQLRecoverableException:IO错误:指定了未知主机
据我所知,群集节点无法访问公共网络上的数据库服务器。
鉴于这种公共 - 私有网络架构在业界非常普遍,使数据节点能够在公共网络上访问服务器的正确方法是什么?
非常感谢任何帮助......
网关节点
$>route -v
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
10.248.200.0 * 255.255.255.0 U 0 0 0 bond_internal
192.168.196.0 * 255.255.252.0 U 0 0 0 bond_external
link-local * 255.255.0.0 U 1007 0 0 bond_external
link-local * 255.255.0.0 U 1008 0 0 bond_internal
default 192.168.196.1 0.0.0.0 UG 0 0 0 bond_external
的Datanode
$>route -v
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
10.248.200.0 * 255.255.255.0 U 0 0 0 bond0
link-local * 255.255.0.0 U 1008 0 0 bond0
答案 0 :(得分:0)
您需要检查的事项。
运行Sqoop
的节点是否具有正确的网关节点。您可以使用路由表检查并使用route
命令
route add default gw IP_OF_GATEWAY_NODE NETWORK_INTERFACE_NAME_ON_THIS_NODE #the device name is basically what your ifconfig shows
接下来,您需要验证网关节点是否实际转发数据包。为此,您需要编辑文件/etc/sysctl.conf
(当您的Linux发行版更改时,此文件位于不同的路径中)。要永久设置IP转发on
,您必须更改
net.ipv4.ip_forward=1 # if it '0' set as '1' and restart the network.
对于临时设置IP转发on
,您可以运行(重启后将更改回旧值)
sysctl -w net.ipv4.ip_forward=1