amazon emr grundlagen
Post on 17-Jul-2015
166 Views
Preview:
TRANSCRIPT
2
● Was ist Amazon EMR?
● Cluster Aufbau
● EMR MapReduce-Job
● Workflow
● Cluster Management
● EMR-CLI
● Cluster erstellen
● MapReduce-Jobs per EMR-CLI ausführen
● EMR Monitoring
● DEMO
Agenda
3
● Amazon Elastic MapReduce
● Web-Dienst von Amazon für das Erstellen von skalierbaren Clustern
● Cluster Nodes sind Amazon EC2-Instanzen [1]
● Verwendung des Hadoop Frameworks (HDFS + MapReduce)
● Vergleichbarer Funktionsumfang wie bei einem realen Hadoop-Cluster (weitere Hadoop Komponenten)
● Abrechnung nach Nutzungsdauer
● Cluster ist um weitere Nodes erweiterbar
Was ist Amazon EMR?
4
● HDFS (Daten verfallen, sobald der Cluster terminiert wird)
● Amazon S3 (Amazon Cloud Storage)
● Amazon DynamoDB (NoSQL Datenbankservice)
● Amazon Redshift (Data Warehouse Service)
● Amazon Relational Database Service (RDBMS)
Was ist Amazon EMR?● Speicherung der Daten
5
● Hive (Data-Warehouse)
● Pig (Scripting Platform)
● HBase (NoSQL Datenbank)
● Impala (Echtzeit Abfrage Engine)
● Ganglia (Cluster Monitoring)
● HCatalog (Tabellen- und Speicherverwaltung)
● Mahout (maschinelles Lernen)
● ...
Was ist Amazon EMR?● Unterstützte Hadoop Komponenten
6
● Besteht aus mehreren EC2 Instanzen, die auf die jeweiligen Bedürfnisse optimiert sind (Standard, CPU, RAM, ... [1])
● EC2-Instanzen bilden die einzelnen Nodes (Name- und Data-Nodes sowie Job- und Task-Tracker)
● Hadoop Framework ist in verschiedenen Versionen verfügbar [3]
● MapReduce Version 1 und 2
● Kombinierbar mit weiteren Amazon AWS Diensten
● MapR Distribution verfügbar
Cluster Aufbau
8
● 1 Job = 1 Step
● Steps werden nacheinander abgearbeitet
● Cluster kann max. 256 Steps zugewiesen bekommen
● Zustand der Steps kann Pending, Running, Cancelled, Terminated, Failed oder Completed einnehmen
● Steps per Management Console an Cluster übertragen oder per EMR-CLI
● Letzter Step terminiert Cluster oder wartet auf weitere Steps (je nach Konfiguration des Clusters)
EMR MapReduce-Job
9
1. MapReduce-Job erstellen
2. Daten für die Bearbeitung zur Verfügung stellen (lokal oder mit Hilfe von einer der unterstützten Speichermöglichkeiten)
3. EMR-Cluster erstellen (Management Console oder EMR-CLI)
4. Amazon erstellt eine eindeutige JobFlow-ID für den Cluster
5. MapReduce-Job zum Ausführen an Cluster senden
6. Warten bis MapReduce-Job abgeschlossen wurde und das Ergebnis evtl. weiter verarbeiten
Workflow● Vom Erstellen eines Cluster bis zum zum Ausführen eines Jobs
● Verwaltung mit Hilfe der Amazon AWS Management Console
● Verwaltung mit dem Amazon EMR CLI
10
Cluster Management● EMR Cluster Verwalten
11
● Hadoop Cluster erstellen
● Bootstrap Aktionen definieren
● Größe eines laufenden Clusters verändern
● Cluster Konfiguration
● MapReduce-Jobs auf dem Cluster starten
● Konfigurationen im JSON-Format an Cluster übergeben
● ...
EMR-CLI ● Was kann EMR-CLI?
● Voraussetzung ist Ruby ab Version 1.8.7● EMR-CLI auf der Amazon-Webseite downloaden und in einem
Verzeichnis entpacken● Im Verzeichnis eine credentials.json Datei erstellen → Zugriff auf
AWS-Dienste
● Mit dem Kommando „elastic-mapreduce“ wird EMR über das CLI bedient
12
EMR-CLI Installation und Konfiguration
13
● elastic-mapreduce --create --alive --set-termination-protection --name „Clustername“ --num-instances 7 --instance-type m1.small --master-instance-type m1.small
--log-uri s3n://inovex-storage/logs/ --ami-version 2.1.4
--bootstrap-action s3://elasticmapreduce/bootstrap-actions/configure-hadoop
--args „-h,dfs.replication=3,-h,dfs.block.size=67108864,-m,mapred.jobtracker.taskScheduler=org.apache.hadoop.mapred.FairScheduler“
--bootstrap-action s3://elasticmapreduce/bootstrap-actions/install-ganglia
Cluster erstellen● Beispiel
14
● elastic-mapreduce --create Einleitung einer Cluster Generierung
--alive Cluster soll selbst nach abgeschlossenen Jobs nicht terminiert werden
--set-termination-protection true Setzt den Termination-Protection Status (True|False)
--name „Clustername“ Clusternamen (muss nicht eindeutig sein)
--num-instances 7 Anzahl Instanzen des Clusters(NameNode + DataNodes)
--instance-type m1.small EC2 Instanztyp der DataNodes
--master-instance-type m1.small EC2 Instanztyp der NameNode
--log-uri s3n://inovex-storage/logs/ Pfad für die Speicherung der Log-Dateien
--ami-version 2.1.4 AMI Version = Unterstützung unterschiedlicher Hadoop Komponenten und Versionen (Bsp.: 2.1.4 = Hive 0.7.1)
--bootstrap-action s3://elasticmapreduce/bootstrap-actions/configure-hadoop –args
„-h,dfs.replication=3,-h,dfs.block.size=67108864,-m,mapred.jobtracker.taskScheduler=org.apache.hadoop.mapred.FairScheduler“
Bootstrap Aktion zur Konfiguration von Hadoop
--bootstrap-action s3://elasticmapreduce/bootstrap-actions/install-ganglia Bootstrap Aktion zur Installation zusätzlicher Komponenten
[2]
Cluster erstellen● Beschreibung des Befehls
15
● Amazon EMR Skripte, die auf dem Cluster ausgeführt werden, wenn der Cluster erstellt wird
● Ausführung eigener Skripte
– --bootstrap-action „s3://<Pfad>/Dateiname“ --args „arg1,arg2,...“
● Aktionen:
– Installation von Komponenten (Ganglia, Hue, HBase, ..)
– Konfiguration diverser Komponenten (Hadoop, Hive, Hbase, …)
Cluster erstellen● Bootstrap Aktion
16
● --bootstrap-action s3://elasticmapreduce/bootstrap-actions/configure-hadoop –args „<arg1>,<arg2>,...“
● Argumente:
– Übergabe von Konfigurationsdateien (z.B. config.xml)
– Übergabe von Key-Value Paaren (z.B. mapred.map.tasks=4)
● Bsp.: --args „M,s3://<bucketname>/config.xml,-h,dfs.block.size=67108864“
Cluster erstellen● Bootstrap Aktion: Hadoop Konfiguration
17
● Job-Informationen können einzeln an Amazon EMR übergeben werden (wird nicht weiter betrachtet!)
● Jobs können mit Hilfe von JSON-Files zusammengefasst und den Cluster übermittelt werden
● JSON Verwendung bei EMR:
– Auswahl der Cluster Nodes (Amazon EC2-Instanzen)
– Clusterkonfiguration
– MapReduce-Job Konfiguration
● Vorteile:
– Vereinfachte Möglichkeit mehrere Jobs gleichzeitig an Cluster zu übermitteln
– Wiederverwendbarkeit
MapReduce-Jobs per EMR-CLI ausführen● JSON-Files
18
● Steps:
– Konfiguration der MapReduce-Jobs
● Voraussetzung: Jobflow-ID
– Cluster muss verfügbar sein
– Befehl:
elastic-mapreduce
--json <JSON-Dateiname>
--jobflow <Jobflow-ID>
● Beispiel:
– Step 1: TeraGen → Daten erzeugen
– Step 2: TeraSort → Erzeugte Daten sortieren
MapReduce-Jobs per EMR-CLI ausführen● JSON-Files Aufbau
19
● Hadoop Monitoring mit Ganglia
● Ganglia Installation:
– --bootstrap-action s3://elasticmapreduce/bootstrap-actions/install-ganglia
● Webfrontend läuft auf dem Master Node
● Zugriff durch Portforwarding (SSH-Tunnel) [4]
EMR Monitoring
22
Vielen Dank für Ihre Aufmerksamkeit
Kontakt
Waldemar Reger
inovex GmbHOffice KölnKupferhütte 4.1Schanzenstraße 6 - 2051063 Köln
Mail: waldemar.reger@inovex.de
23
[1] http://aws.amazon.com/de/ec2/instance-types/
[2] http://docs.aws.amazon.com/ElasticMapReduce/latest/DeveloperGuide/emr-plan-bootstrap.html
[3] http://docs.aws.amazon.com/ElasticMapReduce/latest/DeveloperGuide/ami-versions-supported.html
[4] http://docs.aws.amazon.com/ElasticMapReduce/latest/DeveloperGuide/UsingEMR_Ganglia.html
Quellen
top related