Hadoop MapReduce
Felipe Meneses Besson
IME-USP, Brazil
July 7, 2010
Agenda
What is Hadoop? Hadoop Subprojects MapReduce HDFS Development and tools
What is Hadoop?
A framework for large-scale data processing (Tom White, 2009):
Project of Apache Software Foundation Most written in Java Inspired in Google MapReduce and GFS (Google File System)
A brief history
2004: Google published a paper that introduced MapReduce and GFS as a alternative to handle the volume of data to be processed 2005: Doug Cutting integrated MapReduce in the Hadoop 2006: Doug Cutting joins Yahoo! 2008: Cloudera was founded 2009: Hadoop cluster sort 100 terabyte in 173 minutes (on 3400 nodes) Nowadays, Cloudera company is an active contributor to the Hadoop project and provide Hadoop consulting and commercial products.
[1]Cloudera: http://www.cloudera.com [2] Sort Benchmark: http://sortbenchmark.org/
Hadoop Characteristics
A scalable and reliable system for shared storage and analyses. It automatically handles data replication and node failure It does the hard work developer can focus on processing data logic Enable applications to work of petabytes of data in parallel
5
Who's using Hadoop
Source: Hadoop wiki, September 2009
Hadoop Subprojects
Apache Hadoop is a collection of related subprojects that fall under the umbrella of infrastructure for distributed computing.
All projects are hosted by the Apache Software Foundation.
7
MapReduce
MapReduce is a programming model and an associated implementation for processing and generating large data sets (Jeffrey Dean and Sanjay Ghemawat, 2004)
Based on a functional programming model A batch data processing system A clean abstraction for programmers Automatic parallelization & distribution Fault-tolerance
MapReduce
Programming model Users implement the interface of two functions: map (in_key, in_value) -> (out_key, intermediate_value) list reduce (out_key, intermediate_value list) -> out_value list
MapReduce
Map Function
Input:
Records from some data source (e.g., lines of files, rows of a databases, ) are associated in the (key, value) pair Example: (filename, content)
Output:
One or more intermediate values in the (key, value) format Example: (word, number_of_occurrences)
10
MapReduce
Map Function
map (in_key, in_value) (out_key, intermediate_value) list
Source: (Cloudera, 2010)
11
MapReduce
Map Function
Example: map (k, v): if (isPrime(v)) then emit (k, v) (foo, 7) (test, 10) (foo, 7) (nothing)
12
MapReduce
Reduce function
After map phase is over, all the intermediate values for a given output key are combined together into a list Input:
Intermediate values Example: (A, [42, 100, 312])
Output:
usually only one final value per key Example: (A, 454)
13
MapReduce
Reduce Function
reduce (out_key, intermediate_value list) out_value list
Source: (Cloudera, 2010)
14
MapReduce
Reduce Function
Example: reduce (k, vals): sum = 0 foreach int v in vals: sum += v emit (k, sum) (A, [42, 100, 312]) (B, [12, 6, -2]) (A, 454) (B, 16)
15
MapReduce
Terminology
Job: unit of work that the client wants to be performed
Input data + MapReduce program + configuration information
Task: part of the job
map and reduce tasks
Jobtracker: node that coordinates all the jobs in the system by scheduling tasks to run on tasktrackers
16
MapReduce
Terminology
Tasktracker: nodes that run tasks and send progress reports to the jobtracker Split: fixed-size piece of the input data
17
MapReduce
DataFlow
18
Source: (Cloudera, 2010)
MapReduce
Real Example
map (String key, String value): // key: document name // value: document contents for each word w in value: EmitIntermediate(w, "1");
19
MapReduce
Real Example
reduce(String key, Iterator values): // key: a word // values: a list of counts int result = 0; for each v in values: result += ParseInt(v); Emit(AsString(result));
20
MapReduce
Combiner function
Compress the intermediate values Run locally on mapper nodes after map phase It is like a mini-reduce Used to save bandwidth before sending data to the reducer
21
MapReduce
Combiner Function
Applied in a mapper machine
Source: (Cloudera, 2010)
22
HDFS
Hadoop Distributed Filesystem
Inspired on GFS Designed to work with very large files Run on commodity hardware Streaming data access Replication and locality
23
HDFS
Nodes
A Namenode (the master) Manages the filesystem namespace Knows all the blocks location Datanodes (workers) Keep blocks of data Report back to namenode its lists of blocks periodically
24
HDFS
Duplication
Input data is copied into HDFS is split into blocks
Each data blocks is replicated to multiple machines
25
HDFS
MapReduce Data flow
Source: (Tom White, 2009)
26
Hadoop filesystems
27
Source: (Tom White, 2009)
Development and Tools
Hadoop operation modes
Hadoop supports three modes of operation:
Standalone Pseudo-distributed Fully-distributed
More details:
http://oreilly.com/other-programming/excerpts/hadooptdg/installing-apache-hadoop.html
28
Development and Tools
Java example
29
Development and Tools
Java example
30
Development and Tools
Java example
31
Development and Tools
Guidelines to get started The basic steps for running a Hadoop job are:
Compile your job into a JAR file Copy input data into HDFS Execute hadoop passing the jar and relevant args Monitor tasks via Web interface (optional) Examine output when job is complete
32
Development and Tools
Api, tools and training
Do you want to use a scripting language?
http://wiki.apache.org/hadoop/HadoopStreaming http://hadoop.apache.org/core/docs/current/streaming.html
Eclipse plugin for MapReduce development
http://wiki.apache.org/hadoop/EclipsePlugIn
Hadoop training (videos, exercises, )
http://www.cloudera.com/developers/learn-hadoop/training/
33
Bibliography
Hadoop The definitive guide Tom White (2009). Hadoop The Definitive Guide. O'Reilly, San Francisco, 1st Edition Google Article Jeffrey Dean and Sanjay Ghemawat (2004). MapReduce: Simplified Data Processing on Large Clusters. Available on: http://labs.google.com/papers/mapreduce-osdi04.pdf Hadoop In 45 Minutes or Less Tom Wheeler. Large-Scale Data Processing for Everyone. Available on: http://www.tomwheeler.com/publications/2009/lambda_lounge_hadoop_200910/twheelerhadoop-20091001-handouts.pdf Cloudera Videos and Training http://www.cloudera.com/resources/?type=Training
34