如何使datanode能够超越其专用网络进行访问?

时间:2016-08-04 23:43:08

标签: hadoop cloudera-cdh sqoop2

在我的群集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

1 个答案:

答案 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