Hadoop には SOCKS エンドポイントと、それを読み取るクライアントソケットファクトリの両方が必要です。どちらも操作のために読み込まれる core-site.xml に追加します:

<property>
  <name>hadoop.socks.server</name>
  <value>proxy.example.net:1080</value>
</property>
<property>
  <name>hadoop.rpc.socket.factory.class.default</name>
  <value>org.apache.hadoop.net.SocksSocketFactory</value>
</property>

Hadoop 3.4.2 では、SocksSocketFactory が自身の Configuration から host:port エンドポイントを読み取り、その経路で Java ソケットを作成します。プロキシ認証のない許可された公開 TCP テストでは、SOCKS プロキシ一覧の互換エントリが hadoop.socks.server を提供できます。必要なすべてのプロトコルの宛先とポートへのアクセスを確認してください。

既定値が選ばれたと決めつける前に、プロトコル固有のキーを確認してください。NetUtils はまず hadoop.rpc.socket.factory.class. を調べ、続いてプロトコルクラスの単純名を調べます。その検索でファクトリが選ばれない場合に限り、既定値を使用します。

そのため、別に読み込まれたファイルの値が古いファクトリを有効に保つことがあります。サーバー上の 1 つの XML ファイルではなく、実際に効いているクライアント Configuration を確認してください。

これは Hadoop がその TCP ファクトリを使用する箇所に当てはまります。コンポーネントの宛先アドレスと DNS の挙動は維持されます。プロキシを選ぶことは、代替の DNS 結果を作り出す指示ではありません。

関連記事