B0M33BDT Technologie pro velká data. Storage

Podobné dokumenty
B0M33BDT Technologie pro velká data. Storage

B0M33BDT Stream processing. Milan Kratochvíl

B0M33BDT Technologie pro velká data. Supercvičení SQL, Python, Linux

BigData. Marek Sušický

Hadoop a HDFS. Bc. Milan Nikl

Spark SQL, Spark Streaming. Jan Hučín

Spark SQL, Spark Streaming. Jan Hučín

Úvod do databázových systémů

TimescaleDB. Pavel Stěhule 2018

O Apache Derby detailněji. Hynek Mlnařík

DUM 12 téma: Příkazy pro tvorbu databáze

04 - Databázové systémy

2. blok část B Základní syntaxe příkazů SELECT, INSERT, UPDATE, DELETE

B Organizace databáze na fyzické úrovni u serveru Oracle

Databázové systémy úvod

Databázové systémy. Doc.Ing.Miloš Koch,CSc.

5. POČÍTAČOVÉ CVIČENÍ

InnoDB transakce, cizí klíče, neumí fulltext (a nebo už ano?) CSV v textovém souboru ve formátu hodnot oddělených čárkou

RNDr. Michal Kopecký, Ph.D. Department of Software Engineering, Faculty of Mathematics and Physics, Charles University in Prague

cstore_fdw column store pro PostgreSQL Prague PostgreSQL Developer Day 2015 Jan Holčapek

Použití databází na Webu

Oracle XML DB. Tomáš Nykodým

CSPUG 2011-květen. GridSQL a pg-pool II. Vratislav Beneš benes@optisolutions.cz

Stručně o XML (výhody, nevýhody) Proč komprimovat XML? Metody komprese XML XMill. Optimalizace komprese XML. Závěr

Databáze SQL SELECT. David Hoksza

PostgreSQL. Podpora dědičnosti Rozšiřitelnost vlastní datové typy. Univerzální nasazení ve vědecké sféře

Základy informatiky. 08 Databázové systémy. Daniela Szturcová

Databázové systémy. - SQL * definice dat * aktualizace * pohledy. Tomáš Skopal

B0M33BDT 7. přednáška Architektury a bezpečnost. Marek Sušický Milan Kratochvíl

BIG DATA je oveľa viac ako Hadoop. Martin Pavlík

Obchodní akademie a Jazyková škola s právem státní jazykové zkoušky Jihlava

Novinky v Microsoft SQL Serveru RNDr. David Gešvindr MVP: Data Platform MCSE: Data Platform MCSD: Windows Store MCT

Michal Krátký, Miroslav Beneš

Hadoop, Hive a Spark: Využití pro data mining. Václav Zeman, KIZI VŠE

Analytické systémy nad Hadoopom. Lukáš Antalov, Vedoucí týmu vývoje

8.2 Používání a tvorba databází

Úvod do databázových systémů

Databáze I. 5. přednáška. Helena Palovská

Administrace Oracle. Práva a role, audit

Operátory ROLLUP a CUBE

SQL - trigger, Databázové modelování

Vhodnost nasazení jednotlivých webových architektur, sdílení dat, perzistence, webové služby a REST, asynchronnost, messaging

Databázové a informační systémy

Přehled systému Microsoft SQL Server. Komu je kniha určena Struktura knihy Nejvhodnější výchozí bod pro čtení knihy Konvence a struktura knihy

Stěhování aplikací. Michal Tomek, Sales Manager

Návrh a tvorba WWW stránek 1/14. PHP a databáze

Databázové systémy a SQL

Kurz Databáze. Obsah. Dotazy. Zpracování dat. Doc. Ing. Radim Farana, CSc.

Databáze II. 1. přednáška. Helena Palovská

Databáze Bc. Veronika Tomsová

Databázové systémy. Cvičení 6: SQL

Základy informatiky. 06 Databázové systémy. Kačmařík/Szturcová/Děrgel/Rapant

10. Datové sklady (Data Warehouses) Datový sklad

Relační DB struktury sloužící k optimalizaci dotazů - indexy, clustery, indexem organizované tabulky

Jazyk SQL databáze SQLite. připravil ing. petr polách

Sada 1 - PHP. 14. Úvod do jazyka SQL

Technické informace. PA152,Implementace databázových systémů 4 / 25. Projekty. pary/pa152/ Pavel Rychlý

A4M33BDT Technologie pro velká data

Databáze. Velmi stručný a zjednodušený úvod do problematiky databází pro programátory v Pythonu. Bedřich Košata

Vladimír

Databázové systémy Cvičení 5.2

Úvod do databází. Modelování v řízení. Ing. Petr Kalčev

INDEXY JSOU GRUNT. Pavel Stěhule

Spark Jan Hučín 15. listopadu 2017

Optimalizace dotazů a databázové transakce v Oracle

Databáze 2011/2012 SQL DDL (CREATE/ALTER/DROP TABLE), DML (INSERT/UPDATE/DELETE) RNDr.David Hoksza, Ph.D.

Obsah. Kapitola 1. Kapitola 2. Kapitola 3. Kapitola 4. Úvod 11. Stručný úvod do relačních databází 13. Platforma 10g 23

DATABÁZOVÉ SYSTÉMY. Metodický list č. 1

Kapitola 1: Úvod. Systém pro správu databáze (Database Management Systém DBMS) Účel databázových systémů

Informační systémy 2008/2009. Radim Farana. Obsah. Jazyk SQL

Enterprise funkce SQL Serveru 2016, které jsou od SP1 zdarma

Úvod do databázových systémů

Databázové systémy trocha teorie

MBI - technologická realizace modelu

Migrace CIDUG. Ing. Pavel Krutina

Maturitní témata z předmětu PROGRAMOVÉ VYBAVENÍ pro šk. rok 2012/2013

Obsah přednášky. Představení webu ASP.NET frameworky Relační databáze Objektově-relační mapování Entity framework

Disková pole (RAID) 1

Databáze I. 1. přednáška. Helena Palovská

Struktura pamětí a procesů v DB Oracle. Radek Strnad

Spark Jan Hučín 5. dubna 2017

Healtcheck. databáze ORCL běžící na serveru db.tomas-solar.com pro

Inovace a zkvalitnění výuky prostřednictvím ICT Databázové systémy MySQL základní pojmy, motivace Ing. Kotásek Jaroslav

RELAČNÍ DATABÁZOVÉ SYSTÉMY

Novinky v PostgreSQL 9.4. Tomáš Vondra, 2ndQuadrant

Optimalizace plnění a aktualizace velkých tabulek. Milan Rafaj, IBM

MetaCentrum. datové služby. Miroslav Ruda, Zdeněk Šustr

George J. Klir. State University of New York (SUNY) Binghamton, New York 13902, USA

Využití XML v DB aplikacích

SQL v14. 4D Developer konference. 4D Developer conference 2015 Prague, CZ Celebrating 30 years

Informační systémy 2008/2009. Radim Farana. Obsah. Základní principy XML

Databázové a informační systémy Jana Šarmanová

Marketingová komunikace. 3. soustředění. Mgr. Pavel Vávra Kombinované studium Skupina N9KMK3PH (vm3bph)

Archivace relačních databází

GTL GENERATOR NÁSTROJ PRO GENEROVÁNÍ OBJEKTŮ OBJEKTY PRO INFORMATICA POWERCENTER. váš partner na cestě od dat k informacím

Souborové systémy a logická struktura dat (principy, porovnání, příklady).

Databázové systémy, MS Access. Autor: Ing. Jan Nožička SOŠ a SOU Česká Lípa VY_32_INOVACE_1130_Databázové systémy, MS Access_PWP

Petr Nevrlý

KMI / TMA Tvorba mobilních aplikací. 6. seminář ZS 2016/2017 Středa 13:15-15:45

Operační systémy. Jednoduché stránkování. Virtuální paměť. Příklad: jednoduché stránkování. Virtuální paměť se stránkování. Memory Management Unit

Transkript:

B0M33BDT Technologie pro velká data Storage Milan Kratochvíl 25.10.2017

Motivace Jak efektivně ukládat data v Hadoop ekosystému? formát ukládání dat a jejich komprese možnost paralelně zpracovávat na mnoha nodech Jak efektivně přistupovat k datům v Hadoop ekosystému? nástroje na dotazování/ukládání dat Jak efektivně spravovat data v Hadoop ekosystému? data lifecycle management 2

Osnova přednášky HDFS možnosti ukládání dat Formáty ukládání dat v Hadoop Komprese Hive/Impala HBase Shrnutí 3

HDFS

HDFS opakování Distribuovaný file system Namenode vs Datanode Replikace (3 by default) Velké soubory fyzicky rozloženy do bloků (nemusí být na stejném nodu!) Co musíme řešit: Jak pracovat s velkými soubory? Jak pracovat s mnoha malými soubory? Jak modifikovat soubory? 6

HDFS API Java API Soubory jsou z pohledu API streamy Podporované operace create (zápis) [hadoop fs -put] open [hadoop fs -get] delete [hadoop fs -rm] append [hadoop fs -appendtofile] seek (je možno v otevřeném souboru skákat ) [N/A] 7

HDFS ukládání souborů Typy souborů vstupní data Binární exporty zdrojových systémů (CDRs - telco) videa, obrázky, zvukové záznamy Textové prostý text CSV (comma-separated values), TSV (tab-separated values) apod. XML JSON Komprese žádná zip, gzip 8

HDFS ukládání souborů Typy souborů interní formáty ukládání dat Binární beze změny Textové prostý text CSV (comma-separated values), TSV (tab-separated values) apod. Tabulární řádkově orientované úložiště CSV/TSV nenese informaci o schématu Avro (https://avro.apache.org/) ve skutečnosti nástroj na serializaci, obsahuje schéma Tabulární sloupcově orientované úložiště v metadatech obsaženo schéma RCfile ORC (https://orc.apache.org/) Parquet (https://parquet.apache.org/) Ostatní SequenceFile 9

Řádkově a sloupcově orientované úložiště CSV, tradiční relační databáze řádkově orientované (většinou) Příklad (https://en.wikipedia.org/wiki/column-oriented_dbms) Reprezentace úložiště řádkově sloupcově 10

Avro Řádkově orientované úložiště/formát pro serializaci Nese schéma, umožňuje appendovat data (stejné schéma) http://www.svds.com/dataformats/ 11

Sloupcově orientované úložiště Výhody Možnost rychle číst jen sloupce, které potřebuji (omezení IO operací disků) Efektivnější komprese Nevýhody Práce s jedním záznamem a potřeba čtení celého záznamu je pomalá Nelze snadno modifikovat ale to v Hadoop stejně prakticky není možné (myšleno napřímo tedy nejedná se o nevýhodu!) Náročný pro zápis Vstupní data je třeba rozdělit do bloku řádků, až ty se ukládají sloupcově Velikost každého bloku řádků se musí vejít do bloku HDFS Shrnutí Výhodné použít pro OLAP Velmi nevhodné pro OLTP 12

Parquet 13

ORC 14

Sloupcově orientovaná úložiště RCFile jen historické aplikace ORC Optimized Row Columnar file format vše, co RCFile + něco navíc ukládá metadata/statistiky (average, max, count...) může obsahovat i indexy načítá jen potřebná data optimalizuje dotaz Parquet velmi podobné, jednoduší/lightweight Metadata na konci souboru, resp. bloku zapisují se, až když je soubor známý na jaké konkrétní místo souboru skočit 15

Odbočka malé soubory Mnoho malých souborů je problém malý soubor typicky stovky bajtů až stovky kilobajtů Typická situace když už potřebuji zpracovávat malé soubory, pak jich je skutečně mnoho Kolik je mnoho? Více než desítky milionů 1 záznam o bloku na HDFS cca 200bajtů v RAM na NameNode Příklad 1 soubor 10kB 10E6 souborů 100 GB dat cca 2 GB RAM na NameNode 1E9 souborů 10 TB dat cca 200 GB RAM Typické řešení na následujícím slajdu 16

SequenceFile Umožňuje ukládat data ve formátu key/value key název souboru value obsah souboru Umožňuje blokové rozdělení/blokovou kompresi Umožňuje data přidávat [append] Vhodné pro full scan 17

Komprese Výrazně zrychlí přístup k datům opakování nejpomalejší jsou IO operace Používané algoritmy Gzip základní formát, často vstupní soubory v Hadoop přímo se moc nepoužívá, relativně pomalý, ale účinný Bzip2 LZO Zlib typicky používaný ve spojení s ORC; stejný algoritmus jako Gzip Snappy typicky používaný ve spojení s Parquet (ale nejen to) nižší účinnost, ale nejrychlejší 18

Kompresní algoritmy - srovnání Algoritmus Rychlost Účinnost Splittable GZIP/ZLib BZip2 LZO Snappy Splitovatelnost kompresní algoritmus vytváří bloky, které lze samostatně dekomprimovat nutnost pro paralelní zpracování Kompatibilita Ne každý formát a každý nástroj podporuje libovolnou kompresi! (Např. v Impala nelze použít ORC) 19

Kdy použít jaký kompresní algoritmus? Častý přístup k datům hot data minimalizace doby přístupu k datům LZO, Snappy Archivace, řídký přístup k datům cold data minimalizace požadovaného diskového prostoru GZIP, BZip2 Kdy potřebuji splittable algoritmus? Možná nikdy... Obrovské CSV? Inteligentní souborové formáty obsahují bloky, které se komprimují; nekomprimuje se celý soubor 20

Hive a Impala

Hive https://hive.apache.org/ Snaha přivést SQL do světa Hadoop Nástroj pro dotazování a manipulaci s daty Vlastní jazyk HQL (variace na SQL) Exekuce dotazů probíhá prostřednictvím klasických technologií Hadoop silná i slabá stránka zároveň Poměrně vyspělý a mocný nástroj 23

Hive architektura https://docs.hortonworks.com/hdpdocuments/hdp2/hdp- 2.3.4/bk_performance_tuning/content/ch_hive_architectural_overvi ew.html 24

Hive ukládání dat Přístup k datům je prostřednictvím klasických DB tabulek Data jsou ukládána v HDFS externí tabulky managed tabulky Jak je tabulka uložena? Tabulka je celý adresář Obsahuje více souborů, nebo i dalších podadresářů Data jsou ukládána ve vhodném formátu Parquet, Avro, CSV, ORC... Metadata jsou uložena v Metastore klasická relační DB MySQL, PostgreSQL umístění souborů statistiky práva 25

Hive HQL DDL (Data Definition Language) CREATE [EXTERNAL] TABLE DROP TABLE TRUNCATE TABLE ALTER TABLE DML (Data Manipulation Language) LOAD DATA INSERT INTO TABLE, INSERT OVERWRITE TABLE Query SELECT Nelze obecně UPDATE DELETE (až na specifické případy tabulek s podporou ACID) 26

Loady a inserty dat Hive vytváří pro každou tabulku alespoň jeden soubor pokud je dat hodně, vytvoří se více souborů (konfigurovatelné) Ale pozor při každém INSERT se vytvoří vždy aspoň jeden nový soubor! Nedává tedy smysl INSERTovat záznam po záznamu jako v RDBMS Vždy INSERT z tabulky (např. pomocí externí tabulky) Cíl: můžeme mít mnoho souborů, ale měly by mít ideálně velikost cca 1 HDFS bloku (případně násobku) [typicky 128MB] 27

Partitioning (velmi důležité) Příklad: Data chodí s časovým razítkem a jejich velmi mnoho (např. tel. hovory) Typicky mě ale zajímají jen údaje za konkrétní den/měsíc... Jak se k těmto datům rychle dostat? Partitioning Logické rozdělení struktury tabulky do podadresářů 28

Hive další možnosti Partition s každou partition lze pracovat samostatně, např. DROP, LOAD, INSERT Indexy podpora pro indexy, možnost psát vlastní indexery defaultní indexer indexuje záznam k souboru v tabulce Bucketing rozděluje data do definovaného počtu kyblíčků podle zvoleného sloupce pro konkrétní hodnotu se spočítá hash (snaha o rovnoměrné rozdělení) a na ten se aplikuje modulo počtu kyblíků při dotazu na zvolený sloupec Hive šáhne přímo do správného kyblíku 29

Jak na partitioning a bucketing? Stále platí chceme mít soubory velikosti cca HDFS bloku Příliš mnoho partitions a bucketů může znamenat velmi malé soubory Např. při partioningu podle času je třeba zvážit, zda potřebuji skutečně partition podle jednotlivého dne, anebo stačí na celý měsíc Při návrhu partitions/buckets je třeba být uvážlivý. Prakticky nelze změnit! Změna = kompletní reload dat 30

Hive Execution engine Původně Hive využíval pouze klasický MapReduce pomalé intenzivní zápisy na disk ale paměťově nenáročné V současné době ale servery mají dostatek paměti má smysl hledat i jiné cesty Hive umožňuje nastavit execution engine MapReduce (Hive on MapReduce) Tez (Hive on Tez) Spark (Hive on Spark) Ve výsledku ale vždy trvá určitou dobu (cca desítky sekund) než se celý stroj rozběhne... 31

Impala Nástroj podobný Hive Velmi kompatibilní query language Sdílí Metastore, tj. tabulky vytvoření v Impala jsou viditelné v Hive a (téměř) vice versa Impala je ale rezidentní nemusí spouštět nové procesy, ale nepodporuje YARN na (některé) dotazy umí dát odpověď téměř ihned (velmi záleží na dotazu a na formátu souboru) ideální pro analytické dotazy (?) Omezenější v pestrosti řadu formátů umí jen číst, některé ani nečte nepodporuje bucketing, ani indexy 32

Hive vs Impala Hive je univerzálnější má bohatší sadu funkcí nahrávání dat je poměrně efektivní při práci s petabajty dat asi jediná varianta nové execution engines jsou výrazně rychlejší než MapReduce tlačí Hortonworks Impala uživatelsky přívětivější, rychlejší orientace spíše na výkon, než na feature set tj. můžeš si vybrat jakýkoli formát, pokud je to Parquet+Snappy tlačí Cloudera Jak se rozhodnout? na loady dat nejspíše Hive na analytiku podle použité distribuce... 33

Impala - architektura 34

Hive příklad Extrakty (CSV) Dočasné tabulky Finální tabulky

Hive příklad Vytvoříme externí tabulku vázanou na zdrojové soubory CREATE EXTERNAL TABLE IF NOT EXISTS ap_temp ( ACC_KEY BIGINT, BUS_PROD_TP_ID VARCHAR(255), START_DATE TIMESTAMP) ROW FORMAT DELIMITED FIELDS TERMINATED BY '~' LINES TERMINATED BY '\n' STORED AS TEXTFILE LOCATION /data/input/acc ;

Hive příklad Vytvoříme prázdnou optimalizovanou tabulku CREATE TABLE IF NOT EXISTS ap ( ACC_KEY BIGINT, BUS_PROD_TP_ID VARCHAR(255), START_DATE TIMESTAMP) PARTITIONED BY (BUS_PROD_TP_DESCR VARCHAR(255)) CLUSTERED BY (ACC_KEY) INTO 32 BUCKETS STORED AS ORC tblproperties ("orc.compress"="zlib");

Hive příklad Nahrajeme data do optimalizované tabulky INSERT OVERWRITE TABLE ap PARTITION (BUS_PROD_TP_DESCR) SELECT ACC_KEY, BUS_PROD_TP_ID, START_DATE, BUS_PROD_TP_DESCR FROM ap_temp; DROP TABLE ap_temp;

HBase

HBase https://hbase.apache.org/ NoSQL databáze dotazování de facto programaticky (Java), žádný vhodný SQL jazyk nemá Key/value storage vhodná konstrukce klíče je základ pro použití HBase! Ukládá data na HDFS Velmi rychlý přístup k datům podle klíče na rozdíl Impala a Hive random access! Velmi pomalý full scan Velmi dobrá horizontální škálovatelnost cca 4000-5000 dotazů za sekundu per node Je třeba detailní znalost, při velkém množství dat je třeba správně nakonfigurovat Zajímavost: Využívá Facebook pro messaging 41

HBase architektura https://www.mapr.com/blog/in-depth-look-hbase-architecture 42

HBase použití Vhodné použití jednoduché dotazy, hodně jednoduchých dotazů více se čte, než zapisuje odpověď je třeba velmi rychle (stovky ms) k datům se přistupuje jen podle klíče, příp. počáteční části klíče není třeba načítat velké množství dat sekvenčně Nevhodné analytické dotazy průchod daty/scan pouze zápisy (nebo nepoměrně mnoho zápisů vůči čtení) Základem je konstrukce klíče, podle kterého se dotazuje Lze použít tam, kde je jasně definovaný use-case na HBase nelze snadno stavět obecná/flexibilní řešení 43

HBase příklad https://thenewstack.io/a-look-at-hbase/ Column family skupina sloupců, které spolu souvisí často se načítají společně zajištěno, že v HDFS jsou uloženy společně 44

HBase příklad public class RetriveData{ public static void main(string[] args) throws IOException, Exception{ // Instantiating Configuration class Configuration config = HBaseConfiguration.create(); // Instantiating HTable class HTable table = new HTable(config, "cli"); // Instantiating Get class Get g = new Get(Bytes.toBytes("stack@apache.org")); // Reading the data Result result = table.get(g); // Reading values from Result class object byte [] value = result.getvalue(bytes.tobytes("user_data"),bytes.tobytes("lname")); } } 45

Shrnutí + Co se jinam nevešlo

Schema evolution Změna schématu souboru v průběhu života Typicky chceme přidat sloupec Někdy je i možné přejmenovat sloupec odstranit sloupec (zpravidla jen v metadatech) Podpora schema evolution záleží na formátu souboru i použitém nástroji vždy je třeba nastudovat Podporované formáty alespoň pro přidávání sloupců Avro ORC Parquet 47

Transakce Obecně v Hadoopu téměř není Otázka k diskusi: Je ale vůbec třeba při zpracování velkých dat? Velmi limitovaná podpora: Lze řešit přegenerováním celé tabulky nebo partition ORC + Hive https://orc.apache.org/docs/acid.html https://cwiki.apache.org/confluence/display/hive/hive+transactions HBase ACID na úrovni řádku https://hbase.apache.org/acid-semantics.html

Shrnutí Vždy se rozmýšlet, co je třeba, podle požadovaného použití každý nástroj nabízí jinou míru flexibility! Snažit se maximálně těžit ze sloupcově orientovaných úložišť např. analytické SQL-like úlohy Použít řádkově orientované úložiště tam, kde je nutný full scan Soubory v databázi Hive je třeba mít rozumně velké ideálně velikost HDFS bloku (po kompresi) Partitioning je základ optimalizace v Hive/Impala ale nepřehánět je dobré mít zhruba odhad velikosti partition Hive i Impala jsou dobré nástroje na loady dat Hive na analytiku se rozhodnu podle distribuce (Impala v případě Cloudery) HBase používat jen ve velmi specifických případech vyžaduje znalosti, zkušenosti a testování

Praxe Souborové formáty primárně Parquet, méně často pak Avro na vstupu CSV Komprese Parquet účinnost kolem 50% GZIP vstupní data Hive nahrávání dat, ETL Impala analytické dotazy Pracujeme s tabulkami obsahujícími cca 2-10 mld záznamů/jednotky TB složitý analytický dotaz běží cca 2min. na relační DB stejný dotaz trval 40min.

Diskuze milan.kratochvil@profinit.eu 51

Díky za pozornost Profinit EU, s.r.o. Tychonova 2, 160 00 Praha 6 Telefon + 420 224 316 016 Web LinkedIn Twitter Facebook Youtube www.profinit.eu linkedin.com/company/profinit twitter.com/profinit_eu facebook.com/profinit.eu Profinit EU