2016-08-04 8 views
0

私のクラスタCDH5.4には、プライベートネットワークとパブリックネットワーク上にあるゲートウェイノードがあります。クラスタはプライベートネットワーク上にあります。 公共ネットワーク上にあるデータベースサーバーからデータを取得するためにsqoopを使用したいと思います。私は、マップタスクがデータノードがプライベートネットワークを超えてアクセスできるようにするにはどうすればよいですか?

Error: java.lang.RuntimeException: java.lang.RuntimeException: java.sql.SQLRecoverableException: IO Error: Unknown host specified

を失敗するコマンドを発行するとき、私は、クラスタノードは、パブリックネットワーク上の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 
+0

(再起動後に古い値に戻って変更されます)、あなたが実行することができ、一時的に前方onのIPを設定するために

net.ipv4.ip_forward=1 # if it '0' set as '1' and restart the network. 

の値を変更する必要がありますゲートウェイノードを介したプロキシまたはSentryを使用 –

+0

ハーフープの問題ではありませんが、ネットワークルーティングの問題のようです。 sqoopを実行しているノードのルーティングテーブルを追加できますか? 'route -v'を使用してください。 – ViKiG

+0

@vkgade - ご返信ありがとうございます。ルーティングテーブルの情報を追加しました。 – scott

答えて

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ディストリビューションの変更とは別のパスにあります)。永久onを転送するIPを設定するには、おそらく

sysctl -w net.ipv4.ip_forward=1 
関連する問題