Высокая пропускная способность против низкой задержки в HDFS

Я попытался своими словами определить, что означает высокая пропускная способность и низкая задержка в HDFS, и пришел к следующему определению:

HDFS оптимизирован для более быстрого доступа к пакетам наборов данных (высокая пропускная способность), а не к отдельным записям в этом наборе данных (низкая задержка)

Имеет ли это смысл? :)

Спасибо!


person spacemonkey    schedule 23.05.2013    source источник


Ответы (2)


Я думаю, что то, что вы описали, больше похоже на разницу между оптимизацией для разных шаблонов доступа (последовательный, пакетный или произвольный доступ), чем на разницу между пропускной способностью и задержкой в ​​самом чистом смысле.

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

Если вы более склонны к количественной оценке, вы можете представить себе общее время, необходимое для доступа к нескольким записям N, как T(N)=aN+b. Здесь a обозначает пропускную способность, а b обозначает задержку. В такой системе, как HDFS, N часто бывает настолько большим, что b становится неактуальным, и выгодны компромиссы в пользу низкого a. Сравните это с хранилищем данных с малой задержкой, где часто каждое чтение обращается только к одной записи, а затем оптимизация для низкого b лучше.

С учетом сказанного, ваше утверждение не неверно; это определенно верно, и часто бывает, что хранилища пакетного доступа имеют высокую задержку и высокую пропускную способность, тогда как хранилища произвольного доступа имеют низкую задержку и низкую пропускную способность, но это не всегда так.

person Joe K    schedule 23.05.2013
comment
Это маленькое уравнение - лучший способ объяснить это :) - person spacemonkey; 24.05.2013
comment
@Joe K Итак, w.r.t hadoop (или любая другая распределенная система) справедливо сказать, что нужно масштабировать (то есть более быстрое оборудование), чтобы улучшить задержку, и масштабировать (то есть добавить больше узлов) для повышения пропускной способности? - person sactiw; 12.12.2017
comment
Да, я бы сказал, что это, вероятно, справедливо для Hadoop HDFS, хотя другие распределенные системы могут иметь совершенно разные компромиссы с производительностью. И вы получите увеличивающуюся убывающую отдачу; HDFS принципиально не предназначена для малой задержки. - person Joe K; 13.12.2017
comment
Разве T (N) = N / a + b? - person mac; 22.12.2017

Я займусь этим.

Доступ к данным с малой задержкой: я нажимаю клавишу ввода (или кнопку отправки) и ожидаю результатов максимум в течение нескольких секунд. Время запроса моей базы данных должно быть меньше секунды. Высокая пропускная способность данных: я хочу просканировать миллионы строк данных и подсчитать или суммировать некоторые подмножества. Я ожидаю, что это займет несколько минут (или намного больше, в зависимости от сложности). Подумайте о большем количестве заданий в пакетном стиле.

Предостережения: это действительно проблема карты / уменьшения. Настройка и обработка заданий M / R требует дополнительных затрат. В настоящее время работает несколько проектов, направленных на обеспечение доступа к данным с меньшей задержкой.

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

Надеюсь, это поможет. :)

person user3163592    schedule 05.01.2014