Может ли клиент hadoop использовать преимущества rack awareness?

#hadoop #akka-stream

#hadoop #akka-stream

Вопрос:

У меня есть 10 компьютеров для приема данных, которые используют akka stream для приема данных. У меня есть кластер Hadoop из 50 узлов, и я запускаю конвейеры с использованием Spark Streaming. Кластер Hadoop использует данные, сгенерированные 10 машинами, для создания отчетов. Могу ли я использовать rack awareness с этих 10 компьютеров, не добавляя их как часть кластера Hadoop?

Когда я говорю rack awareness, я имею в виду, что если эти машины находятся в той же стойке, что и узлы данных Hadoop, поэтому, используя rack awareness, я бы хотел, чтобы каждая принимающая машина загружала данные в ближайший datanode вместо случайного способа, чтобы у меня было меньше сетевого трафика.

Пожалуйста, дайте мне знать, если это возможно.

Ответ №1:

Если я правильно понял вашу настройку, это должно произойти автоматически. В соответствии с архитектурой HDFS:

В обычном случае, когда коэффициент репликации равен трем, политика размещения HDFS заключается в размещении одной реплики на локальном компьютере, если устройство записи находится на узле данных, в противном случае на случайном узле данных в той же стойке, что и устройство записи, другой реплики на узле в другой (удаленной) стойке и последней на другом узле в той же удаленной стойке.

(выделено, что имеет отношение к вашему случаю, если ваши принимающие узлы не являются узлами данных кластера.)

Комментарии:

1. ценю ваш быстрый ответ@mazaneicha, вы знаете, должен ли клиентский компьютер быть частью topology_mappings. файл данных в namenode и snamenode . Файл, который используется namenode и snamenode для построения иерархии топологии. В моем случае клиентский компьютер hdfs может успешно создавать каталоги и загружать файлы, однако во время загрузки файла он не загружает файл в режиме rack awareness. на клиентской машине hdfs я обновил информацию о стойке и хосте, включая клиентскую машину в файле topology_mapping.data, а также на namenode и узле sname. nn и sn не могут связаться с клиентом.

2. Зависит от вашей конфигурации Hadoop, но если он использует сценарий внешней топологии файл conf, тогда он должен быть на NN. hadoop.apache.org/docs/current/hadoop-project-dist /…

3. Спасибо тебе, @mazaneicha. У меня есть еще один вопрос. Я заметил такое поведение, что, хотя для моего параметра репликатора блоков установлено значение 3, во время загрузки с клиента иногда nn выделяет 2 блока, а иногда и 3 блока. когда выделяются 3 блока, один из них относится к одному и тому же узлу данных стойки, но когда выделяются 2 блока, ни один из них не относится к одному и тому же узлу данных стойки. ожидаемо ли это ?

4. это заслуживает отдельного вопроса. пожалуйста, укажите вашу версию / дистрибутив hadoop, как она настроена (core-site, hdfs-site) и как вы проверяете распределение блоков.