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 читает конечную точку host:port из своей Configuration и создаёт Java-сокеты по этому маршруту. Для разрешённого публичного TCP-теста без аутентификации прокси совместимая запись из списка SOCKS-прокси может предоставить hadoop.socks.server; подтвердите доступ ко всем требуемым адресатам протокола и портам.

Прежде чем считать, что выбрано значение по умолчанию, проверьте ключ, специфичный для протокола: NetUtils сначала проверяет hadoop.rpc.socket.factory.class., а затем простое имя класса протокола. Значение по умолчанию используется только тогда, когда этот поиск не выбирает ни одной фабрики.

Поэтому значение из другого загруженного файла может оставить старую фабрику активной. Проверяйте действующую клиентскую Configuration, а не один XML-файл на сервере.

Это применимо там, где Hadoop использует эту TCP-фабрику. Она сохраняет поведение компонента в отношении адреса назначения и DNS; выбор прокси не является указанием выдумывать заменяющие результаты DNS.

Похожие статьи