Hadoop MapReduce

Hadoop MapReduce Architecture

  • Job submitter (client) : ส่งงานไปหา job tracker
  • One Job Tracker Node : ส่ง task ที่มีไปยัง task trackers และเพื่อให้เป็นการทำงานร่วมกัน
  • Multiple Task Tracker nodes : ประมวลงานที่ได้รับมา

Job Execution Flow

  1. Job submitter (client) submits a job to Job Tracker
  2. Job Tracker creates execution plan
  3. Job Tracker sends tasks to Task Trackers
  4. Task Trackers performs tasks and also report progress to Job Tracker via heartbeats
  5. Job Tracker manages “map” and “reduce” phases
  6. Job tracker updates states

MapReduce Architecture

 

Basic Concept of MapReduce

  • MapReduce is a programming model ถูกออกแบบมาเพื่อการประมวลที่มีข้อมูลขนาดใหญ่ในแบบ parallel โดยการแบ่งงานออกเป็นชุดๆ
  • MapReduce programs are written in a particular style influenced by functional programming constructs, specifically idioms for processing lists of data

MapReduce uses Functional Programming

  • การคำนวณปริมาณข้อมูลจำนวนมากแบบ parallel ต้องการมีการแบ่งปริมาณงานออกเป็นส่วนๆ เพื่อให้เครื่องอื่นช่วยทำงาน
  • Non-functional programming model, where components were allowed to share data arbitrarily, will not scale to large clusters (hundreds or thousands of nodes)
    • ค่าใช้จ่ายที่จำเป็นในการเชื่อมต่อ ก็เพื่อเก็บข้อมูลไว้ในโหนด โดยที่โหนดต่างๆนั้นจะต้องเชื่อมต่อกันอยู่ตลอดเวลา
  • MapReduce uses functional programming ซึ่งองค์ประกอบของข้อมูลทั้งหมดใน MapReduce นั้นไม่สามารถอัพเดทหรือเปลี่ยนแปลงได้
    • If, in a mapping task, you change an input (key, value) pair, it does not get reflected back in the input files; communication occurs only by generating new output (key, value) pairs, which are then forwarded by the system into the next phase of execution

List Processing: Map and Reduce

  • Conceptually, a MapReduce program performs the transformation
    • “lists of input data elements” -> “lists of output data elements”
  • A MapReduce program will do this twice, using two different list processing idioms in two phases
    • Using “map” idiom in “mapping” phase
    • Using “reducing” idiom in “reducing” phase

Mapping Phase

  • The first phase of a MapReduce program is called “Mapping” องค์ประกอบข้อมูลจะถูกจัดเตรียมไว้ให้กับฟังก์ชันที่เรียกว่า “Mapper” ซึ่งจะแปลงแต่ละองค์ประกอบให้เป็น ข้อมูลออก – เรียกว่า “การแมป”

Mapping Lists Example

  • A mapping function toUpper(str) which returns an uppercase version of its input string
    • สามารถใช้ function ผ่าน map เพื่อให้ “a list if strings” เป็น “a list of uppercase string”
    • Note : string ที่ได้มา ไม่ได้ถูกแก้ที่นี่แต่จะส่ง string ใหม่กลับไป ซึ่งเป็นผลลัพธ์ที่ได้จากการทำงาน

Reducing Phase

  • Reducing lets you aggregate values together
  • A reducer function receives an iterator of input values from an input list. จากนั้นจะรวมค่าที่ได้รับมาเหล่านั้นเข้าด้วยกัน และส่งคืนผลลัพธ์นั้นเป็นค่าเดียว

Reduce lists Examples

  • Reducing มักถูกใช้เพื่อสร้างข้อมูลสรุป โดยทำให้ข้อมูลจำนวนมากกลายเป็นข้อมูลสรุปที่มีขนาดเล็กลง
  • เช่น การบวก + สามารถใช้ reduce function ในการหาคำตอบจากการบวกเลขที่ได้รับจาก input หลายตัว

 

Hadoop MapReduce Programming

Hadoop MapReduce Framework

  • The Hadoop MapReduce framework takes these concepts and uses them to process large volumes of data
  • A MapReduce program has two components:
    • Mapper: one that implements the mapper
    • Reducer: one that implements the reducer
  • Bother Mapper and Reducer takes input data and then generates output data

Keys and Values

  • In Hadoop MapReduce, data element (in input and output) is always in key/value pair
    • Every value has a key associated with it
  • For example, a log of time-coded speedometer readings from multiple cars could be keyed by license-plate number; it would look like:

MapReduce data flow

 

Hadoop MapReduce Framework

  • Takes care of distributed processing and coordination
  • Scheduling
    • Jobs are broken down into tasks, which are then scheduled
  • Task localization with data
    • Hadoop framework sends the tasks (code) to nodes that host segment of data
  • Error handling
    • Tasks are automatically retried on other machines when errors occur
  • Data synchronization
    • Shuffles and sorts data
    • Moves data between nodes

MapReduce Data Flow