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.

Схожі статті