360 likes | 514 Views
Data-Intensive Text Processing with MapReduce. (Bonus session). Tutorial at 2009 North American Chapter of the Association for Computational Linguistics―Human Language Technologies Conference (NAACL HLT 2009). Jimmy Lin The iSchool University of Maryland Sunday, May 31, 2009. Chris Dyer
E N D
Data-Intensive Text Processing with MapReduce (Bonus session) Tutorial at 2009 North American Chapter of the Association for Computational Linguistics―Human Language Technologies Conference (NAACL HLT 2009) Jimmy LinThe iSchool University of Maryland Sunday, May 31, 2009 Chris Dyer Department of Linguistics University of Maryland This work is licensed under a Creative Commons Attribution-Noncommercial-Share Alike 3.0 United StatesSee http://creativecommons.org/licenses/by-nc-sa/3.0/us/ for details
Agenda • Hadoop “nuts and bolts” • “Hello World” Hadoop example(distributed word count) • Running Hadoop in “standalone” mode • Running Hadoop on EC2 • Open-source Hadoop ecosystem • Exercises and “office hours”
Hadoop Zen • Don’t get frustrated (take a deep breath)… • Remember this when you experience those W$*#T@F! moments • This is bleeding edge technology: • Lots of bugs • Stability issues • Even lost data • To upgrade or not to upgrade (damned either way)? • Poor documentation (or none) • But… Hadoop is the path to data nirvana?
Cloud9 • Library used for teaching cloud computing courses at Maryland • Demos, sample code, etc. • Computing conditional probabilities • Pairs vs. stripes • Complex data types • Boilerplate code for working various IR collections • Dog food for research • Open source, anonymous svn access
Master node Client JobTracker TaskTracker TaskTracker TaskTracker Slave node Slave node Slave node
From Theory to Practice 1. Scp data to cluster 2. Move data into HDFS 3. Develop code locally 4. Submit MapReduce job 4a. Go back to Step 3 Hadoop Cluster You 5. Move data out of HDFS 6. Scp data from cluster
Data Types in Hadoop Writable Defines a de/serialization protocol. Every data type in Hadoop is a Writable. WritableComprable Defines a sort order. All keys must be of this type (but not values). Concrete classes for different data types. IntWritableLongWritable Text …
Complex Data Types in Hadoop • How do you implement complex data types? • The easiest way: • Encoded it as Text, e.g., (a, b) = “a:b” • Use regular expressions to parse and extract data • Works, but pretty hack-ish • The hard way: • Define a custom implementation of WritableComprable • Must implement: readFields, write, compareTo • Computationally efficient, but slow for rapid prototyping • Alternatives: • Cloud9 offers two other choices: Tuple and JSON • Plus, a number of frequently-used data types
Input file (on HDFS) InputSplit InputFormat RecordReader Mapper Partitioner Reducer RecordWriter OutputFormat Output file (on HDFS)
From Theory to Practice 1. Scp data to cluster 2. Move data into HDFS 3. Develop code locally 4. Submit MapReduce job 4a. Go back to Step 3 Hadoop Cluster You 5. Move data out of HDFS 6. Scp data from cluster
On Amazon: With EC2 0. Allocate Hadoop cluster 1. Scp data to cluster 2. Move data into HDFS EC2 3. Develop code locally 4. Submit MapReduce job 4a. Go back to Step 3 Your Hadoop Cluster You 5. Move data out of HDFS 6. Scp data from cluster 7. Clean up! Uh oh. Where did the data go?
On Amazon: EC2 and S3 Copy from S3 to HDFS S3(Persistent Store) EC2(The Cloud) Your Hadoop Cluster Copy from HFDS to S3
Questions? Comments? Thanks to the organizations who support our work: