0

私のクラスター CDH5.4 には、プライベートおよびパブリック ネットワーク上にあるゲートウェイ ノードがあります。クラスターはプライベート ネットワーク上にあります。sqoop を使用して、パブリック ネットワーク上のデータベース サーバーからデータを取得したいと考えています。コマンドを発行すると、マップ タスクが失敗します

エラー: java.lang.RuntimeException: java.lang.RuntimeException: java.sql.SQLRecoverableException: IO エラー: 不明なホストが指定されました

クラスター ノードがパブリック ネットワーク上の db サーバーにアクセスできないことを理解しています。

このパブリック - プライベート ネットワーク アーキテクチャが業界で非常に一般的であることを考えると、データノードがパブリック ネットワーク上のサーバーにアクセスできるようにする正しい方法は何ですか?

どんな助けでも大歓迎です....

ゲートウェイ ノード

$>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 forward を一時的に設定するonには、実行できます(再起動後に古い値に戻ります)

    sysctl -w net.ipv4.ip_forward=1
于 2016-08-05T11:11:22.420 に答える