SlideShare a Scribd company logo
Wprowadzenie do
Big Data i Apache
Spark
Jakub Nowacki
Agenda
● Wstęp do Big Data
● Wstęp do Hadoop
● Apache Spark
○ Core
○ Streaming
○ SQL
● Podsumowanie
Źródło: http://www.business2community.com
Wstęp do Big Data
Czym jest Big Data?
Big data is high-volume, high-velocity and
high-variety information assets that demand
cost-effective, innovative forms of information
processing for enhanced insight and decision
making.
Gardner http://www.gartner.com/it-
glossary/big-data/
Big Data vs HPC
● Dużo danych
(> 1 TB)
● Mniej obliczeń
● Na tanim sprzęcie
● Odporny na usterki
● Mniej danych
(< 1 TB)
● Dużo obliczeń
● Specjalizowane
klastry i
superkomputery
● Mało odporny na
usterki
High-Performance Computing
Można przetwarzać dużo danych ale
jest to dość drogie przez sprzęt.
Systemy optymalizowane do obliczeń.
Duże i drogie rozproszone dyski i
systemy plików.
Dobra obsługa błędów sprzętu ale nie
zadania.
Czy Hadoop to Big Data?
Hadoop to jedno z narzędzi Big Data
do przetwarzania wsadowego
danych, głównie w postaci
nieustrukturyzowanej.
Hadoop niekiedy używany jest jako
synonim rodziny systemów Big Data.
Hadoop File System (HDFS) to tylko
jeden rozproszony system plików.
Czy NoSQL to Big Data?
NoSQL to tylko nierelacyjny
model bazy danych; są bazy
danych NoSQL dla Big Data jak i
do innych zastosowań.
Wymagają przynajmniej
połowicznej struktury danych.
Zastosowanie modelu
nierelacyjnego pozwala na lepsze
skalowanie, przynajmniej w teorii.
Podział obowiązków w Big Data
Administracja systemami Big Data -
architekci systemowi,
administratorzy
Programowanie systemów Big Data
- architekci oprogramowania,
programiści
Analiza Big Data - stratedzy,
analitycy, data scientists
Big Data - rozwiązanie na wszystko?
Systemy Big Data nie odpowiadają magicznie na pytania -
ludzie muszą je dobrze zadać.
Nie ma jednego dobrego podejścia do Big Data - często
różne problemy wymagają różnych rozwiązań.
Systemy Big Data wymagają inwestycji - trzymanie i
przetwarzanie dużej ilości danych wymaga pieniędzy
Jak sformułować problem Big Data?
1. Czy mamy problem Big Data?
2. Jakie są źródła danych?
3. Jaka jest szybkość tworzenia
danych?
4. Co chcemy osiągnąć?
5. Czy jest jakaś wartość dodana?
Scenariusz 1
Mamy 1 TB historycznych plików firmowych z
różnych działów. Wszystkie pliki są w
formatach które możemy czytać. Należy
przenieść pliki do nowego archiwum i je
skatalogować. Działy mogą prosić o dostęp do
poszczególnych plików; 1 transakcja z
archiwum dziennie.
Scenariusz 2
Firma posiada wiele niezależnych serwerów
aplikacji bez centralnego zarządzania.
Zadaniem jest archiwizacja logów z różnych
serwerów w centralnym i bezpiecznym
repozytorium. Ponadto, statystyki aplikacji z
logów mają być dobowo analizowane i
przestawiane na wspólnym panelu.
Scenariusz 3
Oddziały firmy mają jednostki sprzedażowe,
które wysyłają dzienne raporty w różnych
formatach plików, bez jednolitego systemu.
Ponadto jest dotychczas zgromadzone 10 TB
takich plików. Zadaniem jest gromadzenie tych
plików, wstępna standardowa analiza i
możliwość kierowania zapytań o historyczne
dane sprzedażowe produktów.
Scenariusz 4
Firma ma wiele kont Tweetera dla każdego oddziału, na
których na bieżąco odpowiada się na pytania klientów. Ze
względu na błędy pracowników, w szczytach ruchu zapytań
zdarzały się pominięcia niektórych ważnych pytań. Należy
napisać system który by agregował zapytania ze
wszystkich kont i je odpowiednio delegował. Ponadto,
należy monitorować i prorytetyzować ważne problemy i
klientów.
Apache Hadoop
Czym jest Apache Hadoop?
Apache Hadoop to jedna z
pierwszych otwarto-
źródłowych implementacji
MapReduce.
Powstaje od 2005 r.
Napisana w Javie.
Hadoop jako nazwa stał się
obecnie synonimem rodziny
aplikacji do pracy z Big Data.
Rodzina Hadoop
Źródło: http://hortonworks.com/hdp/
Rodzina Hadoop - wersje (!)
Źródło: http://hortonworks.com/hdp/whats-new/
Dystrybucje Hadoop
Dystrybucje Hadoop dają
zintegrowane środowisko
instalacji i uruchomienia.
Dystrybucje dbają o wersje
poszczególnych elementów
i ich współdziałanie.
Najbardziej znane firmy to:
Cloudera, Hortonworks,
MapR.
Komponenty Apache Hadoop
Obecnie Apache Hadoop
składa się z 4 części:
● biblioteki bazowe
Hadoop
● HaDoop File System
(HDFS)
● Yet Another Resource
Negotiatior (YARN)
● Hadoop MapReduce
HDFS
YARN
MR ...
Hadoop File System
Rozproszony system plików stworzony
specjalnie dla Hadoop i zadań z dużą ilością
danych.
System plików pisany był z myślą o przeciętnym
sprzęcie.
Relatywną nowością jest lokalność danych, tzn
dane znajdują się na tych samych maszynach
co obliczenia lub bardzo blisko.
HDFS jest dedykowanym i domyślnym
systemem plików dla Hadoop ale nie jest przez
niego wymagany.
Architekture HDFS
NameNode
DataNode DataNode DataNode
Trzyma wszystkie metadane związane
z blokami danych
Fizyczny zbiornik na bloki danych w
lokalnej przestrzeni dyskowej
Bloki mają duży rozmiar (typowo 64
lub 128 MB) i są replikowane
Uprawnienia i atrybuty plików HDFS
HDFS oparty jest na modelu POSIX więc ma podobny
system uprawnień i atrybutów plików jak systemy *nix.
HDFS w zasadzie nie wspiera uruchamiania plików, więc
argument x jest ignorowany.
Użytkownik i grupa jest brana z procesu który uruchamia
komendę.
% hdfs dfs -ls .
Found 2 items
drwxr-xr-x - jakub supergroup 0 2014-11-05 10:30 /user/jakub/a_dir
-rw-r--r-- 1 jakub supergroup 234 2014-11-05 10:34 /user/jakub/data.txt
Interfejsy HDFS
HDFS posiada następujące interfejsy: Java
(natywny), HTTP, C, FUSE.
Interfejs HTTP występuje jako tylko do odczytu
HFTP i nowy do odczytu i zapisu WebHDFS.
Filesystem in Userspace (FUSE) jest
standardową integracją systemu plików dla
systemów *nix.
Apache Spark
Apache Spark
Stworzony jako ogólny silnik do
przetwarzania Big Data.
Oparty na modelu Resilient
Distributed Datasets (RDDs).
Możliwość przetwarzania zarówno w
pamięci jak i z dysku; wiele testów
wskazuje, że jest szybszy od
Hadoop.
Natywnie wspiera API w Javie, Scali i
Pythonie.
Możliwe uruchomienie w YARN,
Mesos lub jako osobny klaster.
Historia
2009: Pierwsza Spark wersja napisana jako cześć
doktoratu Matei Zaharia w UC Berkeley AMPLab.
2010: Kod źródłowy został upubliczniony w na licencji BSD.
2013: Spark staje się projektem w inkunatorze Apache i
zmienia licencje na Apache 2.
2014: Spark staje się oficjalnym projektem Apache; firma
Databricks używa Spark do pobicia rekordu świata w
sortowaniu.
Źródło: https://en.wikipedia.org/wiki/Apache_Spark
Spark a Hadoop
Hadoop
● szeroki projekt z
wieloma elementami
● tylko map i reduce
● każdy krok zapisywany
na dysku
● główne API tylko w Javie
● tylko przetwarzanie
wsadowe
Spark
● tylko przetwarzanie
danych
● RDD i wiele transformat
● przetwarzanie głównie w
pamięci
● Java, Python, Scala, R
● przetwarzanie wsadowe
i strumieniowe
Historia MapReduce
Historycznie pierwszą publikacją opisującą model
MapReduce jest MapReduce: Simplified Data Processing
on Large Clusters, Jeffrey Dean and Sanjay Ghemawat.
Algorytm inspirowany funkcjami map i reduce dość
powszechnych w programowaniu funkcyjnym, przez to
autorstwo przypisywane pracownikom Google jest
dyskusyjne.
Apache Hadoop jest jedną z pierwszych i obecnie
najpopularniejszą implementacją, ale nie jedyną.
Przepływ danych w MapRedure
Mapper 1
Mapper 2
Mapper 3
Reducer 1
Reducer 2
Split 1
Split 2
Split 3
Data
Part 1
Part 2
Input Map Shuffle Reduce Output
Działanie MapReduce
Input Map Shuffle Reduce Output
123199901
567200805
645200811
989199933
452199904
224200822
(0,123199901)
(10,567200806)
(20,645200811)
(50,989199933)
(66,452199904)
(72,224200822)
(1999,1)
(2008,6)
(2008,11)
(1999,33)
(1999,4)
(2008,22)
(1999,[1,4, 33])
(2008,[6,11,22])
(1999,38)
(2008,39)
1999,38
2008,39
cat in.txt map.sh sort reduce.sh out.txt
Resilient Distributed Datasets
Model opublikowany w Zaharia et al., Resilient
Distributed Datasets: A Fault-tolerant
Abstraction for In-memory Cluster Computing,
NSDI 2012.
RDD ma poniższe założenia:
● RDD jest częścią rozproszonego zbioru
tylko do odczytu załadowanego do
lokalnej pamięci.
● RDD może być tylko stworzony przez
operację ładowania zbioru z stabilnego
nośnika lub operację na innym RDD; te
operacje nazywane są transformacjami
takimi jak np. map, filter czy join.
Operacje w RDD tworzą skierowany graf
acykliczny. Źródło: Zaharia et al., Resilient Distributed Datasets...
Przetwarzanie w pamięci lub z dysku
Trzy podstawowe tryby
przetrzymywania RDD:
● tylko w pamięci
(MEMORY_ONLY)
● w pamięci i na dysku
(MEMORY_AND_DISK)
● tylko na dysku
(DISK_ONLY) Regresja logistyczna na Hadoop i Spark
Architektura
Warianty uruchomienia
● Wbudowany manager
oparty o Akka, lokalnie jak
i na klastrze
● Apache Mesos,
zaawansowany manager
klastra
● Apache Hadoop YARN,
manager klastra Hadoop
Komponenty Spark
Spark Core
Java vs Scala vs Python (vs R)
Spark napisany jest w Scali i jego
komponenty zarządzające działają w
JVM ale wszystkie języki
uruchamiane są natywnie dla danego
języka.
Szybkość z reguły zależna od języka.
API nie zmienia się znacząco
pomiędzy językami poza drobnymi
zmianami związanymi z modelem i
typami w języku.
Spark - przykład (Java 7)
JavaRDD<String> lines = spark.textFile("hdfs://...");
JavaRDD<String> words = lines.flatMap(new FlatMapFunction<String, String>() {
public Iterable<String> call(String s) { return Arrays.asList(s.split(" ")); }
});
JavaPairRDD<String, Integer> pairs = words.mapToPair(
new PairFunction<String, String, Integer>() {
public Tuple2<String, Integer> call(String s)
{ return new Tuple2<String, Integer>(s, 1); }
});
JavaPairRDD<String, Integer> counts = pairs.reduceByKey(new Function2<Integer, Integer>()
{
public Integer call(Integer a, Integer b) { return a + b; }
});
counts.saveAsTextFile("hdfs://...");
Spark - przykład (Java 8)
JavaRDD<String> lines = spark.textFile("hdfs://...");
JavaRDD<String> words =
lines.flatMap(line -> Arrays.asList(line.split(" ")));
JavaPairRDD<String, Integer> counts =
words.mapToPair(w -> new Tuple2<String, Integer>(w, 1))
.reduceByKey((x, y) -> x + y);
counts.saveAsTextFile("hdfs://...");
Spark - przykład (Scala)
val lines = spark.textFile("hdfs://...")
val counts = lines.flatMap(line => line.split(" "))
.map(word => (word, 1))
.reduceByKey(_ + _)
counts.saveAsTextFile("hdfs://...")
Tworzenie zadania
Zadanie w Spark konfigurowane jest z użyciem
obiektu konfiguracji. Obiekt ten przekazywany
jest do kontekstu Spark (Spark Context)
tworząc zadanie. Wszystkie parametry zadania
przechowywane są w obiekcie kontekstu
Spark.
SparkConf conf = new SparkConf().setAppName(appName).setMaster(master);
JavaSparkContext sc = new JavaSparkContext(conf);
Uruchomienie zadania
Zadania na klaster wysyłane są w postaci JAR
(Scala i Java) lub plików Pythona, ZIP i EGG
(Python).
Przykład komendy uruchamiającej po lewej.
Opcje master:
● local/local[k]/local[*] - uruchomienie lokalne z
jednym, k i maksymalną liczbą wątków
● spark://HOST:PORT - klaster Spark (Akka)
● mesos://HOST:PORT - klaster Mesos
● yarn-client/yarn-cluster - uruchomienie na
YARN w trybie klienta i klastra; klaster jest
skonfigurowany jak wskazane w plikach w
HADOOP_CONF_DIR lub YARN_CONF_DIR
# Java/Scala
./bin/spark-submit 
--class <main-class>
--master <master-url> 
--deploy-mode <deploy-mode> 
--conf <key>=<value> 
... # other options
<application-jar> 
[application-arguments]
# Python
./bin/spark-submit 
--master <master-url> 
... # other options
<application-py> 
[application-arguments]
Rozproszone dane
Spark może otrzymywać
dane z wielu źródeł:
● rozproszonych kolekcji
● plików tekstowych i
innych formatach w tym
wszystkich formatach
Hadoop
● baz danych
● itp.
// Collections
List<Integer> data = Arrays.asList(1, 2, 3, 4, 5);
JavaRDD<Integer> distData = sc.parallelize(data);
// Files
JavaRDD<String> distFile = sc.textFile("data.txt");
JavaRDD<String> distFile = textFile("/my/dir");
JavaRDD<String> distFile = textFile("/my/dir/*.gz")
JavaPairRDD<LongWritable,LongWritable> seqFile =
sc.sequenceFile("data.seq",
LongWritable.class, LongWritable.class);
Operacje na RDD
Na RDD można wykonać wiele operacji, które podzielone
są na:
● transformacje - tworzące nowy zbiór danych (RDD)
● akcje - zwracające wynik do głównego kontekstu
Prezentowane operacje są tylko najważniejszymi; pełną
listę operacji zawiera dokumentacja Spark: http://spark.
apache.org/docs/latest/
Transformacje na RDD
map(func) - na każdym elemencie wykonywana jest funkcja
func
filter(func) - każdy element jest wybierany przez funkcję func
flatMap(func) - na każdym elemencie wykonywana jest
funkcja func zwracająca kolekcje
union(dataset) - suma zbiorów obecnego RDD z dataset
intersection(dataset) - część wspólna obecnego RDD z
dataset
Transformacje na RDD
distinct() - elementy unikalne zbioru RDD
groupByKey() - grupuje wartości po kluczach
reduceByKey(func) - redukuje wartości po kluczach parami
na podstawie zadanej funkcji
sortByKey([ascending]) - sortuje RDD
join(dataset) - wykonuje operacje łączenia z dataset
cogroup(dataset) - łączenie z grupowaniem
Transformacje na RDD
cartesian(dataset) - wykonuje iloczyn kartezjański z dataset,
zwraca wszystkie pary
pipe(command) - wykonaj komendę shell na każdym
elemencie RDD
coalesce(numPartitions) - zmniejsz ilość partycji RDD
repartition(numPartitions) - zmień ilość partycji RDD
dzieląc dane losowo
Akcje na RDD
reduce(func) - agregacja wartości RDD za pomocą funkcji
func
collect() - zamienia RDD na kolekcje
count() - zwraca ilość elementów RDD
first() - zwraca pierwszy element RDD
take(n) - zwraca n elementów RDD
takeSample(withReplacement, n) - zwraca próbkę
danych o rozmiarze n, z lub bez powtórzeń
takeOrdered(n) - zwraca posortowane n elementów
Akcje na RDD
saveAsTextFile(path) - zapisuje plik w postaci tekstowej w
ścieżce path
saveAsSequenceFile(path) - zapisuje plik w postaci
sekwensyjnej w ścieżce path
countByKey() - liczy ilość elementów z tym samym
kluczem
foreach(func) - funkcja func zawierająca zmienną
agregującą wykonywana na każdym elemencie RDD
Współdzielone zmienne
Spark ma dwa typy zmiennych współdzielonych.
Zmienne nadawane (broadcast) są to zmienne tylko do
odczytu, które mogą zawierać wartości często używane:
Broadcast<int[]> broadcastVar =
sc.broadcast(new int[] {1, 2, 3});
broadcastVar.value();
// returns [1, 2, 3]
Współdzielone zmienne
Akumulatory (accumulators) to specjalne zmienne służące
do agregowania wartości:
Accumulator<Integer> accum = sc.accumulator(0);
sc.parallelize(Arrays.asList(1, 2, 3, 4)).
foreach(x -> accum.add(x));
// ...
// 10/09/29 18:41:08 INFO SparkContext: Tasks
finished in 0.317106 s
accum.value(); // returns 10
Utrzymywanie danych w pamięci
Spark ma możliwość utrzymywania danych w pamięci
operacyjnej lub dyskowej. Funkcja ta służy do zachowanie i
ponownego użycia uprzednio wykonywanej operacji.
persist(level) - utrzymuje dane na wybranym poziomie
(storage level), tj w pamięci, na dysku itp
cache() - utrzymuje dane wyłącznie w pamięci operacyjnej
Spark Streaming
Spark Streaming
Rozszerzenie Spark generujące
mikro-zadania wsadowe (micro-
batches), pozwalające na analizę
strumieni danych.
Używa tego samego modelu
zrównoleglenia danych i samego
Spark do analizy.
Zapewnia analizę dokładnie raz
(exactly once) elementu strumienia
danych.
Spark Streaming - przykład (Java 8)
SparkConf sparkConf = new SparkConf().setAppName("JavaNetworkWordCount");
JavaStreamingContext ssc = new JavaStreamingContext(sparkConf, Durations.seconds
(1));
JavaReceiverInputDStream<String> lines = ssc.socketTextStream(
args[0], Integer.parseInt(args[1]), StorageLevels.MEMORY_AND_DISK_SER);
JavaDStream<String> words =
lines.flatMap(line -> Arrays.asList(line.split(" ")));
JavaPairDStream<String, Integer> counts =
words.mapToPair(w -> new Tuple2<String, Integer>(w, 1))
.reduceByKey((x, y) -> x + y);
counts.print();
ssc.start();
ssc.awaitTermination();
Discretized Streams (DStreams)
Wejścia DStreams
Proste źródła
dostępne z kontekstu:
● strumienie plikowe
● gniazdka (sockets)
● aktorzy Akka
Źródła złożone
dostępne jako
biblioteki, m.in.:
● Kafka
● Flume
● Kinesis
● Twitter
Transformacje
Większość
transformacji RDD jest
wspierana w
DStreams, ale nie jest
to zbór pełny.
Dostępne nowe
funkcje np:
● stany
● checkpointy
● funkcje na oknach
danych
Checkpointing
Jako, że strumień jest w teorii nieskończony należy
zapisywać stan na dysk.
Dwa typy danych są zapisywane: metadane strumienia
(konfiguracja itp.) oraz dane.
Dane zapisywane są z funkcji zapisu stanu lub operacji na
oknach.
SparkConf sparkConf = new SparkConf().setAppName("JavaNetworkWordCount");
JavaStreamingContext ssc =
new JavaStreamingContext(sparkConf, Durations.seconds(1));
ssc.checkpoint("checkpoint_dir");
Funkcje na oknach danych
Zapis DStream
Istnieją wbudowane opcje zapisu:
● print() - wyświetla pierwsze 10 elementów na
standardowym wyjściu
● saveAsTextFiles(prefix, [suffix]) - zapis do pliku
tekstowego
● saveAsHadoopFiles(prefix, [suffix]) - zapis do
formatu wspieranego przez Hadoop
● foreachRDD(func) - wykonuje operację zapisu
zdefiniowaną w funkcji func
Spark SQL
Spark SQL
Zadania Spark są generowane na
podstawie zapytań SQL.
Dane mogą być ładowane z wielu
źródeł.
Podobny do Hive i może korzystać z
jego komponentów oraz przetwarzać
istniejące zapytania.
Można także wywoływać zapytania
przez standardowe interfejsy
JDBC/ODBC.
Dobra integracja z narzędziami BI.
Podstawowy przykład (Java)
// SparkContexst sc = ...
SQLContext sqlCtx = new SQLContext(sc);
DataFrame people = sqlCtx.read().parquet("people.parquet");
people.registerTempTable("peope");
DataFrame results = sqlCtx.sql("SELECT * FROM people");
List<String> names = results.javaRDD().map(row -> row.getString(0)).collect();
DataFrame departments = sqlCtx.read().json("departments.json");
departments.registerTempTable("departments");
DataFrame joinResult = sqlCtx.sql("SELECT * FROM people JOIN departments");
Data frame
Wprowadzone w Spark 1.3 ale ze
zmianami w API Spark 1.4.
Data frame jest jak inne RDD ale ma
dodatkową strukturę danych jak
tabela.
Podobna do data frame z R lub
Python Pandas.
Można wykonywać na niej operacje
jak na innym RDD oraz inne operacje
typowe dla tabeli, np select.
Można definiować schemat danych.
// SparkContexst sc = ...
SQLContext sqlCtx = new SQLContext(sc);
DataFrame df = sqlContext.read().json
("people.json");
df.show();
// age name
// null Michael
// 30 Andy
// 19 Justin
df.printSchema();
// root
// |-- age: long (nullable = true)
// |-- name: string (nullable = true)
df.select("name").show();
// name
// Michael
// Andy
// Justin
Integracja z Hive
Spark SQL nie ma wbudowanych
komponentów Hive ale się z nimi
integruje.
Można korzystać z Hcatalog w Spark
lub uruchamiać zadania Hive na
Sparku jako silniku
uruchomieniowym.
HiveQL jest wspierany ale może nie
zawierać najnowszych funkcji.
// SparkContexst sc = ...
HiveContext sqlCtx =
new HiveContext(sc);
DataFrame results = sqlCtx.sql(
"SELECT * FROM people");
List<String> names = results.javaRDD().
map(
row -> row.getString(0));
Pobieranie danych z JDBC
Istnieje możliwość
pobierania danych z
arbitralnego źródła
kompatybilnego z JDBC.
Zaleca się używania tego
rozwiązania zamiast
starszego JdbcRDD, bo
nowe operuje na data
frames.
Map<String, String> options =
new HashMap<String, String>();
options.put("url",
"jdbc:postgresql:dbserver");
options.put("dbtable",
"schema.tablename");
DataFrame jdbcDF = sqlContext.read()
.format("jdbc")
.options(options)
.load();
Spark SQL Thrift server
Spark SQL posiada serwer Thrift
ODBC/JDBC zgodny z HiveServer2.
Pozwala on na połączenie się za
pomocą wszystkich sterowników
JDBC/ODBC do HiveServer2 z Spark
SQL.
W efekcie Spark SQL może
zastępować MapReduce lub Tez w
Hive.
./sbin/start-thriftserver.sh 
--hiveconf 
hive.server2.thrift.port=<port> 
--hiveconf 
hive.server2.thrift.bind.host=<lost> 
--master <master-uri>
...
./bin/beeline
beeline> !connect jdbc:hive2:
//localhost:10000
Co dalej?
https://www.gitbook.
com/book/databricks/databricks-spark-reference-
applications/details
http://spark.apache.org/docs/latest/
Chcesz wiedzieć więcej?
Prowadzimy szkolenia w grupach indywidualne w grupach
4-8 osobowych:
● mamy więcej czasu: szkolenia 2-5 dniowe
● pozwalają na bardziej indywidualną pracę z
uczestnikami
● możliwość dopasowania programu do grupy
● rozwiązujemy i odpowiadamy na indywidualne pytania
Szkolenia dedykowane dla Ciebie
W ofercie szkoleń Big Data i nie tylko, mamy szkolenia dla
architektów, analityków i programistów.
Oferujemy całościowe szkolenia z ekosystemu Hadoop, jak
i szkolenia z poszczególnych elementów.
Szkolenia z baz NoSQL: HBase, Cassandra czy MongoDB.
Szkolenia z analizy danych (data science).
… i wiele innych.
http://www.sages.com.pl/

More Related Content

What's hot

Log Structured Merge Tree
Log Structured Merge TreeLog Structured Merge Tree
Log Structured Merge Tree
University of California, Santa Cruz
 
NoSQL
NoSQLNoSQL
NoSQL
Radu Potop
 
하둡 HDFS 훑어보기
하둡 HDFS 훑어보기하둡 HDFS 훑어보기
하둡 HDFS 훑어보기
beom kyun choi
 
CPU Verification
CPU VerificationCPU Verification
CPU Verification
Ramdas Mozhikunnath
 
Apache hive introduction
Apache hive introductionApache hive introduction
Apache hive introduction
Mahmood Reza Esmaili Zand
 
Chord- A Scalable Peer-to-Peer Lookup Service for Internet Applications
Chord- A Scalable Peer-to-Peer Lookup Service for Internet ApplicationsChord- A Scalable Peer-to-Peer Lookup Service for Internet Applications
Chord- A Scalable Peer-to-Peer Lookup Service for Internet ApplicationsChandan Thakur
 
HTAP Queries
HTAP QueriesHTAP Queries
HTAP Queries
Atif Shaikh
 
História da língua portuguesa
História da língua portuguesaHistória da língua portuguesa
História da língua portuguesama.no.el.ne.ves
 
Multiprocessor
MultiprocessorMultiprocessor
Multiprocessor
Kamal Acharya
 
Verification Strategy for PCI-Express
Verification Strategy for PCI-ExpressVerification Strategy for PCI-Express
Verification Strategy for PCI-ExpressDVClub
 
Saussure vida e obra
Saussure   vida e obraSaussure   vida e obra
Saussure vida e obra
Silvio Reinod Costa
 
Escrita e Interação
Escrita e InteraçãoEscrita e Interação
Escrita e Interação
João Oliveira
 
Apache flume - an Introduction
Apache flume - an IntroductionApache flume - an Introduction
Apache flume - an Introduction
Erik Schmiegelow
 
Gramatica normativa da língua portuquesa
Gramatica normativa da língua portuquesaGramatica normativa da língua portuquesa
Gramatica normativa da língua portuquesa
Eraldofabio de Araujo
 
Introdução à linguística - linguagem, língua e linguística
Introdução à linguística - linguagem, língua e linguísticaIntrodução à linguística - linguagem, língua e linguística
Introdução à linguística - linguagem, língua e linguística
Maria Glalcy Fequetia Dalcim
 
Load Store Execution
Load Store ExecutionLoad Store Execution
Load Store Execution
Ramdas Mozhikunnath
 
Cache coherence
Cache coherenceCache coherence
Cache coherenceEmployee
 

What's hot (20)

Log Structured Merge Tree
Log Structured Merge TreeLog Structured Merge Tree
Log Structured Merge Tree
 
NoSQL
NoSQLNoSQL
NoSQL
 
하둡 HDFS 훑어보기
하둡 HDFS 훑어보기하둡 HDFS 훑어보기
하둡 HDFS 훑어보기
 
CPU Verification
CPU VerificationCPU Verification
CPU Verification
 
NoSql
NoSqlNoSql
NoSql
 
Apache hive introduction
Apache hive introductionApache hive introduction
Apache hive introduction
 
Chord- A Scalable Peer-to-Peer Lookup Service for Internet Applications
Chord- A Scalable Peer-to-Peer Lookup Service for Internet ApplicationsChord- A Scalable Peer-to-Peer Lookup Service for Internet Applications
Chord- A Scalable Peer-to-Peer Lookup Service for Internet Applications
 
Fundamentos da linguística
Fundamentos da linguísticaFundamentos da linguística
Fundamentos da linguística
 
HTAP Queries
HTAP QueriesHTAP Queries
HTAP Queries
 
06 mips-isa
06 mips-isa06 mips-isa
06 mips-isa
 
História da língua portuguesa
História da língua portuguesaHistória da língua portuguesa
História da língua portuguesa
 
Multiprocessor
MultiprocessorMultiprocessor
Multiprocessor
 
Verification Strategy for PCI-Express
Verification Strategy for PCI-ExpressVerification Strategy for PCI-Express
Verification Strategy for PCI-Express
 
Saussure vida e obra
Saussure   vida e obraSaussure   vida e obra
Saussure vida e obra
 
Escrita e Interação
Escrita e InteraçãoEscrita e Interação
Escrita e Interação
 
Apache flume - an Introduction
Apache flume - an IntroductionApache flume - an Introduction
Apache flume - an Introduction
 
Gramatica normativa da língua portuquesa
Gramatica normativa da língua portuquesaGramatica normativa da língua portuquesa
Gramatica normativa da língua portuquesa
 
Introdução à linguística - linguagem, língua e linguística
Introdução à linguística - linguagem, língua e linguísticaIntrodução à linguística - linguagem, língua e linguística
Introdução à linguística - linguagem, língua e linguística
 
Load Store Execution
Load Store ExecutionLoad Store Execution
Load Store Execution
 
Cache coherence
Cache coherenceCache coherence
Cache coherence
 

Viewers also liked

Wprowadzenie do technologi Big Data i Apache Hadoop
Wprowadzenie do technologi Big Data i Apache HadoopWprowadzenie do technologi Big Data i Apache Hadoop
Wprowadzenie do technologi Big Data i Apache Hadoop
Sages
 
Wprowadzenie do technologii Big Data
Wprowadzenie do technologii Big DataWprowadzenie do technologii Big Data
Wprowadzenie do technologii Big Data
Sages
 
Jak zacząć przetwarzanie małych i dużych danych tekstowych?
Jak zacząć przetwarzanie małych i dużych danych tekstowych?Jak zacząć przetwarzanie małych i dużych danych tekstowych?
Jak zacząć przetwarzanie małych i dużych danych tekstowych?
Sages
 
Wprowadzenie do technologii Big Data / Intro to Big Data Ecosystem
Wprowadzenie do technologii Big Data / Intro to Big Data EcosystemWprowadzenie do technologii Big Data / Intro to Big Data Ecosystem
Wprowadzenie do technologii Big Data / Intro to Big Data Ecosystem
Sages
 
Bezpieczne dane w aplikacjach java
Bezpieczne dane w aplikacjach javaBezpieczne dane w aplikacjach java
Bezpieczne dane w aplikacjach java
Sages
 
Wprowadzenie do technologii Puppet
Wprowadzenie do technologii PuppetWprowadzenie do technologii Puppet
Wprowadzenie do technologii Puppet
Sages
 
Zrób dobrze swojej komórce - programowanie urządzeń mobilnych z wykorzystanie...
Zrób dobrze swojej komórce - programowanie urządzeń mobilnych z wykorzystanie...Zrób dobrze swojej komórce - programowanie urządzeń mobilnych z wykorzystanie...
Zrób dobrze swojej komórce - programowanie urządzeń mobilnych z wykorzystanie...
Sages
 
Paweł Kucharski: Oswajamy Słonia czyli po co nam Hadoop
Paweł Kucharski: Oswajamy Słonia czyli po co nam HadoopPaweł Kucharski: Oswajamy Słonia czyli po co nam Hadoop
Paweł Kucharski: Oswajamy Słonia czyli po co nam Hadoop
AnalyticsConf
 
Codepot - Pig i Hive: szybkie wprowadzenie / Pig and Hive crash course
Codepot - Pig i Hive: szybkie wprowadzenie / Pig and Hive crash courseCodepot - Pig i Hive: szybkie wprowadzenie / Pig and Hive crash course
Codepot - Pig i Hive: szybkie wprowadzenie / Pig and Hive crash course
Sages
 
Podstawy AngularJS
Podstawy AngularJSPodstawy AngularJS
Podstawy AngularJS
Sages
 
Technologia Xamarin i wprowadzenie do Windows IoT core
Technologia Xamarin i wprowadzenie do Windows IoT coreTechnologia Xamarin i wprowadzenie do Windows IoT core
Technologia Xamarin i wprowadzenie do Windows IoT core
Sages
 
Budowa elementów GUI za pomocą biblioteki React - szybki start
Budowa elementów GUI za pomocą biblioteki React - szybki startBudowa elementów GUI za pomocą biblioteki React - szybki start
Budowa elementów GUI za pomocą biblioteki React - szybki start
Sages
 
Szybkie wprowadzenie do eksploracji danych z pakietem Weka
Szybkie wprowadzenie do eksploracji danych z pakietem WekaSzybkie wprowadzenie do eksploracji danych z pakietem Weka
Szybkie wprowadzenie do eksploracji danych z pakietem Weka
Sages
 
Apache spark workshop
Apache spark workshopApache spark workshop
Apache spark workshop
Pawel Szulc
 
Architektura aplikacji android
Architektura aplikacji androidArchitektura aplikacji android
Architektura aplikacji android
Sages
 
Michał Dec - Quality in Clouds
Michał Dec - Quality in CloudsMichał Dec - Quality in Clouds
Michał Dec - Quality in Clouds
kraqa
 
Big data w praktyce
Big data w praktyceBig data w praktyce
Big data w praktyce
Agnieszka Zdebiak
 
Vert.x v3 - high performance polyglot application toolkit
Vert.x v3 - high performance  polyglot application toolkitVert.x v3 - high performance  polyglot application toolkit
Vert.x v3 - high performance polyglot application toolkit
Sages
 
[WebMuses] Big data dla zdezorientowanych
[WebMuses] Big data dla zdezorientowanych[WebMuses] Big data dla zdezorientowanych
[WebMuses] Big data dla zdezorientowanych
Przemek Maciolek
 
Warsaw Data Science - Recsys2016 Quick Review
Warsaw Data Science - Recsys2016 Quick ReviewWarsaw Data Science - Recsys2016 Quick Review
Warsaw Data Science - Recsys2016 Quick Review
Bartlomiej Twardowski
 

Viewers also liked (20)

Wprowadzenie do technologi Big Data i Apache Hadoop
Wprowadzenie do technologi Big Data i Apache HadoopWprowadzenie do technologi Big Data i Apache Hadoop
Wprowadzenie do technologi Big Data i Apache Hadoop
 
Wprowadzenie do technologii Big Data
Wprowadzenie do technologii Big DataWprowadzenie do technologii Big Data
Wprowadzenie do technologii Big Data
 
Jak zacząć przetwarzanie małych i dużych danych tekstowych?
Jak zacząć przetwarzanie małych i dużych danych tekstowych?Jak zacząć przetwarzanie małych i dużych danych tekstowych?
Jak zacząć przetwarzanie małych i dużych danych tekstowych?
 
Wprowadzenie do technologii Big Data / Intro to Big Data Ecosystem
Wprowadzenie do technologii Big Data / Intro to Big Data EcosystemWprowadzenie do technologii Big Data / Intro to Big Data Ecosystem
Wprowadzenie do technologii Big Data / Intro to Big Data Ecosystem
 
Bezpieczne dane w aplikacjach java
Bezpieczne dane w aplikacjach javaBezpieczne dane w aplikacjach java
Bezpieczne dane w aplikacjach java
 
Wprowadzenie do technologii Puppet
Wprowadzenie do technologii PuppetWprowadzenie do technologii Puppet
Wprowadzenie do technologii Puppet
 
Zrób dobrze swojej komórce - programowanie urządzeń mobilnych z wykorzystanie...
Zrób dobrze swojej komórce - programowanie urządzeń mobilnych z wykorzystanie...Zrób dobrze swojej komórce - programowanie urządzeń mobilnych z wykorzystanie...
Zrób dobrze swojej komórce - programowanie urządzeń mobilnych z wykorzystanie...
 
Paweł Kucharski: Oswajamy Słonia czyli po co nam Hadoop
Paweł Kucharski: Oswajamy Słonia czyli po co nam HadoopPaweł Kucharski: Oswajamy Słonia czyli po co nam Hadoop
Paweł Kucharski: Oswajamy Słonia czyli po co nam Hadoop
 
Codepot - Pig i Hive: szybkie wprowadzenie / Pig and Hive crash course
Codepot - Pig i Hive: szybkie wprowadzenie / Pig and Hive crash courseCodepot - Pig i Hive: szybkie wprowadzenie / Pig and Hive crash course
Codepot - Pig i Hive: szybkie wprowadzenie / Pig and Hive crash course
 
Podstawy AngularJS
Podstawy AngularJSPodstawy AngularJS
Podstawy AngularJS
 
Technologia Xamarin i wprowadzenie do Windows IoT core
Technologia Xamarin i wprowadzenie do Windows IoT coreTechnologia Xamarin i wprowadzenie do Windows IoT core
Technologia Xamarin i wprowadzenie do Windows IoT core
 
Budowa elementów GUI za pomocą biblioteki React - szybki start
Budowa elementów GUI za pomocą biblioteki React - szybki startBudowa elementów GUI za pomocą biblioteki React - szybki start
Budowa elementów GUI za pomocą biblioteki React - szybki start
 
Szybkie wprowadzenie do eksploracji danych z pakietem Weka
Szybkie wprowadzenie do eksploracji danych z pakietem WekaSzybkie wprowadzenie do eksploracji danych z pakietem Weka
Szybkie wprowadzenie do eksploracji danych z pakietem Weka
 
Apache spark workshop
Apache spark workshopApache spark workshop
Apache spark workshop
 
Architektura aplikacji android
Architektura aplikacji androidArchitektura aplikacji android
Architektura aplikacji android
 
Michał Dec - Quality in Clouds
Michał Dec - Quality in CloudsMichał Dec - Quality in Clouds
Michał Dec - Quality in Clouds
 
Big data w praktyce
Big data w praktyceBig data w praktyce
Big data w praktyce
 
Vert.x v3 - high performance polyglot application toolkit
Vert.x v3 - high performance  polyglot application toolkitVert.x v3 - high performance  polyglot application toolkit
Vert.x v3 - high performance polyglot application toolkit
 
[WebMuses] Big data dla zdezorientowanych
[WebMuses] Big data dla zdezorientowanych[WebMuses] Big data dla zdezorientowanych
[WebMuses] Big data dla zdezorientowanych
 
Warsaw Data Science - Recsys2016 Quick Review
Warsaw Data Science - Recsys2016 Quick ReviewWarsaw Data Science - Recsys2016 Quick Review
Warsaw Data Science - Recsys2016 Quick Review
 

Similar to Wprowadzenie do Big Data i Apache Spark

[#2] architektura - IBM Integrated Analytics System
[#2] architektura - IBM Integrated Analytics System[#2] architektura - IBM Integrated Analytics System
[#2] architektura - IBM Integrated Analytics System
Artur Wronski
 
PLNOG16: Integracja Ceph w OpenStack - status i przyszłość, Paweł Stefański
PLNOG16: Integracja Ceph w OpenStack - status i przyszłość, Paweł StefańskiPLNOG16: Integracja Ceph w OpenStack - status i przyszłość, Paweł Stefański
PLNOG16: Integracja Ceph w OpenStack - status i przyszłość, Paweł Stefański
PROIDEA
 
infraxstructure: Marcin Kaczmarek "SDS - Storage jako aplikacja."
infraxstructure: Marcin Kaczmarek  "SDS - Storage jako aplikacja."infraxstructure: Marcin Kaczmarek  "SDS - Storage jako aplikacja."
infraxstructure: Marcin Kaczmarek "SDS - Storage jako aplikacja."
PROIDEA
 
[#4] spark - IBM Integrated Analytics System
[#4] spark - IBM Integrated Analytics System[#4] spark - IBM Integrated Analytics System
[#4] spark - IBM Integrated Analytics System
Artur Wronski
 
Rozproszona analiza danych w Hadoop - wprowadzenie
Rozproszona analiza danych w Hadoop - wprowadzenieRozproszona analiza danych w Hadoop - wprowadzenie
Rozproszona analiza danych w Hadoop - wprowadzenie
Łukasz Król
 
“Dziesięć serwerów poproszę!“, czyli co może Ci zaoferować definiowanie infra...
“Dziesięć serwerów poproszę!“, czyli co może Ci zaoferować definiowanie infra...“Dziesięć serwerów poproszę!“, czyli co może Ci zaoferować definiowanie infra...
“Dziesięć serwerów poproszę!“, czyli co może Ci zaoferować definiowanie infra...
The Software House
 
PHP@Docker - w produkcji
PHP@Docker - w produkcjiPHP@Docker - w produkcji
PHP@Docker - w produkcji
Marcin Kurzyna
 
HPE ProLiant DL300 - serwery rackowe
HPE ProLiant DL300 - serwery rackoweHPE ProLiant DL300 - serwery rackowe
HPE ProLiant DL300 - serwery rackowe
hpepolska
 
Exadata i Oracle Database Appliance - infrastruktury z perspektywami
Exadata i Oracle Database Appliance - infrastruktury z perspektywamiExadata i Oracle Database Appliance - infrastruktury z perspektywami
Exadata i Oracle Database Appliance - infrastruktury z perspektywami
OPITZ CONSULTING Polska
 
Tomasz Kopacz MTS 2012 Azure - Co i kiedy użyć (IaaS vs paas vshybrid cloud v...
Tomasz Kopacz MTS 2012 Azure - Co i kiedy użyć (IaaS vs paas vshybrid cloud v...Tomasz Kopacz MTS 2012 Azure - Co i kiedy użyć (IaaS vs paas vshybrid cloud v...
Tomasz Kopacz MTS 2012 Azure - Co i kiedy użyć (IaaS vs paas vshybrid cloud v...Tomasz Kopacz
 
Firebird in 2 minutes (polish)
Firebird in 2 minutes (polish)Firebird in 2 minutes (polish)
Firebird in 2 minutes (polish)Mind The Firebird
 
Skalowalność Magento - MMPL13
Skalowalność Magento - MMPL13Skalowalność Magento - MMPL13
Skalowalność Magento - MMPL13Divante
 
The story of GOG.com Cache - 4developers 2014 ( PL )
The story of GOG.com Cache - 4developers 2014 ( PL )The story of GOG.com Cache - 4developers 2014 ( PL )
The story of GOG.com Cache - 4developers 2014 ( PL )
GOG.com dev team
 
SQLDay2013_PawełPotasiński_ParallelDataWareHouse
SQLDay2013_PawełPotasiński_ParallelDataWareHouseSQLDay2013_PawełPotasiński_ParallelDataWareHouse
SQLDay2013_PawełPotasiński_ParallelDataWareHousePolish SQL Server User Group
 
[WHUG] Wielki brat patrzy - czyli jak zbieramy dane o użytkownikach allegro
[WHUG] Wielki brat patrzy - czyli jak zbieramy dane o użytkownikach allegro[WHUG] Wielki brat patrzy - czyli jak zbieramy dane o użytkownikach allegro
[WHUG] Wielki brat patrzy - czyli jak zbieramy dane o użytkownikach allegro
allegro.tech
 
Podstawy programowania w Drupalu - Drupal idzie na studia - Jarosław Sobiecki
Podstawy programowania w Drupalu - Drupal idzie na studia - Jarosław SobieckiPodstawy programowania w Drupalu - Drupal idzie na studia - Jarosław Sobiecki
Podstawy programowania w Drupalu - Drupal idzie na studia - Jarosław Sobiecki
Grzegorz Bartman
 
[#1] z kilku perspektyw - IBM Integrated Analytics System
[#1] z kilku perspektyw - IBM Integrated Analytics System[#1] z kilku perspektyw - IBM Integrated Analytics System
[#1] z kilku perspektyw - IBM Integrated Analytics System
Artur Wronski
 
HPE Compute prezentacja 3.11.2015
HPE Compute prezentacja 3.11.2015HPE Compute prezentacja 3.11.2015
HPE Compute prezentacja 3.11.2015
hpepolska
 
HPE Compute prezentacja 3.11.2015
HPE Compute prezentacja 3.11.2015HPE Compute prezentacja 3.11.2015
HPE Compute prezentacja 3.11.2015
Fast Forward Communication
 

Similar to Wprowadzenie do Big Data i Apache Spark (20)

[#2] architektura - IBM Integrated Analytics System
[#2] architektura - IBM Integrated Analytics System[#2] architektura - IBM Integrated Analytics System
[#2] architektura - IBM Integrated Analytics System
 
PLNOG16: Integracja Ceph w OpenStack - status i przyszłość, Paweł Stefański
PLNOG16: Integracja Ceph w OpenStack - status i przyszłość, Paweł StefańskiPLNOG16: Integracja Ceph w OpenStack - status i przyszłość, Paweł Stefański
PLNOG16: Integracja Ceph w OpenStack - status i przyszłość, Paweł Stefański
 
infraxstructure: Marcin Kaczmarek "SDS - Storage jako aplikacja."
infraxstructure: Marcin Kaczmarek  "SDS - Storage jako aplikacja."infraxstructure: Marcin Kaczmarek  "SDS - Storage jako aplikacja."
infraxstructure: Marcin Kaczmarek "SDS - Storage jako aplikacja."
 
[#4] spark - IBM Integrated Analytics System
[#4] spark - IBM Integrated Analytics System[#4] spark - IBM Integrated Analytics System
[#4] spark - IBM Integrated Analytics System
 
Rozproszona analiza danych w Hadoop - wprowadzenie
Rozproszona analiza danych w Hadoop - wprowadzenieRozproszona analiza danych w Hadoop - wprowadzenie
Rozproszona analiza danych w Hadoop - wprowadzenie
 
“Dziesięć serwerów poproszę!“, czyli co może Ci zaoferować definiowanie infra...
“Dziesięć serwerów poproszę!“, czyli co może Ci zaoferować definiowanie infra...“Dziesięć serwerów poproszę!“, czyli co może Ci zaoferować definiowanie infra...
“Dziesięć serwerów poproszę!“, czyli co może Ci zaoferować definiowanie infra...
 
PHP@Docker - w produkcji
PHP@Docker - w produkcjiPHP@Docker - w produkcji
PHP@Docker - w produkcji
 
HPE ProLiant DL300 - serwery rackowe
HPE ProLiant DL300 - serwery rackoweHPE ProLiant DL300 - serwery rackowe
HPE ProLiant DL300 - serwery rackowe
 
Exadata i Oracle Database Appliance - infrastruktury z perspektywami
Exadata i Oracle Database Appliance - infrastruktury z perspektywamiExadata i Oracle Database Appliance - infrastruktury z perspektywami
Exadata i Oracle Database Appliance - infrastruktury z perspektywami
 
Tomasz Kopacz MTS 2012 Azure - Co i kiedy użyć (IaaS vs paas vshybrid cloud v...
Tomasz Kopacz MTS 2012 Azure - Co i kiedy użyć (IaaS vs paas vshybrid cloud v...Tomasz Kopacz MTS 2012 Azure - Co i kiedy użyć (IaaS vs paas vshybrid cloud v...
Tomasz Kopacz MTS 2012 Azure - Co i kiedy użyć (IaaS vs paas vshybrid cloud v...
 
Firebird in 2 minutes (polish)
Firebird in 2 minutes (polish)Firebird in 2 minutes (polish)
Firebird in 2 minutes (polish)
 
Skalowalność Magento - MMPL13
Skalowalność Magento - MMPL13Skalowalność Magento - MMPL13
Skalowalność Magento - MMPL13
 
The story of GOG.com Cache - 4developers 2014 ( PL )
The story of GOG.com Cache - 4developers 2014 ( PL )The story of GOG.com Cache - 4developers 2014 ( PL )
The story of GOG.com Cache - 4developers 2014 ( PL )
 
SQLDay2013_PawełPotasiński_ParallelDataWareHouse
SQLDay2013_PawełPotasiński_ParallelDataWareHouseSQLDay2013_PawełPotasiński_ParallelDataWareHouse
SQLDay2013_PawełPotasiński_ParallelDataWareHouse
 
Hadoop w NK.pl
Hadoop w NK.plHadoop w NK.pl
Hadoop w NK.pl
 
[WHUG] Wielki brat patrzy - czyli jak zbieramy dane o użytkownikach allegro
[WHUG] Wielki brat patrzy - czyli jak zbieramy dane o użytkownikach allegro[WHUG] Wielki brat patrzy - czyli jak zbieramy dane o użytkownikach allegro
[WHUG] Wielki brat patrzy - czyli jak zbieramy dane o użytkownikach allegro
 
Podstawy programowania w Drupalu - Drupal idzie na studia - Jarosław Sobiecki
Podstawy programowania w Drupalu - Drupal idzie na studia - Jarosław SobieckiPodstawy programowania w Drupalu - Drupal idzie na studia - Jarosław Sobiecki
Podstawy programowania w Drupalu - Drupal idzie na studia - Jarosław Sobiecki
 
[#1] z kilku perspektyw - IBM Integrated Analytics System
[#1] z kilku perspektyw - IBM Integrated Analytics System[#1] z kilku perspektyw - IBM Integrated Analytics System
[#1] z kilku perspektyw - IBM Integrated Analytics System
 
HPE Compute prezentacja 3.11.2015
HPE Compute prezentacja 3.11.2015HPE Compute prezentacja 3.11.2015
HPE Compute prezentacja 3.11.2015
 
HPE Compute prezentacja 3.11.2015
HPE Compute prezentacja 3.11.2015HPE Compute prezentacja 3.11.2015
HPE Compute prezentacja 3.11.2015
 

More from Sages

Python szybki start
Python   szybki startPython   szybki start
Python szybki start
Sages
 
Budowanie rozwiązań serverless w chmurze Azure
Budowanie rozwiązań serverless w chmurze AzureBudowanie rozwiązań serverless w chmurze Azure
Budowanie rozwiązań serverless w chmurze Azure
Sages
 
Docker praktyczne podstawy
Docker  praktyczne podstawyDocker  praktyczne podstawy
Docker praktyczne podstawy
Sages
 
Angular 4 pragmatycznie
Angular 4 pragmatycznieAngular 4 pragmatycznie
Angular 4 pragmatycznie
Sages
 
Jak działa blockchain?
Jak działa blockchain?Jak działa blockchain?
Jak działa blockchain?
Sages
 
Qgis szybki start
Qgis szybki startQgis szybki start
Qgis szybki start
Sages
 
Architektura SOA - wstęp
Architektura SOA - wstępArchitektura SOA - wstęp
Architektura SOA - wstęp
Sages
 

More from Sages (7)

Python szybki start
Python   szybki startPython   szybki start
Python szybki start
 
Budowanie rozwiązań serverless w chmurze Azure
Budowanie rozwiązań serverless w chmurze AzureBudowanie rozwiązań serverless w chmurze Azure
Budowanie rozwiązań serverless w chmurze Azure
 
Docker praktyczne podstawy
Docker  praktyczne podstawyDocker  praktyczne podstawy
Docker praktyczne podstawy
 
Angular 4 pragmatycznie
Angular 4 pragmatycznieAngular 4 pragmatycznie
Angular 4 pragmatycznie
 
Jak działa blockchain?
Jak działa blockchain?Jak działa blockchain?
Jak działa blockchain?
 
Qgis szybki start
Qgis szybki startQgis szybki start
Qgis szybki start
 
Architektura SOA - wstęp
Architektura SOA - wstępArchitektura SOA - wstęp
Architektura SOA - wstęp
 

Wprowadzenie do Big Data i Apache Spark

  • 1. Wprowadzenie do Big Data i Apache Spark Jakub Nowacki
  • 2. Agenda ● Wstęp do Big Data ● Wstęp do Hadoop ● Apache Spark ○ Core ○ Streaming ○ SQL ● Podsumowanie Źródło: http://www.business2community.com
  • 4. Czym jest Big Data? Big data is high-volume, high-velocity and high-variety information assets that demand cost-effective, innovative forms of information processing for enhanced insight and decision making. Gardner http://www.gartner.com/it- glossary/big-data/
  • 5. Big Data vs HPC ● Dużo danych (> 1 TB) ● Mniej obliczeń ● Na tanim sprzęcie ● Odporny na usterki ● Mniej danych (< 1 TB) ● Dużo obliczeń ● Specjalizowane klastry i superkomputery ● Mało odporny na usterki
  • 6. High-Performance Computing Można przetwarzać dużo danych ale jest to dość drogie przez sprzęt. Systemy optymalizowane do obliczeń. Duże i drogie rozproszone dyski i systemy plików. Dobra obsługa błędów sprzętu ale nie zadania.
  • 7. Czy Hadoop to Big Data? Hadoop to jedno z narzędzi Big Data do przetwarzania wsadowego danych, głównie w postaci nieustrukturyzowanej. Hadoop niekiedy używany jest jako synonim rodziny systemów Big Data. Hadoop File System (HDFS) to tylko jeden rozproszony system plików.
  • 8. Czy NoSQL to Big Data? NoSQL to tylko nierelacyjny model bazy danych; są bazy danych NoSQL dla Big Data jak i do innych zastosowań. Wymagają przynajmniej połowicznej struktury danych. Zastosowanie modelu nierelacyjnego pozwala na lepsze skalowanie, przynajmniej w teorii.
  • 9. Podział obowiązków w Big Data Administracja systemami Big Data - architekci systemowi, administratorzy Programowanie systemów Big Data - architekci oprogramowania, programiści Analiza Big Data - stratedzy, analitycy, data scientists
  • 10. Big Data - rozwiązanie na wszystko? Systemy Big Data nie odpowiadają magicznie na pytania - ludzie muszą je dobrze zadać. Nie ma jednego dobrego podejścia do Big Data - często różne problemy wymagają różnych rozwiązań. Systemy Big Data wymagają inwestycji - trzymanie i przetwarzanie dużej ilości danych wymaga pieniędzy
  • 11. Jak sformułować problem Big Data? 1. Czy mamy problem Big Data? 2. Jakie są źródła danych? 3. Jaka jest szybkość tworzenia danych? 4. Co chcemy osiągnąć? 5. Czy jest jakaś wartość dodana?
  • 12. Scenariusz 1 Mamy 1 TB historycznych plików firmowych z różnych działów. Wszystkie pliki są w formatach które możemy czytać. Należy przenieść pliki do nowego archiwum i je skatalogować. Działy mogą prosić o dostęp do poszczególnych plików; 1 transakcja z archiwum dziennie.
  • 13. Scenariusz 2 Firma posiada wiele niezależnych serwerów aplikacji bez centralnego zarządzania. Zadaniem jest archiwizacja logów z różnych serwerów w centralnym i bezpiecznym repozytorium. Ponadto, statystyki aplikacji z logów mają być dobowo analizowane i przestawiane na wspólnym panelu.
  • 14. Scenariusz 3 Oddziały firmy mają jednostki sprzedażowe, które wysyłają dzienne raporty w różnych formatach plików, bez jednolitego systemu. Ponadto jest dotychczas zgromadzone 10 TB takich plików. Zadaniem jest gromadzenie tych plików, wstępna standardowa analiza i możliwość kierowania zapytań o historyczne dane sprzedażowe produktów.
  • 15. Scenariusz 4 Firma ma wiele kont Tweetera dla każdego oddziału, na których na bieżąco odpowiada się na pytania klientów. Ze względu na błędy pracowników, w szczytach ruchu zapytań zdarzały się pominięcia niektórych ważnych pytań. Należy napisać system który by agregował zapytania ze wszystkich kont i je odpowiednio delegował. Ponadto, należy monitorować i prorytetyzować ważne problemy i klientów.
  • 17. Czym jest Apache Hadoop? Apache Hadoop to jedna z pierwszych otwarto- źródłowych implementacji MapReduce. Powstaje od 2005 r. Napisana w Javie. Hadoop jako nazwa stał się obecnie synonimem rodziny aplikacji do pracy z Big Data.
  • 19. Rodzina Hadoop - wersje (!) Źródło: http://hortonworks.com/hdp/whats-new/
  • 20. Dystrybucje Hadoop Dystrybucje Hadoop dają zintegrowane środowisko instalacji i uruchomienia. Dystrybucje dbają o wersje poszczególnych elementów i ich współdziałanie. Najbardziej znane firmy to: Cloudera, Hortonworks, MapR.
  • 21. Komponenty Apache Hadoop Obecnie Apache Hadoop składa się z 4 części: ● biblioteki bazowe Hadoop ● HaDoop File System (HDFS) ● Yet Another Resource Negotiatior (YARN) ● Hadoop MapReduce HDFS YARN MR ...
  • 22. Hadoop File System Rozproszony system plików stworzony specjalnie dla Hadoop i zadań z dużą ilością danych. System plików pisany był z myślą o przeciętnym sprzęcie. Relatywną nowością jest lokalność danych, tzn dane znajdują się na tych samych maszynach co obliczenia lub bardzo blisko. HDFS jest dedykowanym i domyślnym systemem plików dla Hadoop ale nie jest przez niego wymagany.
  • 23. Architekture HDFS NameNode DataNode DataNode DataNode Trzyma wszystkie metadane związane z blokami danych Fizyczny zbiornik na bloki danych w lokalnej przestrzeni dyskowej Bloki mają duży rozmiar (typowo 64 lub 128 MB) i są replikowane
  • 24. Uprawnienia i atrybuty plików HDFS HDFS oparty jest na modelu POSIX więc ma podobny system uprawnień i atrybutów plików jak systemy *nix. HDFS w zasadzie nie wspiera uruchamiania plików, więc argument x jest ignorowany. Użytkownik i grupa jest brana z procesu który uruchamia komendę. % hdfs dfs -ls . Found 2 items drwxr-xr-x - jakub supergroup 0 2014-11-05 10:30 /user/jakub/a_dir -rw-r--r-- 1 jakub supergroup 234 2014-11-05 10:34 /user/jakub/data.txt
  • 25. Interfejsy HDFS HDFS posiada następujące interfejsy: Java (natywny), HTTP, C, FUSE. Interfejs HTTP występuje jako tylko do odczytu HFTP i nowy do odczytu i zapisu WebHDFS. Filesystem in Userspace (FUSE) jest standardową integracją systemu plików dla systemów *nix.
  • 27. Apache Spark Stworzony jako ogólny silnik do przetwarzania Big Data. Oparty na modelu Resilient Distributed Datasets (RDDs). Możliwość przetwarzania zarówno w pamięci jak i z dysku; wiele testów wskazuje, że jest szybszy od Hadoop. Natywnie wspiera API w Javie, Scali i Pythonie. Możliwe uruchomienie w YARN, Mesos lub jako osobny klaster.
  • 28. Historia 2009: Pierwsza Spark wersja napisana jako cześć doktoratu Matei Zaharia w UC Berkeley AMPLab. 2010: Kod źródłowy został upubliczniony w na licencji BSD. 2013: Spark staje się projektem w inkunatorze Apache i zmienia licencje na Apache 2. 2014: Spark staje się oficjalnym projektem Apache; firma Databricks używa Spark do pobicia rekordu świata w sortowaniu. Źródło: https://en.wikipedia.org/wiki/Apache_Spark
  • 29. Spark a Hadoop Hadoop ● szeroki projekt z wieloma elementami ● tylko map i reduce ● każdy krok zapisywany na dysku ● główne API tylko w Javie ● tylko przetwarzanie wsadowe Spark ● tylko przetwarzanie danych ● RDD i wiele transformat ● przetwarzanie głównie w pamięci ● Java, Python, Scala, R ● przetwarzanie wsadowe i strumieniowe
  • 30. Historia MapReduce Historycznie pierwszą publikacją opisującą model MapReduce jest MapReduce: Simplified Data Processing on Large Clusters, Jeffrey Dean and Sanjay Ghemawat. Algorytm inspirowany funkcjami map i reduce dość powszechnych w programowaniu funkcyjnym, przez to autorstwo przypisywane pracownikom Google jest dyskusyjne. Apache Hadoop jest jedną z pierwszych i obecnie najpopularniejszą implementacją, ale nie jedyną.
  • 31. Przepływ danych w MapRedure Mapper 1 Mapper 2 Mapper 3 Reducer 1 Reducer 2 Split 1 Split 2 Split 3 Data Part 1 Part 2 Input Map Shuffle Reduce Output
  • 32. Działanie MapReduce Input Map Shuffle Reduce Output 123199901 567200805 645200811 989199933 452199904 224200822 (0,123199901) (10,567200806) (20,645200811) (50,989199933) (66,452199904) (72,224200822) (1999,1) (2008,6) (2008,11) (1999,33) (1999,4) (2008,22) (1999,[1,4, 33]) (2008,[6,11,22]) (1999,38) (2008,39) 1999,38 2008,39 cat in.txt map.sh sort reduce.sh out.txt
  • 33. Resilient Distributed Datasets Model opublikowany w Zaharia et al., Resilient Distributed Datasets: A Fault-tolerant Abstraction for In-memory Cluster Computing, NSDI 2012. RDD ma poniższe założenia: ● RDD jest częścią rozproszonego zbioru tylko do odczytu załadowanego do lokalnej pamięci. ● RDD może być tylko stworzony przez operację ładowania zbioru z stabilnego nośnika lub operację na innym RDD; te operacje nazywane są transformacjami takimi jak np. map, filter czy join. Operacje w RDD tworzą skierowany graf acykliczny. Źródło: Zaharia et al., Resilient Distributed Datasets...
  • 34. Przetwarzanie w pamięci lub z dysku Trzy podstawowe tryby przetrzymywania RDD: ● tylko w pamięci (MEMORY_ONLY) ● w pamięci i na dysku (MEMORY_AND_DISK) ● tylko na dysku (DISK_ONLY) Regresja logistyczna na Hadoop i Spark
  • 36. Warianty uruchomienia ● Wbudowany manager oparty o Akka, lokalnie jak i na klastrze ● Apache Mesos, zaawansowany manager klastra ● Apache Hadoop YARN, manager klastra Hadoop
  • 39. Java vs Scala vs Python (vs R) Spark napisany jest w Scali i jego komponenty zarządzające działają w JVM ale wszystkie języki uruchamiane są natywnie dla danego języka. Szybkość z reguły zależna od języka. API nie zmienia się znacząco pomiędzy językami poza drobnymi zmianami związanymi z modelem i typami w języku.
  • 40. Spark - przykład (Java 7) JavaRDD<String> lines = spark.textFile("hdfs://..."); JavaRDD<String> words = lines.flatMap(new FlatMapFunction<String, String>() { public Iterable<String> call(String s) { return Arrays.asList(s.split(" ")); } }); JavaPairRDD<String, Integer> pairs = words.mapToPair( new PairFunction<String, String, Integer>() { public Tuple2<String, Integer> call(String s) { return new Tuple2<String, Integer>(s, 1); } }); JavaPairRDD<String, Integer> counts = pairs.reduceByKey(new Function2<Integer, Integer>() { public Integer call(Integer a, Integer b) { return a + b; } }); counts.saveAsTextFile("hdfs://...");
  • 41. Spark - przykład (Java 8) JavaRDD<String> lines = spark.textFile("hdfs://..."); JavaRDD<String> words = lines.flatMap(line -> Arrays.asList(line.split(" "))); JavaPairRDD<String, Integer> counts = words.mapToPair(w -> new Tuple2<String, Integer>(w, 1)) .reduceByKey((x, y) -> x + y); counts.saveAsTextFile("hdfs://...");
  • 42. Spark - przykład (Scala) val lines = spark.textFile("hdfs://...") val counts = lines.flatMap(line => line.split(" ")) .map(word => (word, 1)) .reduceByKey(_ + _) counts.saveAsTextFile("hdfs://...")
  • 43. Tworzenie zadania Zadanie w Spark konfigurowane jest z użyciem obiektu konfiguracji. Obiekt ten przekazywany jest do kontekstu Spark (Spark Context) tworząc zadanie. Wszystkie parametry zadania przechowywane są w obiekcie kontekstu Spark. SparkConf conf = new SparkConf().setAppName(appName).setMaster(master); JavaSparkContext sc = new JavaSparkContext(conf);
  • 44. Uruchomienie zadania Zadania na klaster wysyłane są w postaci JAR (Scala i Java) lub plików Pythona, ZIP i EGG (Python). Przykład komendy uruchamiającej po lewej. Opcje master: ● local/local[k]/local[*] - uruchomienie lokalne z jednym, k i maksymalną liczbą wątków ● spark://HOST:PORT - klaster Spark (Akka) ● mesos://HOST:PORT - klaster Mesos ● yarn-client/yarn-cluster - uruchomienie na YARN w trybie klienta i klastra; klaster jest skonfigurowany jak wskazane w plikach w HADOOP_CONF_DIR lub YARN_CONF_DIR # Java/Scala ./bin/spark-submit --class <main-class> --master <master-url> --deploy-mode <deploy-mode> --conf <key>=<value> ... # other options <application-jar> [application-arguments] # Python ./bin/spark-submit --master <master-url> ... # other options <application-py> [application-arguments]
  • 45. Rozproszone dane Spark może otrzymywać dane z wielu źródeł: ● rozproszonych kolekcji ● plików tekstowych i innych formatach w tym wszystkich formatach Hadoop ● baz danych ● itp. // Collections List<Integer> data = Arrays.asList(1, 2, 3, 4, 5); JavaRDD<Integer> distData = sc.parallelize(data); // Files JavaRDD<String> distFile = sc.textFile("data.txt"); JavaRDD<String> distFile = textFile("/my/dir"); JavaRDD<String> distFile = textFile("/my/dir/*.gz") JavaPairRDD<LongWritable,LongWritable> seqFile = sc.sequenceFile("data.seq", LongWritable.class, LongWritable.class);
  • 46. Operacje na RDD Na RDD można wykonać wiele operacji, które podzielone są na: ● transformacje - tworzące nowy zbiór danych (RDD) ● akcje - zwracające wynik do głównego kontekstu Prezentowane operacje są tylko najważniejszymi; pełną listę operacji zawiera dokumentacja Spark: http://spark. apache.org/docs/latest/
  • 47. Transformacje na RDD map(func) - na każdym elemencie wykonywana jest funkcja func filter(func) - każdy element jest wybierany przez funkcję func flatMap(func) - na każdym elemencie wykonywana jest funkcja func zwracająca kolekcje union(dataset) - suma zbiorów obecnego RDD z dataset intersection(dataset) - część wspólna obecnego RDD z dataset
  • 48. Transformacje na RDD distinct() - elementy unikalne zbioru RDD groupByKey() - grupuje wartości po kluczach reduceByKey(func) - redukuje wartości po kluczach parami na podstawie zadanej funkcji sortByKey([ascending]) - sortuje RDD join(dataset) - wykonuje operacje łączenia z dataset cogroup(dataset) - łączenie z grupowaniem
  • 49. Transformacje na RDD cartesian(dataset) - wykonuje iloczyn kartezjański z dataset, zwraca wszystkie pary pipe(command) - wykonaj komendę shell na każdym elemencie RDD coalesce(numPartitions) - zmniejsz ilość partycji RDD repartition(numPartitions) - zmień ilość partycji RDD dzieląc dane losowo
  • 50. Akcje na RDD reduce(func) - agregacja wartości RDD za pomocą funkcji func collect() - zamienia RDD na kolekcje count() - zwraca ilość elementów RDD first() - zwraca pierwszy element RDD take(n) - zwraca n elementów RDD takeSample(withReplacement, n) - zwraca próbkę danych o rozmiarze n, z lub bez powtórzeń takeOrdered(n) - zwraca posortowane n elementów
  • 51. Akcje na RDD saveAsTextFile(path) - zapisuje plik w postaci tekstowej w ścieżce path saveAsSequenceFile(path) - zapisuje plik w postaci sekwensyjnej w ścieżce path countByKey() - liczy ilość elementów z tym samym kluczem foreach(func) - funkcja func zawierająca zmienną agregującą wykonywana na każdym elemencie RDD
  • 52. Współdzielone zmienne Spark ma dwa typy zmiennych współdzielonych. Zmienne nadawane (broadcast) są to zmienne tylko do odczytu, które mogą zawierać wartości często używane: Broadcast<int[]> broadcastVar = sc.broadcast(new int[] {1, 2, 3}); broadcastVar.value(); // returns [1, 2, 3]
  • 53. Współdzielone zmienne Akumulatory (accumulators) to specjalne zmienne służące do agregowania wartości: Accumulator<Integer> accum = sc.accumulator(0); sc.parallelize(Arrays.asList(1, 2, 3, 4)). foreach(x -> accum.add(x)); // ... // 10/09/29 18:41:08 INFO SparkContext: Tasks finished in 0.317106 s accum.value(); // returns 10
  • 54. Utrzymywanie danych w pamięci Spark ma możliwość utrzymywania danych w pamięci operacyjnej lub dyskowej. Funkcja ta służy do zachowanie i ponownego użycia uprzednio wykonywanej operacji. persist(level) - utrzymuje dane na wybranym poziomie (storage level), tj w pamięci, na dysku itp cache() - utrzymuje dane wyłącznie w pamięci operacyjnej
  • 56. Spark Streaming Rozszerzenie Spark generujące mikro-zadania wsadowe (micro- batches), pozwalające na analizę strumieni danych. Używa tego samego modelu zrównoleglenia danych i samego Spark do analizy. Zapewnia analizę dokładnie raz (exactly once) elementu strumienia danych.
  • 57. Spark Streaming - przykład (Java 8) SparkConf sparkConf = new SparkConf().setAppName("JavaNetworkWordCount"); JavaStreamingContext ssc = new JavaStreamingContext(sparkConf, Durations.seconds (1)); JavaReceiverInputDStream<String> lines = ssc.socketTextStream( args[0], Integer.parseInt(args[1]), StorageLevels.MEMORY_AND_DISK_SER); JavaDStream<String> words = lines.flatMap(line -> Arrays.asList(line.split(" "))); JavaPairDStream<String, Integer> counts = words.mapToPair(w -> new Tuple2<String, Integer>(w, 1)) .reduceByKey((x, y) -> x + y); counts.print(); ssc.start(); ssc.awaitTermination();
  • 59. Wejścia DStreams Proste źródła dostępne z kontekstu: ● strumienie plikowe ● gniazdka (sockets) ● aktorzy Akka Źródła złożone dostępne jako biblioteki, m.in.: ● Kafka ● Flume ● Kinesis ● Twitter
  • 60. Transformacje Większość transformacji RDD jest wspierana w DStreams, ale nie jest to zbór pełny. Dostępne nowe funkcje np: ● stany ● checkpointy ● funkcje na oknach danych
  • 61. Checkpointing Jako, że strumień jest w teorii nieskończony należy zapisywać stan na dysk. Dwa typy danych są zapisywane: metadane strumienia (konfiguracja itp.) oraz dane. Dane zapisywane są z funkcji zapisu stanu lub operacji na oknach. SparkConf sparkConf = new SparkConf().setAppName("JavaNetworkWordCount"); JavaStreamingContext ssc = new JavaStreamingContext(sparkConf, Durations.seconds(1)); ssc.checkpoint("checkpoint_dir");
  • 63. Zapis DStream Istnieją wbudowane opcje zapisu: ● print() - wyświetla pierwsze 10 elementów na standardowym wyjściu ● saveAsTextFiles(prefix, [suffix]) - zapis do pliku tekstowego ● saveAsHadoopFiles(prefix, [suffix]) - zapis do formatu wspieranego przez Hadoop ● foreachRDD(func) - wykonuje operację zapisu zdefiniowaną w funkcji func
  • 65. Spark SQL Zadania Spark są generowane na podstawie zapytań SQL. Dane mogą być ładowane z wielu źródeł. Podobny do Hive i może korzystać z jego komponentów oraz przetwarzać istniejące zapytania. Można także wywoływać zapytania przez standardowe interfejsy JDBC/ODBC. Dobra integracja z narzędziami BI.
  • 66. Podstawowy przykład (Java) // SparkContexst sc = ... SQLContext sqlCtx = new SQLContext(sc); DataFrame people = sqlCtx.read().parquet("people.parquet"); people.registerTempTable("peope"); DataFrame results = sqlCtx.sql("SELECT * FROM people"); List<String> names = results.javaRDD().map(row -> row.getString(0)).collect(); DataFrame departments = sqlCtx.read().json("departments.json"); departments.registerTempTable("departments"); DataFrame joinResult = sqlCtx.sql("SELECT * FROM people JOIN departments");
  • 67. Data frame Wprowadzone w Spark 1.3 ale ze zmianami w API Spark 1.4. Data frame jest jak inne RDD ale ma dodatkową strukturę danych jak tabela. Podobna do data frame z R lub Python Pandas. Można wykonywać na niej operacje jak na innym RDD oraz inne operacje typowe dla tabeli, np select. Można definiować schemat danych. // SparkContexst sc = ... SQLContext sqlCtx = new SQLContext(sc); DataFrame df = sqlContext.read().json ("people.json"); df.show(); // age name // null Michael // 30 Andy // 19 Justin df.printSchema(); // root // |-- age: long (nullable = true) // |-- name: string (nullable = true) df.select("name").show(); // name // Michael // Andy // Justin
  • 68. Integracja z Hive Spark SQL nie ma wbudowanych komponentów Hive ale się z nimi integruje. Można korzystać z Hcatalog w Spark lub uruchamiać zadania Hive na Sparku jako silniku uruchomieniowym. HiveQL jest wspierany ale może nie zawierać najnowszych funkcji. // SparkContexst sc = ... HiveContext sqlCtx = new HiveContext(sc); DataFrame results = sqlCtx.sql( "SELECT * FROM people"); List<String> names = results.javaRDD(). map( row -> row.getString(0));
  • 69. Pobieranie danych z JDBC Istnieje możliwość pobierania danych z arbitralnego źródła kompatybilnego z JDBC. Zaleca się używania tego rozwiązania zamiast starszego JdbcRDD, bo nowe operuje na data frames. Map<String, String> options = new HashMap<String, String>(); options.put("url", "jdbc:postgresql:dbserver"); options.put("dbtable", "schema.tablename"); DataFrame jdbcDF = sqlContext.read() .format("jdbc") .options(options) .load();
  • 70. Spark SQL Thrift server Spark SQL posiada serwer Thrift ODBC/JDBC zgodny z HiveServer2. Pozwala on na połączenie się za pomocą wszystkich sterowników JDBC/ODBC do HiveServer2 z Spark SQL. W efekcie Spark SQL może zastępować MapReduce lub Tez w Hive. ./sbin/start-thriftserver.sh --hiveconf hive.server2.thrift.port=<port> --hiveconf hive.server2.thrift.bind.host=<lost> --master <master-uri> ... ./bin/beeline beeline> !connect jdbc:hive2: //localhost:10000
  • 72. Chcesz wiedzieć więcej? Prowadzimy szkolenia w grupach indywidualne w grupach 4-8 osobowych: ● mamy więcej czasu: szkolenia 2-5 dniowe ● pozwalają na bardziej indywidualną pracę z uczestnikami ● możliwość dopasowania programu do grupy ● rozwiązujemy i odpowiadamy na indywidualne pytania
  • 73. Szkolenia dedykowane dla Ciebie W ofercie szkoleń Big Data i nie tylko, mamy szkolenia dla architektów, analityków i programistów. Oferujemy całościowe szkolenia z ekosystemu Hadoop, jak i szkolenia z poszczególnych elementów. Szkolenia z baz NoSQL: HBase, Cassandra czy MongoDB. Szkolenia z analizy danych (data science). … i wiele innych. http://www.sages.com.pl/