You are previewing Data-Intensive Text Processing with MapReduce.
O'Reilly logo
Data-Intensive Text Processing with MapReduce

Book Description

Our world is being revolutionized by data-driven methods: access to large amounts of data has generated new insights and opened exciting new opportunities in commerce, science, and computing applications. Processing the enormous quantities of data necessary for these advances requires large clusters, making distributed computing paradigms more crucial than ever. MapReduce is a programming model for expressing distributed computations on massive datasets and an execution framework for large-scale data processing on clusters of commodity servers. The programming model provides an easy-to-understand abstraction for designing scalable algorithms, while the execution framework transparently handles many system-level details, ranging from scheduling to synchronization to fault tolerance. This book focuses on MapReduce algorithm design, with an emphasis on text processing algorithms common in natural language processing, information retrieval, and machine learning. We introduce the notion of MapReduce design patterns, which represent general reusable solutions to commonly occurring problems across a variety of problem domains. This book not only intends to help the reader "think in MapReduce", but also discusses limitations of the programming model as well. Table of Contents: Introduction / MapReduce Basics / MapReduce Algorithm Design / Inverted Indexing for Text Retrieval / Graph Algorithms / EM Algorithms for Text Processing / Closing Remarks

Table of Contents

  1. Cover
  2. Synthesis Lectures on Human Language Technologies
  3. Copyright
  4. Title Page
  5. Contents
  6. Acknowledgments
  7. 1 Introduction
    1. 1.1 Computing in the Clouds
    2. 1.2 Big Ideas
    3. 1.3 Why Is This Different?
    4. 1.4 What This Book Is Not
  8. 2 MapReduce Basics
    1. 2.1 Functional Programming Roots
    2. 2.2 Mappers and Reducers
    3. 2.3 The Execution Framework
    4. 2.4 Partitioners and Combiners
    5. 2.5 The Distributed File System
    6. 2.6 Hadoop Cluster Architecture
    7. 2.7 Summary
  9. 3 MapReduce Algorithm Design
    1. 3.1 Local Aggregation
      1. 3.1.1 Combiners and In-Mapper Combining
      2. 3.1.2 Algorithmic Correctness with Local Aggregation
    2. 3.2 Pairs and Stripes
    3. 3.3 Computing Relative Frequencies
    4. 3.4 Secondary Sorting
    5. 3.5 Relational Joins
      1. 3.5.1 Reduce-Side Join
      2. 3.5.2 Map-Side Join
      3. 3.5.3 Memory-Backed Join
    6. 3.6 Summary
  10. 4 Inverted Indexing for Text Retrieval
    1. 4.1 Web Crawling
    2. 4.2 Inverted Indexes
    3. 4.3 Inverted Indexing: Baseline Implementation
    4. 4.4 Inverted Indexing: Revised Implementation
    5. 4.5 Index Compression
      1. 4.5.1 Byte-Aligned and Word-Aligned Codes
      2. 4.5.2 Bit-Aligned Codes
      3. 4.5.3 Postings Compression
    6. 4.6 What About Retrieval?
    7. 4.7 Summary and Additional Readings
  11. 5 Graph Algorithms
    1. 5.1 Graph Representations
    2. 5.2 Parallel Breadth-First Search
    3. 5.3 PageRank
    4. 5.4 Issues with Graph Processing
    5. 5.5 Summary and Additional Readings
  12. 6 EM Algorithms for Text Processing
    1. 6.1 Expectation Maximization
      1. 6.1.1 Maximum Likelihood Estimation
      2. 6.1.2 A Latent Variable Marble Game
      3. 6.1.3 MLE with Latent Variables
      4. 6.1.4 Expectation Maximization
      5. 6.1.5 An EM Example
    2. 6.2 Hidden Markov Models
      1. 6.2.1 Three Questions for Hidden Markov Models
      2. 6.2.2 The Forward Algorithm
      3. 6.2.3 The Viterbi Algorithm
      4. 6.2.4 Parameter Estimation for HMMs
      5. 6.2.5 Forward-Backward Training: Summary
    3. 6.3 EM in MapReduce
      1. 6.3.1 HMM Training in MapReduce
    4. 6.4 Case Study: Word Alignment for Statistical Machine Translation
      1. 6.4.1 Statistical Phrase-Based Translation
      2. 6.4.2 Brief Digression: Language Modeling with MapReduce
      3. 6.4.3 Word Alignment
      4. 6.4.4 Experiments
    5. 6.5 EM-Like Algorithms
      1. 6.5.1 Gradient-Based Optimization and Log-Linear Models
    6. 6.6 Summary and Additional Readings
  13. 7 Closing Remarks
    1. 7.1 Limitations of MapReduce
    2. 7.2 Alternative Computing Paradigms
    3. 7.3 MapReduce and Beyond
  14. Bibliography
  15. Authors’ Biographies