Висока производителност срещу ниска латентност в 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 И така, с 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