[Перевод] Сравнение производительности Hadoop на DAS и Isilon

e731473cb70947b59bcd44ba83828300.jpg

Я уже писал о том, с помощью Isilon можно создавать озёра данных, способные одновременно обслуживать по несколько кластеров с разными версиями Hadoop. В той публикации я упомянул, что во многих случаях системы на Isilon работают быстрее, чем традиционные кластеры, использующие DAS-хранилища. Позднее это подтвердили и в IDC, прогнав на соответствующих кластерах различные Hadoop-бенчмарки. И на этот раз я хочу рассмотреть причины более высокой производительности Isilon-кластеров, а также как она меняется в зависимости от распределения данных и балансировки внутри кластеров.

Тестовая среда


  • Дистрибутив Cloudera Hadoop CDH5.
  • DAS-кластер из 7 узлов (один мастер, шесть рабочих), с восемью дисками-десятитысячниками по 300 Гб.
  • Isilon-кластер из 4 узлов x410, каждый из которых оснащён 57 Тб на дисках и 3,2 Тб на SSD, соединённых посредством 10 GBE.


Другие подробности вы можете найти в отчёте.

NFS-доступ


В первую очередь, в IDC протестировали чтение и запись при NFS-доступе. Как и ожидалось, Isilon продемонстрировали ГОРАЗДО более высокие результаты даже при наличии четырёх узлов.

017e584562d24af4a4cce8caca501a60.png
Продолжительность копирования файла размером 10 Гб (длина блока не указана, но вероятнее всего это 1 Мб или больше).

По записи Isilon оказался быстрее в 4,2 раза. Это особенно важно, если важно, если вы хотите получать данные посредством NFS. А по скорости чтения производительность в 37 раз выше.

Рабочая нагрузка Hadoop


В ходе тестирования с помощью стандартных Hadoop-бенчмарков были сравнены три типа рабочей нагрузки:

  1. Последовательная запись с помощью TeraGen
  2. Поочерёдная запись/чтение с помощью TeraSort
  3. Последовательное чтение с помощью TeraValidate


118e4f582c1842f3952b7f14ca0a561c.png
Время выполнения при трёх разных типах нагрузки: TeraGen, TeraSort и TeraValidate.

При записи производительность Isilon оказалась выше в 2,6 раза, а на остальных двух типах — в 1,5 раза выше. Конкретные результаты представлены в таблице:

Isilon Hadoop DAS
TeraGen 1681 Мб/сек. 605 Мб/сек.
TeraSort 642 Мб/сек. 416 Мб/сек.
TeraValidate 2832 Мб/сек. 1828 Мб/сек.


Производительность Isilon- и DAS-кластеров с одинаковыми конфигурациями вычислительных узлов (округлённо).

Данные говорят сами за себя. Давайте теперь посмотрим, каким образом OneFS удалось достичь такого превосходства в производительности по сравнению с DAS-кластером.

Чтение файлов на Isilon


Хотя в DAS-кластере операции ввода-вывода распределяются по всем узлам, каждый отдельный 64-мегабайтный блок обслуживаются лишь каким-то одним узлом. В то же время в Isilon’е рабочая нагрузка делится между узлами более мелкими порциями. Операция чтения состоит здесь из следующих этапов:

  1. Вычислительный узел запрашивает HDFS-метаданные у службы Name Node, работающей на всех узлах Isilon (без SPoF).
  2. Служба возвращает IP-адреса и номера блоков каждого из трёх узлов в той же стойке, в которой находится вычислительный узел. Это повышает эффективность локальности (locality) стойки.
  3. Вычислительный узел запрашивает чтение 64-мегабайтного HDFS-блока у службы Data Node, работающей на первом узле в полученном списке.
  4. Запрошенный узел через внутреннюю сеть Infiniband собирает все 128-килобайтные Isilon-блоки, составляющие требуемый 64-мегабайтный HDFS-блок. Если эти блоки уже отсутствуют в кэше второго уровня, то они считываются с дисков. Это фундаментальное отличие от DAS-кластера, в котором весь 64-мегабайтный блок считывается с единственного узла. Иными словами, в Isilon-кластере операция ввода-вывода обслуживается гораздо большим количеством дисков и процессоров, чем в DAS-кластере.
  5. Запрошенный узел возвращается вычислительному узлу полный HDFS-блок.


Запись файлов на Isilon


Когда клиент хочет записать файл в кластер, то приёмом и обработкой файла занимается именно тот узел, к которому подключился клиент.

  1. Узел создаёт план записи файла, включая расчёт FEC (с точки зрения объёма так получается гораздо экономнее по сравнению с DAS-кластером, в котором обычно создаётся три копии каждого блока для обеспечения сохранности данных).
  2. Приписанные к этому узлу блоки данных записываются в его NVRAM. Наличие NVRAM-карт является одним преимуществ Isilon«а, в DAS-кластерах их использовать нельзя.
  3. Блоки данных, приписанные к другим узлам, сначала передаются по сети Infiniband в кэши второго уровня этих узлов, а уже оттуда — в NVRAM.
  4. Как только в NVRAM всех узлов загружаются соответствующие данные и FEC-блоки, клиент получает подтверждение успешной записи. Это означает, что можно не ожидать записи данных на диски, пока все операции ввода-вывода буферизируются в NVRAM.
  5. Блоки данных хранятся в кэшах второго уровня каждого из узлов на тот случай, если будут поступать запросы на чтение.
  6. Затем данные записываются на диски.


Миф о важности локальности дисков для производительности Hadoop


Иногда мы сталкиваемся с возражениями админов, утверждающих, что для высокой производительности Hadoop важна локальность дисков. Но нужно помнить, что изначально Hadoop проектировался для работы в медленных сетях со звездообразной топологией, для которых характерна пропускная способность на уровне 1 Гбит/сек. В подобных условиях остаётся лишь стремиться осуществлять все операции ввода-вывода в рамках конкретного сервера (локальность дисков).

Ряд фактов говорят о том, что локальность дисков не имеет отношения к производительности Hadoop:

I. Быстрые сети уже стали стандартом.


  • Сегодня одиночный неблокирующий 10-гигабитный порт коммутатора (полный дуплекс до 2500 Мбит/сек.) имеет более высокую пропускную способность, чем типичная дисковая подсистема с 12 дисками (360 — Мбит/сек).
  • Больше нет нужды поддерживать локальность данных ради обеспечения удовлетворительного уровня операций ввода-вывода.
  • В Isilon обеспечивается стоечная локальность, а не дисковая, что снижает Ethernet-трафик между стойками.


На этой иллюстрации представлен маршрут операций ввода-вывода. Очевидно, что узким местом являются диски, а не сеть (если это сеть 10 GBE).

c4c4ee5e90c843aa9c291ab342f76151.png
Маршрут операции ввода-вывода в DAS-архитектуре. Даже если удвоить количество дисков, они всё равно останутся узким местом. Так что локальность дисков в большинстве случаев не влияет на производительность.

II. Локальность дисков теряется в следующих типичных ситуациях:


  • В DAS-кластере с репликацией блоков все узлы выполняет максимальное количество заданий. Это крайне характерно для высоконагруженных кластеров!
  • Входящие файлы сжимаются с помощью non-splittable кодеков наподобие gzip.
  • «Анализ Hadoop-задач в Facebook доказывает сложность достижения дисковой локальности: лишь 34% зада выполняются на том же узле, где хранятся входные данные.»
  • Локальность дисков обеспечивает очень низкую задержку при выполнении операций ввода-вывода, но она имеет очень мало значения при выполнения пакетных заданий наподобие MapReduce.


III. Репликация данных ради повышения производительности


  • В высоконагруженных традиционных кластерах высокая степень репликации может быть полезна при работе с файлами, часто используемыми в многочисленных одновременных задачах. Это требуется для обеспечения локальности данных (data locality) и большой скорости параллельного чтения.
  • В Isilon не требуется высокая степень репликации, потому что:
    1. Не нужна локальность данных.
    2. Операции чтения распределяются по многим узлам с глобальной когерентным кэшем (globally coherent cache), что обеспечивает очень высокую скорость параллельного чтения.


Другие технологии, влияющие на производительность Isilon


OneFS — очень зрелый продукт, который более десяти лет совершенствуется с точки зрения высокой производительности и низкой задержки при мультипротокольном доступе. Вы можете найти в сети массу информации об этом. Я упомяну лишь ключевые моменты:

  • Все операции записи буферизируются с помощью резервной NVRAM, что обеспечивает очень высокую производительность.
  • В OneFS для ускорения чтения используется кэш первого уровня, глобально когерентный кэш второго уровня и кэши третьего уровня на SSD.
  • Можно сконфигурировать шаблоны доступа для всего кластера, для пула или даже на уровне папок. Это позволяет оптимизировать и сбалансировать процедуру предварительной выборки (pre-fetching). Шаблоны могут быть случайными, параллельными или потоковыми.
  • Работы с метаданными ускоряется с помощью кэша третьего уровня, либо настраивается отдельно. OneFS хранит все метаданные на SSD.


В заключение


Isilon — это горизонтально-масштабируемое NAS-хранилище с распределённой файловой системой, созданное в расчёте на интенсивные рабочие нагрузки вроде Hadoop. HDFS реализован в виде протокола и служб Name Node и Data Node, доступ к которым обеспечивается на всех узлах. Тестирование производительности, проведённое IDC, показало 2,5-кратное преимущество Isilon-кластера перед DAS-кластером. Благодаря прогрессу в сетевых технологиях, локальность дисков не оказывает влияния на работу Hadoop на Isilon-системе. Помимо производительности, Isilon имеет и ряд других преимуществ, наподобие более эффективного использования дискового пространства и различных возможностей, характерных для корпоративных хранилищ. Более того, вычислительные узлы и узлы хранения можно масштабировать независимо друг от друга. Также вы можете обращаться к одним и тем же данным одновременно из нескольких разных версий и дистрибутивов Hadoop.

© Habrahabr.ru