Apache Hadoop
   Værktøjskasse til
      Big Data




  Kenneth Geisshirt
 DKUUG - 21. august 2012
Agenda
●   Hvad er Big Data?
●   Hadoop (version 1.0.x)
    –   Komponenter og arkitektur
    –   Paralellisering med Map/Reduce
    –   Installation
    –   Et lille M/R-job
●   Applikationer
    –   Pig, HBase, Hive
HPC
●   High Performance Computing
    –   CPU-orienteret
    –   Linux-klynger meget populære men special-
        netværk (InfiniBand)
    –   NFS som centralt filsystem
    –   Køsystemer: SGE, Torque
    –   Parallellisering med MPI
    –   Sprog: Fortran-77/9x, C, C++
Big Data
●   Big Data og data science handler om data
    –   Kompleksiten vokser
    –   Mængden vokser
●   Eksempel: Sloan Digital Sky Survey (DR9)
    –   Næsten 1 mia. objekter!
    –   1,5 mio. spektra af galakser
    –   100 TB
●   Eksempel: Bilka (2008-tal)
    –   700 brugere
    –   10 TB i data warehouse
Teknikker
●   Statistik, statistik og statistik
    –   Programmeringssproget R er populært
●   Machine learning
    –   Support-vector machines, klassifikation,
        unsupervised learning
●   Databaser – og data warehouses
    –   Traditionelle relationsdatabaser og NoSQL
R
# SSmicmen
# Michaelis­Menten enzyme reaction
#        ka     kb 
# E + S <­­> ES ­­> E + P
#        ka'
#
# Vm = kb*[E](0)
# K  = (kb+ka')/ka


# two experimental data sets ­ time vs [P]
time <­ c(0.02, 0.02, 0.06, 0.06, 0.11, 0.11, 0.22, 0.22, 0.56, 0.56, 1.10, 1.10)
concP <­ c(76, 47, 97, 107, 123, 139, 159, 152, 191, 201, 207, 200)


# fit data
fn <­ function(p) sum((concP ­ (p[1] * time)/(p[2] + time))^2)
out <­ nlm(fn, p = c(200, 0.1), hessian = TRUE)
df <­ data.frame(x=time, y=concP)
fit <­ nls(concP ~ SSmicmen(time, Vm, K), df)


# plot data and fit
postscript("file.ps", horizontal=FALSE, height=5, pointsize=10)
plot(time, concP)
lines(time, predict(fit, data.frame(time)))
NoSQL
●   Tåbeligt navn
●   Mange varianter
    –   Nøgle/værdi-par, søjle-orienteret, dokumenter,
        grafer
●   Ofte distribueret og fejl-tolerent
●   Ikke altid fuld ACID
●   Ikke altid SQL som søgesprog
Hyldevarer
●   Hyldevarer er i dag stor kapacitet
    –   2 TB harddisk koster 800 kr
    –   8 GB ram koster 325 kr
    –   Quad core i7 koster 2500 kr
●   Billigt og let at bygge “supercomputere”
●   Strøm og køling er en faktor
●   Open Source Software har hele stakken
    –   Kerne, web-server, udviklingsmiljø, database,
        filserver
Hadoop
●   Platform til analyse af store datamængder
    –   Parallelprogrammering vha. Map/Reduce
    –   Fejl-tolerent
●   Open Source Software
    –   Primært udviklet i Java
    –   Apache varetager juridiske og organisatoriske interesser
●   Inspireret af Googles BigTable og MapReduce
●   I brug mange steder
    –   Yahoo! har 10.000+ core klynge
    –   Facebook har 30 PB i deres klynge
Komponenter
●   NameNode
                                                      Master
    –   Holder styr på filers metadata
●   JobTracker
    –   Styrer brugernes job
●   TaskTracker                                Map/Reduce
    –   Jobs brydes ned i mindre opgaver
●   DataNode
    –   Distribuerer filer udover klyngen
    –   Blokke er pr. default 64 MB
    –   Blokke replikeres (typisk til 3 maskiner)
Arkitektur
Map/Reduce
     N           n−1 N /n              ●   Map


    ∑ xk=∑ ∑ x j+ n⋅i                          Data spredes over n maskiner
                                           –

                                           –   Delsummer udregnes parallelt
                                       ●   Reduce
    k=1           j=0 i=1                  –   Endelig sum udregnes

●   HDFS spreder data i 64 MB blokke på n servere
●   Jobtracker holder styr på jobbet
●   Jobbet brydes ned i n mindre opgaver (tasks)
    –    Tasktracker holder styr på opgaverne
●   Hver opgave arbejder (helst) på lokal datablok
Filsystemer

●   Implementation af klassen
    org.apache.hadoop.fs.FileSystem
●   HDFS – meget udbredt (default)
●   Local
●   HDTP – read only HTTP-adgang til HDFS
●   HSFTP – read only HTTPS-adgang til HDFS
●   HAR – pakkede og komprimerede filer
●   Og en del flere
Installation
●   God guide:
    –   http://www.michael-noll.com/tutorials/running-hadoop-on
    –   Klynge med 1 maskine til lege
●   Linux er default
    –   Ubuntu server er glimrende
    –   Hadoop Ubuntu Packagers
        ●   4 medlemmer
        ●   Tre udgaver: development, testing og stable
Min test-klynge
●   Servere findes hos
    cloud.dk – tak til dem!
●   Ubuntu Linux 12.04
    (server) 64 bit – Precise
    Pangolin
●   Master: 77.66.109.234
●   2 slaver: 77.66.109.235,
    77.66.109.236
●   1 CPU, 2 GB ram, 20 GB
    harddisk
Java
●   Ubuntu er holdt op med at understøtte
    SUN/Oracle Java
    –   Se http://www.duinsoft.nl/packages.php
●   Tilføj deb http://www.duinsoft.nl/pkg 
    debs all til /etc/apt/sources.list
●   Tilføj rette signatur:
    –   apt­key adv ­­keyserver 
        keys.gnupg.net ­­recv­keys 5CB26B26
●   Installation er nu klar
    –   apt­get update ; apt­get install 
        update­sun­jre
Java
●   En anden mulighed er at bruge webupd8team PPA
●   http://www.webupd8.org/2012/01/install-oracle-java-jdk-7
add­apt­repository ppa:webupd8team/java
apt­get update
mkdir ­p /usr/lib/mozilla/plugins
apt­get install oracle­jdk7­installer
●   Tak til Jarl Friis for at videregive denne opskrift
Hadoop et al
●   Ubuntu PPA:
    –   https://launchpad.net/~hadoop-ubuntu/+archive/stable
●   apt­add­repository ppa:hadoop­
    ubuntu/stable
●   apt­get update
●   apt­get install hadoop pig hive 
    hbase
●   Gentag for alle maskiner i klyngen
Særlig bruger
●   Opret brugeren hduser: adduser 
    ­­ingroup hadoop hduser
●   Tilføj JAVA_HOME til .bashrc
●   Tilføj Hadoops placering til PATH i .bashrc
Netværk
●   Ændre servernavn i /etc/hostname
●   /etc/hosts – på alle tre servere
77.66.109.234 master master.localdomain
77.66.109.235 slave­1 slave­1.localdomain
77.66.109.236 slave­2 slave­2.localdomain
●   Generér SSH-nøgle og distribuer den til slaverne
ssh­keygen ­t dsa ­P ""
cat .ssh/id_dsa.pub >> .ssh/authorized_keys
scp ­r .ssh slave­1: ; scp ­r .ssh slave­2:
Lokalt filsystem
●   HDFS' blokke er placeret lokalt
mkdir ­p /app/hadoop/tmp
chown hduser.hadoop /app/hadoop/tmp
●   Du skal overveje harddisk-teknologi og
    kapacitet nøje
●   Linux-filsystemers parametre er nok også
    vigtige
Konfiguration
●   /etc/hadoop/conf indeholder konfiguration
    –   masters angiver master, mens slaves angiver alle
        nodes
    –   core­site.xml anviser hvor HDFS må placere filer
    –   hdfs­site.xml styrer hvor mange replika, vi ønsker
    –   mapred­site.xml angiver hvilken server, som styrer
        Map/Reduce-jobbene
●   Javas placering anvises i hadoop­env.sh
●   Konfigurationen skal være synkroniseret mellem
    master og slaver
Op på ørene
                                     vi er kørende
●   Kun på master (som hduser):
    –   Formatering af HDFS: hadoop namenode 
        ­format
    –   Start datanode/HDFS: start­dfs.sh
    –   Start jobtracker o.lign: start­mapred.sh
●   Slaverne vil blive startet op automatisk
●   Nedlukning med stop­dfs.sh og stop­
    mapred.sh
Web-interface
●   http://master:50070 - Filerne
●   http://master:50030 - Map/Reduce
●   http://master:50060 - Tasks
Test-data
●   On time flight data fra Bureau of Transportion Statistics
    –   http://www.transtats.bts.gov/Fields.asp?Table_ID=236
    –   Alle flyafgang i USA: ~110 værdier for hver afgang
●   Januar-juni 2012:
    –   ~1,3 GB og ~3 mio. rækker
    –   ~20 blokke til tre servere eller 6-7 blokke/server
●   Klargøring:
grep ­v ^2 *.csv | tr ­d “”” > 
On_Time_Performance_2012_H1.csv
●   Kopiering til HDFS:
hadoop dfs ­copyFromLocal 
On_Time_Performance_2012_H1.csv /
Map/Reduce
●   Skrives i Java med underklasser
    –   SELECT Origin, COUNT(*) GROUP BY Origin
    –   Map:
        ●   linje for linje splittes ved komma og lufthavn findes
        ●   Returnerer <lufthavn, 1>
    –   Reduce:
        ●   Tæller lufthavn op
    –   Bruger også en “combiner” som er en lokal reducer
    –   Oversættelse:
javac ­classpath /usr/lib/hadoop/hadoop­
core­1.0.2.jar ­d ontime_classes 
OnTime.java
jar ­cvf ontime.jar ontime_classes
Kør Map/Reduce job
●   Output skal have en folder (må ikke eksistere)
hadoop dfs ­rmr /output
●   Selve kørslen sker med
hadoop jar ontime.jar dk.dkuug.OnTime 
/On_Time_Performance_2012_H1.csv /output
●   Læs resultatet med
hadoop dfs ­cat /output/part­00000
HBase
●   HBase er en database
●   Søjle/kolonne-orienteret
●   Distribueret gennem HDFS
●   Når data er skrevet i Hbase, kan de ikke
    –   Ændres
    –   slettes
Grisene kommer
●   Pig er et dataflow-sprog til dataanalyser
    –   Omskriver automatisk til Map/Reduce jobs
    –   LOAD kan indlæse en CSV-fil
    –   Mulighed for JOIN, GROUP, ORDER
●   Skema til On Time data:
head ­1 
On_Time_On_Time_Performance_2012_1.csv 
| tr ­d """ | tr "," "n" | while 
read f ; do echo ­n "$f:chararray, " ; 
 done
●   Desværre får jeg “out-of-memory”
Biernes hjem
●   Hive er et data warehouse
    –   Data er gemt i HDFS
    –   SQL-lignende syntask
    –   Automatisk Map/Reduce
●   Lettest at bruge fra kommando-linje
Links
●   Hadoops hjemmeside:
    –   http://hadoop.apache.org/
●   Googles oprindelige artikel:
    –   http://research.google.com/archive/bigtable.html
●   Gode guides til opsætning:
    –   http://www.michael-noll.com/tutorials/
●   Online-kursus (lige nu):
    –   http://ampcamp.berkeley.edu/
Litteratur
●   Hadoop: The Definitive Guide, 2nd edition. T.
    White. O'Reilly Media, 2010.
●   Hbase: The Definitive Guide. L. George. O'Reilly
    Media, 2011.
●   Programming Pig. A. Gates. O'Reilly Media,
    2011.
●   Data-Intensive Text Processing with MapReduce.
    J. Lin & C. Dyer. Morgan&Claypool, 2010.
Konklusioner
●   Opsætning er ikke triviel
●   Hadoop er laaaangsomt
●   HDFS er noget bøvlet at arbejde med
    –   Filsystemer i Java?
●   Interessant indgangsvinkel på (automatisk)
    parallellisering

More Related Content

PDF
Advanced Threat Defense Intel Security
PDF
Fra Assembler, Basic, Comal, Pascal, C til Object Orienteret software udvikli...
PDF
Basic tcpip-print
PDF
Nagios præsentation (på dansk)
PDF
Ctf intro-print
PDF
Basic Hacking Print
PDF
Basic tcpip-exercises
PDF
Hackerworkshop print
Advanced Threat Defense Intel Security
Fra Assembler, Basic, Comal, Pascal, C til Object Orienteret software udvikli...
Basic tcpip-print
Nagios præsentation (på dansk)
Ctf intro-print
Basic Hacking Print
Basic tcpip-exercises
Hackerworkshop print

Similar to Hadoop - the data scientist's toolbox (20)

PDF
CV for Peter Kølgaard
PDF
Rente_restful_API
PDF
PPT
Gitte svendsen arbejdsgangsbanken viden danmark 2012.01.25
PDF
CV 2016 - Huan Minh Vuong
DOC
Curriculum Vita - Suzanne
PPTX
Project Coin features in Java 7
PDF
Arbejdsgange for alle: It-systemer, vejledere og borgere af Thomas Hildebrand...
PDF
Arbejdsgange for alle: It-systemer, vejledere og borgere af Thomas Hildebrand...
PPTX
Forretning og IT SKAL hænge sammen
PDF
Ulla Kejser Digitale billeder Seminar 2008
PPTX
LAMP for webudviklere | Linux | Appacademy.dk
PDF
Drupalcamp2016 dockerftw
PPTX
Onboarding - Konkrete opgaver til nyansatte
PDF
Master Thesis
PPTX
REST - Hyper Media klienter med Ramone
DOC
Curriculum Vita
PPT
ITU 04.03.08
PDF
Udvikling af en app med brug af Domino Data Dervice Apiet
CV for Peter Kølgaard
Rente_restful_API
Gitte svendsen arbejdsgangsbanken viden danmark 2012.01.25
CV 2016 - Huan Minh Vuong
Curriculum Vita - Suzanne
Project Coin features in Java 7
Arbejdsgange for alle: It-systemer, vejledere og borgere af Thomas Hildebrand...
Arbejdsgange for alle: It-systemer, vejledere og borgere af Thomas Hildebrand...
Forretning og IT SKAL hænge sammen
Ulla Kejser Digitale billeder Seminar 2008
LAMP for webudviklere | Linux | Appacademy.dk
Drupalcamp2016 dockerftw
Onboarding - Konkrete opgaver til nyansatte
Master Thesis
REST - Hyper Media klienter med Ramone
Curriculum Vita
ITU 04.03.08
Udvikling af en app med brug af Domino Data Dervice Apiet
Ad

More from Kenneth Geisshirt (19)

PDF
Building parsers in JavaScript
PDF
Open Source in Real Life
PDF
Building mobile apps with Realm for React Native
PDF
micro:bit and JavaScript
PDF
Tales from the dark side: developing SDKs at scale
PDF
Android things
PDF
Node.js extensions in C++
PDF
Unleash your inner console cowboy
PDF
Tips and tricks for building high performance android apps using native code
PDF
Is the database a solved problem?
PDF
Unleash your inner console cowboy
PDF
Extending Node.js using C++
PDF
Building High Performance Android Applications in Java and C++
PDF
Sociale netværk
PDF
Unleash your inner console cowboy
PDF
Naturvidenskabsfestival 2012
PDF
JavaScript/Emacs integration
PDF
Introduction to JavaScript for Modern Software Development
PDF
Kendthed og vigtighed
Building parsers in JavaScript
Open Source in Real Life
Building mobile apps with Realm for React Native
micro:bit and JavaScript
Tales from the dark side: developing SDKs at scale
Android things
Node.js extensions in C++
Unleash your inner console cowboy
Tips and tricks for building high performance android apps using native code
Is the database a solved problem?
Unleash your inner console cowboy
Extending Node.js using C++
Building High Performance Android Applications in Java and C++
Sociale netværk
Unleash your inner console cowboy
Naturvidenskabsfestival 2012
JavaScript/Emacs integration
Introduction to JavaScript for Modern Software Development
Kendthed og vigtighed
Ad

Hadoop - the data scientist's toolbox

  • 1. Apache Hadoop Værktøjskasse til Big Data Kenneth Geisshirt DKUUG - 21. august 2012
  • 2. Agenda ● Hvad er Big Data? ● Hadoop (version 1.0.x) – Komponenter og arkitektur – Paralellisering med Map/Reduce – Installation – Et lille M/R-job ● Applikationer – Pig, HBase, Hive
  • 3. HPC ● High Performance Computing – CPU-orienteret – Linux-klynger meget populære men special- netværk (InfiniBand) – NFS som centralt filsystem – Køsystemer: SGE, Torque – Parallellisering med MPI – Sprog: Fortran-77/9x, C, C++
  • 4. Big Data ● Big Data og data science handler om data – Kompleksiten vokser – Mængden vokser ● Eksempel: Sloan Digital Sky Survey (DR9) – Næsten 1 mia. objekter! – 1,5 mio. spektra af galakser – 100 TB ● Eksempel: Bilka (2008-tal) – 700 brugere – 10 TB i data warehouse
  • 5. Teknikker ● Statistik, statistik og statistik – Programmeringssproget R er populært ● Machine learning – Support-vector machines, klassifikation, unsupervised learning ● Databaser – og data warehouses – Traditionelle relationsdatabaser og NoSQL
  • 6. R # SSmicmen # Michaelis­Menten enzyme reaction #        ka     kb  # E + S <­­> ES ­­> E + P #        ka' # # Vm = kb*[E](0) # K  = (kb+ka')/ka # two experimental data sets ­ time vs [P] time <­ c(0.02, 0.02, 0.06, 0.06, 0.11, 0.11, 0.22, 0.22, 0.56, 0.56, 1.10, 1.10) concP <­ c(76, 47, 97, 107, 123, 139, 159, 152, 191, 201, 207, 200) # fit data fn <­ function(p) sum((concP ­ (p[1] * time)/(p[2] + time))^2) out <­ nlm(fn, p = c(200, 0.1), hessian = TRUE) df <­ data.frame(x=time, y=concP) fit <­ nls(concP ~ SSmicmen(time, Vm, K), df) # plot data and fit postscript("file.ps", horizontal=FALSE, height=5, pointsize=10) plot(time, concP) lines(time, predict(fit, data.frame(time)))
  • 7. NoSQL ● Tåbeligt navn ● Mange varianter – Nøgle/værdi-par, søjle-orienteret, dokumenter, grafer ● Ofte distribueret og fejl-tolerent ● Ikke altid fuld ACID ● Ikke altid SQL som søgesprog
  • 8. Hyldevarer ● Hyldevarer er i dag stor kapacitet – 2 TB harddisk koster 800 kr – 8 GB ram koster 325 kr – Quad core i7 koster 2500 kr ● Billigt og let at bygge “supercomputere” ● Strøm og køling er en faktor ● Open Source Software har hele stakken – Kerne, web-server, udviklingsmiljø, database, filserver
  • 9. Hadoop ● Platform til analyse af store datamængder – Parallelprogrammering vha. Map/Reduce – Fejl-tolerent ● Open Source Software – Primært udviklet i Java – Apache varetager juridiske og organisatoriske interesser ● Inspireret af Googles BigTable og MapReduce ● I brug mange steder – Yahoo! har 10.000+ core klynge – Facebook har 30 PB i deres klynge
  • 10. Komponenter ● NameNode Master – Holder styr på filers metadata ● JobTracker – Styrer brugernes job ● TaskTracker Map/Reduce – Jobs brydes ned i mindre opgaver ● DataNode – Distribuerer filer udover klyngen – Blokke er pr. default 64 MB – Blokke replikeres (typisk til 3 maskiner)
  • 12. Map/Reduce N n−1 N /n ● Map ∑ xk=∑ ∑ x j+ n⋅i Data spredes over n maskiner – – Delsummer udregnes parallelt ● Reduce k=1 j=0 i=1 – Endelig sum udregnes ● HDFS spreder data i 64 MB blokke på n servere ● Jobtracker holder styr på jobbet ● Jobbet brydes ned i n mindre opgaver (tasks) – Tasktracker holder styr på opgaverne ● Hver opgave arbejder (helst) på lokal datablok
  • 13. Filsystemer ● Implementation af klassen org.apache.hadoop.fs.FileSystem ● HDFS – meget udbredt (default) ● Local ● HDTP – read only HTTP-adgang til HDFS ● HSFTP – read only HTTPS-adgang til HDFS ● HAR – pakkede og komprimerede filer ● Og en del flere
  • 14. Installation ● God guide: – http://www.michael-noll.com/tutorials/running-hadoop-on – Klynge med 1 maskine til lege ● Linux er default – Ubuntu server er glimrende – Hadoop Ubuntu Packagers ● 4 medlemmer ● Tre udgaver: development, testing og stable
  • 15. Min test-klynge ● Servere findes hos cloud.dk – tak til dem! ● Ubuntu Linux 12.04 (server) 64 bit – Precise Pangolin ● Master: 77.66.109.234 ● 2 slaver: 77.66.109.235, 77.66.109.236 ● 1 CPU, 2 GB ram, 20 GB harddisk
  • 16. Java ● Ubuntu er holdt op med at understøtte SUN/Oracle Java – Se http://www.duinsoft.nl/packages.php ● Tilføj deb http://www.duinsoft.nl/pkg  debs all til /etc/apt/sources.list ● Tilføj rette signatur: – apt­key adv ­­keyserver  keys.gnupg.net ­­recv­keys 5CB26B26 ● Installation er nu klar – apt­get update ; apt­get install  update­sun­jre
  • 17. Java ● En anden mulighed er at bruge webupd8team PPA ● http://www.webupd8.org/2012/01/install-oracle-java-jdk-7 add­apt­repository ppa:webupd8team/java apt­get update mkdir ­p /usr/lib/mozilla/plugins apt­get install oracle­jdk7­installer ● Tak til Jarl Friis for at videregive denne opskrift
  • 18. Hadoop et al ● Ubuntu PPA: – https://launchpad.net/~hadoop-ubuntu/+archive/stable ● apt­add­repository ppa:hadoop­ ubuntu/stable ● apt­get update ● apt­get install hadoop pig hive  hbase ● Gentag for alle maskiner i klyngen
  • 19. Særlig bruger ● Opret brugeren hduser: adduser  ­­ingroup hadoop hduser ● Tilføj JAVA_HOME til .bashrc ● Tilføj Hadoops placering til PATH i .bashrc
  • 20. Netværk ● Ændre servernavn i /etc/hostname ● /etc/hosts – på alle tre servere 77.66.109.234 master master.localdomain 77.66.109.235 slave­1 slave­1.localdomain 77.66.109.236 slave­2 slave­2.localdomain ● Generér SSH-nøgle og distribuer den til slaverne ssh­keygen ­t dsa ­P "" cat .ssh/id_dsa.pub >> .ssh/authorized_keys scp ­r .ssh slave­1: ; scp ­r .ssh slave­2:
  • 21. Lokalt filsystem ● HDFS' blokke er placeret lokalt mkdir ­p /app/hadoop/tmp chown hduser.hadoop /app/hadoop/tmp ● Du skal overveje harddisk-teknologi og kapacitet nøje ● Linux-filsystemers parametre er nok også vigtige
  • 22. Konfiguration ● /etc/hadoop/conf indeholder konfiguration – masters angiver master, mens slaves angiver alle nodes – core­site.xml anviser hvor HDFS må placere filer – hdfs­site.xml styrer hvor mange replika, vi ønsker – mapred­site.xml angiver hvilken server, som styrer Map/Reduce-jobbene ● Javas placering anvises i hadoop­env.sh ● Konfigurationen skal være synkroniseret mellem master og slaver
  • 23. Op på ørene vi er kørende ● Kun på master (som hduser): – Formatering af HDFS: hadoop namenode  ­format – Start datanode/HDFS: start­dfs.sh – Start jobtracker o.lign: start­mapred.sh ● Slaverne vil blive startet op automatisk ● Nedlukning med stop­dfs.sh og stop­ mapred.sh
  • 24. Web-interface ● http://master:50070 - Filerne ● http://master:50030 - Map/Reduce ● http://master:50060 - Tasks
  • 25. Test-data ● On time flight data fra Bureau of Transportion Statistics – http://www.transtats.bts.gov/Fields.asp?Table_ID=236 – Alle flyafgang i USA: ~110 værdier for hver afgang ● Januar-juni 2012: – ~1,3 GB og ~3 mio. rækker – ~20 blokke til tre servere eller 6-7 blokke/server ● Klargøring: grep ­v ^2 *.csv | tr ­d “”” >  On_Time_Performance_2012_H1.csv ● Kopiering til HDFS: hadoop dfs ­copyFromLocal  On_Time_Performance_2012_H1.csv /
  • 26. Map/Reduce ● Skrives i Java med underklasser – SELECT Origin, COUNT(*) GROUP BY Origin – Map: ● linje for linje splittes ved komma og lufthavn findes ● Returnerer <lufthavn, 1> – Reduce: ● Tæller lufthavn op – Bruger også en “combiner” som er en lokal reducer – Oversættelse: javac ­classpath /usr/lib/hadoop/hadoop­ core­1.0.2.jar ­d ontime_classes  OnTime.java jar ­cvf ontime.jar ontime_classes
  • 27. Kør Map/Reduce job ● Output skal have en folder (må ikke eksistere) hadoop dfs ­rmr /output ● Selve kørslen sker med hadoop jar ontime.jar dk.dkuug.OnTime  /On_Time_Performance_2012_H1.csv /output ● Læs resultatet med hadoop dfs ­cat /output/part­00000
  • 28. HBase ● HBase er en database ● Søjle/kolonne-orienteret ● Distribueret gennem HDFS ● Når data er skrevet i Hbase, kan de ikke – Ændres – slettes
  • 29. Grisene kommer ● Pig er et dataflow-sprog til dataanalyser – Omskriver automatisk til Map/Reduce jobs – LOAD kan indlæse en CSV-fil – Mulighed for JOIN, GROUP, ORDER ● Skema til On Time data: head ­1  On_Time_On_Time_Performance_2012_1.csv  | tr ­d """ | tr "," "n" | while  read f ; do echo ­n "$f:chararray, " ;   done ● Desværre får jeg “out-of-memory”
  • 30. Biernes hjem ● Hive er et data warehouse – Data er gemt i HDFS – SQL-lignende syntask – Automatisk Map/Reduce ● Lettest at bruge fra kommando-linje
  • 31. Links ● Hadoops hjemmeside: – http://hadoop.apache.org/ ● Googles oprindelige artikel: – http://research.google.com/archive/bigtable.html ● Gode guides til opsætning: – http://www.michael-noll.com/tutorials/ ● Online-kursus (lige nu): – http://ampcamp.berkeley.edu/
  • 32. Litteratur ● Hadoop: The Definitive Guide, 2nd edition. T. White. O'Reilly Media, 2010. ● Hbase: The Definitive Guide. L. George. O'Reilly Media, 2011. ● Programming Pig. A. Gates. O'Reilly Media, 2011. ● Data-Intensive Text Processing with MapReduce. J. Lin & C. Dyer. Morgan&Claypool, 2010.
  • 33. Konklusioner ● Opsætning er ikke triviel ● Hadoop er laaaangsomt ● HDFS er noget bøvlet at arbejde med – Filsystemer i Java? ● Interessant indgangsvinkel på (automatisk) parallellisering