Architektura Data Lake - Gigacon...DataLake’iem i łatwiej go utrzymywać. Narzędzia BI Trzeba...

36
Architektura Data Lake Artur Fejklowicz BigData Solutions Architect

Transcript of Architektura Data Lake - Gigacon...DataLake’iem i łatwiej go utrzymywać. Narzędzia BI Trzeba...

Page 1: Architektura Data Lake - Gigacon...DataLake’iem i łatwiej go utrzymywać. Narzędzia BI Trzeba zwrócić uwagę jak narzędzie integruje się z usługami klastrowymi, zwłaszcza

Architektura Data Lake

Artur FejklowiczBigData Solutions Architect

Page 2: Architektura Data Lake - Gigacon...DataLake’iem i łatwiej go utrzymywać. Narzędzia BI Trzeba zwrócić uwagę jak narzędzie integruje się z usługami klastrowymi, zwłaszcza

WhoamiPracuję w TVN S.A., który jest największym polskim nadawcą komercyjnym. Nadajemy kanały rozrywkowe (np. TVN, HGTV) jak i newsowo-biznesowe (TVN24, TVN24BIS). Mają one swoje odzwierciedlenie m. in. w portalach www.tvn24.pl oraz www.tvn24bis.pl. Produkujemy także treści jak filmy czy seriale, które udostępniamy m in na naszej platformie VOD: www.player.pl.

Jako Architekt rozwiązań BigData prowadzę zespół Inżynierów Danych. Wspieramy Data Lake i udostępniamy dane naszym użytkownikom biznesowym. Budujemy także ciągi przetwarzania danych (data processing pipelines).

Posiadam certyfikat: Cloudera Certified Administrator for Apache Hadoop.

https://www.linkedin.com/in/arturr/

Page 3: Architektura Data Lake - Gigacon...DataLake’iem i łatwiej go utrzymywać. Narzędzia BI Trzeba zwrócić uwagę jak narzędzie integruje się z usługami klastrowymi, zwłaszcza

Co trzeba wiedzieć na początek?

Page 4: Architektura Data Lake - Gigacon...DataLake’iem i łatwiej go utrzymywać. Narzędzia BI Trzeba zwrócić uwagę jak narzędzie integruje się z usługami klastrowymi, zwłaszcza

Czym jest DataLake?System do gromadzenia danych z różnych źródeł, w różnych strukturach i formatach w jednym miejscu, dla wykorzystania w różnych zadaniach, jak raportowanie, analityka, czy machine learning. Może być oparty o Hadoop.

HDFS (Storage)

YARN (CPU&MEM)

Silniki SQLNear RealTime Processing

Dostęp dla użytkowników

Parquet

TEX

TFILE

OR

C

UżytkownicyAPI, IoT, ... Social media

Web Servers

RDBMS

Parquet

Streamy np. AVRO + Snappy

Data LakeŹródła danych

uBatch CSV

1x dziennie

Page 5: Architektura Data Lake - Gigacon...DataLake’iem i łatwiej go utrzymywać. Narzędzia BI Trzeba zwrócić uwagę jak narzędzie integruje się z usługami klastrowymi, zwłaszcza

UżytkownicyKto będzie używał Data Lake’a?- Data Engineers: opiekują się DataLake’em i danymi.- Data Analysts: Tworzą raporty z danych z konkretnego źródła podłączonego do DataLake’a, np. używając narzędzi BI. - Data Scientists: Pomagają w kształtowaniu strategii rozwoju firmy w oparciu o informacje z danych ze wszystkich źródeł na DataLake’u.- Inne aplikacje.

Analitycy i naukowcy danych biorą odpowiedzialność za informacje pozyskane z danych oraz za ich interpretację."A data scientist is someone who is better at statistics than any software engineer and better at software engineering than any statistician.”Josh Wills former Director of Data Science at Cloudera

Page 6: Architektura Data Lake - Gigacon...DataLake’iem i łatwiej go utrzymywać. Narzędzia BI Trzeba zwrócić uwagę jak narzędzie integruje się z usługami klastrowymi, zwłaszcza

Inwentaryzacja źródeł danychRozmiarPrzyrost dzienny pozwoli oszacować ilość surowych danych. HDFS standardowo przechowuje 3 kopie bloków danych. Dane mogą być:- skompresowane,- rotowane,- archiwizowane w taniej chmurze,- HDFS Tiering.

FormatAktualne formaty danych w źródłach (CSV, clickstream z logów “webservera”, multiline, stream format (AVRO, JSON))

Page 7: Architektura Data Lake - Gigacon...DataLake’iem i łatwiej go utrzymywać. Narzędzia BI Trzeba zwrócić uwagę jak narzędzie integruje się z usługami klastrowymi, zwłaszcza

Inwentaryzacja źródeł danych c.d.InterfejsyZewnętrzne/wewnątrz firmy. API, pliki płaskie, streamy. Reguły firewall i bezpieczeństwa. Kodowanie znaków.

Częstotliwość ingestiiJak często dane mają być dostępne dla użytkowników biznesowych. Dla analityki na początek zwykle wystarcza 1 raz na dzień. Dla czasu rzeczywistego może to być 1 minuta, 10 sekund lub mniej niż sekunda.

Page 8: Architektura Data Lake - Gigacon...DataLake’iem i łatwiej go utrzymywać. Narzędzia BI Trzeba zwrócić uwagę jak narzędzie integruje się z usługami klastrowymi, zwłaszcza

TechnologiaHadoopPodstawa: HDFS+YARN+MapReduce2Usługi SQL: Hive/Spark SQL/Impala/PrestoUsługi dostępu do danych: Hue/Ambari/beeline/hdfs-cli/XXX-shellStreaming: Spark/Flink/Storm, Flume, Kafka, AWS KinesisDystrybucje: Cloudera, HortonWorks, MapR, rozwiązania chmurowe, własna budowa, inne.

Usługi do zainstalowaniaZależy od potrzeb użytkowników. Np. jeśli planowane są złożone procesy przetwarzania lepiej instalować Luigi lub Jenkins, zamiast Oozie. Im mniej usług tym łatwiej zacząć z DataLake’iem i łatwiej go utrzymywać.

Narzędzia BITrzeba zwrócić uwagę jak narzędzie integruje się z usługami klastrowymi, zwłaszcza jeśli planujemy skonfigurować “Secure Hadoop” w oparciu o Kerberosa.

Page 9: Architektura Data Lake - Gigacon...DataLake’iem i łatwiej go utrzymywać. Narzędzia BI Trzeba zwrócić uwagę jak narzędzie integruje się z usługami klastrowymi, zwłaszcza

BezpieczeństwoIm wcześniej zabezpieczysz dostęp do danych tym mniej problemów będzie z tym w przyszłości, ponieważ Data Lake będzie bardzo szybko się rozrastać (ilość użytkowników, źródeł danych, procesów ETL, usług, itd.)

Standardowo Hadoop wierzy, że przedstawiający się użytkownik jest tym za kogo się podaje.

Podstawą zabezpieczenia jest “Secure Hadoop” czyli włączenie autentykacji na bazie Kerberos’a (zwykle MIT lub Active Directory), a także włączenie szyfrowanej komunikacji pomiędzy usługami, a światem zewnętrznym.

Pełny model bezpieczeństwa AAA jest czasochłonny w implementacji, a aktywne audytowanie może wymagać komercyjnego wsparcia.Autentykacja wymaga Kerberosa.Autoryzacja wymaga Sentry lub Ranger’a.Audyt może być pasywny (dobry na początek) lub aktywny.

Page 10: Architektura Data Lake - Gigacon...DataLake’iem i łatwiej go utrzymywać. Narzędzia BI Trzeba zwrócić uwagę jak narzędzie integruje się z usługami klastrowymi, zwłaszcza

InfrastrukturaZwykle lepiej mieć więcej słabszych maszyn niż mniej mocnych - chcemy zrównoleglić obliczenia.

Mocne maszyny (np. z dużą ilością RAM) mogą być przydatne dla usług takich jak Druid czy Spark, które

będą wykonywać obliczenia “in-memory” lub Impala, która może ładować duże ilości danych do pamięci.

Dobrze aby inwestować w wieloportowe karty sieciowe, na których można skonfigurować bonding LACP.

Zaplanowanie “HDFS tiering” jest bardzo praktyczne w późniejszym cyklu życia Data Lake’a. Na początku

warto zaplanować retencję danych.

Worker Node’y (HDFS DataNode + YARN NodeManagers) warto instalować bezpośrednio na serwerach.

Dla Master Node’ów zaś warto rozważyć wirtualizację.

Page 11: Architektura Data Lake - Gigacon...DataLake’iem i łatwiej go utrzymywać. Narzędzia BI Trzeba zwrócić uwagę jak narzędzie integruje się z usługami klastrowymi, zwłaszcza

Środowiska Data Lake’aMinimalnie 2 środowiska (RC i Produkcja). Najlepiej mieć jeszcze trzecie, dla R&D.

Pojedyncze środowisko testowe to klaster Hadoop + narzędzia BI + przykładowe joby ETL + jakiekolwiek inne usługi, które będą zmieniane/implementowane w środowisku produkcyjnym.

1. Testing (R&D) - Można na nim testować nowe usługi i funkcjonalności. Może być wyłączane w dowolnym momencie. Może być całkowicie zwirtualizowane.

2. Release Candidate (RC) - Posiada tą samą konfigurację jak produkcja, ale z minimalnymi zasobami, koniecznymi do uruchomienia testów - może być zwirtualizowane. Służy do testowania aktualizacji oprogramowania produkcyjnego i zmian konfiguracji. Na przykład, gdy implementuje się Kerberos’a to środowisko jest “must have”. Dostęp tylko dla wybranych użytkowników na potrzeby testów.

3. Produkcja - Użytkownicy muszą stosować się do obowiązyjących zasad i reguł aby utrzymać SLA usług Data Lake’a.

Page 12: Architektura Data Lake - Gigacon...DataLake’iem i łatwiej go utrzymywać. Narzędzia BI Trzeba zwrócić uwagę jak narzędzie integruje się z usługami klastrowymi, zwłaszcza

Architektura DataLake - przechowywanie, import oraz eksport danych.

Page 13: Architektura Data Lake - Gigacon...DataLake’iem i łatwiej go utrzymywać. Narzędzia BI Trzeba zwrócić uwagę jak narzędzie integruje się z usługami klastrowymi, zwłaszcza

Format układania danych - wierszowya. Używany w systemach RDBMS dla operacji SUID, które działają na wielu

kolumnach jednocześnieb. Agregacje mogą wymagać wykonania pełnego skanu tabeli.c. W wierszu, obok siebie mogą występować różne typy danych.

1,1,search,122.303.444,t_{0},/products/search/filters=tshirts,US;2,1,view,122.303.444,t_{1},/products/id=11212,US;...;7,9,checkout,121.322.432,t_{2},/checkout/cart=478/status=confirmed,UK;

Page 14: Architektura Data Lake - Gigacon...DataLake’iem i łatwiej go utrzymywać. Narzędzia BI Trzeba zwrócić uwagę jak narzędzie integruje się z usługami klastrowymi, zwłaszcza

Format układania danych - kolumnowya. Wartości z konkretnej kolumny są przechowywane obok siebie.b. Bardzo dobry dla agregacji, ponieważ pobiera się tylko bloki żądanych kolumn,

bez pełnych skanów tabel.c. Bardzo dobry dla kompresji, ponieważ sąsiadują ze sobą te same typy danych

w jednym wierszu, np. Runlength encoding dla INTEGER, Dictionary encoding dla STRING).1,2,3,4,5,6,7;1,3,9;Search,view,add_to_cart,checkout;...;US,FR,UK;

Page 15: Architektura Data Lake - Gigacon...DataLake’iem i łatwiej go utrzymywać. Narzędzia BI Trzeba zwrócić uwagę jak narzędzie integruje się z usługami klastrowymi, zwłaszcza

Formaty plików w DataLake - TEXTFILEFormat wierszowy. Bardzo dobry na start. Dobry do przechowywania CSV/TSV/DSV.Przykład utworzenia zewnętrznej tabeli w Hive, gdzie możemy wgrywać pliki tekstowe “tab separated value”:CREATE EXTERNAL TABLE `mydb.transactions` (

`id` INT COMMENT 'Personal id',`name` STRING COMMENT 'Name of a person',`day` STRING COMMENT 'Transaction date' )

ROW FORMAT DELIMITEDFIELDS TERMINATED BY '\t'LINES TERMINATED BY '\n'STORED AS TEXTFILELOCATION 'hdfs:///externals/mydb/transactions';

Page 16: Architektura Data Lake - Gigacon...DataLake’iem i łatwiej go utrzymywać. Narzędzia BI Trzeba zwrócić uwagę jak narzędzie integruje się z usługami klastrowymi, zwłaszcza

Formaty plików w DataLake - AVRO- Samoopisujący - definicja schemy może być częścią pliku z danymi.- Wspiera aliasy kolumn dla “ewolucji schemy”.- Schema może być definiowana standardowo, we właściwościach tabeli (TABLEPROPERTIES) lub w osobnym pliku (SERDEPROPERTIES)- Łatwy do migracji z/do formatu JSON.

1. Tworzenie tabeli w Hive w formacie AVROCREATE EXTERNAL TABLE transactions ( `id` INT COMMENT 'Personal id', `name` STRING COMMENT 'Name of a person', `day` STRING COMMENT 'Transaction date' )STORED as AVRO LOCATION '/externals/transactions';

Page 17: Architektura Data Lake - Gigacon...DataLake’iem i łatwiej go utrzymywać. Narzędzia BI Trzeba zwrócić uwagę jak narzędzie integruje się z usługami klastrowymi, zwłaszcza

Formaty plików w DataLake - AVRO2. Tworzenie tabeli w Hive - schema w pliku na HDFSCREATE EXTERNAL TABLE transactionsROW FORMAT SERDE'org.apache.hadoop.hive.serde2.avro.AvroSerDe'WITH SERDEPROPERTIES ('avro.schema.url'='hdfs:///avro_schemas/transactions.avsc')STORED as AVRO LOCATION '/externals/transactions';

Page 18: Architektura Data Lake - Gigacon...DataLake’iem i łatwiej go utrzymywać. Narzędzia BI Trzeba zwrócić uwagę jak narzędzie integruje się z usługami klastrowymi, zwłaszcza

Formaty plików w DataLake - AVRO3. Schema jako własności tabeliTABLEPROPERTIES ('avro.schema.literal'='{ "namespace": "af.lab.avro", "name": "peoples_transactions", "type": "record", "fields": [ { "Name":"id", "type":"int", "doc":"Personal id" }, { "Name":"name", "type":"string", "doc":"Name of a person" }, { "Name":"day", "type":"string", "doc":"Transaction date" }, ], "doc":"Table with transactions"})

Page 19: Architektura Data Lake - Gigacon...DataLake’iem i łatwiej go utrzymywać. Narzędzia BI Trzeba zwrócić uwagę jak narzędzie integruje się z usługami klastrowymi, zwłaszcza

Formaty plików w DataLake - Parquet- Najczęściej stosowany kolumnowy format plików (m in Hive, Spark, Impala), zainicjowany wspólnie przez Twittera i Clouderę.

- W metadata posiada statystykę ilości elementów w kolumnie per grupa wierszy - przyspiesza to niektóre zapytania.

- Spark używając biblioteki Tungsten m in do obsługi pamięci, wykorzystuje tzw. “Vectorized Parquet Reader”, który usuwa konieczność deserializacji danych przeczytanych z dysku w formacie Parquet.

- Wspiera “predicate pushdown” dla Row group, a także kompresję na poziomie strony (Page).

https://raw.github.com/Parquet/parquet-format/master/doc/images/FileLayout.gif

Page 20: Architektura Data Lake - Gigacon...DataLake’iem i łatwiej go utrzymywać. Narzędzia BI Trzeba zwrócić uwagę jak narzędzie integruje się z usługami klastrowymi, zwłaszcza

Formaty plików w DataLake - ORC- Posiada 3 poziomy indeksowania (plik, stripe i co 10k wierszy).- Rozmiar plików zmniejszony nawet o 78%.- Statystyki z danych: min, max, sum, count per kolumna, per stripe i plik.- Wgrywając dane warto je posortować po najczęściej używanej kolumnie, aby uzyskać monotoniczny wzrost wartości.- Wspiera “predicate pushdown” po indeksach i statystykach.

https://orc.apache.org/img/OrcFileLayout.pnghttps://de.hortonworks.com/blog/orcfile-in-hdp-2-better-compression-better-performance/

Page 21: Architektura Data Lake - Gigacon...DataLake’iem i łatwiej go utrzymywać. Narzędzia BI Trzeba zwrócić uwagę jak narzędzie integruje się z usługami klastrowymi, zwłaszcza

Formaty plików w DataLake - orcdumpbeeline --service orcfiledump /user/hive/warehouse/mydb.db/mytable/day=2017-04-29/000000_0…Column 115: count: 5000 hasNull: false min: max: 0 sum: 2128Column 116: count: 5000 hasNull: false min: max: 992 sum: 7811Stripe 10:Column 0: count: 5000 hasNull: falseColumn 1: count: 0 hasNull: true sum: 0File Statistics: Column 0: count: 545034 hasNull: false Column 1: count: 0 hasNull: true sum: 0 Encoding column 0: DIRECT Encoding column 1: DIRECT_V2 Encoding column 115: DICTIONARY_V2[1] Encoding column 116: DICTIONARY_V2[1]

Page 22: Architektura Data Lake - Gigacon...DataLake’iem i łatwiej go utrzymywać. Narzędzia BI Trzeba zwrócić uwagę jak narzędzie integruje się z usługami klastrowymi, zwłaszcza

Formaty plików w DataLake - PrzykładyORC - zapis i załadowanie danych w DataFrame’a oraz “predicate pushdown”

import org.apache.spark.sql._val sqlContext = new org.apache.spark.sql.hive.HiveContext(sc)case class Contact(name: String, phone: String)case class Person(name: String, age: Int, contacts: Seq[Contact])val records = (1 to 100).map { i =>;

Person(s"name_$i", i, (0 to 1).map { m => Contact(s"contact_$m", s"phone_$m") })}sc.parallelize(records).toDF().write.format("orc").save("people.orc")val people = sqlContext.read.format("orc").load("people.orc")people.registerTempTable("people")sqlContext.setConf("spark.sql.orc.filterPushdown", "true")sqlContext.sql("SELECT name FROM people WHERE age < 15").count()

Page 23: Architektura Data Lake - Gigacon...DataLake’iem i łatwiej go utrzymywać. Narzędzia BI Trzeba zwrócić uwagę jak narzędzie integruje się z usługami klastrowymi, zwłaszcza

Kompresja w DataLakeNone - Bez kompresji. Szybki dostęp do danych, ale duże rozmiary plików i duża zajętość przepustowości sieci.

SNAPPY - Napisana przez Google. Bardzo szybka, ale dekodowanie może być prowadzone tylko w jednym wątku (na jednym rdzeniu CPU). Poziom kompresji - około 40%. Zwykle najlepszy wybór.

Gzip - Bardzo dobry stopień kompresji. Może być prowadzona wielowątkowo. Wolniejsza niż Snappy. Wysokie zużycie CPU.

Page 24: Architektura Data Lake - Gigacon...DataLake’iem i łatwiej go utrzymywać. Narzędzia BI Trzeba zwrócić uwagę jak narzędzie integruje się z usługami klastrowymi, zwłaszcza

Ingestia danych do DataLakeNajbardziej popularne metody importu danych:1. Wgrywanie plików do katalogów na HDFS (np. do partycji tabel “externalowych” w Hive).

2. Sqoop - narzędzie kopiowania danych z systemów RDBMS.

3. NiFi - orkiestrator i monitoring z czytelnym GUI.

4. Flume - narzędzie wgrywania danych stream’owych. Użycie mechanizmu transakcji w Hive, gdzie formatem przechowywania danych w tabeli jest ORC, pozwala na zapisywania stream’a bezpośrednio do tabeli i udostępnienie danych zaraz po zakończonym batchu. Pozwala buforować dane na czas niektórych awarii.

5. Spark/Flink/Storm jako realtime’mowa ingestia i processing streamu mogą udostępnić dane niemal natychmiast.

Page 25: Architektura Data Lake - Gigacon...DataLake’iem i łatwiej go utrzymywać. Narzędzia BI Trzeba zwrócić uwagę jak narzędzie integruje się z usługami klastrowymi, zwłaszcza

Batch ingestion - z HDFS do Hive1. Import do tabeli zewnętrznej

a. Wgrywanie plików na HDFS do katalogu zewnętrznej tabeli Hive’owej:

hdfs dfs -put file:///myproject.2017-06-04.csv \hdfs:///externals/myproject/y=2017/m=06/d=05/

b. Utworzenie partycji w Hive Metasotre:

beeline -u "jdbc:hive2://myhiveserver:10000" \-e "MSCK REPAIR TABLE externals.myproject"

2. Import do tabeli w optymalnym formacie:

SET hive.exec.dynamic.partition=true;SET hive.exec.dynamic.partition.mode=nonstrict;INSERT OVERWRITE TABLE mydb.myproject_orcPARTITION(`day`)SELECT `id`, `name`, `day`FROM mydb.myproject_externtalSORT BY `id`, `name`;

Page 26: Architektura Data Lake - Gigacon...DataLake’iem i łatwiej go utrzymywać. Narzędzia BI Trzeba zwrócić uwagę jak narzędzie integruje się z usługami klastrowymi, zwłaszcza

Batch ingestion - Sqoop- Bardzo dobry do kopiowania tabel z RDBMS do plików HDFS lub tabel Hive.- Ilość plików wynikowych może być sterowana ilością mapperów.- Połączenie do baz przy użyciu JDBC (z opcją podania driver’a).- Wgrywa bezpośrednio do TEXTFILE, AVRO lub Parquet. Wgrywanie do ORC przez Hcatalog.- Wspiera “incremental import”.- Można podać szczegółowe zapytanie importujące.- Wspiera kompresję (m in Gzip i Snappy).- Trzeba zwrócić uwagę na wyjątki, np:

- Pole w RDBMS może zawierać w treści znak nowej linii (\n), który np. W tabeli Hive będzie oddzielał wiersze.

- Null’e standardowo traktowane są jako STRING ‘null’, z kolei Hive ma znak specjalny “\N” jako Null, co trzeba uwzględnić odpowiednimi opcjami podczas importu ( --null-string (string columns) and --null-non-string (other than string columns))

Page 27: Architektura Data Lake - Gigacon...DataLake’iem i łatwiej go utrzymywać. Narzędzia BI Trzeba zwrócić uwagę jak narzędzie integruje się z usługami klastrowymi, zwłaszcza

Batch ingestion - sqoop do ORCsqoop import-Dmapreduce.job.queuename=kolejka.yarn \--connect jdbc:mysql://myserver:3306/mydatabase \-username srvuser \--password-file file:///path/to/.sqoop.pw.file \-m 1 \--null-string "\\\\N" \--null-non-string "\\\\N" \--table mytable \--hcatalog-database myhivedb \--hcatalog-table mytable \--hcatalog-partition-values "`date +%F`"--hcatalog-partition-keys 'day' \--hcatalog-storage-stanza 'STORED AS ORCFILE' \

Page 28: Architektura Data Lake - Gigacon...DataLake’iem i łatwiej go utrzymywać. Narzędzia BI Trzeba zwrócić uwagę jak narzędzie integruje się z usługami klastrowymi, zwłaszcza

Batch ingestion - NiFiNarzędzie do kontrolowania i monitorowania przepływu danych. W GUI tworzy się graf konfigurowalnych procesorów danych i ich wzajemnych zależności.

Ma procesory dla HDFS, Hive, Kafka, Flume, JDBC i wiele innych.

Może wykonywać import/export batchowo (co wyznaczony interwał lub wg “cron’a”) i stream’owo.

Można np w locie zmieniać format danych z AVRO do JSON.

https://nifi.apache.org/docs/nifi-docs/html/images/nifi-toolbar-components.png

Page 29: Architektura Data Lake - Gigacon...DataLake’iem i łatwiej go utrzymywać. Narzędzia BI Trzeba zwrócić uwagę jak narzędzie integruje się z usługami klastrowymi, zwłaszcza

Streamowanie danych do DataLake1. Źródło stream’u (np. farma webserwerów lub urządzenia IoT)2. Message broker (np. Kafka)3. Komponent transportu stream’u (Flume, NiFi)4. Silnik przetwarzania danych (np. Spark, Storm, Flink)5. Format wiadomości (JSON, AVRO, TEXT, Compression)

Przykładowa architektura stream’ingowa

Źródło danych

source Kafkachannel

Flume Agent

source Kafkachannel

Flume Agent

Klaster Kafki

Partycja 1

Replika P1

Partycja 2

Replika P2

HDFS sink

Kafkachannel

Flume Agent

HDFS

Tabela w Hive

Spark, Flink, Storm...

roun

d-ro

bin

Page 30: Architektura Data Lake - Gigacon...DataLake’iem i łatwiej go utrzymywać. Narzędzia BI Trzeba zwrócić uwagę jak narzędzie integruje się z usługami klastrowymi, zwłaszcza

Export danych z HiveExport z Hive do formatów Comma/Tab/Delimiter separated values.CONNSTR="jdbc:hive2://my.hive.com:10000/;principal=hive/[email protected]?mapreduce.job.queuename=my.queue"DAY=`date +%F`

/usr/bin/beeline -u ${CONNSTR} --outputformat=tsv2 \--showHeader=false --hivevar DAY=${DAY} \-e "SELECT * FROM mydb.mytable where day='${hivevar:DAY}'" \> mytable.${DAY}.tsv

Dla DSV --delimiterForDSV='ł'

Page 31: Architektura Data Lake - Gigacon...DataLake’iem i łatwiej go utrzymywać. Narzędzia BI Trzeba zwrócić uwagę jak narzędzie integruje się z usługami klastrowymi, zwłaszcza

Export danych - SparkZłożone eksporty mogą być wykonywane w aplikacjach MapReduce lub w Spark’u. Np. mając przeliczonego DataFrame’a w Sparku (np. na podstawie danych stream’owych), możemy łatwo uzupełnić tabelę w RDBMS.

Dla zapytań typu UPDATE, konieczne jest użycie standardowego JAVA’owego JDBC DriverManager, ponieważ DataFrame’y mogą zapisywać tylko w trybach: "error", "append", "overwrite" i "ignore".

val prop = new java.util.Propertiesval jurl = "jdbc:sqlserver://my.sql.com:1433;databaseName=mydb"val rdbmsTable = "mytab"prop.setProperty("user", "myuser")prop.setProperty("password", "XXX")prop.setProperty("driver", "rdbms.jdbc.drv")val myDF = sqlContext.sql(""" SELECT day, country, count(id) FROM mydb.mytab WHERE day < "2017-06-05") GROUP BY day, country""")myDF.write.mode("overwrite").jdbc(jurl, rdbmsTable, prop)

Page 32: Architektura Data Lake - Gigacon...DataLake’iem i łatwiej go utrzymywać. Narzędzia BI Trzeba zwrócić uwagę jak narzędzie integruje się z usługami klastrowymi, zwłaszcza

Cykl życia modeli Machine Learning1. Data Scientist trenuje model i zapisuje go

jako PMML lub jako Spark ML Pipeline.2. Data Engineer ładuje model do swojej

aplikacji i może:- Raz dziennie uaktualniać dane np. w RDBMS na podstawie przeliczeń danych w DataLake’u wg modelu.- Uaktualniać w czasie rzeczywistym dane w bazie in-memory (np. Druid lub Spark SQL via Thrift) na podstawie obliczeń modelu do którego docierają dane stream’owe.

Ustalić cel

Zrozumieć dane

Stworzyć hipotezę

Wykonać eksperyment

Wytrenować model

Uruchomić model

Przetestować model

Monitorować model

Page 33: Architektura Data Lake - Gigacon...DataLake’iem i łatwiej go utrzymywać. Narzędzia BI Trzeba zwrócić uwagę jak narzędzie integruje się z usługami klastrowymi, zwłaszcza

Cykl życia modeli Machine Learning c.d.- Utworzyć interfejs REST do modelu i

zezwolić aplikacjom na bezpośrednie odpytywanie modelu, np. system rekomendacji.

- Wykorzystać narzędzie do utrzymywania modeli ML, np. Oryx, umożliwiającego aktualizację online modelu.

3. Data Scientists musi mieć możliwość pomiaru efektywności modelu.

Ustalić cel

Zrozumieć dane

Stworzyć hipotezę

Wykonać eksperyment

Wytrenować model

Uruchomić model

Przetestować model

Monitorować model

Page 34: Architektura Data Lake - Gigacon...DataLake’iem i łatwiej go utrzymywać. Narzędzia BI Trzeba zwrócić uwagę jak narzędzie integruje się z usługami klastrowymi, zwłaszcza

Środowiska dla DA i DS- Hue - podstawowe narzędzie dostępu do danych.- Beeline - dostęp do Hive CLI.- JDBC - podłączenia do tabel Hive’owych z

“Excel’a”.- Self-service BI - Tableau, Qlik, Power BI, etc.- Jupyter - notebook. Może uruchamiać aplikacje w

Scala/Python/R w jednym przebiegu.

http://jp.gethue.com/wp-content/uploads/2015/12/hue-3.6.png

http://jupyter.org/assets/jupyterpreview.png

Page 35: Architektura Data Lake - Gigacon...DataLake’iem i łatwiej go utrzymywać. Narzędzia BI Trzeba zwrócić uwagę jak narzędzie integruje się z usługami klastrowymi, zwłaszcza

Co dalej?- DataLake 3.0 (Horton Works)

- Zestawy aplikacyjne - uruchomienie wielu usług w kontenerach Dockera na YARN’ie jako jednej aplikacji. Każdy we własnym środowisku.

- HDFS Auto-tiering - automatyczne migrowanie danych między rodzajami nośników danych.- Izolacja dostępu do sieci i dysku (Network and IO level isolation).

- Cloudera Data Science Workbench- Platforma “Self-Service Machine Learning”.- Może być postawiona w chmurze lub na miejscu.

- Spark 2- SparkContext and HiveContext przebudowane w SparkSession.- Generowanie kodu zapytań Spark SQL do jednej funkcji w JAVA’ie - whole stage code generation.- Global temporary views dostępne dla innych sesji Spark’a.

- IBM: Model ML per grupa userów lub nawet per pojedynczy user.

Page 36: Architektura Data Lake - Gigacon...DataLake’iem i łatwiej go utrzymywać. Narzędzia BI Trzeba zwrócić uwagę jak narzędzie integruje się z usługami klastrowymi, zwłaszcza

Dziękuję za uwagę