student-online.pl V/Język PLSQL [PLS... · 2017. 1. 23. · Tytuł oryginału: Hadoop: The...

672

Transcript of student-online.pl V/Język PLSQL [PLS... · 2017. 1. 23. · Tytuł oryginału: Hadoop: The...

  • Tytuł oryginału: Hadoop: The Definitive Guide, Fourth Edition

    Tłumaczenie: Tomasz Walczak

    ISBN: 978-83-283-1460-3

    © 2016 Helion SA

    Authorized Polish translation of the English edition of Hadoop: The Definitive Guide,4th Edition ISBN 9781491901632 © 2015 Tom White.

    This translation is published and sold by permission of O’Reilly Media, Inc.,which owns or controls all rights to publish and sell the same.

    All rights reserved. No part of this book may be reproduced or transmitted in anyform or by any means, electronic or mechanical, including photocopying, recordingor by any information storage retrieval system, without permission from the Publisher.

    Wszelkie prawa zastrzeżone. Nieautoryzowane rozpowszechnianie całościlub fragmentu niniejszej publikacji w jakiejkolwiek postaci jest zabronione.Wykonywanie kopii metodą kserograficzną, fotograficzną, a także kopiowanieksiążki na nośniku filmowym, magnetycznym lub innym powoduje naruszeniepraw autorskich niniejszej publikacji.

    Wszystkie znaki występujące w tekście są zastrzeżonymi znakami firmowymibądź towarowymi ich właścicieli.

    Autor oraz Wydawnictwo HELION dołożyli wszelkich starań, by zawartew tej książce informacje były kompletne i rzetelne. Nie biorą jednak żadnejodpowiedzialności ani za ich wykorzystanie, ani za związane z tym ewentualnenaruszenie praw patentowych lub autorskich. Autor oraz Wydawnictwo HELIONnie ponoszą również żadnej odpowiedzialności za ewentualne szkody wynikłez wykorzystania informacji zawartych w książce.

    Wydawnictwo HELIONul. Kościuszki 1c, 44-100 GLIWICEtel. 32 231 22 19, 32 230 98 63e-mail: [email protected]: http://helion.pl (księgarnia internetowa, katalog książek)

    Pliki z przykładami omawianymi w książce można znaleźć pod adresem:ftp://ftp.helion.pl/przyklady/hadoop.zip

    Drogi Czytelniku!Jeżeli chcesz ocenić tę książkę, zajrzyj pod adreshttp://helion.pl/user/opinie/hadoop_ebookMożesz tam wpisać swoje uwagi, spostrzeżenia, recenzję.

    Poleć książkę na Facebook.com Kup w wersji papierowej Oceń książkę

    Księgarnia internetowa Lubię to! » Nasza społeczność

    mailto:[email protected]://helion.plftp://ftp.helion.pl/przyklady/hadoop.ziphttp://helion.pl/user/opinie/hadoop_ebookhttp://ebookpoint.pl/rf/HADOOP_ebookhttp://ebookpoint.pl/rt/HADOOPhttp://ebookpoint.pl/ro/HADOOP_ebookhttp://ebookpoint.plhttp://ebookpoint.pl/r/4CAKF

  • Dla Eliane, Emilii i Lottie

  • 5

    Spis treści

    Przedmowa . ........................................................................................................................17

    Wprowadzenie . ...................................................................................................................19Kwestie porządkowe . .....................................................................................................................................20Co nowego znajdziesz w wydaniu czwartym? . ..........................................................................................20Konwencje stosowane w tej książce . ...........................................................................................................21Korzystanie z przykładowego kodu . ...........................................................................................................21Podziękowania . ..............................................................................................................................................22

    Część I. Podstawy platformy Hadoop . .........................................................25

    Rozdział 1. Poznaj platformę Hadoop . ..................................................................................27Dane! ................................................................................................................................................................27Przechowywanie i analizowanie danych . ...................................................................................................29Przetwarzanie w zapytaniach wszystkich danych . ....................................................................................30Poza przetwarzanie wsadowe . ......................................................................................................................30Porównanie z innymi systemami . ...............................................................................................................31

    Systemy RDBMS . ........................................................................................................................................32Przetwarzanie sieciowe . ..............................................................................................................................33Przetwarzanie z udziałem ochotników . ...................................................................................................34

    Krótka historia platformy Apache Hadoop . ..............................................................................................35Zawartość książki . ..........................................................................................................................................38

    Rozdział 2. Model MapReduce . .............................................................................................41Zbiór danych meteorologicznych . ...............................................................................................................41

    Format danych . ............................................................................................................................................41Analizowanie danych za pomocą narzędzi uniksowych . .........................................................................42Analizowanie danych za pomocą Hadoopa . ..............................................................................................44

    Mapowanie i redukcja . ...............................................................................................................................44Model MapReduce w Javie . .......................................................................................................................45

    Skalowanie ......................................................................................................................................................51Przepływ danych . ........................................................................................................................................51Funkcje łączące . ...........................................................................................................................................55Wykonywanie rozproszonego zadania w modelu MapReduce . ..........................................................56

  • 6 Spis treści

    Narzędzie Streaming Hadoop . .....................................................................................................................57Ruby . .............................................................................................................................................................57Python . ..........................................................................................................................................................59

    Rozdział 3. System HDFS ......................................................................................................61Projekt systemu HDFS . .................................................................................................................................61Pojęcia związane z systemem HDFS . ..........................................................................................................63

    Bloki . .............................................................................................................................................................63Węzły nazw i węzły danych . ......................................................................................................................64Zapisywanie bloków w pamięci podręcznej . ...........................................................................................65Federacje w systemie HDFS . .....................................................................................................................65Wysoka dostępność w systemie HDFS . ...................................................................................................66

    Interfejs uruchamiany z wiersza poleceń . ..................................................................................................68Podstawowe operacje w systemie plików . ...............................................................................................69

    Systemy plików w Hadoopie . .......................................................................................................................70Interfejsy . ......................................................................................................................................................71

    Interfejs w Javie . .............................................................................................................................................74Odczyt danych na podstawie adresu URL systemu Hadoop ................................................................74Odczyt danych za pomocą interfejsu API FileSystem . ..........................................................................75Zapis danych . ...............................................................................................................................................78Katalogi . ........................................................................................................................................................80Zapytania w systemie plików . ...................................................................................................................80Usuwanie danych . .......................................................................................................................................84

    Przepływ danych . ...........................................................................................................................................85Anatomia odczytu pliku . ...........................................................................................................................85Anatomia procesu zapisu danych do pliku . ............................................................................................87Model zapewniania spójności . ..................................................................................................................90

    Równoległe kopiowanie za pomocą programu distcp . ............................................................................91Zachowywanie równowagi w klastrach z systemem HDFS ...................................................................92

    Rozdział 4. System YARN ......................................................................................................95Struktura działania aplikacji w systemie YARN . ......................................................................................96

    Żądania zasobów . ........................................................................................................................................97Czas życia aplikacji . ....................................................................................................................................97Budowanie aplikacji systemu YARN . ......................................................................................................98

    System YARN a implementacja MapReduce 1 . ........................................................................................99Szeregowanie w systemie YARN . ..............................................................................................................101

    Dostępne programy szeregujące . ............................................................................................................101Konfigurowanie programu szeregującego Capacity . ...........................................................................103Konfigurowanie programu szeregującego Fair . ...................................................................................105Szeregowanie z opóźnieniem . .................................................................................................................109Podejście Dominant Resource Fairness . ................................................................................................109

    Dalsza lektura . ..............................................................................................................................................110

    Rozdział 5. Operacje wejścia-wyjścia w platformie Hadoop . ................................................111Integralność danych . ...................................................................................................................................111

    Integralność danych w systemie HDFS . ................................................................................................112Klasa LocalFileSystem . .............................................................................................................................112Klasa ChecksumFileSystem . ....................................................................................................................113

  • Spis treści 7

    Kompresja .....................................................................................................................................................113Kodeki .........................................................................................................................................................114Kompresja i podział danych wejściowych . ............................................................................................118Wykorzystywanie kompresji w modelu MapReduce . .........................................................................120Serializacja ..................................................................................................................................................122Interfejs Writable ......................................................................................................................................123Klasy z rodziny Writable . .........................................................................................................................125Tworzenie niestandardowych implementacji interfejsu Writable . ...................................................132Platformy do obsługi serializacji . ............................................................................................................137

    Plikowe struktury danych . ..........................................................................................................................138Klasa SequenceFile ....................................................................................................................................138Klasa MapFile ............................................................................................................................................145Inne formaty plików i formaty kolumnowe . .........................................................................................146

    Część II. Model MapReduce . ....................................................................... 149 Rozdział 6. Budowanie aplikacji w modelu MapReduce . ......................................................151

    API do obsługi konfiguracji . ......................................................................................................................151Łączenie zasobów ......................................................................................................................................152Podstawianie wartości zmiennych . .........................................................................................................153Przygotowywanie środowiska programowania . ...................................................................................154Zarządzanie konfiguracją . ........................................................................................................................155GenericOptionsParser, Tool i ToolRunner . ..........................................................................................158

    Pisanie testów jednostkowych za pomocą biblioteki MRUnit . .............................................................161Mapper ........................................................................................................................................................161Reduktor .....................................................................................................................................................164

    Uruchamianie kodu lokalnie na danych testowych . ...............................................................................164Uruchamianie zadania w lokalnym mechanizmie wykonywania zadań . .........................................165Testowanie sterownika . ............................................................................................................................166

    Uruchamianie programów w klastrze . .....................................................................................................167Tworzenie pakietu z zadaniem . ...............................................................................................................168Uruchamianie zadania .............................................................................................................................169Sieciowy interfejs użytkownika modelu MapReduce . .........................................................................171Pobieranie wyników .................................................................................................................................174Debugowanie zadania ...............................................................................................................................175Dzienniki w Hadoopie ..............................................................................................................................178Zdalne diagnozowanie . .............................................................................................................................180

    Dostrajanie zadania .....................................................................................................................................181Profilowanie operacji ................................................................................................................................181

    Przepływ pracy w modelu MapReduce . ...................................................................................................182Rozbijanie problemu na zadania w modelu MapReduce . ...................................................................183JobControl ..................................................................................................................................................184Apache Oozie .............................................................................................................................................185

    Rozdział 7. Jak działa model MapReduce? . ..........................................................................191Wykonywanie zadań w modelu MapReduce . ..........................................................................................191

    Przesyłanie zadania ...................................................................................................................................192Inicjowanie zadania ..................................................................................................................................193Przypisywanie operacji do węzłów . ........................................................................................................194

  • 8 Spis treści

    Wykonywanie operacji . ............................................................................................................................194Aktualizowanie informacji o postępie i statusu . ..................................................................................196Ukończenie zadania . .................................................................................................................................197

    Niepowodzenia . ...........................................................................................................................................198Niepowodzenie operacji . ..........................................................................................................................198Niepowodzenie zarządcy aplikacji . ........................................................................................................199Niepowodzenie menedżera węzła . .........................................................................................................200Niepowodzenie menedżera zasobów . ....................................................................................................201

    Przestawianie i sortowanie . ........................................................................................................................202Etap mapowania . .......................................................................................................................................202Etap redukcji . .............................................................................................................................................203Dostrajanie konfiguracji . .........................................................................................................................206

    Wykonywanie operacji . ..............................................................................................................................208Środowisko wykonywania operacji . .......................................................................................................208Wykonywanie spekulacyjne . ...................................................................................................................209Klasy z rodziny OutputCommitter . .......................................................................................................210

    Rozdział 8. Typy i formaty z modelu MapReduce . ................................................................213Typy w modelu MapReduce . .....................................................................................................................213

    Domyślne zadanie z modelu MapReduce . ............................................................................................216Formaty wejściowe . .....................................................................................................................................222

    Wejściowe porcje danych i rekordy . ......................................................................................................222Tekstowe dane wejściowe . .......................................................................................................................232Binarne dane wejściowe . ..........................................................................................................................236Różne dane wejściowe . .............................................................................................................................237Dane wejściowe (i wyjściowe) z bazy . ....................................................................................................238

    Formaty danych wyjściowych . ...................................................................................................................238Tekstowe dane wyjściowe . .......................................................................................................................239Binarne dane wyjściowe . ..........................................................................................................................239Wiele danych wyjściowych . .....................................................................................................................240Leniwe generowanie danych wyjściowych . ...........................................................................................243Dane wyjściowe dla bazy . ........................................................................................................................244

    Rozdział 9. Funkcje modelu MapReduce . ............................................................................245Liczniki . .........................................................................................................................................................245

    Liczniki wbudowane . ................................................................................................................................245Zdefiniowane przez użytkowników liczniki Javy . ................................................................................248Zdefiniowane przez użytkownika liczniki narzędzia Streaming . ......................................................252

    Sortowanie . ...................................................................................................................................................253Przygotowania . ..........................................................................................................................................253Częściowe sortowanie . .............................................................................................................................254Sortowanie wszystkich danych . ..............................................................................................................255Sortowanie pomocnicze . ..........................................................................................................................259

    Złączanie . ......................................................................................................................................................264Złączanie po stronie mapowania . ...........................................................................................................265Złączanie po stronie redukcji . .................................................................................................................265

    Rozdzielanie danych pomocniczych . ........................................................................................................268Wykorzystanie konfiguracji zadania . .....................................................................................................268Rozproszona pamięć podręczna . ............................................................................................................269

    Klasy biblioteczne modelu MapReduce . ..................................................................................................273

  • Spis treści 9

    Część III. Praca z platformą Hadoop . .......................................................... 275

    Rozdział 10. Budowanie klastra opartego na platformie Hadoop . ........................................277Specyfikacja klastra ......................................................................................................................................278

    Określanie wielkości klastra . ...................................................................................................................279Topologia sieci ...........................................................................................................................................280

    Przygotowywanie i instalowanie klastra . ..................................................................................................282Instalowanie Javy .......................................................................................................................................282Tworzenie kont użytkowników w Uniksie . ...........................................................................................282Instalowanie Hadoopa ..............................................................................................................................282Konfigurowanie ustawień protokołu SSH . ............................................................................................282Konfigurowanie Hadoopa . ......................................................................................................................283Formatowanie systemu plików HDFS . ..................................................................................................283Uruchamianie i zatrzymywanie demonów . ..........................................................................................284Tworzenie katalogów użytkowników . ....................................................................................................285

    Konfiguracja Hadoopa . ...............................................................................................................................285Zarządzanie konfiguracją . ........................................................................................................................286Ustawienia środowiskowe . .......................................................................................................................287Ważne właściwości demonów Hadoopa . ..............................................................................................289Adresy i porty demonów Hadoopa . .......................................................................................................296Inne właściwości Hadoopa . .....................................................................................................................298

    Bezpieczeństwo ............................................................................................................................................299Kerberos i Hadoop ....................................................................................................................................300Tokeny do delegowania uprawnień . ......................................................................................................302Inne usprawnienia w zabezpieczeniach . ................................................................................................303

    Testy porównawcze klastra opartego na Hadoopie . ...............................................................................305Testy porównawcze w Hadoopie . ...........................................................................................................305Zadania użytkowników . ...........................................................................................................................307

    Rozdział 11. Zarządzanie platformą Hadoop . ......................................................................309System HDFS ................................................................................................................................................309

    Trwałe struktury danych . .........................................................................................................................309Tryb bezpieczny ........................................................................................................................................314Rejestrowanie dziennika inspekcji . .........................................................................................................315Narzędzia ....................................................................................................................................................316

    Monitorowanie .............................................................................................................................................320Rejestrowanie informacji w dziennikach . ..............................................................................................320Wskaźniki i technologia JMX . .................................................................................................................321

    Konserwacja ..................................................................................................................................................322Standardowe procedury administracyjne . .............................................................................................322Dodawanie i usuwanie węzłów . ..............................................................................................................324Aktualizacje ................................................................................................................................................327

  • 10 Spis treści

    Część IV. Powiązane projekty . ....................................................................331

    Rozdział 12. Avro . ..............................................................................................................333Typy danych i schematy systemu Avro . ...................................................................................................334Serializacja i deserializacja w pamięci . ......................................................................................................337

    Specyficzny interfejs API . ........................................................................................................................338Pliki danych systemu Avro . ........................................................................................................................340Współdziałanie języków . ............................................................................................................................341

    Interfejs API dla Pythona . .......................................................................................................................341Narzędzia systemu Avro . .........................................................................................................................342

    Określanie schematu . ..................................................................................................................................343Porządek sortowania . ..................................................................................................................................344Avro i model MapReduce . ..........................................................................................................................346Sortowanie za pomocą modelu MapReduce i systemu Avro . ...............................................................349Używanie systemu Avro w innych językach . ...........................................................................................351

    Rozdział 13. Parquet . .........................................................................................................353Model danych . ..............................................................................................................................................354

    Kodowanie struktury zagnieżdżonych danych . ...................................................................................355Format plików Parquet . ..............................................................................................................................356Konfiguracja dla formatu Parquet . ...........................................................................................................358Zapis i odczyt plików w formacie Parquet . ..............................................................................................358

    Avro, Protocol Buffers i Thrift . ...............................................................................................................360Format Parquet i model MapReduce . .......................................................................................................362

    Rozdział 14. Flume . ............................................................................................................365Instalowanie platformy Flume . ..................................................................................................................365Przykład . .......................................................................................................................................................366Transakcje i niezawodność . ........................................................................................................................368

    Porcje zdarzeń . ..........................................................................................................................................369Ujścia w systemie HDFS . ............................................................................................................................369

    Podział na partycje i interceptory . ..........................................................................................................370Formaty plików . ........................................................................................................................................371

    Rozsyłanie danych do wielu kanałów . ......................................................................................................372Gwarancje dostarczenia . ..........................................................................................................................373Selektory replikacji i rozsyłania . .............................................................................................................374

    Dystrybucja — warstwy agentów . .............................................................................................................374Gwarancje dostarczenia danych . ............................................................................................................376

    Grupy ujść . ....................................................................................................................................................377Integrowanie platformy Flume z aplikacjami . .........................................................................................380Katalog komponentów . ...............................................................................................................................381Dalsza lektura . ..............................................................................................................................................382

  • Spis treści 11

    Rozdział 15. Sqoop . ...........................................................................................................383Pobieranie Sqoopa .......................................................................................................................................383Konektory Sqoopa .......................................................................................................................................385Przykładowa operacja importu . .................................................................................................................385

    Formaty plików tekstowych i binarnych . ..............................................................................................388Wygenerowany kod .....................................................................................................................................388

    Inne systemy serializacji . ..........................................................................................................................389Importowanie — dokładne omówienie . ...................................................................................................389Kontrolowanie procesu importu . ..............................................................................................................391

    Import i spójność ......................................................................................................................................392Przyrostowy import ..................................................................................................................................392Importowanie w trybie bezpośrednim . ..................................................................................................392

    Praca z zaimportowanymi danymi . ...........................................................................................................393Importowane dane i platforma Hive . .....................................................................................................394

    Importowanie dużych obiektów . ...............................................................................................................396Eksportowanie ..............................................................................................................................................398Eksportowanie — dokładne omówienie . ..................................................................................................399

    Eksport i transakcje ...................................................................................................................................401Eksport i pliki typu SequenceFile . ..........................................................................................................401

    Dalsza lektura ...............................................................................................................................................402

    Rozdział 16. Pig . ................................................................................................................403Instalowanie i uruchamianie platformy Pig . ............................................................................................404

    Tryby wykonywania ..................................................................................................................................404Uruchamianie programów platformy Pig . ............................................................................................406Grunt ...........................................................................................................................................................406Edytory kodu w języku Pig Latin . ...........................................................................................................407

    Przykład .........................................................................................................................................................407Generowanie przykładowych danych . ...................................................................................................409

    Porównanie platformy Pig z bazami danych . ..........................................................................................410Język Pig Latin ..............................................................................................................................................411

    Struktura .....................................................................................................................................................411Instrukcje ....................................................................................................................................................412Wyrażenia ..................................................................................................................................................417Typy ............................................................................................................................................................418Schematy ....................................................................................................................................................419Funkcje .......................................................................................................................................................423Makra ..........................................................................................................................................................425

    Funkcje zdefiniowane przez użytkownika . ..............................................................................................426Funkcje UDF służące do filtrowania . .....................................................................................................426Obliczeniowa funkcja UDF . ....................................................................................................................429Funkcje UDF służące do wczytywania danych . ....................................................................................430

    Operatory używane do przetwarzania danych . .......................................................................................433Wczytywanie i zapisywanie danych . ......................................................................................................433Filtrowanie danych ...................................................................................................................................434Grupowanie i złączanie danych . .............................................................................................................436Sortowanie danych ....................................................................................................................................441Łączenie i dzielenie danych . ....................................................................................................................442

  • 12 Spis treści

    Platforma Pig w praktyce . ...........................................................................................................................442Współbieżność . .........................................................................................................................................442Relacje anonimowe . ..................................................................................................................................443Podstawianie wartości pod parametry . ..................................................................................................443

    Dalsza lektura . ..............................................................................................................................................444

    Rozdział 17. Hive . ..............................................................................................................445Instalowanie platformy Hive . ....................................................................................................................446

    Powłoka platformy Hive . .........................................................................................................................446Przykład . .......................................................................................................................................................448Uruchamianie platformy Hive . ..................................................................................................................449

    Konfigurowanie platformy Hive . ............................................................................................................449Usługi platformy Hive . .............................................................................................................................451Magazyn metadanych . .............................................................................................................................453

    Porównanie z tradycyjnymi bazami danych . ...........................................................................................456Uwzględnianie schematu przy odczycie lub przy zapisie . ..................................................................456Aktualizacje, transakcje i indeksy . ..........................................................................................................456Inne silniki obsługujące język SQL w Hadoopie . .................................................................................457

    HiveQL . .........................................................................................................................................................458Typy danych . .............................................................................................................................................458Operatory i funkcje . ..................................................................................................................................462

    Tabele . ...........................................................................................................................................................463Tabele zarządzane i tabele zewnętrzne . .................................................................................................463Partycje i kubełki . ......................................................................................................................................464Formaty przechowywania danych . .........................................................................................................468Importowanie danych . .............................................................................................................................472Modyfikowanie tabel . ...............................................................................................................................473Usuwanie tabel . .........................................................................................................................................474

    Pobieranie danych . ......................................................................................................................................474Sortowanie i agregacja danych . ...............................................................................................................475Skrypty modelu MapReduce . ..................................................................................................................475Złączenia . ...................................................................................................................................................476Podzapytania . ............................................................................................................................................479Widoki . .......................................................................................................................................................480

    Funkcje zdefiniowane przez użytkowników . ...........................................................................................481Pisanie funkcji UDF . ................................................................................................................................482Pisanie funkcji UDAF . .............................................................................................................................484

    Dalsza lektura . ..............................................................................................................................................488

    Rozdział 18. Crunch . ...........................................................................................................489Przykład . .......................................................................................................................................................490Podstawowe interfejsy API Cruncha . .......................................................................................................493

    Proste operacje . .........................................................................................................................................493Typy . ...........................................................................................................................................................497Źródłowe i docelowe zbiory danych . .....................................................................................................500Funkcje . ......................................................................................................................................................502Materializacja . ...........................................................................................................................................504

  • Spis treści 13

    Wykonywanie potoku .................................................................................................................................506Uruchamianie potoku ..............................................................................................................................506Zatrzymywanie potoku . ...........................................................................................................................507Inspekcja planu wykonania w Crunchu . ...............................................................................................508Algorytmy iteracyjne ................................................................................................................................511Tworzenie punktów kontrolnych w potokach . .....................................................................................512

    Biblioteki w Crunchu ..................................................................................................................................513Dalsza lektura ...............................................................................................................................................515

    Rozdział 19. Spark . ............................................................................................................517Instalowanie Sparka .....................................................................................................................................518Przykład .........................................................................................................................................................518

    Aplikacje, zadania, etapy i operacje w Sparku . .....................................................................................520Niezależna aplikacja w języku Scala . ......................................................................................................520Przykład napisany w Javie . .......................................................................................................................521Przykład napisany w Pythonie . ...............................................................................................................522

    Zbiory RDD ..................................................................................................................................................523Tworzenie zbiorów RDD .........................................................................................................................523Transformacje i akcje ................................................................................................................................524Utrwalanie danych ....................................................................................................................................527Serializacja ..................................................................................................................................................529

    Zmienne współużytkowane . .......................................................................................................................530Zmienne rozsyłane . ...................................................................................................................................531Akumulatory ..............................................................................................................................................531

    Anatomia przebiegu zadania w Sparku . ...................................................................................................532Przesyłanie zadań ......................................................................................................................................532Tworzenie skierowanego grafu acyklicznego . .......................................................................................533Szeregowanie operacji ..............................................................................................................................535Wykonywanie operacji .............................................................................................................................536

    Wykonawcy i menedżery klastra . ..............................................................................................................536Spark i YARN ............................................................................................................................................537

    Dalsza lektura ...............................................................................................................................................540

    Rozdział 20. HBase . ............................................................................................................541Podstawy .......................................................................................................................................................541

    Tło historyczne ..........................................................................................................................................542Omówienie zagadnień .................................................................................................................................542

    Krótki przegląd modelu danych . ............................................................................................................542Implementacja ...........................................................................................................................................544

    Instalacja ........................................................................................................................................................546Przebieg testowy ........................................................................................................................................547

    Klienty ...........................................................................................................................................................549Java ..............................................................................................................................................................549Model MapReduce ....................................................................................................................................552Interfejsy REST i Thrift . ...........................................................................................................................553

    Budowanie interaktywnej aplikacji do przesyłania zapytań . .................................................................553Projekt schematu .......................................................................................................................................554Wczytywanie danych ................................................................................................................................555Zapytania interaktywne . ...........................................................................................................................558

  • 14 Spis treści

    Baza HBase a bazy RDBMS . .......................................................................................................................561Historia cieszącej się powodzeniem usługi . ..........................................................................................562Baza HBase . ................................................................................................................................................563

    Bazy HBase w praktyce . ..............................................................................................................................563System HDFS . ............................................................................................................................................564Interfejs użytkownika . ..............................................................................................................................564Wskaźniki . ..................................................................................................................................................565Liczniki . ......................................................................................................................................................565

    Dalsza lektura . ..............................................................................................................................................565

    Rozdział 21. ZooKeeper . .....................................................................................................567Instalowanie i uruchamianie systemu ZooKeeper . ................................................................................568Przykład . .......................................................................................................................................................570

    Przynależność do grupy w systemie ZooKeeper . .................................................................................570Tworzenie grupy . ......................................................................................................................................571Dołączanie członków do grupy . ..............................................................................................................573Wyświetlanie członków grupy . ...............................................................................................................574Usuwanie grupy . .......................................................................................................................................575

    Usługa ZooKeeper . ......................................................................................................................................576Model danych . ...........................................................................................................................................576Operacje . ....................................................................................................................................................578Implementacja . ..........................................................................................................................................582Spójność . ....................................................................................................................................................583Sesje . ............................................................................................................................................................585Stany . ...........................................................................................................................................................587

    Budowanie aplikacji z wykorzystaniem ZooKeepera . ............................................................................588Usługa do zarządzania konfiguracją . .....................................................................................................588Odporna na błędy aplikacja ZooKeepera . .............................................................................................591Usługa do zarządzania blokadami . .........................................................................................................594Inne rozproszone struktury danych i protokoły . .................................................................................596

    ZooKeeper w środowisku produkcyjnym . ...............................................................................................597Odporność a wydajność . ..........................................................................................................................598Konfiguracja . .............................................................................................................................................599

    Dalsza lektura . ..............................................................................................................................................600

    Część V. Studia przypadków . ......................................................................601

    Rozdział 22. Integrowanie danych w firmie Cerner . .............................................................603Od integracji procesorów do integracji semantycznej . ..........................................................................603Poznaj platformę Crunch . ..........................................................................................................................604Budowanie kompletnego obrazu . ..............................................................................................................604Integrowanie danych z obszaru opieki zdrowotnej . ...............................................................................607Możliwość łączenia danych w różnych platformach . .............................................................................610Co dalej? . .......................................................................................................................................................611

  • Spis treści 15

    Rozdział 23. Nauka o danych biologicznych— ratowanie życia za pomocą oprogramowania . ...............................................................613

    Struktura DNA .............................................................................................................................................615Kod genetyczny — przekształcanie liter DNA w białka . .......................................................................616Traktowanie kodu DNA jak kodu źródłowego . ......................................................................................617Projekt poznania ludzkiego genomu i genomy referencyjne . ................................................................619Sekwencjonowanie i wyrównywanie DNA . .............................................................................................620ADAM — skalowalna platforma do analizy genomu . ...........................................................................621

    Programowanie piśmienne za pomocą języka IDL systemu Avro . ...................................................621Dostęp do danych kolumnowych w formacie Parquet . ......................................................................623Prosty przykład — zliczanie k-merów za pomocą Sparka i ADAM-a . .............................................624

    Od spersonalizowanych reklam do spersonalizowanej medycyny . ......................................................626Dołącz do projektu ......................................................................................................................................627

    Rozdział 24. Cascading . ......................................................................................................629Pola, krotki i potoki .....................................................................................................................................630

    Operacje ......................................................................................................................................................632Typy Tap, Scheme i Flow ............................................................................................................................634Cascading w praktyce . .................................................................................................................................635

    Elastyczność ...............................................................................................................................................637Hadoop i Cascading w serwisie ShareThis . ..............................................................................................638Podsumowanie .............................................................................................................................................642

    Dodatki . .......................................................................................................643

    Dodatek A. Instalowanie platformy Apache Hadoop . ..........................................................645Wymagania wstępne ...................................................................................................................................645Instalacja ........................................................................................................................................................645Konfiguracja .................................................................................................................................................646

    Tryb niezależny .........................................................................................................................................647Tryb pseudorozproszony . ........................................................................................................................647Tryb rozproszony ......................................................................................................................................649

    Dodatek B. Dystrybucja firmy Cloudera . ..............................................................................651

    Dodatek C. Przygotowywanie danych meteorologicznych od instytucji NCDC . ......................653

    Dodatek D. Dawny i nowy interfejs API Javy dla modelu MapReduce . ..................................657

    Skorowidz . .......................................................................................................................661

  • 16 Spis treści

  • 17

    Przedmowa

    Hadoop powstał na podstawie narzędzia Nutch. W kilka osób próbowaliśmy zbudować otwartąwyszukiwarkę internetową i mieliśmy problemy z zarządzaniem obliczeniami przeprowadzanyminawet w stosunkowo niedużej grupie komputerów. Gdy firma Google opublikowała prace na tematsystemu GFS i modelu MapReduce, droga do rozwiązania stała się prosta. W Google’u opracowanosystemy rozwiązujące problemy, na które natrafiliśmy w trakcie prac nad Nutchem. We dwóchzaczęliśmy w wolnym czasie odtwarzać systemy Google’a w Nutchu.

    Udało nam się uruchomić Nutcha na dwudziestu komputerach, jednak szybko stało się jasne, żeaby poradzić sobie z ogromem internetu, będziemy potrzebować tysięcy maszyn. Ponadto zadaniestało się zbyt rozbudowane, aby dwóch programistów pracujących na pół etatu mogło sobie z nimporadzić.

    Mniej więcej w tym czasie projektem zainteresowała się firma Yahoo!, która szybko zbudowałazespół. Dołączyłem do niego. Wyodrębniliśmy z Nutcha aspekty związane z przetwarzaniem roz-proszonym i nazwaliśmy projekt „Hadoop”. Dzięki pomocy firmy Yahoo! Hadoop szybko stał siętechnologią dostosowaną do potrzeb internetu.

    W 2006 roku Tom White zaczął wnosić swój wkład w rozwój Hadoopa. Znałem już Toma dziękijego świetnemu artykułowi na temat Nutcha. Dlatego wiedziałem, że potrafi w przejrzysty sposóbopisywać skomplikowane zagadnienia. Szybko się przekonałem, że poza tym umie pisać opro-gramowanie, które czyta się równie przyjemnie jak prozę.

    Tom od początku pracy nad Hadoopem okazywał dbałość o użytkowników i projekt. W odróż-nieniu od większości uczestników projektów o otwartym dostępie do kodu źródłowego Tom byłzainteresowany nie tyle dostosowywaniem systemu do swoich potrzeb, co ułatwianiem korzystaniaz niego użytkownikom.

    Początkowo Tom zajmował się głównie zapewnianiem dobrego współdziałania Hadoopa z usłu-gami EC2 i S3 Amazonu. Następnie zajął się bardziej różnorodnymi problemami — w tymusprawnianiem interfejsów API modelu MapReduce, rozwijaniem witryny i projektowaniem plat-formy do serializacji obiektów. We wszystkich tych obszarach Tom precyzyjnie prezentował swojepomysły. Wkrótce zasłużył na miejsce w komitecie odpowiedzialnym za rozwój Hadoopa i stał sięczłonkiem grupy Hadoop Project Management Committee.

  • 18 Przedmowa

    Obecnie Tom jest poważanym członkiem społeczności programistów skupionej wokół Hadoopa.Choć jest ekspertem w wielu technicznych obszarach projektu, jego głównym zadaniem jest uła-twianie innym posługiwania się Hadoopem i zrozumienia tego narzędzia.

    Dlatego bardzo ucieszyłem się na wieść, że Tom zamierza napisać książkę na temat Hadoopa. Ktolepiej się do tego nadaje? Teraz masz możliwość poznawać Hadoopa pod kierunkiem mistrza — nietylko technologii, ale też zdrowego rozsądku i zrozumiałego języka.

    — Doug Cutting, kwiecień 2009szopa na podwórku, Kalifornia

  • 19

    Wprowadzenie

    Martin Gardner, matematyk i autor książek naukowych, w jednym z wywiadów powiedział:

    „Poza analizą matematyczną czuję się zagubiony. Z tego wynikał sukces mojej kolumny. Tyle czasuzajmowało mi zrozumienie tego, o czym pisałem, że wiedziałem, jak ująć to w słowa zrozumiałe dlawiększości czytelników”1.

    Pod wieloma względami myślę podobnie o Hadoopie. Wewnętrzne mechanizmy Hadoopa sąskomplikowane. Są oparte na teorii systemów rozproszonych, praktycznej inżynierii i zdrowymrozsądku. Dla niewtajemniczonych Hadoop może być bardzo niezrozumiały.

    Jednak nie musi tak być. Dostępne w Hadoopie narzędzia do pracy z wielkimi danymi (ang. bigdata) są w swej istocie proste. Powtarzającym się motywem jest tu podnoszenie poziomu abstrakcji.Chcemy tworzyć cegiełki dla programistów, którzy mają dużo danych do przechowywania i ana-lizowania, ale nie posiadają czasu, umiejętności lub chęci, by stać się ekspertami od systemówrozproszonych i budować infrastrukturę potrzebną do obsługi takich danych.

    Hadoop udostępnia prosty i wszechstronny zestaw funkcji. Dlatego gdy tylko zacząłem posługiwaćsię tą platformą, stało się dla mnie oczywiste, że zasługuje ona na popularyzację. Jednak w tamtychczasach (na początku 2006 roku) opracowywanie, konfigurowanie i pisanie programów wykorzy-stujących Hadoopa było prawdziwą sztuką. Później sytuacja znacznie się poprawiła. Dostępnychjest więcej przykładów i bogatsza dokumentacja. Funkcjonują też aktywne listy mailingowe, na któ-rych można zadawać pytania. Mimo to dla początkujących największą przeszkodą jest zrozumieniemożliwości, jakie daje omawiana technologia, w jakich obszarach jest ona wyjątkowo przydatnai jak jej używać. Dlatego napisałem tę książkę.

    Społeczność skupiona wokół platformy Apache Hadoop przebyła długą drogę. Od czasu pojawieniasię pierwszego wydania tej książki projekt Hadoop rozkwitł. Pojęcie „big data” trafiło do powszech-nego użytku2. Przez ten czas Hadoop stał się znacznie popularniejszy, wydajniejszy, bardziej nie-zawodny, skalowalny i łatwiejszy w zarządzaniu. Liczba rozwiązań zbudowanych i uruchamia-nych z wykorzystaniem Hadoopa znacznie wzrosła. Trudno jest jednej osobie śledzić wszystkie te

    1 Alex Bellos, The Science of fun, „The Guardian”, 31 maja 2008 roku (http://www.theguardian.com/science/2008/

    may/31/maths.science).2 To pojęcie w 2013 roku zostało dodane do słownika Oxford English Dictionary (http://blog.oxforddictionaries.com/

    2013/06/oed-june-2013-update/).

    http://www.theguardian.com/science/2008/may/31/maths.sciencehttp://www.theguardian.com/science/2008/may/31/maths.sciencehttp://blog.oxforddictionaries.com/2013/06/oed-june-2013-update/http://blog.oxforddictionaries.com/2013/06/oed-june-2013-update/

  • 20 Wprowadzenie

    rozwiązania. Aby jeszcze bardziej zwiększyć popularność tej platformy, musimy dodatkowo uła-twić korzystanie z niej. Wymaga to napisania nowych narzędzi, zintegrowania jej z kolejnymisystemami oraz opracowania nowych, usprawnionych interfejsów API. Chcę w tym uczestniczyć imam nadzieję, że ta książka zachęci Ciebie i innych do tego samego.

    Kwestie porządkoweW trakcie omawiania konkretnych klas Javy często pomijam nazwę pakietu, aby uprościć tekst.Jeśli chcesz dowiedzieć się, z którego pakietu pochodzi dana klasa, możesz łatwo to sprawdzić w do-kumentacji interfejsu API Javy dla Hadoopa (odnośnik znajdziesz na stronie głównej platformyApache Hadoop — http://hadoop.apache.org/) lub w określonym projekcie. Jeżeli korzystasz ześrodowiska IDE, mechanizm automatycznego uzupełniania pomoże Ci znaleźć szukane elementy.

    Ponadto, choć jest to niezgodne z zaleceniami dotyczącymi stylu, na listingach, gdzie importowa-nych jest wiele klas z jednego pakietu, czasem używam symbolu wieloznacznego w postacigwiazdki, aby skrócić kod (na przykład import org.apache.hadoop.io.*).

    Przykładowe programy z tej książki można pobrać z poświęconej książce witryny (http://hadoopbook.com/). Znajdziesz tam także instrukcje pomocne przy pobieraniu zbiorów danych używanychw przykładach w książce, jak również uwagi dotyczące uruchamiania programów z książki orazodnośniki do aktualizacji, dodatkowych materiałów i mojego bloga.

    Co nowego znajdziesz w wydaniu czwartym?Wydanie czwarte dotyczy wyłącznie wersji Hadoop 2. Edycje z rodziny Hadoop 2 to obecnie ak-tualne i najbardziej stabilne wersje tej platformy.

    Znajdziesz tu nowe rozdziały dotyczące projektów YARN (rozdział 4.), Parquet (rozdział 13.),Flume (rozdział 14.), Crunch (rozdział 18.) i Spark (rozdział 19.). Dodałem też nowy podrozdziałpomagający czytelnikom poruszać się po książce („Zawartość książki”).

    W tym wydaniu pojawiły się dwa nowe studia przypadku (w rozdziałach 22. i 23.). Jedno dotyczyużywania Hadoopa w systemach w branży opieki zdrowotnej, drugie — wykorzystywania tech-nologii Hadoopa do przetwarzania danych związanych z genomem. Studia przypadków z wcze-śniejszych wydań książki są dostępne w internecie (https://github.com/oreillymedia/hadoop_the_definitive_guide_4e).

    W istniejących rozdziałach wprowadziłem wiele poprawek, aktualizacji i usprawnień, aby dosto-sować tekst do najnowszych wersji Hadoopa i powiązanych z nim projektów.

    http://hadoop.apache.org/http://hadoopbook.com/http://hadoopbook.com/https://github.com/oreillymedia/hadoop_the_definitive_guide_4ehttps://github.com/oreillymedia/hadoop_the_definitive_guide_4e

  • Korzystanie z przykładowego kodu 21

    Konwencje stosowane w tej książceW książce używane są następujące konwencje typograficzne:

    Kursywa

    Reprezentuje nowe pojęcia, adresy URL, adresy e-mail, nazwy plików i rozszerzenia plików.

    Czcionka o stałej szerokości

    Jest używana w listingach, a także w akapitach do wyróżniania instrukcji i opcji wiersza poleceńoraz elementów programu — na przykład zmiennych, nazw funkcji, baz danych, typów danych,zmiennych środowiskowych, instrukcji i słów kluczowych.

    Pogrubiona czcionka o stałej szerokości

    Oznacza polecenia i inny tekst, który użytkownik powinien przepisać.

    Czcionka o stałej szerokości z kursywą

    Reprezentuje tekst, który należy zastąpić wartościami podanymi przez użytkownika lub za-leżnymi od kontekstu.

    Ta ikona oznacza ogólną uwagę.

    Ta ikona reprezentuje wskazówkę lub sugestię.

    Ta ikona oznacza ostrzeżenie lub przestrogę.

    Korzystanie z przykładowego koduMateriały pomocnicze (kod, przykłady, ćwiczenia itd.) możesz pobrać z poświęconej książce witryny(http://hadoopbook.com/; część spolszczonych materiałów znajdziesz w witrynie wydawnictwa Helion— http://helion.pl) i z serwisu GitHub (https://github.com/tomwhite/hadoop-book/).

    Ta książka ma pomóc Ci w wykonywaniu zadań. Zwykle możesz korzystać z zaprezentowanegotu kodu w programach i dokumentacji. Nie musisz prosić wydawnictwa o pozwolenie, chyba żechcesz zreprodukować dużą część kodu. Na przykład napisanie programu, który wykorzystujekilka fragmentów kodu z książki, nie wymaga pozwolenia. Sprzedaż lub dystrybucja płyt CD-ROMz przykładami z książek wydawnictwa O’Reilly wymaga zezwolenia. Do udzielenia odpowiedzi napytanie przy użyciu cytatów z tej książki i przykładowego kodu pozwolenie nie jest konieczne.Używanie dużych fragmentów przykładowego kodu w dokumentacji produktu wymaga zezwolenia.

    http://hadoopbook.com/http://helion.plhttps://github.com/tomwhite/hadoop-book/

  • 22 Wprowadzenie

    Doceniamy wskazywanie źródła kodu, jednak nie jest to wymagane. Przy podawaniu źródła zwykleokreśla się tytuł, autora, wydawnictwo i numer ISBN książki. Oto przykład: Hadoop: The DefinitiveGuide, Fourth Edition, Tom White (O’Reilly). Prawa autorskie 2015 Tom White, 978-1-491-90163-2.

    Jeśli uważasz, że korzystasz z przykładowego kodu w sposób wykraczający poza dozwolony użyteklub przedstawione tu pozwolenia, możesz się z nami skontaktować pod adresem [email protected].

    PodziękowaniaW trakcie pisania tej książki polegałem na wielu ludziach (bezpośrednio i pośrednio). Dziękuję całejspołeczności skupionej wokół Hadoopa, od której dużo się nauczyłem (proces ten wciąż trwa).

    Podziękowania należą się zwłaszcza Michaelowi Stackowi i Jonathanowi Grayowi za napisanierozdziału na temat HBase. Adrian Woodhead, Marc de Palol, Joydeep Sen Sarma, Ashish Thusoo,Andrzej Białecki, Stu Hood, Chris K. Wensel i Owen O’Malley zasłużyli na podziękowania zastudia przypadków.

    Dziękuję też recenzentom, którzy przedstawili wiele pomocnych sugestii i poprawek do wersjiroboczej tekstu. Oto te osoby: Raghu Angadi, Matt Biddulph, Christophe Bisciglia, Ryan Cox,Devaraj Das, Alex Dorman, Chris Douglas, Alan Gates, Lars George, Patrick Hunt, Aaron Kim-ball, Peter Krey, Hairong Kuang, Simon Maxen, Olga Natkovich, Benjamin Reed, KonstantinShvachko, Allen Wittenauer, Matei Zaharia i Philip Zeyliger. Ajay Anand dbał o płynny przebiegprocesu recenzowania. Philip („flip”) Kromer był na tyle uprzejmy, że pomógł mi z danymi me-teorologicznymi organizacji NCDC wykorzystywanymi w przykładach z tej książki. Specjalne po-dziękowania należą się Owenowi O’Malleyowi i Arunowi C. Murthyemu za wyjaśnienie mi za-wiłych mechanizmów przestawiania danych w modelu MapReduce. Za wszelkie usterki, którepozostały w tekście, odpowiadam oczywiście ja sam.

    Jestem bardzo wdzięczny wszystkim, którzy dokonali szczegółowej oceny i przekazali informacjezwrotne dotyczące drugiego wydania tej książki. Oto te osoby: Jeff Bean, Doug Cutting, GlynnDurham, Alan Gates, Jeff Hammerbacher, Alex Kozlov, Ken Krugler, Jimmy Lin, Todd Lipcon,Sarah Sproehnle, Vinithra Varadharajan i Ian Wrigley. Dziękuję też wszystkim czytelnikom, któ-rzy przesłali erratę do wydania pierwszego. Podziękowania należą się też Aaronowi Kimballowiza rozdział poświęcony narzędziu Sqoop i Philipowi („flipowi”) Kromerowi za studium przypadkudotyczące przetwarzania grafów.

    Dziękuję też wszystkim za informacje zwrotne i sugestie na temat trzeciego wydania książki. Otote osoby: Alejandro Abdelnur, Eva Andreasson, Eli Collins, Doug Cutting, Patrick Hunt, AaronKimball, Aaron T. Myers, Brock Noland, Arvind Prabhakar, Ahmed Radwan i Tom Wheeler. RobWeltman przekazał mi bardzo szczegółowe informacje zwrotne na temat całej książki, co przyczyniłosię do znacznego ulepszenia ostatecznej wersji tekstu. Dziękuję również wszystkim czytelnikom,którzy przesłali erratę do wydania drugiego.

    Jestem wdzięczny za bezcenne informacje zwrotne dotyczące czwartego wydania. Udzieliły mi ichnastępujące osoby: Jodok Batlogg, Meghan Blanchette, Ryan Blue, Jarek Jarcec Cecho, Jules Damji,Dennis Dawson, Matthew Gast, Karthik Kambatla, Julien Le Dem, Brock Noland, Sandy Ryza,

  • Podziękowania 23

    Akshai Sarma, Ben Spivey, Michael Stack, Kate Ting, Josh Walter, Josh Wills i Adrian Woodhead.Ryan Brush, Micah Whitacre i Matt Massie udostępnili nowe studia przypadków do tego wydania.Ponownie dziękuję wszystkim czytelnikom za przesłanie uwag do erraty.

    Szczególne podziękowania należą się Dougowi Cuttingowi za zachęty, wsparcie, przyjaźń i napi-sanie przedmowy.

    Dziękuję też wszystkim innym osobom, z którymi w trakcie pisania tej książki dyskutowałemosobiście lub za pomocą poczty elektronicznej.

    W trakcie prac nad pierwszym wydaniem tej książki trafiłem do firmy Cloudera. Dziękuję moimwspółpracownikom za wsparcie i zapewnienie mi czasu na pisanie oraz szybkie ukończenie tekstu.

    Jestem wdzięczny redaktorom Mike’owi Loukidesowi i Meghan Blanchette, a także innym pra-cownikom wydawnictwa O’Reilly za pomoc w tworzeniu tej książki. Mike i Meghan zawsze byligotowi odpowiadać na moje pytania, przeczytali pierwsze wersje robocze książki i dbali o to,abym pracował zgodnie z harmonogramem.

    Pisanie tej książki wymagało ode mnie dużo pracy. Nie poradziłbym sobie bez nieustającegowsparcia rodziny. Moja żona, Eliane, nie tylko dbała o dom, ale też pomagała w recenzowaniu i re-dakcji tekstu oraz szukaniu studiów przypadków. Córki, Emilia i Lottie, były bardzo wyrozumiałe.Cieszę się na myśl o tym, że będę mógł spędzać z nimi dużo więcej czasu.

  • 24 Wprowadzenie

  • CZĘŚĆ I

    Podstawy platformy Hadoop

  • ROZDZIAŁ 1. Poznaj platformę Hadoop

    W dawnych latach używano wołów do transportu ciężarów. Jednak gdy jeden wół nie potrafił

    pociągnąć pnia drzewa, nie próbowano wyhodować większych osobników. Dlatego my też nie

    powinniśmy budować większych komputerów. W zamian należy rozwijać s�e1�y maszyn. ""'�race Hopper

    Dane! �� Żyjemy w epoce danych. Nic jest łatwo zmierzyć łączną i��ch przechowywanych w postaci elektronicznej, jednak organizacja IDC szacuje, że �� wszechświat" w 2013 roku liczył 4,4 zettabajta, a do roku 2020 ta wielkość ma wzrosnąć ��dokrotnie - do 44 zettabajtów1• Zettabajt to 1021 bajtów i odpowiada tysiącowi eksabajtów��owi petabajtów lub miliardowi terabajtów. Na dane potrzebny będzie więc więcej niż �� twardy na osobę. Wielkie ilości danych napływają z wielu(o/>� Pomyśl o następujących kwestiach2:

    • Giełda NYSE każdego dnia g�uj� 5 terabajtów danych. Na Facebooku zapisa�y��nad 240 miliardów zdjęć. Ilość zajmowanego przez zdjęcia miejsca rośnie każdeg�ąca o 7 petabajtów. Przechowująca drz�\genealogiczne witryna Ancestry.com przechowuje około 10 petabajtów danych. �

    • W archiwum internetu znajduje się około 18,5 petabajta danych. • Wielki Zderzacz Hadronów pod Genewą w Szwajcarii generuje około 30 petabajtów danych

    rocznie.

    1 Te statystyki pochodzą z badania The Digital Universe oj Opportunities: Rich Data and the Increasing V al ue oj the

    I n ternet oj Things (http://www.emc.com/leadershipl digital-universe/20 14iview/index.htm ).

    2 Wszystkie dane pochodzą z lat 2013 - 2014. Więcej informacji znajdziesz w następujących źródłach: tekście At NYSE,

    The Data Deluge Overwhelms Traditional Databases Toma Groenfeldta (http://wwwjorbes.com/sites!

    tomgroenfeldt/20 13/02/14/ at-nyse-the-data-deluge-overwhelms-traditional-databases/), tekście Facebook Builds

    Exabyte DataCenters for Cold StorageRicha Millera (http://www.datacenterknowledge.com!archives/2013/01/18/

    facebook-builds-new-data-centers-for-cold-storage!), na stronie Company Facts