Почему setConfiguration (Конфигурация conf) метода класса UserGroupInformation статичен?

Почему класс UserGroupInformation разработан таким образом? Почему setConfiguration (Конфигурация conf) метод UserGroupInformation класс статичен?

Я понимаю, что это ограничит возможность подключения клиента только к 1 кластеру на JVM.

Как мы можем одновременно подключаться к нескольким кластерам из одной JVM? Я думаю, что это очень простой сценарий, который в настоящее время не поддерживается API Hadoop.

Любая помощь будет оценена.

Ответ 1

Я не уверен, почему они сделали метод статическим. Но если вы хотите получить доступ к нескольким кластерам из одного JVM, вы можете использовать несколько загрузчиков классов, чтобы обойти проблему установки нескольких конфигураций из одной JVM.

Вот несколько ссылок:

Ответ 2

Что такое статический метод?

В целом основной мотивацией для создания статического метода является удобство. Вы можете вызвать статический метод без создания какого-либо объекта, просто используя его имя класса. Поэтому, если вам нужен метод, который вы хотите вызвать непосредственно по имени класса, сделайте этот метод статическим. Классы полезности, например. java.lang.Math или StringUtils, являются хорошими примерами классов, в которых используются статические методы.

Какой статический метод?

  • Статический метод не изменяет состояние объекта. Поскольку состояние объекта поддерживается как переменные экземпляра
  • Статический метод в основном работает с аргументами, почти все статические методы принимает аргументы, выполняет некоторые вычисления и возвращает значение.

Что такое setConfiguration?

setConfiguration(Configuration conf) -

Задайте статическую конфигурацию для UGI. В частности, установите механизм проверки подлинности безопасности и службу поиска группы.

Как мы можем одновременно подключаться к нескольким кластерам из одного JVM? Я думаю, что это очень простой сценарий, который в настоящее время не является поддерживаемый API Hadoop.

Ans: API Hadoop использует шаблон для создания одноэлементного кода. Вы не можете этого сделать, потому что, если вы можете себе представить, что когда-либо требовалось использовать наследование объектов или нужно использовать полиморфизм для вашего метода, вам обязательно нужно пропустить статику и сделать ее методом экземпляра.

Здесь описывается хороший scenerio: Статические методы - это запах кода

Ссылка на ресурс: