data intensive distributed computing
play

Data-Intensive Distributed Computing CS 451/651 (Fall 2020) Part 3: - PDF document

Data-Intensive Distributed Computing CS 451/651 (Fall 2020) Part 3: From MapReduce to Spark (1/2) Ali Abedi These slides are available at https://www.student.cs.uwaterloo.ca/~cs451/ This work is licensed under a Creative Commons


  1. Data-Intensive Distributed Computing CS 451/651 (Fall 2020) Part 3: From MapReduce to Spark (1/2) Ali Abedi These slides are available at https://www.student.cs.uwaterloo.ca/~cs451/ This work is licensed under a Creative Commons Attribution-Noncommercial-Share Alike 3.0 United States See http://creativecommons.org/licenses/by-nc-sa/3.0/us/ for details 1

  2. The datacenter is the computer! What’s the instruction set? 2 Source: Google 2

  3. Map/Reduce Abstraction Instruction set Combine/Partition CPU Cluster of computers 3 We need a solution for both storage and computing. 3

  4. So you like programming in assembly? 4 Source: Wikipedia (ENIAC) So when we program in MapReduce is it like programming in assembly?! How can we do better? 4

  5. What’s the solution? Design a higher-level language Write a compiler 5 5

  6. Hadoop is great, but it’s really waaaaay too low level! What we really need is a What we really need is SQL! scripting language! Answer: Answer: 6 Yahoo and Facebook designed their own solutions on top of Hadoop to make it more flexible for their engineers. 6

  7. SQL Pig Scripts Both open-source projects today! 7 7

  8. Hive Pig MapReduce HDFS 8 Pig and Hive programs are converted to MapReduce jobs at the end of the day. 8

  9. Pig! 9 Source: Wikipedia (Pig) 9

  10. Pig: Example Task: Find the top 10 most visited pages in each category Visits URL Info User Url Time Url Category PageRank Amy cnn.com 8:00 cnn.com News 0.9 Amy bbc.com 10:00 bbc.com News 0.8 Amy flickr.com 10:05 flickr.com Photos 0.7 Fred cnn.com 12:00 espn.com Sports 0.9 10 Pig Slides adapted from Olston et al. (SIGMOD 2008) 10

  11. Pig: Example Script visits = load ‘/data/visits’ as (user, url, time); gVisits = group visits by url; visitCounts = foreach gVisits generate url, count(visits); urlInfo = load ‘/data/ urlInfo ’ as (url, category, pRank); visitCounts = join visitCounts by url, urlInfo by url; gCategories = group visitCounts by category; topUrls = foreach gCategories generate top(visitCounts,10); store topUrls into ‘/data/ topUrls ’; 11 Pig Slides adapted from Olston et al. (SIGMOD 2008) 11

  12. Pig Query Plan load visits group by url foreach url load urlInfo generate count join on url group by category foreach category generate top(urls, 10) 12 Pig Slides adapted from Olston et al. (SIGMOD 2008) 12

  13. Pig: MapReduce Execution Map 1 load visits group by url Reduce 1 Map 2 foreach url load urlInfo generate count join on url Reduce 2 Map 3 group by category Reduce 3 foreach category generate top(urls, 10) 13 Pig Slides adapted from Olston et al. (SIGMOD 2008) 13

  14. visits = load ‘/data/visits’ as (user, url, time); gVisits = group visits by url; visitCounts = foreach gVisits generate url, count(visits); urlInfo = load ‘/data/ urlInfo ’ as (url, category, pRank); visitCounts = join visitCounts by url, urlInfo by url; gCategories = group visitCounts by category; topUrls = foreach gCategories generate top(visitCounts,10); store topUrls into ‘/data/ topUrls ’; 14 14

  15. But isn’t Pig slower? Sure, but c can be slower than assembly too… 15 15

  16. Pig: Basics Sequence of statements manipulating relations (aliases) Data model atoms tuples bags maps json 16

  17. Pig: Common Operations LOAD: load data (from HDFS) FOREACH … GENERATE: per tuple processing FILTER: discard unwanted tuples GROUP/COGROUP: group tuples JOIN: relational join STORE: store data (to HDFS) 17

  18. Pig: GROUPing A = LOAD 'myfile.txt ’ AS (f1: int, f2: int, f3: int); (1, 2, 3) (4, 2, 1) (8, 3, 4) (4, 3, 3) (7, 2, 5) (8, 4, 3) X = GROUP A BY f1; (1, {(1, 2, 3)}) (4, {(4, 2, 1), (4, 3, 3)}) (7, {(7, 2, 5)}) (8, {(8, 3, 4), (8, 4, 3)}) 18

  19. Pig: COGROUPing A: B: (1, 2, 3) (2, 4) (4, 2, 1) (8, 9) (8, 3, 4) (1, 3) (4, 3, 3) (2, 7) (7, 2, 5) (2, 9) (8, 4, 3) (4, 6) (4, 9) X = COGROUP A BY $0, B BY $0; (1, {(1, 2, 3)}, {(1, 3)}) (2, {}, {(2, 4), (2, 7), (2, 9)}) (4, {(4, 2, 1), (4, 3, 3)}, {(4, 6),(4, 9)}) (7, {(7, 2, 5)}, {}) (8, {(8, 3, 4), (8, 4, 3)}, {(8, 9)}) 19

  20. Pig: JOINing A: B: (1, 2, 3) (2, 4) (4, 2, 1) (8, 9) (8, 3, 4) (1, 3) (4, 3, 3) (2, 7) (7, 2, 5) (2, 9) (8, 4, 3) (4, 6) (4, 9) X = JOIN A BY $0, B BY $0; (1,2,3,1,3) (4,2,1,4,6) (4,3,3,4,6) (4,2,1,4,9) (4,3,3,4,9) (8,3,4,8,9) (8,4,3,8,9) 20

  21. Pig UDFs User-defined functions: Java Python JavaScript Ruby … UDFs make Pig arbitrarily extensible Express “core” computations in UDFs Take advantage of Pig as glue code for scale-out plumbing 21

  22. The datacenter is the computer! What’s the instruction set? Okay, let’s fix this! 22 Source: Google Having to formulate the problem in terms of map and reduce only is restrictive. 22

  23. MapReduce Workflows HDFS map map map map reduce reduce reduce reduce HDFS HDFS HDFS HDFS What’s wrong? 23 There is a lot of disk i/o involved which significantly reduces running MapReduce jobs like this. 23

  24. Want MM? HDFS HDFS map map map map HDFS HDFS ✗ HDFS ✔ 24 It’s okay not to have reduce but the output of map cannot go to another map. 24

  25. Want MRR? HDFS HDFS map map map reduce reduce reduce reduce HDFS HDFS ✗ HDFS ✔ 25 Similarly we cannot directly move the output of reduce to another reduce stage. 25

  26. The datacenter is the computer! Let’s enrich the instruction set! 26 Source: Google Can we add more operations to make the instruction set more flexible? 26

  27. Spark Answer to “What’s beyond MapReduce?” Brief history: Developed at UC Berkeley AMPLab in 2009 Open-sourced in 2010 Became top-level Apache project in February 2014 27 27

  28. Spark vs. Hadoop Spark September2014 Hadoop Google Trends 28 Spark is more popular than Hadoop today. 28

  29. MapReduce List[(K1,V1)] map f: (K1, V1) ⇒ List[(K2, V2)] reduce g: (K2, Iterable[V2]) ⇒ List[(K3, V3)] List[K3,V3]) This is the only mechanism we had in MapReduce. 29

  30. Map-like Operations RDD[T] RDD[T] RDD[T] RDD[T] map filter mapPartitions flatMap f: (T) f: (T) ⇒ f: (Iterator[T]) f: (T) ⇒ TraversableOnce[U] ⇒ U Boolean ⇒ Iterator[U] RDD[U] RDD[T] RDD[U] RDD[U] But Spark provides many more operations (enriched instruction set). 30

  31. Reduce-like Operations RDD[(K, V)] RDD[(K, V)] RDD[(K, V)] aggregateByKey reduceByKey groupByKey seqOp: (U, V) ⇒ U, combOp: (U, f: (V, V) ⇒ V U) ⇒ U RDD[(K, Iterable[V])] RDD[(K, V)] RDD[(K, U)] 31

  32. And many other operations! 32

Download Presentation
Download Policy: The content available on the website is offered to you 'AS IS' for your personal information and use only. It cannot be commercialized, licensed, or distributed on other websites without prior consent from the author. To download a presentation, simply click this link. If you encounter any difficulties during the download process, it's possible that the publisher has removed the file from their server.

Recommend


More recommend