0

在我的集群 CDH5.4 中,我有一个位于私有和公共网络上的网关节点。集群位于专用网络上。我想使用 sqoop 从公共网络上的数据库服务器中获取数据。当我发出命令时,地图任务失败

错误:java.lang.RuntimeException:java.lang.RuntimeException:java.sql.SQLRecoverableException:IO 错误:指定了未知主机

我了解集群节点无法访问公共网络上的数据库服务器。

鉴于这种公私网络架构在业界相当普遍,那么让datanodes访问公网服务器的正确方法是什么?

任何帮助都非常感谢....

网关节点

$>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

数据节点

$>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
4

1 回答 1

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
于 2016-08-05T11:11:22.420 回答