środa, 29 stycznia 2014

Big data - wprowadzenie.

Big data to ....
Big data pozwala na gromadzenie, przechowywanie, zarządzanie i manipulowanie wielkimi wolumenami danych.
Co więcej pozwala przetwarzać te dane z właściwą prędkością, w zadanym czasie.
Cechy Big data to :
1. volume - objętość danych
2. velocity - szybkość przyrostu
3. variety - różnorodność danych
   
NoSQL to nowoczesne systemy 'pseudo' bazodanowe, które nie opierają się na tradycyjnym modelu relacyjnym, nie wymagają określonego schematu, nie używają złączeń i bardzo dobrze się skalują horyzontalnie.

Bazy relacyjne istnieją od 1973 roku. W tamtych czasach przewidywalna liczba jednocześnie pracujących użytkowników wynosiła maksymalnie klika tysięcy. Dziś bazy wielkość bazy danych możemy szacować na podstawie dziennego przyrostu danych nie ilości wierszy. W przypadku dużych baz liczba ta idzie w miliony.

Od wczesnych lat 80 szybkość procesorów wzrosła z 10MHz do 3,6 GHz czyli 360 razy.Koszty pamięci znacznie spadły z 1000$ za 1MB do 25$ za GB.
Oznacza to ok 40000 redukcje kosztów w stosunku do objętości.

Co roku liczba danych niemal się  podwaja - prawo Moore’a które mówi, że liczba tranzystorów w układzie scalonym w latach kolejnych posiada trend wykładniczy. Znajdujemy więc w tym pewną analogię w stosunku do gromadzenia danych.


Co da Ci znajomość technologi Big data ?

Kasa:  to chyba jeden z najważniejszych powodów aby zakasać rękawy i zacząć uczyć się nosql i jego okolic :)

Spójrzmy na aktualną sytuację na rynku pracy:


Mongo :
scala - groovy , java
scala , groovy , nosql , hadoop
java , sql

Specjalnie dodałem też nowoczesne języki oparte na JVM.
Na wykresach widać jak rośnie ich popularność.
JAVA i SQL spadają. Taki jest trend. Z tym nie da się dyskutować.
W każdym razie ciesz się bo jesteś na odpowiedniej stronie, to może czegoś się nauczysz :)

Tip : kasa to najlepszy afrodyzjak :)

Ciekawe zastosowania = nowe możliwości
Zarządzanie i analiza danych od zawsze umożliwiały generacje zysków w firmach każdej wielkości.
Biznes od dawna zmagał się ze znalezieniem odpowiedniego sposobu przechowywania informacji o swoich klientach, produktach czy usługach.

Wszystko wygląda prosto kiedy firma ma do zaoferowania kilka produktów. Zarządzanie taką ilością jest relatywnie proste i nie sprawia żadnych kłopotów. Ale w dobie dzisiejszej gospodarki wygrywa ten kto ma przewagę nad
konkurencją.

Ja znalazłem sobie następujące zastosowania dla big data:
 - dopasowywanie ofert pod danego klienta - maksymalizacja zysków
 - wparcie dla procesów decyzyjnych
 - systemy rekomendacji
 - redukcja kosztów - kosztowne serwery dedykowane oraz licencje
 - systemy analityczne
 - dywersyfikacja ryzyka

 - znajdowanie podobieństw
 - wykrywanie oszustw (fraud detection)
 - business intelligence

Kiedy warto zastosować big data ?

- Problem biznesowy : (BI)
       - wiele źródeł danych.
       - wysoka złożoność danych
       - formaty danych : np dokumenty tekstowe, zdjęcia, filmy ...

- Problem implementacyjny i projektowy to :
      - bardzo duża ilość danych,
      - bardzo duża szybkość przybywania danych
      - bardzo duża różnorodność danych.

Tip : Redundant physical infrastructure jako fundamenty skalowalności nosql.

Zastosowania:

Przykłady:

Amazon: Rekomenduje książki na podstawie wcześniejszych zakupów, podobieństw upodobań klientów. Potrafi też dać upust przy zakupie produktu podobnej kategorii.
Amazon zapisuje dosłownie wszystko od Twoich pozycji do wyszukania po ścieżki przejścia.

Facebook : podobieństwa. Jeśli znasz Staszka a Staszek zna Olka i również Heniek zna tego Olka, a Ty z kolei znasz Staszka i Heńka to jest duże prawdopodobieństwo, że również możesz znać Olka.

Podobne mechanizmy oferuje LinkedIn
sugeruje kogo możesz znać lub kogo powinieneś znać.





 Przykładowe bazy nosql oraz ich zastosowania : 


Wprowadzenie do architektury rozwiązań systemów nosql:















Bazy kolumnowa (Columnar Stores). Zwiększenie wydajności hurtowni danych i systemów analitycznych. Dane przechowywane są w kolumnach dzięki czemu  możliwa jest lepsza kompresja danych.

Przedstawiciel :
Cassandra  została zaprojektowana do zadań wymagających wysokiej wydajności, niezawodności oraz automatycznej replikacji.

HBase - cześć projektu Apache Hadoop wzorowanej na BigTable Google.
Stworzona do przechowywania ogromnych zbiorów danych porozrzucanych między tysiące nodów.

Bazy klucz-wartość (key/value stores). Działa na zasadzie mapy. Mimo prostego modelu posiada jedną bardzo cenną cechę - szybkość zapisu jak i odczytu.

Przedstawiciel : Redis 
Możemy ją traktować jako rozproszony cache, zamiennik dla memcached
Cechy
  -  transakcje
  -  klastrowanie
  -  atomowość operacji.
  - replikacja master-slave

Inni : 
  - Memcached (in-memory)
 -  MemcacheDB (bazuje na  Memcached)
 -  Berkley DB

Redis jak i Memcached wspierają wygasanie kluczy. Jest bardzo istotne w budowaniu systemów opartych na cache.
Redis ma złożoność wyszukiwania klucza na poziomie O(N) co w praktyce oznacza, że potrafi przeskanować 1000000 rekordów w czasie 40ms. To wszystko potrafi zrobić będąc zainstalowany na zwykłym laptopie. (http://redis.io/commands/keys).
Potrafi także przeszukać bazę kluczy bazując na glob-style pattern, czyli swoim wyrażeniu regularnym.




Bazy dokumentowe (Document stores/databases)
Wiersz zastąpiony jest dokumentem. (bardzo często w formie json)
Elastyczność rozwiązań.

Przedstawiciel : MongoDB 

Cechy:
 - replikacja i fail-over
 - wysoka wydajność
 - skalowanie horyzontalne (sharding - partitioning)
 - zorientowanie na json
 - geospatial
 - pełen CRUD
 - efektywne przetrzymywanie dużych binarnych obiektów
 - map/reduce

 Pojęcia:
  database -> database
  table      ->  collection  
  row        ->  document
  join        ->  embedding & linking
  partition->  shard
  partition key -> shard key

Bazy grafowe (Graph databases)
Każdy rekord przechowuje wskaźnik do rekordów z nim powiązanych.
Wyróżniamy dwa typy obiektów : węzły (node) i relacje (relationship)
Węzły są odpowiednikiem rekordu w relacyjnych bazach danych, natomiast relacje to coś na kształt kluczy obcych.

Przedstawiciel : Neo4j 
Jest to baza grafowa oparta na JVM. Całkowicie wspiera ACID.
Mogąca pomieścić biliony obiektów.
Bardzo wydajna i skalowalna.
Udostępnia  REST API oraz możliwość embedowania w aplikacji.
Indeksowanie oparte na Lucene.
Posiada konsolę graficzną.
Wsparcie ze strony Spring Data.

Etykiety (labels) określają typ węzła.
Własności (properties) mogą być przypisane zarówno do węzła jak i relacji.
Tip : Cypher
Przykład zastosowania sieć znajomych.

Inne :
  - FlockDB (from Twitter)

Bazy obiejektowe (Object databases)

Trendy w Nosql


MapReduce - kolejny cudowny wynalazek Google. Algorytm oparty na zasadzie dziel-i-zwyciężaj tylko, że działający jako rozproszony system między wieloma nodami.






















W fazie "map" zadanie jest dzielone na identyczne pod-zadania i dystrybuowane między węzły klastra które to przetwarzają zadania. Wyniki natomiast są agregowane w fazie "reduce" w większą całość.

Tip : EIP ->   Splitter - Aggregator
 

Splitter
Aggregator




Hadoop:
W skórcie Hadoop to skalowalna platforma umożliwiająca obsługę olbrzymich woluminów danych. Bazuje ona na wzorcu MapReduce, który to jak było wcześniej powiedziane pozwala na podział dużych zbiorów na mniejsze fragmenty danych oraz przetwarzaniu tychże fragmentów na wielu węzłach wykorzystując standardowe komputery. Hadoop operuje na danych niestrukturalnych. Opiera się również na HDFS czyli bardzo wydajnym systemie plików jeśli chodzi o dostęp do danych ta nim zawartych.

Przykład hadoop:
A - See more at: http://www.computerworld.pl/artykuly/385420/Hadoop..a.co.to.takiego.html#sthash.vhGG1OQ6.dpuf

Hadoop ecosystem :
źródło : http://techblog.baghel.com/media/1/20130616-HadoopEcosystem.JPG .








źródło:   http://tushar686.files.wordpress.com/2012/04/ecosystem-and-analytics.png


źródło: http://www.techspritz.com/wp-content/uploads/2013/05/5575485_orig.jpg

Big data landscape
źródło : http://www.ongridventures.com/wp-content/uploads/2012/10/Big-Data-Landscape.jpg




cdn

Brak komentarzy:

Prześlij komentarz