Dominik Wagenknecht Accenture Der No Frills Big Data Workshop -Teil3
Der no frills BigData Workshop JAX 2012, 16.4.2012, Mainz Teil 3
Google ist ein Pionier von BigData und hat mit MapReduce und BigTable die relevantesten Artikel dazu veröffentlicht Google Bigtable: Die Definition von großen Daten Präsentiert auf der OSDI 2006 findet sich das Ziel schon im Abstract: Bigtable is a distributed storage system for managing structured data that is designed to scale to a very large size: petabytes of data across thousands of commodity servers. Warum? Pagerank! Eine Karte des gesamten Web speichern, bereit für die Analyse Gigantische Tabelle mit flexiblen Spalten (dünnbesetzt) Jede Zeile = eine Webseite / URL Spalten sind z.b. gesamter HTML-Code, Sprache, die Links, die Anzahl variiert stark abhängig von der Webseite Zugriff per Zeilen- und Spaltenschlüssel sowie Zeitstempel (Historie!), garbage collection für alte Daten (konfigurierbar) fortgesetzt 2
Die Veröffentlichung von BigTable führte zum Hadoop Projekt welches BigTable & MapReduce OpenSource implementiert Google Bigtable: Schema und Funktionsweise Bigtable s Datenmodell ist konzeptionell simpel: Spaltengruppierung in families Für jede Zeile kann jede column family beliebig viele Spalten enthalten Einzelne Zeile wird nie verteilt, und ist stets konsistent und wurde in Hadoop folgendermaßen umgesetzt: Hadoop Distributed File System: Organisiert in Blöcken und repliziert über mehrere Server plus zentrale Name Node für Metadaten HBase: Die BigTable Implementierung welche auf HDFS aufsetzt und ad-hoc Zugriffe mit RDBMS-ähnlichen Eigenschaften http://labs.google.com/papers/bigtable.html 3
Die HBase shell kann mit hbase shell gestartet werden, es handelt sich um eine JRuby Konsole plus HBase Kommandos Wichtige HBase Kommandos Kommando status list scan [table] Beschreibung Zeigt Systemstatus Alle Tabellen listen Tabellendaten ausgeben create [table], [cf1], Erstellt eine neue Tabelle, anschließend können die Column Families gelistet werden get [table], [key] (, [cf:col]) put [table], [key], [cf:col], [val] (,[ts]) Bitte legen sie sich nun eine Tabelle unter ihrer ID mit mindestens einer Column Family data an und versuchen sie sich in CRUD https://wiki.apache.org/hadoop/hbase/shell Liest eine Zeile, optional nur aus einer bestimmten Spalte (Notation column family : column) Schreibt Wert unter key in Tabelle, es können dann Spalten und Werte gelistet werden 4
HBase kommt mit Hadoop Supportklassen, die man beliebig kombinieren kann um seinen Job zu bauen HBase in MapReduce HBase stellt wiederverwendbare Referenzimplementierungen bereit durch die MapReduce erheblich vereinfacht wird. Hinzu kommt die Klasse TableMapReduceUtil für ein vereinfachtes Setup. org.apache.hadoop org.apache.hbase InputFormat TableInputFormat TableRecordReader Mapper TableMapper IdentityTableMapper Reducer TableReducer IdentityTableReducer OutputFormat TableOutputFormat TableRecordWriter Beispiele: https://hbase.apache.org/book/mapreduce.example.html 5
Wikimedia stellt XML Backups zur Verfügung; die Deutsche Wikipedia (ohne Historie) wurde in wiki importiert Wikipedia <mediawiki [...]> <page> <title>actinium</title> [...] <revision> <id>97894715</id> <timestamp>2012-01-03t19:27:39z</timestamp> <contributor> <username>wikitanvirbot</username> <id>1052628</id> </contributor> <minor /> <comment>r2.7.1) (Bot: Ergänze: [[be-x-old:]]</comment> <text xml:space="preserve"> {{Infobox_Chemisches_Element <!--- Periodensystem ---> [...] </text> </revision> <page> <title>ang Lee</title> [...] Row Key CF text CF revision Actinium : {{Infobox... author: WikitanvirBot comment: r2.7.1)... Ang Lee :... Ang Lee bei den internationalen... author: Drahreg01 comment: BKL 6
Es stehen mehrere funktionierende Beispielprogramme zur Verfügung um zu experimentieren Beispielprogramme Folgende Beispielprogramme stehen unter ~/jax2012 zur Verfügung: MRWordCount: Liest aus HDFS, schreibt nach HDFS (erstes Beispiel) MRLetterCount: Liest aus HBase, schreibt nach HDFS; listet hierbei die Anzahl an gefundenen Artikeln nach Anfangsbuchstabe MRHBaseWordCount: Liest aus HBase, schreibt nach HBase und zählt (bestimmte) Wörter Alle Beispiele sind mit Apache Maven vorbereitet und können daher mit mvn package gebaut werden in target/ befindet sich dann ein normales und ein fat JAR. Letzteres benötigen sie wenn sie zusätzliche Dependencies einbinden möchten diese werden dann innerhalb des JAR s im lib-verzeichnis eingebunden. 7
Live: Austesten des LetterCounts HBase HDFS Austesten des WordCounts HBase HBase Ihre Challenge...z.B.: Ranking auf Autoren (Bonus: Reihenfolge) Plus: Inverser Index auf Autoren (= meine Seiten) Ihre Ideen... 8
Das Web bietet eine schier endlose Zahl an Ressourcen, bitte unbedingt auf aktuelle API achten Weiterführende Ressourcen...bei bestimmten Problemen Weiterführende nützliche Links: MapReduce Patterns: Eine Sammlung von gängigen Problemstellungen mit MapReduce Lösungsstrategie http://highlyscalable.wordpress.com/2012/02/01/mapreduce-patterns/ Custom Data Types insb. nützlich wenn man eine Struktur zwischen Map <-> Combiner <-> Reduce beibehalten möchte http://developer.yahoo.com/hadoop/tutorial/module5.html#types HBase MapReduce Beispiele (inkl. Einfachen Ansätzen wie die Ergebnisdaten etwa in eine RDBMS weitergeführt werden können) http://hbase.apache.org/book.html#mapreduce Wer verstehen möchte wie Data-Locality im Zusammenspiel zwischen HBase und HDFS genau funktioniert http://www.larsgeorge.com/2009/10/hbase-architecture-101- storage.html 9
Der klassische Wordcount ist auf sehr vielen Seiten vorgeführt, wer tiefer gehen möchte landet letztlich bei den Definitive Guides Weiterführende Ressourcen...zum Weiterlernen Einführendes im Web Parallele Programmierung und MapReduce bei Google http://code.google.com/intl/de- DE/edu/submissions/mapreduce/listing.html Yahoo Hadoop Introduction: http://developer.yahoo.com/hadoop/tutorial/ HBase Book auf Apache: http://hbase.apache.org/book.html#mapreduce Auf Youtube finden sich diverse Videos zu HBase und Hadoop Bücher Hadoop: The definitive Guide von Tom White (unbedingt 3rd Edition nehmen, welche noch als Vorabversion rein digital verfügbar ist) HBase: The definitive Guide von Lars George, 1st Edition 10
Es gibt eine Vielzahl an Möglichkeiten um (Hadoop) MapReduce selbst zu verwenden, und es muss nicht immer Hadoop sein... Distributionen Eine Distribution (unter Linux) installieren Cloudera ( Einfachster Einstieg mit VM für Virtualbox / VMWare) Hortonworks Cluster (auch in der Cloud) selbst installieren: Apache Whirr (wurde hier verwendet) Puppet / Chef / Cloudera Tools Einen Cloud-Service bzw. Hersteller nutzen: Amazon Oder: IBM / Microsoft /... Oder das Prinzip in anderen Gewässern verwenden: Cassandra mit Datastax (echtes Hadoop), Google, Riak, CouchDB,... 11
Apache Whirr Setup (Auszug) [ ] whirr.instance-templates=1 zookeeper+hadoop-namenode+hadoop-jobtracker+hbase-master,20 hadoop-datanode+hadoop-tasktracker+hbase-regionserver whirr.provider=aws-ec2 whirr.hardware-id=m1.large # Whirr verwendet prinzipiell Ubuntu, hier wurde 10.04 LTS gewählt: whirr.image-id=eu-west-1/ami-1b665f6f whirr.location-id=eu-west-1 # Get a compatible set of HBase + Hadoop; this is still CDH3u3 whirr.hadoop.install-function=install_cdh_hadoop [ ] whirr.zookeeper.configure-function=configure_cdh_zookeeper hbase-site.dfs.replication=3 hadoop-hdfs.dfs.permissions=false 12
Vielen Dank! Sie finden die Beispielprogramme auf GitHub: https://github.com/ledominik/jax2012 13