[BIG DATA] GLOSARIUSZ (V) : SERWERY

“Chmura” jest terminem bardzo niejasnym, ale nastąpiła prawdziwa zmiana w dostępności zasobów komputerowych. Zamiast zakupu lub długoterminowej dzierżawy fizycznej maszyny, która była kiedyś normą, obecnie dużo częściej wynajmuje się komputery uruchamiane jako wirtualne instancje. To sprawia, że dostawca jest ekonomiczny, aby oferować bardzo krótkoterminowe wynajem elastycznej liczby maszyn, co jest idealne dla wielu aplikacji do przetwarzania danych. Możliwość szybkiego uruchomienia dużego klastra pozwala rozwiązać bardzo duże problemy z danymi przy niewielkim budżecie. Ponieważ istnieje wiele firm o odmiennym podejściu do tego rodzaju wynajmu serwerów, przyjrzę się temu, co oferują z perspektywy dewelopera przetwarzania danych.

EC2

Mówiąc prościej, EC2 umożliwia wynajem komputerów na godzinę, z możliwością wyboru różnych konfiguracje pamięci i procesora. Otrzymujesz dostęp do sieci do kompletnego serwera Linux lub Windows, do którego możesz się zalogować jako root, umożliwiając instalację oprogramowania i elastyczną konfigurację systemu. Pod maską te maszyny są faktycznie hostowane wirtualnie, a wiele z nich działa na każdym fizycznym serwerze w centrum danych, dzięki czemu ceny są niskie. Istnieje wiele innych firm oferujących zwirtualizowane serwery, ale EC2 firmy Amazon wyróżnia aplikacje do przetwarzania danych ze względu na rosnący wokół niego ekosystem. Posiada bogaty zestaw migawek maszyn wirtualnych innych producentów i łatwą integrację z S3, zarówno poprzez surowy interfejs, jak i przez opakowanie Elastic Block Storage (EBS), które używa S3 do obsługi czegoś, co wygląda jak tradycyjny system plików. Elastyczna usługa MapReduce ułatwia tworzenie tymczasowych klastrów Hadoop. Możesz nawet przesyłać bardzo duże zestawy danych z fizycznych nośników wysyłanych do Amazon! Największą wadą obsługi obliczeń w serwisie jest niewielka kontrola nad prawdziwym układem sprzętowym tworzonych klastrów dzięki warstwie wirtualizacji. Często stwierdzam, że moje zadania Hadoop są ograniczone przez komunikację sieciową i przesyłanie danych, dlatego bardziej sensowne jest korzystanie z większej liczby maszyn o niższej mocy, niż z nieco bardziej wydajnych serwerów, które prawdopodobnie wybierzesz dla własnego klastra Hadoop. . Model wyceny aukcji na miejscu instancji firmy Amazon doskonale nadaje się do zadań przetwarzania danych w tle. Często można dostać serwery na jedną trzecią normalnych kosztów, a utrata maszyn, jeśli popyt się podniesie, jest niedogodnością, a nie katastrofą.

Silnik Aplikacji Google

Dzięki usłudze Google App Engine piszesz swój kod udostępniania stron WWW w Javie, a Język JVM lub Python i dba o to, aby aplikacja działała w sposób skalowalny, aby mógł obsłużyć dużą liczbę równoczesnych żądań. W przeciwieństwie do EC2 lub tradycyjnego hostingu, masz bardzo ograniczoną kontrolę nad środowiskiem, w którym działa twój kod. To ułatwia dystrybucję na wielu komputerach w celu obsługi ciężkich ładunków, ponieważ tylko twój kod musi zostać przeniesiony, ale robi to sprawiają, że trudno jest uruchomić wszystko, co wymaga elastycznego dostępu do podstawowego systemu. W przypadku tradycyjnego hostingu cały kod działa na jednym komputerze, a więc naturalnie ogranicza się do czasu przechowywania i czasu procesora dostępnego na tym komputerze. Ponieważ App Engine może uruchamiać Twój kod na potencjalnie nieograniczonej liczbie komputerów, Google musiał wprowadzić dość złożony system kwot i fakturowania, aby kontrolować wykorzystanie tych zasobów przez aplikacje. Ponieważ system został pierwotnie zaprojektowany do obsługi usług internetowych obsługujących dużą liczbę krótkich żądań stron, niektóre z tych ograniczeń mogą być trudne dla aplikacji do przetwarzania danych. Przez długi czas żadne żądanie nie mogło trwać dłużej niż 30 sekund, a chociaż zostało to już zniesione dla żądań w tle, inne ograniczenia nadal utrudniają przetwarzanie danych lub kod intensywnie korzystający z transferu.

Elastic Beanstalk

Elastic Beanstalk to warstwa na szczycie usługi EC2, która zajmuje się konfiguracją automatyczne skalowanie klastra serwerów sieci Web za modułem równoważenia obciążenia, pozwalając programistom na wdrażanie aplikacji opartych na Javie bez obawy o wiele szczegółów dotyczących sprzątania. To podejście wysokiego poziomu sprawia, że ​​jest podobny do App Engine i Heroku, ale ponieważ jest to tylko opakowanie dla EC2, możesz również logować się bezpośrednio na komputerach, na których działa kod, aby rozwiązywać problemy lub modyfikować środowisko. Wciąż jest on jednak zasadniczo zaprojektowany pod kątem potrzeb aplikacji internetowych do frontendu, więc większość problemów z przetwarzaniem danych nie pasuje do jego podejścia.

Heroku

Heroku obsługuje aplikacje internetowe Ruby, oferując prosty proces wdrażania, wiele darmowych i płatnych wtyczek oraz łatwą skalowalność. Aby zapewnić szybkie wdrażanie kodu na wielu komputerach, istnieją pewne ograniczenia dotyczące dostępu do podstawowego systemu plików, ale ogólnie środowisko jest bardziej elastyczne niż App Engine. Możesz zainstalować prawie każdy klejnot Ruby, nawet z natywnym kodem, a otrzymasz prawdziwą bazę danych SQL zamiast skalowalnego, ale restrykcyjnego alternatywnego magazynu danych. Heroku nadal koncentruje się na potrzebach aplikacji frontendowych, więc prawdopodobnie będzie ograniczony do interfejsu do aplikacji do przetwarzania danych. W szczególności możesz dobrze wykorzystać swój twardy limit pamięci 300 MB, jeśli zaczniesz wykonywać operacje, które są zbyt intensywne RAM.

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *