2013-05-23 27 views
12

starałem się określić, co wysoka przepustowość vs niskiej latencji oznacza w HDFS w moich własnych słów, i wpadł na następującą definicję:Wysoka wydajność vs niskiej latencji w HDFS

HDFS jest zoptymalizowany do partii dostępowych zestaw danych szybszą (wysoki przepustowość), a następnie konkretnych zapisów w tym zbiorze danych (niska latencji)

Czy to ma sens? :)

Dzięki!

+0

Wygląda dobrze dla mnie. – Tariq

Odpowiedz

23

Myślę, że to, co opisałeś, przypomina różnicę pomiędzy optymalizacją dla różnych wzorców dostępu (sekwencyjny, wsadowy a losowy) niż różnica między przepustowością a opóźnieniem w najczystszym znaczeniu.

Kiedy myślę o systemie o dużym opóźnieniu, nie myślę o tym, do którego zapisu mam dostęp, ale raczej o tym, że dostęp do każdej płyty ma wysokie koszty ogólne. Uzyskanie dostępu nawet do pierwszego bajtu pliku z HDFS może zająć około sekundy lub więcej.

Jeśli masz więcej skłonności ilościowych, możesz pomyśleć o łącznym czasie wymaganym do uzyskania dostępu do wielu rekordów N jako T(N)=aN+b. Tutaj, a reprezentuje przepustowość, a b oznacza opóźnienie. W systemie takim, jak HDFS, N jest często tak duży, że b staje się nieistotny, a korzystne dla niego są korzystne rozwiązania polegające na niskiej wartości a. Porównaj to z magazynem danych o małym opóźnieniu, w którym często każdy odczyt ma tylko dostęp do pojedynczego rekordu, a następnie optymalizacja pod kątem niskiego poziomu b jest lepsza.

Po tym stwierdzeniu twoje oświadczenie nie jest niepoprawne; Jest to z pewnością prawda i często zdarza się, że sklepy z dostępem do partii mają dużą zwłokę i wysoką przepustowość, podczas gdy sklepy z dostępem losowym mają małe opóźnienie i niską przepustowość, ale nie zawsze tak jest.

+3

To małe równanie jest najbardziej niesamowitym sposobem na wyjaśnienie tego: – spacemonkey

+0

@Joe K So wrt hadoop (lub jakikolwiek inny system rozproszony) jest sprawiedliwe, aby powiedzieć, że trzeba skalować (tj. Szybszy sprzęt), aby poprawić opóźnienie i skalować (to znaczydodać więcej węzłów) w celu zwiększenia przepustowości? – sactiw

+0

Tak, powiedziałbym, że to jest sprawiedliwe dla Hadoop HDFS, chociaż inne systemy rozproszone mogą mieć bardzo różne kompromisy w wydajności. I dostaniesz zmniejszających się zwrotów w górę; HDFS zasadniczo nie jest przeznaczony do niskich opóźnień. –

4

Wymienię to.

Dostęp do danych o małym opóźnieniu: Naciskam klawisz Enter (lub przycisk przesyłania), a I oczekiwać wyników w ciągu maksymalnie kilku sekund. Mój czas zapytania do bazy danych powinien wynosić podsekund. Wysoka przepustowość danych: chcę skanować miliony rzędów danych i liczyć lub podsumować niektóre podzestawy. Oczekuję, że zajmie to kilka minut (lub znacznie dłużej w zależności od złożoności). Pomyśl o więcej zleceniach typu batch.

Ostrzeżenia: Jest to również problem związany z mapą/zmniejszeniem. Konfiguracja i przetwarzanie zadań M/R zajmuje trochę narzut. Istnieje kilka projektów pracujących teraz, aby przejść do dostępu do danych o niższym opóźnieniu.

Ponadto HDFS przechowuje dane w blokach i rozdziela je na wiele węzłów. Oznacza to, że zawsze (prawie) będzie wymagany transfer danych sieciowych wymagany do uzyskania ostatecznej odpowiedzi, a to "spowalnia" trochę, w zależności od przepustowości i różnych innych czynników.

Nadzieję, że pomaga. :)