The Spark Big Data Analytics Platform
|
|
|
- Candice Beasley
- 10 years ago
- Views:
Transcription
1 The Spark Big Data Analytics Platform Amir H. Payberah Swedish Institute of Computer Science June 17, 2014 Amir H. Payberah (SICS) Spark June 17, / 125
2 Amir H. Payberah (SICS) Spark June 17, / 125
3 Big Data refers to datasets and flows large enough that has outpaced our capability to store, process, analyze, and understand. Amir H. Payberah (SICS) Spark June 17, / 125
4 Where Does Big Data Come From? Amir H. Payberah (SICS) Spark June 17, / 125
5 Big Data Market Driving Factors The number of web pages indexed by Google, which were around one million in 1998, have exceeded one trillion in 2008, and its expansion is accelerated by appearance of the social networks. Mining big data: current status, and forecast to the future [Wei Fan et al., 2013] Amir H. Payberah (SICS) Spark June 17, / 125
6 Big Data Market Driving Factors The amount of mobile data traffic is expected to grow to 10.8 Exabyte per month by Worldwide Big Data Technology and Services Forecast [Dan Vesset et al., 2013] Amir H. Payberah (SICS) Spark June 17, / 125
7 Big Data Market Driving Factors More than 65 billion devices were connected to the Internet by 2010, and this number will go up to 230 billion by The Internet of Things Is Coming [John Mahoney et al., 2013] Amir H. Payberah (SICS) Spark June 17, / 125
8 Big Data Market Driving Factors Many companies are moving towards using Cloud services to access Big Data analytical tools. Amir H. Payberah (SICS) Spark June 17, / 125
9 Big Data Market Driving Factors Open source communities Amir H. Payberah (SICS) Spark June 17, / 125
10 How To Process Big Data? Amir H. Payberah (SICS) Spark June 17, / 125
11 Scale Up vs. Scale Out (1/2) Scale up or scale vertically: adding resources to a single node in a system. Scale out or scale horizontally: adding more nodes to a system. Amir H. Payberah (SICS) Spark June 17, / 125
12 Scale Up vs. Scale Out (2/2) Scale up: more expensive than scaling out. Scale out: more challenging for fault tolerance and software development. Amir H. Payberah (SICS) Spark June 17, / 125
13 Taxonomy of Parallel Architectures DeWitt, D. and Gray, J. Parallel database systems: the future of high performance database systems. ACM Communications, 35(6), 85-98, Amir H. Payberah (SICS) Spark June 17, / 125
14 Taxonomy of Parallel Architectures DeWitt, D. and Gray, J. Parallel database systems: the future of high performance database systems. ACM Communications, 35(6), 85-98, Amir H. Payberah (SICS) Spark June 17, / 125
15 Amir H. Payberah (SICS) Spark June 17, / 125
16 Big Data Analytics Stack Amir H. Payberah (SICS) Spark June 17, / 125
17 Outline Introduction to Scala Data exploration using Spark Stream processing with Spark Streaming Graph analytics with GraphX Amir H. Payberah (SICS) Spark June 17, / 125
18 Amir H. Payberah (SICS) Spark June 17, / 125
19 Scala Scala: scalable language A blend of object-oriented and functional programming Runs on the Java Virtual Machine Designed by Martin Odersky at EPFL Amir H. Payberah (SICS) Spark June 17, / 125
20 Functional Programming Languages In a restricted sense: a language that does not have mutable variables, assignments, or imperative control structures. In a wider sense: it enables the construction of programs that focus on functions. Amir H. Payberah (SICS) Spark June 17, / 125
21 Functional Programming Languages In a restricted sense: a language that does not have mutable variables, assignments, or imperative control structures. In a wider sense: it enables the construction of programs that focus on functions. Functions are first-class citizens: Defined anywhere (including inside other functions). Passed as parameters to functions and returned as results. Operators to compose functions. Amir H. Payberah (SICS) Spark June 17, / 125
22 Scala Variables Values: immutable Variables: mutable var myvar: Int = 0 val myval: Int = 1 Scala data types: Boolean, Byte, Short, Char, Int, Long, Float, Double, String Amir H. Payberah (SICS) Spark June 17, / 125
23 If... Else var x = 30; if (x == 10) { println("value of X is 10"); } else if (x == 20) { println("value of X is 20"); } else { println("this is else statement"); } Amir H. Payberah (SICS) Spark June 17, / 125
24 Loop var a = 0 var b = 0 for (a <- 1 to 3; b <- 1 until 3) { println("value of a: " + a + ", b: " + b ) } // loop with collections val numlist = List(1, 2, 3, 4, 5, 6) for (a <- numlist) { println("value of a: " + a) } Amir H. Payberah (SICS) Spark June 17, / 125
25 Functions def functionname([list of parameters]): [return type] = { function body return [expr] } def addint(a: Int, b: Int): Int = { var sum: Int = 0 sum = a + b sum } println("returned Value: " + addint(5, 7)) Amir H. Payberah (SICS) Spark June 17, / 125
26 Anonymous Functions Lightweight syntax for defining functions. var mul = (x: Int, y: Int) => x * y println(mul(3, 4)) Amir H. Payberah (SICS) Spark June 17, / 125
27 Higher-Order Functions def apply(f: Int => String, v: Int) = f(v) def layout(x: Int) = "[" + x.tostring() + "]" println(apply(layout, 10)) Amir H. Payberah (SICS) Spark June 17, / 125
28 Collections (1/2) Array: fixed-size sequential collection of elements of the same type val t = Array("zero", "one", "two") val b = t(0) // b = zero Amir H. Payberah (SICS) Spark June 17, / 125
29 Collections (1/2) Array: fixed-size sequential collection of elements of the same type val t = Array("zero", "one", "two") val b = t(0) // b = zero List: sequential collection of elements of the same type val t = List("zero", "one", "two") val b = t(0) // b = zero Amir H. Payberah (SICS) Spark June 17, / 125
30 Collections (1/2) Array: fixed-size sequential collection of elements of the same type val t = Array("zero", "one", "two") val b = t(0) // b = zero List: sequential collection of elements of the same type val t = List("zero", "one", "two") val b = t(0) // b = zero Set: sequential collection of elements of the same type without duplicates val t = Set("zero", "one", "two") val t.contains("zero") Amir H. Payberah (SICS) Spark June 17, / 125
31 Collections (2/2) Map: collection of key/value pairs val m = Map(1 -> "sics", 2 -> "kth") val b = m(1) // b = sics Amir H. Payberah (SICS) Spark June 17, / 125
32 Collections (2/2) Map: collection of key/value pairs val m = Map(1 -> "sics", 2 -> "kth") val b = m(1) // b = sics Tuple: A fixed number of items of different types together val t = (1, "hello") val b = t._1 // b = 1 val c = t._2 // c = hello Amir H. Payberah (SICS) Spark June 17, / 125
33 Functional Combinators map: applies a function over each element in the list val numbers = List(1, 2, 3, 4) numbers.map(i => i * 2) // List(2, 4, 6, 8) flatten: it collapses one level of nested structure List(List(1, 2), List(3, 4)).flatten // List(1, 2, 3, 4) flatmap: map + flatten foreach: it is like map but returns nothing Amir H. Payberah (SICS) Spark June 17, / 125
34 Classes and Objects class Calculator { val brand: String = "HP" def add(m: Int, n: Int): Int = m + n } val calc = new Calculator calc.add(1, 2) println(calc.brand) Amir H. Payberah (SICS) Spark June 17, / 125
35 Classes and Objects class Calculator { val brand: String = "HP" def add(m: Int, n: Int): Int = m + n } val calc = new Calculator calc.add(1, 2) println(calc.brand) A singleton is a class that can have only one instance. object Test { def main(args: Array[String]) {... } } Test.main(null) Amir H. Payberah (SICS) Spark June 17, / 125
36 Case Classes and Pattern Matching Case classes are used to store and match on the contents of a class. They are designed to be used with pattern matching. You can construct them without using new. case class Calc(brand: String, model: String) def calctype(calc: Calc) = calc match { case Calc("hp", "20B") => "financial" case Calc("hp", "48G") => "scientific" case Calc("hp", "30B") => "business" case _ => "Calculator of unknown type" } calctype(calc("hp", "20B")) Amir H. Payberah (SICS) Spark June 17, / 125
37 Simple Build Tool (SBT) An open source build tool for Scala and Java projects. Similar to Java s Maven or Ant. It is written in Scala. Amir H. Payberah (SICS) Spark June 17, / 125
38 SBT - Hello World! // make dir hello and edit Hello.scala object Hello { def main(args: Array[String]) { println("hello world.") } } $ cd hello $ sbt compile run Amir H. Payberah (SICS) Spark June 17, / 125
39 Common Commands compile: compiles the main sources. run <argument>*: run the main class. package: creates a jar file. console: starts the Scala interpreter. clean: deletes all generated files. help <command>: displays detailed help for the specified command. Amir H. Payberah (SICS) Spark June 17, / 125
40 Create a Simple Project Create project directory. Create src/main/scala directory. Create build.sbt in the project root. Amir H. Payberah (SICS) Spark June 17, / 125
41 build.sbt A list of Scala expressions, separated by blank lines. Located in the project s base directory. $ cat build.sbt name := "hello" version := "1.0" scalaversion := "2.10.4" Amir H. Payberah (SICS) Spark June 17, / 125
42 Add Dependencies Add in build.sbt. Module ID format: "groupid" %% "artifact" % "version" % "configuration" librarydependencies += "org.apache.spark" %% "spark-core" % "1.0.0" // multiple dependencies librarydependencies ++= Seq( "org.apache.spark" %% "spark-core" % "1.0.0", "org.apache.spark" %% "spark-streaming" % "1.0.0" ) sbt uses the standard Maven2 repository by default, but you can add more resolvers. resolvers += "Akka Repository" at " Amir H. Payberah (SICS) Spark June 17, / 125
43 Scala Hands-on Exercises (1/4) Declare a list of integers as a variable called mynumbers Amir H. Payberah (SICS) Spark June 17, / 125
44 Scala Hands-on Exercises (1/4) Declare a list of integers as a variable called mynumbers val mynumbers = List(1, 2, 5, 4, 7, 3) Amir H. Payberah (SICS) Spark June 17, / 125
45 Scala Hands-on Exercises (1/4) Declare a list of integers as a variable called mynumbers val mynumbers = List(1, 2, 5, 4, 7, 3) Declare a function, pow, that computes the second power of an Int Amir H. Payberah (SICS) Spark June 17, / 125
46 Scala Hands-on Exercises (1/4) Declare a list of integers as a variable called mynumbers val mynumbers = List(1, 2, 5, 4, 7, 3) Declare a function, pow, that computes the second power of an Int def pow(a: Int): Int = a * a Amir H. Payberah (SICS) Spark June 17, / 125
47 Scala Hands-on Exercises (2/4) Apply the function to mynumbers using the map function Amir H. Payberah (SICS) Spark June 17, / 125
48 Scala Hands-on Exercises (2/4) Apply the function to mynumbers using the map function mynumbers.map(x => pow(x)) // or mynumbers.map(pow(_)) // or mynumbers.map(pow) Amir H. Payberah (SICS) Spark June 17, / 125
49 Scala Hands-on Exercises (2/4) Apply the function to mynumbers using the map function mynumbers.map(x => pow(x)) // or mynumbers.map(pow(_)) // or mynumbers.map(pow) Write the pow function inline in a map call, using closure notation Amir H. Payberah (SICS) Spark June 17, / 125
50 Scala Hands-on Exercises (2/4) Apply the function to mynumbers using the map function mynumbers.map(x => pow(x)) // or mynumbers.map(pow(_)) // or mynumbers.map(pow) Write the pow function inline in a map call, using closure notation mynumbers.map(x => x * x) Amir H. Payberah (SICS) Spark June 17, / 125
51 Scala Hands-on Exercises (2/4) Apply the function to mynumbers using the map function mynumbers.map(x => pow(x)) // or mynumbers.map(pow(_)) // or mynumbers.map(pow) Write the pow function inline in a map call, using closure notation mynumbers.map(x => x * x) Iterate through mynumbers and print out its items Amir H. Payberah (SICS) Spark June 17, / 125
52 Scala Hands-on Exercises (2/4) Apply the function to mynumbers using the map function mynumbers.map(x => pow(x)) // or mynumbers.map(pow(_)) // or mynumbers.map(pow) Write the pow function inline in a map call, using closure notation mynumbers.map(x => x * x) Iterate through mynumbers and print out its items for (i <- mynumbers) println(i) // or mynumbers.foreach(println) Amir H. Payberah (SICS) Spark June 17, / 125
53 Scala Hands-on Exercises (3/4) Declare a list of pair of string and integers as a variable called mylist Amir H. Payberah (SICS) Spark June 17, / 125
54 Scala Hands-on Exercises (3/4) Declare a list of pair of string and integers as a variable called mylist val mylist = List[(String, Int)](("a", 1), ("b", 2), ("c", 3)) Amir H. Payberah (SICS) Spark June 17, / 125
55 Scala Hands-on Exercises (3/4) Declare a list of pair of string and integers as a variable called mylist val mylist = List[(String, Int)](("a", 1), ("b", 2), ("c", 3)) Write an inline function to increment the integer values of the list mylist Amir H. Payberah (SICS) Spark June 17, / 125
56 Scala Hands-on Exercises (3/4) Declare a list of pair of string and integers as a variable called mylist val mylist = List[(String, Int)](("a", 1), ("b", 2), ("c", 3)) Write an inline function to increment the integer values of the list mylist val x = v.map { case (name, age) => age + 1 } // or val x = v.map(i => i._2 + 1) // or val x = v.map(_._2 + 1) Amir H. Payberah (SICS) Spark June 17, / 125
57 Scala Hands-on Exercises (4/4) Do a word-count of a text file: create a Map with words as keys and counts of the number of occurrences of the word as values Amir H. Payberah (SICS) Spark June 17, / 125
58 Scala Hands-on Exercises (4/4) Do a word-count of a text file: create a Map with words as keys and counts of the number of occurrences of the word as values You can load a text file as an array of lines as shown below: import scala.io.source val lines = Source.fromFile("/root/spark/README.md").getLines.toArray Amir H. Payberah (SICS) Spark June 17, / 125
59 Scala Hands-on Exercises (4/4) Do a word-count of a text file: create a Map with words as keys and counts of the number of occurrences of the word as values You can load a text file as an array of lines as shown below: import scala.io.source val lines = Source.fromFile("/root/spark/README.md").getLines.toArray Then, instantiate a HashMap[String, Int] and use functional methods to populate it with word-counts Amir H. Payberah (SICS) Spark June 17, / 125
60 Scala Hands-on Exercises (4/4) Do a word-count of a text file: create a Map with words as keys and counts of the number of occurrences of the word as values You can load a text file as an array of lines as shown below: import scala.io.source val lines = Source.fromFile("/root/spark/README.md").getLines.toArray Then, instantiate a HashMap[String, Int] and use functional methods to populate it with word-counts val counts = new collection.mutable.hashmap[string, Int].withDefaultValue(0) lines.flatmap(_.split("""\w+""")).foreach(word => counts(word) += 1) counts.foreach(println) Amir H. Payberah (SICS) Spark June 17, / 125
61 Amir H. Payberah (SICS) Spark June 17, / 125
62 What is Spark? An efficient distributed general-purpose data analysis platform. Focusing on ease of programming and high performance. Amir H. Payberah (SICS) Spark June 17, / 125
63 Spark Big Data Analytics Stack Amir H. Payberah (SICS) Spark June 17, / 125
64 Motivation MapReduce programming model has not been designed for complex operations, e.g., data mining. Very expensive, i.e., always goes to disk and HDFS. Amir H. Payberah (SICS) Spark June 17, / 125
65 Solution Extends MapReduce with more operators. Support for advanced data flow graphs. In-memory and out-of-core processing. Amir H. Payberah (SICS) Spark June 17, / 125
66 Spark vs. Hadoop Amir H. Payberah (SICS) Spark June 17, / 125
67 Spark vs. Hadoop Amir H. Payberah (SICS) Spark June 17, / 125
68 Spark vs. Hadoop Amir H. Payberah (SICS) Spark June 17, / 125
69 Spark vs. Hadoop Amir H. Payberah (SICS) Spark June 17, / 125
70 Resilient Distributed Datasets (RDD) (1/2) A distributed memory abstraction. Amir H. Payberah (SICS) Spark June 17, / 125
71 Resilient Distributed Datasets (RDD) (1/2) A distributed memory abstraction. Immutable collections of objects spread across a cluster. Amir H. Payberah (SICS) Spark June 17, / 125
72 Resilient Distributed Datasets (RDD) (2/2) An RDD is divided into a number of partitions, which are atomic pieces of information. Partitions of an RDD can be stored on different nodes of a cluster. Amir H. Payberah (SICS) Spark June 17, / 125
73 RDD Operators Higher-order functions: transformations and actions. Transformations: lazy operators that create new RDDs. Actions: launch a computation and return a value to the program or write data to the external storage. Amir H. Payberah (SICS) Spark June 17, / 125
74 Transformations vs. Actions Amir H. Payberah (SICS) Spark June 17, / 125
75 RDD Transformations - Map All pairs are independently processed. Amir H. Payberah (SICS) Spark June 17, / 125
76 RDD Transformations - Map All pairs are independently processed. // passing each element through a function. val nums = sc.parallelize(array(1, 2, 3)) val squares = nums.map(x => x * x) // {1, 4, 9} Amir H. Payberah (SICS) Spark June 17, / 125
77 RDD Transformations - GroupBy Pairs with identical key are grouped. Groups are independently processed. Amir H. Payberah (SICS) Spark June 17, / 125
78 RDD Transformations - GroupBy Pairs with identical key are grouped. Groups are independently processed. val schools = sc.parallelize(seq(("sics", 1), ("kth", 1), ("sics", 2))) schools.groupbykey() // {("sics", (1, 2)), ("kth", (1))} schools.reducebykey((x, y) => x + y) // {("sics", 3), ("kth", 1)} Amir H. Payberah (SICS) Spark June 17, / 125
79 RDD Transformations - Join Performs an equi-join on the key. Join candidates are independently processed. Amir H. Payberah (SICS) Spark June 17, / 125
80 RDD Transformations - Join Performs an equi-join on the key. Join candidates are independently processed. val list1 = sc.parallelize(seq(("sics", "10"), ("kth", "50"), ("sics", "20"))) val list2 = sc.parallelize(seq(("sics", "upsala"), ("kth", "stockholm"))) list1.join(list2) // ("sics", ("10", "upsala")) // ("sics", ("20", "upsala")) // ("kth", ("50", "stockholm")) Amir H. Payberah (SICS) Spark June 17, / 125
81 Basic RDD Actions Return all the elements of the RDD as an array. val nums = sc.parallelize(array(1, 2, 3)) nums.collect() // Array(1, 2, 3) Amir H. Payberah (SICS) Spark June 17, / 125
82 Basic RDD Actions Return all the elements of the RDD as an array. val nums = sc.parallelize(array(1, 2, 3)) nums.collect() // Array(1, 2, 3) Return an array with the first n elements of the RDD. nums.take(2) // Array(1, 2) Amir H. Payberah (SICS) Spark June 17, / 125
83 Basic RDD Actions Return all the elements of the RDD as an array. val nums = sc.parallelize(array(1, 2, 3)) nums.collect() // Array(1, 2, 3) Return an array with the first n elements of the RDD. nums.take(2) // Array(1, 2) Return the number of elements in the RDD. nums.count() // 3 Amir H. Payberah (SICS) Spark June 17, / 125
84 Basic RDD Actions Return all the elements of the RDD as an array. val nums = sc.parallelize(array(1, 2, 3)) nums.collect() // Array(1, 2, 3) Return an array with the first n elements of the RDD. nums.take(2) // Array(1, 2) Return the number of elements in the RDD. nums.count() // 3 Aggregate the elements of the RDD using the given function. nums.reduce((x, y) => x + y) // 6 Amir H. Payberah (SICS) Spark June 17, / 125
85 Creating RDDs Turn a collection into an RDD. val a = sc.parallelize(array(1, 2, 3)) Load text file from local FS, HDFS, or S3. val a = sc.textfile("file.txt") val b = sc.textfile("directory/*.txt") val c = sc.textfile("hdfs://namenode:9000/path/file") Amir H. Payberah (SICS) Spark June 17, / 125
86 SparkContext Main entry point to Spark functionality. Available in shell as variable sc. In standalone programs, you should make your own. import org.apache.spark.sparkcontext import org.apache.spark.sparkcontext._ val sc = new SparkContext(master, appname, [sparkhome], [jars]) Amir H. Payberah (SICS) Spark June 17, / 125
87 Spark Hands-on Exercises (1/3) Read data from the given file hamlet and create an RDD named pagecounts Amir H. Payberah (SICS) Spark June 17, / 125
88 Spark Hands-on Exercises (1/3) Read data from the given file hamlet and create an RDD named pagecounts val pagecounts = sc.textfile("hamlet") Amir H. Payberah (SICS) Spark June 17, / 125
89 Spark Hands-on Exercises (1/3) Read data from the given file hamlet and create an RDD named pagecounts val pagecounts = sc.textfile("hamlet") Get the first 10 lines of hamlet Amir H. Payberah (SICS) Spark June 17, / 125
90 Spark Hands-on Exercises (1/3) Read data from the given file hamlet and create an RDD named pagecounts val pagecounts = sc.textfile("hamlet") Get the first 10 lines of hamlet pagecounts.take(10).foreach(println) Amir H. Payberah (SICS) Spark June 17, / 125
91 Spark Hands-on Exercises (1/3) Read data from the given file hamlet and create an RDD named pagecounts val pagecounts = sc.textfile("hamlet") Get the first 10 lines of hamlet pagecounts.take(10).foreach(println) Count the total records in the data set pagecounts Amir H. Payberah (SICS) Spark June 17, / 125
92 Spark Hands-on Exercises (1/3) Read data from the given file hamlet and create an RDD named pagecounts val pagecounts = sc.textfile("hamlet") Get the first 10 lines of hamlet pagecounts.take(10).foreach(println) Count the total records in the data set pagecounts pagecounts.count Amir H. Payberah (SICS) Spark June 17, / 125
93 Spark Hands-on Exercises (2/3) Filter the data set pagecounts and return the items that have the word this, and cache in the memory Amir H. Payberah (SICS) Spark June 17, / 125
94 Spark Hands-on Exercises (2/3) Filter the data set pagecounts and return the items that have the word this, and cache in the memory val lineswiththis = pagecounts.filter(line => line.contains("this")).cache \\ or val lineswiththis = pagecounts.filter(_.contains("this")).cache Amir H. Payberah (SICS) Spark June 17, / 125
95 Spark Hands-on Exercises (2/3) Filter the data set pagecounts and return the items that have the word this, and cache in the memory val lineswiththis = pagecounts.filter(line => line.contains("this")).cache \\ or val lineswiththis = pagecounts.filter(_.contains("this")).cache Find the lines with the most number of words. Amir H. Payberah (SICS) Spark June 17, / 125
96 Spark Hands-on Exercises (2/3) Filter the data set pagecounts and return the items that have the word this, and cache in the memory val lineswiththis = pagecounts.filter(line => line.contains("this")).cache \\ or val lineswiththis = pagecounts.filter(_.contains("this")).cache Find the lines with the most number of words. lineswiththis.map(line => line.split(" ").size).reduce((a, b) => if (a > b) a else b) Amir H. Payberah (SICS) Spark June 17, / 125
97 Spark Hands-on Exercises (2/3) Filter the data set pagecounts and return the items that have the word this, and cache in the memory val lineswiththis = pagecounts.filter(line => line.contains("this")).cache \\ or val lineswiththis = pagecounts.filter(_.contains("this")).cache Find the lines with the most number of words. lineswiththis.map(line => line.split(" ").size).reduce((a, b) => if (a > b) a else b) Count the total number of words Amir H. Payberah (SICS) Spark June 17, / 125
98 Spark Hands-on Exercises (2/3) Filter the data set pagecounts and return the items that have the word this, and cache in the memory val lineswiththis = pagecounts.filter(line => line.contains("this")).cache \\ or val lineswiththis = pagecounts.filter(_.contains("this")).cache Find the lines with the most number of words. lineswiththis.map(line => line.split(" ").size).reduce((a, b) => if (a > b) a else b) Count the total number of words val wordcounts = lineswiththis.flatmap(line => line.split(" ")).count \\ or val wordcounts = lineswiththis.flatmap(_.split(" ")).count Amir H. Payberah (SICS) Spark June 17, / 125
99 Spark Hands-on Exercises (3/3) Count the number of distinct words Amir H. Payberah (SICS) Spark June 17, / 125
100 Spark Hands-on Exercises (3/3) Count the number of distinct words val uniquewordcounts = lineswiththis.flatmap(_.split(" ")).distinct.count Amir H. Payberah (SICS) Spark June 17, / 125
101 Spark Hands-on Exercises (3/3) Count the number of distinct words val uniquewordcounts = lineswiththis.flatmap(_.split(" ")).distinct.count Count the number of each word Amir H. Payberah (SICS) Spark June 17, / 125
102 Spark Hands-on Exercises (3/3) Count the number of distinct words val uniquewordcounts = lineswiththis.flatmap(_.split(" ")).distinct.count Count the number of each word val eachwordcounts = lineswiththis.flatmap(_.split(" ")).map(word => (word, 1)).reduceByKey((a, b) => a + b) Amir H. Payberah (SICS) Spark June 17, / 125
103 Amir H. Payberah (SICS) Spark June 17, / 125
104 Motivation Many applications must process large streams of live data and provide results in real-time. Processing information as it flows, without storing them persistently. Amir H. Payberah (SICS) Spark June 17, / 125
105 Motivation Many applications must process large streams of live data and provide results in real-time. Processing information as it flows, without storing them persistently. Traditional DBMSs: Store and index data before processing it. Process data only when explicitly asked by the users. Both aspects contrast with our requirements. Amir H. Payberah (SICS) Spark June 17, / 125
106 DBMS vs. DSMS (1/3) DBMS: persistent data where updates are relatively infrequent. DSMS: transient data that is continuously updated. Amir H. Payberah (SICS) Spark June 17, / 125
107 DBMS vs. DSMS (2/3) DBMS: runs queries just once to return a complete answer. DSMS: executes standing queries, which run continuously and provide updated answers as new data arrives. Amir H. Payberah (SICS) Spark June 17, / 125
108 DBMS vs. DSMS (3/3) Despite these differences, DSMSs resemble DBMSs: both process incoming data through a sequence of transformations based on SQL operators, e.g., selections, aggregates, joins. Amir H. Payberah (SICS) Spark June 17, / 125
109 Spark Streaming Run a streaming computation as a series of very small, deterministic batch jobs. Amir H. Payberah (SICS) Spark June 17, / 125
110 Spark Streaming Run a streaming computation as a series of very small, deterministic batch jobs. Chop up the live stream into batches of X seconds. Spark treats each batch of data as RDDs and processes them using RDD operations. Finally, the processed results of the RDD operations are returned in batches. Amir H. Payberah (SICS) Spark June 17, / 125
111 Spark Streaming API (1/4) DStream: sequence of RDDs representing a stream of data. TCP sockets, Twitter, HDFS, Kafka,... Amir H. Payberah (SICS) Spark June 17, / 125
112 Spark Streaming API (1/4) DStream: sequence of RDDs representing a stream of data. TCP sockets, Twitter, HDFS, Kafka,... Initializing Spark streaming val scc = new StreamingContext(master, appname, batchduration, [sparkhome], [jars]) Amir H. Payberah (SICS) Spark June 17, / 125
113 Spark Streaming API (2/4) Transformations: modify data from on DStream to a new DStream. Standard RDD operations (stateless operations): map, join,... Amir H. Payberah (SICS) Spark June 17, / 125
114 Spark Streaming API (2/4) Transformations: modify data from on DStream to a new DStream. Standard RDD operations (stateless operations): map, join,... Stateful operations: group all the records from a sliding window of the past time intervals into one RDD: window, reducebyandwindow,... Window length: the duration of the window. Slide interval: the interval at which the operation is performed. Amir H. Payberah (SICS) Spark June 17, / 125
115 Spark Streaming API (3/4) Output operations: send data to external entity saveashadoopfiles, foreach, print,... Amir H. Payberah (SICS) Spark June 17, / 125
116 Spark Streaming API (3/4) Output operations: send data to external entity saveashadoopfiles, foreach, print,... Attaching input sources ssc.textfilestream(directory) ssc.socketstream(hostname, port) Amir H. Payberah (SICS) Spark June 17, / 125
117 Spark Streaming API (4/4) Stream + Batch: It can be used to apply any RDD operation that is not exposed in the DStream API. val spaminfordd = sparkcontext.hadoopfile(...) // join data stream with spam information to do data cleaning val cleaneddstream = inputdstream.transform(_.join(spaminfordd).filter(...)) Amir H. Payberah (SICS) Spark June 17, / 125
118 Spark Streaming API (4/4) Stream + Batch: It can be used to apply any RDD operation that is not exposed in the DStream API. val spaminfordd = sparkcontext.hadoopfile(...) // join data stream with spam information to do data cleaning val cleaneddstream = inputdstream.transform(_.join(spaminfordd).filter(...)) Stream + Interactive: Interactive queries on stream state from the Spark interpreter freqs.slice("21:00", "21:05").topK(10) Amir H. Payberah (SICS) Spark June 17, / 125
119 Spark Streaming API (4/4) Stream + Batch: It can be used to apply any RDD operation that is not exposed in the DStream API. val spaminfordd = sparkcontext.hadoopfile(...) // join data stream with spam information to do data cleaning val cleaneddstream = inputdstream.transform(_.join(spaminfordd).filter(...)) Stream + Interactive: Interactive queries on stream state from the Spark interpreter freqs.slice("21:00", "21:05").topK(10) Starting/stopping the streaming computation ssc.start() ssc.stop() ssc.awaittermination() Amir H. Payberah (SICS) Spark June 17, / 125
120 Example 1 (1/3) Get hash-tags from Twitter. val ssc = new StreamingContext("local[2]", "Tweets", Seconds(1)) val tweets = TwitterUtils.createStream(ssc, None) DStream: a sequence of RDD representing a stream of data Amir H. Payberah (SICS) Spark June 17, / 125
121 Example 1 (2/3) Get hash-tags from Twitter. val ssc = new StreamingContext("local[2]", "Tweets", Seconds(1)) val tweets = TwitterUtils.createStream(ssc, None) val hashtags = tweets.flatmap(status => gettags(status)) transformation: modify data in one DStream to create another DStream Amir H. Payberah (SICS) Spark June 17, / 125
122 Example 1 (3/3) Get hash-tags from Twitter. val ssc = new StreamingContext("local[2]", "Tweets", Seconds(1)) val tweets = TwitterUtils.createStream(ssc, None) val hashtags = tweets.flatmap(status => gettags(status)) hashtags.saveashadoopfiles("hdfs://...") Amir H. Payberah (SICS) Spark June 17, / 125
123 Example 2 Count frequency of words received every second. val ssc = new StreamingContext("local[2]", "NetworkWordCount", Seconds(1)) val lines = ssc.sockettextstream(ip, port) val words = lines.flatmap(_.split(" ")) val ones = words.map(x => (x, 1)) val freqs = ones.reducebykey(_ + _) Amir H. Payberah (SICS) Spark June 17, / 125
124 Example 3 Count frequency of words received in last minute. val ssc = new StreamingContext("local[2]", "NetworkWordCount", Seconds(1)) val lines = ssc.sockettextstream(ip, port) val words = lines.flatmap(_.split(" ")) val ones = words.map(x => (x, 1)) val freqs = ones.reducebykey(_ + _) val freqs_60s = freqs.window(seconds(60), Second(1)).reduceByKey(_ + _) window length window movement Amir H. Payberah (SICS) Spark June 17, / 125
125 Example 3 - Simpler Model Count frequency of words received in last minute. val ssc = new StreamingContext("local[2]", "NetworkWordCount", Seconds(1)) val lines = ssc.sockettextstream(ip, port) val words = lines.flatmap(_.split(" ")) val ones = words.map(x => (x, 1)) val freqs_60s = ones.reducebykeyandwindow(_ + _, Seconds(60), Seconds(1)) Amir H. Payberah (SICS) Spark June 17, / 125
126 Example 3 - Incremental Window Operators Count frequency of words received in last minute. // Associative only freqs_60s = ones.reducebykeyandwindow(_ + _, Seconds(60), Seconds(1)) // Associative and invertible freqs_60s = ones.reducebykeyandwindow(_ + _, _ - _, Seconds(60), Seconds(1)) Associative only Associative and invertible Amir H. Payberah (SICS) Spark June 17, / 125
127 Spark Streaming Hands-on Exercises (1/2) Stream data through a TCP connection and port 9999 nc -lk 9999 Amir H. Payberah (SICS) Spark June 17, / 125
128 Spark Streaming Hands-on Exercises (1/2) Stream data through a TCP connection and port 9999 nc -lk 9999 import the streaming libraries Amir H. Payberah (SICS) Spark June 17, / 125
129 Spark Streaming Hands-on Exercises (1/2) Stream data through a TCP connection and port 9999 nc -lk 9999 import the streaming libraries import org.apache.spark.streaming.{seconds, StreamingContext} import org.apache.spark.streaming.streamingcontext._ Amir H. Payberah (SICS) Spark June 17, / 125
130 Spark Streaming Hands-on Exercises (1/2) Stream data through a TCP connection and port 9999 nc -lk 9999 import the streaming libraries import org.apache.spark.streaming.{seconds, StreamingContext} import org.apache.spark.streaming.streamingcontext._ Print out the incoming stream every five seconds at port 9999 Amir H. Payberah (SICS) Spark June 17, / 125
131 Spark Streaming Hands-on Exercises (1/2) Stream data through a TCP connection and port 9999 nc -lk 9999 import the streaming libraries import org.apache.spark.streaming.{seconds, StreamingContext} import org.apache.spark.streaming.streamingcontext._ Print out the incoming stream every five seconds at port 9999 val ssc = new StreamingContext("local[2]", "NetworkWordCount", Seconds(5)) val lines = ssc.sockettextstream(" ", 9999) lines.print() Amir H. Payberah (SICS) Spark June 17, / 125
132 Spark Streaming Hands-on Exercises (1/2) Count the number of each word in the incoming stream every five seconds at port 9999 Amir H. Payberah (SICS) Spark June 17, / 125
133 Spark Streaming Hands-on Exercises (1/2) Count the number of each word in the incoming stream every five seconds at port 9999 import org.apache.spark.streaming.{seconds, StreamingContext} import org.apache.spark.streaming.streamingcontext._ val ssc = new StreamingContext("local[2]", "NetworkWordCount", Seconds(1)) val lines = ssc.sockettextstream(" ", 9999) val words = lines.flatmap(_.split(" ")) val pairs = words.map(x => (x, 1)) val wordcounts = pairs.reducebykey(_ + _) wordcounts.print() Amir H. Payberah (SICS) Spark June 17, / 125
134 Spark Streaming Hands-on Exercises (2/2) Extend the code to generate word count over last 30 seconds of data, and repeat the computation every 10 seconds Amir H. Payberah (SICS) Spark June 17, / 125
135 Spark Streaming Hands-on Exercises (2/2) Extend the code to generate word count over last 30 seconds of data, and repeat the computation every 10 seconds import org.apache.spark.streaming.{seconds, StreamingContext} import org.apache.spark.streaming.streamingcontext._ val ssc = new StreamingContext("local[2]", "NetworkWordCount", Seconds(5)) val lines = ssc.sockettextstream(" ", 9999) val words = lines.flatmap(_.split(" ")) val pairs = words.map(word => (word, 1)) val windowedwordcounts = pairs.reducebykeyandwindow(_ + _, _ - _, Seconds(30), Seconds(10)) windowedwordcounts.print() wordcounts.print() Amir H. Payberah (SICS) Spark June 17, / 125
136 Spark Streaming Hands-on Exercises - Twitter (1/7) Twitter credential setup: to access Twitter s sample tweet stream Amir H. Payberah (SICS) Spark June 17, / 125
137 Spark Streaming Hands-on Exercises - Twitter (1/7) Twitter credential setup: to access Twitter s sample tweet stream Open the link: Amir H. Payberah (SICS) Spark June 17, / 125
138 Spark Streaming Hands-on Exercises - Twitter (2/7) Amir H. Payberah (SICS) Spark June 17, / 125
139 Spark Streaming Hands-on Exercises - Twitter (3/7) Amir H. Payberah (SICS) Spark June 17, / 125
140 Spark Streaming Hands-on Exercises - Twitter (4/7) Amir H. Payberah (SICS) Spark June 17, / 125
141 Spark Streaming Hands-on Exercises - Twitter (5/7) Amir H. Payberah (SICS) Spark June 17, / 125
142 Spark Streaming Hands-on Exercises - Twitter (6/7) Create an StreamingContext for a batch duration of 5 seconds and use this context to create a stream of tweets Amir H. Payberah (SICS) Spark June 17, / 125
143 Spark Streaming Hands-on Exercises - Twitter (6/7) Create an StreamingContext for a batch duration of 5 seconds and use this context to create a stream of tweets import org.apache.spark.streaming.twitter._ val ssc = new StreamingContext("local[2]", "Tweets", Seconds(5)) val tweets = TwitterUtils.createStream(ssc, None) Amir H. Payberah (SICS) Spark June 17, / 125
144 Spark Streaming Hands-on Exercises - Twitter (6/7) Create an StreamingContext for a batch duration of 5 seconds and use this context to create a stream of tweets import org.apache.spark.streaming.twitter._ val ssc = new StreamingContext("local[2]", "Tweets", Seconds(5)) val tweets = TwitterUtils.createStream(ssc, None) Print the status text of the some of the tweets Amir H. Payberah (SICS) Spark June 17, / 125
145 Spark Streaming Hands-on Exercises - Twitter (6/7) Create an StreamingContext for a batch duration of 5 seconds and use this context to create a stream of tweets import org.apache.spark.streaming.twitter._ val ssc = new StreamingContext("local[2]", "Tweets", Seconds(5)) val tweets = TwitterUtils.createStream(ssc, None) Print the status text of the some of the tweets val statuses = tweets.map(status => status.gettext()) statuses.print() Amir H. Payberah (SICS) Spark June 17, / 125
146 Spark Streaming Hands-on Exercises - Twitter (6/7) Create an StreamingContext for a batch duration of 5 seconds and use this context to create a stream of tweets import org.apache.spark.streaming.twitter._ val ssc = new StreamingContext("local[2]", "Tweets", Seconds(5)) val tweets = TwitterUtils.createStream(ssc, None) Print the status text of the some of the tweets val statuses = tweets.map(status => status.gettext()) statuses.print() Get the stream of hashtags from the stream of tweets Amir H. Payberah (SICS) Spark June 17, / 125
147 Spark Streaming Hands-on Exercises - Twitter (6/7) Create an StreamingContext for a batch duration of 5 seconds and use this context to create a stream of tweets import org.apache.spark.streaming.twitter._ val ssc = new StreamingContext("local[2]", "Tweets", Seconds(5)) val tweets = TwitterUtils.createStream(ssc, None) Print the status text of the some of the tweets val statuses = tweets.map(status => status.gettext()) statuses.print() Get the stream of hashtags from the stream of tweets val words = statuses.flatmap(status => status.split(" ")) val hashtags = words.filter(word => word.startswith("#")) hashtags.print() Amir H. Payberah (SICS) Spark June 17, / 125
148 Spark Streaming Hands-on Exercises - Twitter (7/7) Set a path for periodic checkpointing of the intermediate data, and then count the hashtags over a one minute window Amir H. Payberah (SICS) Spark June 17, / 125
149 Spark Streaming Hands-on Exercises - Twitter (7/7) Set a path for periodic checkpointing of the intermediate data, and then count the hashtags over a one minute window ssc.checkpoint("/home/sics/temp") val counts = hashtags.map(tag => (tag, 1)).reduceByKeyAndWindow(_ + _, _ - _, Seconds(60), Seconds(5)) counts.print() Amir H. Payberah (SICS) Spark June 17, / 125
150 Spark Streaming Hands-on Exercises - Twitter (7/7) Set a path for periodic checkpointing of the intermediate data, and then count the hashtags over a one minute window ssc.checkpoint("/home/sics/temp") val counts = hashtags.map(tag => (tag, 1)).reduceByKeyAndWindow(_ + _, _ - _, Seconds(60), Seconds(5)) counts.print() Find the top 10 hashtags based on their counts Amir H. Payberah (SICS) Spark June 17, / 125
151 Spark Streaming Hands-on Exercises - Twitter (7/7) Set a path for periodic checkpointing of the intermediate data, and then count the hashtags over a one minute window ssc.checkpoint("/home/sics/temp") val counts = hashtags.map(tag => (tag, 1)).reduceByKeyAndWindow(_ + _, _ - _, Seconds(60), Seconds(5)) counts.print() Find the top 10 hashtags based on their counts val sortedcounts = counts.map { case (tag, count) => (count, tag) }.transform(rdd => rdd.sortbykey(false)) sortedcounts.foreachrdd(rdd => println("\ntop 10 hashtags:\n" + rdd.take(10).mkstring("\n"))) Amir H. Payberah (SICS) Spark June 17, / 125
152 Amir H. Payberah (SICS) Spark June 17, / 125
153 Amir H. Payberah (SICS) Spark June 17, / 125
154 Introduction Graphs provide a flexible abstraction for describing relationships between discrete objects. Many problems can be modeled by graphs and solved with appropriate graph algorithms. Amir H. Payberah (SICS) Spark June 17, / 125
155 Large Graph Amir H. Payberah (SICS) Spark June 17, / 125
156 Large-Scale Graph Processing Large graphs need large-scale processing. A large graph either cannot fit into memory of single computer or it fits with huge cost. Amir H. Payberah (SICS) Spark June 17, / 125
157 Question Can we use platforms like MapReduce or Spark, which are based on data-parallel model, for large-scale graph proceeding? Amir H. Payberah (SICS) Spark June 17, / 125
158 Data-Parallel Model for Large-Scale Graph Processing The platforms that have worked well for developing parallel applications are not necessarily effective for large-scale graph problems. Why? Amir H. Payberah (SICS) Spark June 17, / 125
159 Graph Algorithms Characteristics (1/2) Unstructured problems Difficult to extract parallelism based on partitioning of the data: the irregular structure of graphs. Limited scalability: unbalanced computational loads resulting from poorly partitioned data. Amir H. Payberah (SICS) Spark June 17, / 125
160 Graph Algorithms Characteristics (1/2) Unstructured problems Difficult to extract parallelism based on partitioning of the data: the irregular structure of graphs. Limited scalability: unbalanced computational loads resulting from poorly partitioned data. Data-driven computations Difficult to express parallelism based on partitioning of computation: the structure of computations in the algorithm is not known a priori. The computations are dictated by nodes and links of the graph. Amir H. Payberah (SICS) Spark June 17, / 125
161 Graph Algorithms Characteristics (2/2) Poor data locality The computations and data access patterns do not have much locality: the irregular structure of graphs. Amir H. Payberah (SICS) Spark June 17, / 125
162 Graph Algorithms Characteristics (2/2) Poor data locality The computations and data access patterns do not have much locality: the irregular structure of graphs. High data access to computation ratio Graph algorithms are often based on exploring the structure of a graph to perform computations on the graph data. Runtime can be dominated by waiting memory fetches: low locality. Amir H. Payberah (SICS) Spark June 17, / 125
163 Proposed Solution Graph-Parallel Processing Amir H. Payberah (SICS) Spark June 17, / 125
164 Proposed Solution Graph-Parallel Processing Computation typically depends on the neighbors. Amir H. Payberah (SICS) Spark June 17, / 125
165 Graph-Parallel Processing Restricts the types of computation. New techniques to partition and distribute graphs. Exploit graph structure. Executes graph algorithms orders-of-magnitude faster than more general data-parallel systems. Amir H. Payberah (SICS) Spark June 17, / 125
166 Data-Parallel vs. Graph-Parallel Computation Amir H. Payberah (SICS) Spark June 17, / 125
167 Data-Parallel vs. Graph-Parallel Computation Data-parallel computation Record-centric view of data. Parallelism: processing independent data on separate resources. Graph-parallel computation Vertex-centric view of graphs. Parallelism: partitioning graph (dependent) data across processing resources, and resolving dependencies (along edges) through iterative computation and communication. Amir H. Payberah (SICS) Spark June 17, / 125
168 Graph-Parallel Computation Frameworks Amir H. Payberah (SICS) Spark June 17, / 125
169 Data-Parallel vs. Graph-Parallel Computation Graph-parallel computation: restricting the types of computation to achieve performance. Amir H. Payberah (SICS) Spark June 17, / 125
170 Data-Parallel vs. Graph-Parallel Computation Graph-parallel computation: restricting the types of computation to achieve performance. But, the same restrictions make it difficult and inefficient to express many stages in a typical graph-analytics pipeline. Amir H. Payberah (SICS) Spark June 17, / 125
171 Data-Parallel and Graph-Parallel Pipeline Moving between table and graph views of the same physical data. Inefficient: extensive data movement and duplication across the network and file system. Amir H. Payberah (SICS) Spark June 17, / 125
172 GraphX vs. Data-Parallel/Graph-Parallel Systems Amir H. Payberah (SICS) Spark June 17, / 125
173 GraphX vs. Data-Parallel/Graph-Parallel Systems Amir H. Payberah (SICS) Spark June 17, / 125
174 GraphX New API that blurs the distinction between Tables and Graphs. New system that unifies Data-Parallel and Graph-Parallel systems. It is implemented on top of Spark. Amir H. Payberah (SICS) Spark June 17, / 125
175 Unifying Data-Parallel and Graph-Parallel Analytics Tables and Graphs are composable views of the same physical data. Each view has its own operators that exploit the semantics of the view to achieve efficient execution. Amir H. Payberah (SICS) Spark June 17, / 125
176 Data Model Property Graph: represented using two Spark RDDs: Edge collection: VertexRDD Vertex collection: EdgeRDD // VD: the type of the vertex attribute // ED: the type of the edge attribute class Graph[VD, ED] { val vertices: VertexRDD[VD] val edges: EdgeRDD[ED, VD] } Amir H. Payberah (SICS) Spark June 17, / 125
177 Primitive Data Types // Vertex collection class VertexRDD[VD] extends RDD[(VertexId, VD)] // Edge collection class EdgeRDD[ED] extends RDD[Edge[ED]] case class Edge[ED, VD](srcId: VertexId = 0, dstid: VertexId = 0, attr: ED = null.asinstanceof[ed]) // Edge Triple class EdgeTriplet[VD, ED] extends Edge[ED] EdgeTriplet represents an edge along with the vertex attributes of its neighboring vertices. Amir H. Payberah (SICS) Spark June 17, / 125
178 Example (1/3) Amir H. Payberah (SICS) Spark June 17, / 125
179 Example (2/3) val sc: SparkContext // Create an RDD for the vertices val users: RDD[(Long, (String, String))] = sc.parallelize( Array((3L, ("rxin", "student")), (7L, ("jgonzal", "postdoc")), (5L, ("franklin", "prof")), (2L, ("istoica", "prof")))) // Create an RDD for edges val relationships: RDD[Edge[String]] = sc.parallelize( Array(Edge(3L, 7L, "collab"), Edge(5L, 3L, "advisor"), Edge(2L, 5L, "colleague"), Edge(5L, 7L, "pi"))) // Define a default user in case there are relationship with missing user val defaultuser = ("John Doe", "Missing") // Build the initial Graph val usergraph: Graph[(String, String), String] = Graph(users, relationships, defaultuser) Amir H. Payberah (SICS) Spark June 17, / 125
180 Example (3/3) // Constructed from above val usergraph: Graph[(String, String), String] // Count all users which are postdocs usergraph.vertices.filter { case (id, (name, pos)) => pos == "postdoc" }.count // Count all the edges where src > dst usergraph.edges.filter(e => e.srcid > e.dstid).count // Use the triplets view to create an RDD of facts val facts: RDD[String] = graph.triplets.map(triplet => triplet.srcattr._1 + " is the " + triplet.attr + " of " + triplet.dstattr._1) // Remove missing vertices as well as the edges to connected to them val validgraph = graph.subgraph(vpred = (id, attr) => attr._2!= "Missing") facts.collect.foreach(println) Amir H. Payberah (SICS) Spark June 17, / 125
181 Property Operators (1/2) class Graph[VD, ED] { def mapvertices[vd2](map: (VertexId, VD) => VD2): Graph[VD2, ED] def mapedges[ed2](map: Edge[ED] => ED2): Graph[VD, ED2] } def maptriplets[ed2](map: EdgeTriplet[VD, ED] => ED2): Graph[VD, ED2] They yield new graphs with the vertex or edge properties modified by the map function. The graph structure is unaffected. Amir H. Payberah (SICS) Spark June 17, / 125
182 Property Operators (2/2) val newgraph = graph.mapvertices((id, attr) => mapudf(id, attr)) val newvertices = graph.vertices.map((id, attr) => (id, mapudf(id, attr))) val newgraph = Graph(newVertices, graph.edges) Both are logically equivalent, but the second one does not preserve the structural indices and would not benefit from the GraphX system optimizations. Amir H. Payberah (SICS) Spark June 17, / 125
183 Map Reduce Triplets Map-Reduce for each vertex Amir H. Payberah (SICS) Spark June 17, / 125
184 Map Reduce Triplets Map-Reduce for each vertex // what is the age of the oldest follower for each user? val oldestfollowerage = graph.mapreducetriplets( e => Iterator((e.dstAttr, e.srcattr)), // Map (a, b) => max(a, b) // Reduce ).vertices Amir H. Payberah (SICS) Spark June 17, / 125
185 Structural Operators class Graph[VD, ED] { // returns a new graph with all the edge directions reversed def reverse: Graph[VD, ED] // returns the graph containing only the vertices and edges that satisfy // the vertex predicate def subgraph(epred: EdgeTriplet[VD,ED] => Boolean, vpred: (VertexId, VD) => Boolean): Graph[VD, ED] // a subgraph by returning a graph that contains the vertices and edges // that are also found in the input graph def mask[vd2, ED2](other: Graph[VD2, ED2]): Graph[VD, ED] } Amir H. Payberah (SICS) Spark June 17, / 125
186 Structural Operators Example // Build the initial Graph val graph = Graph(users, relationships, defaultuser) // Run Connected Components val ccgraph = graph.connectedcomponents() // Remove missing vertices as well as the edges to connected to them val validgraph = graph.subgraph(vpred = (id, attr) => attr._2!= "Missing") // Restrict the answer to the valid subgraph val validccgraph = ccgraph.mask(validgraph) Amir H. Payberah (SICS) Spark June 17, / 125
187 Join Operators To join data from external collections (RDDs) with graphs. class Graph[VD, ED] { // joins the vertices with the input RDD and returns a new graph // by applying the map function to the result of the joined vertices def joinvertices[u](table: RDD[(VertexId, U)]) (map: (VertexId, VD, U) => VD): Graph[VD, ED] // similarly to joinvertices, but the map function is applied to // all vertices and can change the vertex property type def outerjoinvertices[u, VD2](table: RDD[(VertexId, U)]) (map: (VertexId, VD, Option[U]) => VD2): Graph[VD2, ED] } Amir H. Payberah (SICS) Spark June 17, / 125
188 GraphX Hands-on Exercises (1/7) Amir H. Payberah (SICS) Spark June 17, / 125
189 GraphX Hands-on Exercises (2/7) import the streaming libraries Amir H. Payberah (SICS) Spark June 17, / 125
190 GraphX Hands-on Exercises (2/7) import the streaming libraries import org.apache.spark.graphx._ import org.apache.spark.rdd.rdd Amir H. Payberah (SICS) Spark June 17, / 125
191 GraphX Hands-on Exercises (2/7) import the streaming libraries import org.apache.spark.graphx._ import org.apache.spark.rdd.rdd Build the property graph shown in the last page Amir H. Payberah (SICS) Spark June 17, / 125
192 GraphX Hands-on Exercises (2/7) import the streaming libraries import org.apache.spark.graphx._ import org.apache.spark.rdd.rdd Build the property graph shown in the last page val vertexarray = Array( (1L, ("Alice", 28)), (2L, ("Bob", 27)), (3L, ("Charlie", 65)), (4L, ("David", 42)), (5L, ("Ed", 55)), (6L, ("Fran", 50))) val edgearray = Array( Edge(2L, 1L, 7), Edge(2L, 4L, 2), Edge(3L, 2L, 4), Edge(3L, 6L, 3), Edge(4L, 1L, 1), Edge(5L, 2L, 2), Edge(5L, 3L, 8), Edge(5L, 6L, 3)) val vertexrdd: RDD[(Long, (String, Int))] = sc.parallelize(vertexarray) val edgerdd: RDD[Edge[Int]] = sc.parallelize(edgearray) val graph: Graph[(String, Int), Int] = Graph(vertexRDD, edgerdd) Amir H. Payberah (SICS) Spark June 17, / 125
193 GraphX Hands-on Exercises (3/7) Display the name of the users older than 30 years old Amir H. Payberah (SICS) Spark June 17, / 125
194 GraphX Hands-on Exercises (3/7) Display the name of the users older than 30 years old graph.vertices.filter { case (id, (name, age)) => age > 30 }.foreach { case (id, (name, age)) => println(s"$name is $age") } Amir H. Payberah (SICS) Spark June 17, / 125
195 GraphX Hands-on Exercises (3/7) Display the name of the users older than 30 years old graph.vertices.filter { case (id, (name, age)) => age > 30 }.foreach { case (id, (name, age)) => println(s"$name is $age") } Display who follows who (through the edges direction). /** * Triplet has the following Fields: * triplet.srcattr: (String, Int) * triplet.dstattr: (String, Int) * triplet.attr: Int * triplet.srcid: VertexId * triplet.dstid: VertexId */ Amir H. Payberah (SICS) Spark June 17, / 125
196 GraphX Hands-on Exercises (3/7) Display the name of the users older than 30 years old graph.vertices.filter { case (id, (name, age)) => age > 30 }.foreach { case (id, (name, age)) => println(s"$name is $age") } Display who follows who (through the edges direction). /** * Triplet has the following Fields: * triplet.srcattr: (String, Int) * triplet.dstattr: (String, Int) * triplet.attr: Int * triplet.srcid: VertexId * triplet.dstid: VertexId */ graph.triplets.foreach(t => println(s"${t.srcattr._1} follows ${t.dstattr._1}")) Amir H. Payberah (SICS) Spark June 17, / 125
197 GraphX Hands-on Exercises (4/7) Compute the total age of followers of each user and print them out Amir H. Payberah (SICS) Spark June 17, / 125
198 GraphX Hands-on Exercises (4/7) Compute the total age of followers of each user and print them out val followers: VertexRDD[Int] = graph.mapreducetriplets[int]( triplet => Iterator(...), // map (a, b) =>... // reduce ) Amir H. Payberah (SICS) Spark June 17, / 125
199 GraphX Hands-on Exercises (4/7) Compute the total age of followers of each user and print them out val followers: VertexRDD[Int] = graph.mapreducetriplets[int]( triplet => Iterator(...), // map (a, b) =>... // reduce ) val followers: VertexRDD[Int] = graph.mapreducetriplets[int]( triplet => Iterator((triplet.dstId, triplet.srcattr._2)), (a, b) => a + b) followers.collect.foreach(print) Amir H. Payberah (SICS) Spark June 17, / 125
200 GraphX Hands-on Exercises (5/7) Compute the average age of followers of each user and print them out Amir H. Payberah (SICS) Spark June 17, / 125
201 GraphX Hands-on Exercises (5/7) Compute the average age of followers of each user and print them out val followers: VertexRDD[(Int, Double)] = graph.mapreducetriplets[(int, Double)]( triplet => Iterator(...), // map (a, b) => (...) // reduce ) val avgageoffollowers: VertexRDD[Double] = followers.mapvalues(...) Amir H. Payberah (SICS) Spark June 17, / 125
202 GraphX Hands-on Exercises (5/7) Compute the average age of followers of each user and print them out val followers: VertexRDD[(Int, Double)] = graph.mapreducetriplets[(int, Double)]( triplet => Iterator(...), // map (a, b) => (...) // reduce ) val avgageoffollowers: VertexRDD[Double] = followers.mapvalues(...) val followers: VertexRDD[(Int, Double)] = graph.mapreducetriplets[(int, Double)]( triplet => Iterator((triplet.dstId, (1, triplet.srcattr._2))), (a, b) => (a._1 + b._1, a._2 + b._2)) val avgageoffollowers: VertexRDD[Double] = followers.mapvalues((id, value) => value match { case (count, totalage) => totalage / count }) avgageoffollowers.collect.foreach(print) Amir H. Payberah (SICS) Spark June 17, / 125
203 GraphX Hands-on Exercises (6/7) Make a subgraph of the users that are 30 or older Amir H. Payberah (SICS) Spark June 17, / 125
204 GraphX Hands-on Exercises (6/7) Make a subgraph of the users that are 30 or older val oldergraph = graph.subgraph(vpred =...) Amir H. Payberah (SICS) Spark June 17, / 125
205 GraphX Hands-on Exercises (6/7) Make a subgraph of the users that are 30 or older val oldergraph = graph.subgraph(vpred =...) val oldergraph = graph.subgraph(vpred = (id, u) => u._2 >= 30) Amir H. Payberah (SICS) Spark June 17, / 125
206 GraphX Hands-on Exercises (7/7) Compute the connected components and display the component id of each user in oldgraph Amir H. Payberah (SICS) Spark June 17, / 125
207 GraphX Hands-on Exercises (7/7) Compute the connected components and display the component id of each user in oldgraph val cc = oldergraph... oldergraph.vertices.leftjoin(cc.vertices) {... }.foreach{...} Amir H. Payberah (SICS) Spark June 17, / 125
208 GraphX Hands-on Exercises (7/7) Compute the connected components and display the component id of each user in oldgraph val cc = oldergraph... oldergraph.vertices.leftjoin(cc.vertices) {... }.foreach{...} val cc = oldergraph.connectedcomponents oldergraph.vertices.leftjoin(cc.vertices) { case (id, u, comp) => s"${u._1} is in component ${comp.get}" }.foreach{ case (id, str) => println(str) } Amir H. Payberah (SICS) Spark June 17, / 125
209 Questions? Amir H. Payberah (SICS) Spark June 17, / 125
The Spark Big Data Analytics Platform
The Spark Big Data Analytics Platform Amir H. Payberah [email protected] Amirkabir University of Technology (Tehran Polytechnic) 1393/10/10 Amir H. Payberah (Tehran Polytechnic) Spark 1393/10/10 1 / 171 Amir
The Stratosphere Big Data Analytics Platform
The Stratosphere Big Data Analytics Platform Amir H. Payberah Swedish Institute of Computer Science [email protected] June 4, 2014 Amir H. Payberah (SICS) Stratosphere June 4, 2014 1 / 44 Big Data small data
Architectures for massive data management
Architectures for massive data management Apache Spark Albert Bifet [email protected] October 20, 2015 Spark Motivation Apache Spark Figure: IBM and Apache Spark What is Apache Spark Apache
Spark ΕΡΓΑΣΤΗΡΙΟ 10. Prepared by George Nikolaides 4/19/2015 1
Spark ΕΡΓΑΣΤΗΡΙΟ 10 Prepared by George Nikolaides 4/19/2015 1 Introduction to Apache Spark Another cluster computing framework Developed in the AMPLab at UC Berkeley Started in 2009 Open-sourced in 2010
Streaming items through a cluster with Spark Streaming
Streaming items through a cluster with Spark Streaming Tathagata TD Das @tathadas CME 323: Distributed Algorithms and Optimization Stanford, May 6, 2015 Who am I? > Project Management Committee (PMC) member
Unified Big Data Analytics Pipeline. 连 城 [email protected]
Unified Big Data Analytics Pipeline 连 城 [email protected] What is A fast and general engine for large-scale data processing An open source implementation of Resilient Distributed Datasets (RDD) Has an
Big Data Frameworks: Scala and Spark Tutorial
Big Data Frameworks: Scala and Spark Tutorial 13.03.2015 Eemil Lagerspetz, Ella Peltonen Professor Sasu Tarkoma These slides: http://is.gd/bigdatascala www.cs.helsinki.fi Functional Programming Functional
Introduction to Spark
Introduction to Spark Shannon Quinn (with thanks to Paco Nathan and Databricks) Quick Demo Quick Demo API Hooks Scala / Java All Java libraries *.jar http://www.scala- lang.org Python Anaconda: https://
Real Time Data Processing using Spark Streaming
Real Time Data Processing using Spark Streaming Hari Shreedharan, Software Engineer @ Cloudera Committer/PMC Member, Apache Flume Committer, Apache Sqoop Contributor, Apache Spark Author, Using Flume (O
Spark in Action. Fast Big Data Analytics using Scala. Matei Zaharia. www.spark- project.org. University of California, Berkeley UC BERKELEY
Spark in Action Fast Big Data Analytics using Scala Matei Zaharia University of California, Berkeley www.spark- project.org UC BERKELEY My Background Grad student in the AMP Lab at UC Berkeley» 50- person
Apache Flink Next-gen data analysis. Kostas Tzoumas [email protected] @kostas_tzoumas
Apache Flink Next-gen data analysis Kostas Tzoumas [email protected] @kostas_tzoumas What is Flink Project undergoing incubation in the Apache Software Foundation Originating from the Stratosphere research
Big Data Analytics with Spark and Oscar BAO. Tamas Jambor, Lead Data Scientist at Massive Analytic
Big Data Analytics with Spark and Oscar BAO Tamas Jambor, Lead Data Scientist at Massive Analytic About me Building a scalable Machine Learning platform at MA Worked in Big Data and Data Science in the
The Flink Big Data Analytics Platform. Marton Balassi, Gyula Fora" {mbalassi, gyfora}@apache.org
The Flink Big Data Analytics Platform Marton Balassi, Gyula Fora" {mbalassi, gyfora}@apache.org What is Apache Flink? Open Source Started in 2009 by the Berlin-based database research groups In the Apache
Big Data and Scripting Systems beyond Hadoop
Big Data and Scripting Systems beyond Hadoop 1, 2, ZooKeeper distributed coordination service many problems are shared among distributed systems ZooKeeper provides an implementation that solves these avoid
CS555: Distributed Systems [Fall 2015] Dept. Of Computer Science, Colorado State University
CS 555: DISTRIBUTED SYSTEMS [SPARK] Shrideep Pallickara Computer Science Colorado State University Frequently asked questions from the previous class survey Streaming Significance of minimum delays? Interleaving
Introduction to Big Data with Apache Spark UC BERKELEY
Introduction to Big Data with Apache Spark UC BERKELEY This Lecture Programming Spark Resilient Distributed Datasets (RDDs) Creating an RDD Spark Transformations and Actions Spark Programming Model Python
Big Data Analytics. Lucas Rego Drumond
Big Data Analytics Big Data Analytics Lucas Rego Drumond Information Systems and Machine Learning Lab (ISMLL) Institute of Computer Science University of Hildesheim, Germany Apache Spark Apache Spark 1
Data Science in the Wild
Data Science in the Wild Lecture 4 59 Apache Spark 60 1 What is Spark? Not a modified version of Hadoop Separate, fast, MapReduce-like engine In-memory data storage for very fast iterative queries General
Spark. Fast, Interactive, Language- Integrated Cluster Computing
Spark Fast, Interactive, Language- Integrated Cluster Computing Matei Zaharia, Mosharaf Chowdhury, Tathagata Das, Ankur Dave, Justin Ma, Murphy McCauley, Michael Franklin, Scott Shenker, Ion Stoica UC
LAB 2 SPARK / D-STREAM PROGRAMMING SCIENTIFIC APPLICATIONS FOR IOT WORKSHOP
LAB 2 SPARK / D-STREAM PROGRAMMING SCIENTIFIC APPLICATIONS FOR IOT WORKSHOP ICTP, Trieste, March 24th 2015 The objectives of this session are: Understand the Spark RDD programming model Familiarize with
Apache Spark and Distributed Programming
Apache Spark and Distributed Programming Concurrent Programming Keijo Heljanko Department of Computer Science University School of Science November 25th, 2015 Slides by Keijo Heljanko Apache Spark Apache
Writing Standalone Spark Programs
Writing Standalone Spark Programs Matei Zaharia UC Berkeley www.spark- project.org UC BERKELEY Outline Setting up for Spark development Example: PageRank PageRank in Java Testing and debugging Building
Scaling Out With Apache Spark. DTL Meeting 17-04-2015 Slides based on https://www.sics.se/~amir/files/download/dic/spark.pdf
Scaling Out With Apache Spark DTL Meeting 17-04-2015 Slides based on https://www.sics.se/~amir/files/download/dic/spark.pdf Your hosts Mathijs Kattenberg Technical consultant Jeroen Schot Technical consultant
Spark and the Big Data Library
Spark and the Big Data Library Reza Zadeh Thanks to Matei Zaharia Problem Data growing faster than processing speeds Only solution is to parallelize on large clusters» Wide use in both enterprises and
How to Run Spark Application
How to Run Spark Application Junghoon Kang Contents 1 Intro 2 2 How to Install Spark on a Local Machine? 2 2.1 On Ubuntu 14.04.................................... 2 3 How to Run Spark Application on a
Big Data Analytics with Cassandra, Spark & MLLib
Big Data Analytics with Cassandra, Spark & MLLib Matthias Niehoff AGENDA Spark Basics In A Cluster Cassandra Spark Connector Use Cases Spark Streaming Spark SQL Spark MLLib Live Demo CQL QUERYING LANGUAGE
Fast and Expressive Big Data Analytics with Python. Matei Zaharia UC BERKELEY
Fast and Expressive Big Data Analytics with Python Matei Zaharia UC Berkeley / MIT UC BERKELEY spark-project.org What is Spark? Fast and expressive cluster computing system interoperable with Apache Hadoop
Convex Optimization for Big Data: Lecture 2: Frameworks for Big Data Analytics
Convex Optimization for Big Data: Lecture 2: Frameworks for Big Data Analytics Sabeur Aridhi Aalto University, Finland Sabeur Aridhi Frameworks for Big Data Analytics 1 / 59 Introduction Contents 1 Introduction
Apache Flink. Fast and Reliable Large-Scale Data Processing
Apache Flink Fast and Reliable Large-Scale Data Processing Fabian Hueske @fhueske 1 What is Apache Flink? Distributed Data Flow Processing System Focused on large-scale data analytics Real-time stream
Beyond Hadoop with Apache Spark and BDAS
Beyond Hadoop with Apache Spark and BDAS Khanderao Kand Principal Technologist, Guavus 12 April GITPRO World 2014 Palo Alto, CA Credit: Some stajsjcs and content came from presentajons from publicly shared
Chapter 5: Stream Processing. Big Data Management and Analytics 193
Chapter 5: Big Data Management and Analytics 193 Today s Lesson Data Streams & Data Stream Management System Data Stream Models Insert-Only Insert-Delete Additive Streaming Methods Sliding Windows & Ageing
Apache Spark : Fast and Easy Data Processing Sujee Maniyam Elephant Scale LLC [email protected] http://elephantscale.com
Apache Spark : Fast and Easy Data Processing Sujee Maniyam Elephant Scale LLC [email protected] http://elephantscale.com Spark Fast & Expressive Cluster computing engine Compatible with Hadoop Came
Big Data With Hadoop
With Saurabh Singh [email protected] The Ohio State University February 11, 2016 Overview 1 2 3 Requirements Ecosystem Resilient Distributed Datasets (RDDs) Example Code vs Mapreduce 4 5 Source: [Tutorials
BigData. An Overview of Several Approaches. David Mera 16/12/2013. Masaryk University Brno, Czech Republic
BigData An Overview of Several Approaches David Mera Masaryk University Brno, Czech Republic 16/12/2013 Table of Contents 1 Introduction 2 Terminology 3 Approaches focused on batch data processing MapReduce-Hadoop
Developing Scalable Smart Grid Infrastructure to Enable Secure Transmission System Control
Developing Scalable Smart Grid Infrastructure to Enable Secure Transmission System Control EP/K006487/1 UK PI: Prof Gareth Taylor (BU) China PI: Prof Yong-Hua Song (THU) Consortium UK Members: Brunel University
Conjugating data mood and tenses: Simple past, infinite present, fast continuous, simpler imperative, conditional future perfect
Matteo Migliavacca (mm53@kent) School of Computing Conjugating data mood and tenses: Simple past, infinite present, fast continuous, simpler imperative, conditional future perfect Simple past - Traditional
Programming Hadoop 5-day, instructor-led BD-106. MapReduce Overview. Hadoop Overview
Programming Hadoop 5-day, instructor-led BD-106 MapReduce Overview The Client Server Processing Pattern Distributed Computing Challenges MapReduce Defined Google's MapReduce The Map Phase of MapReduce
Lambda Architecture for Batch and Real- Time Processing on AWS with Spark Streaming and Spark SQL. May 2015
Lambda Architecture for Batch and Real- Time Processing on AWS with Spark Streaming and Spark SQL May 2015 2015, Amazon Web Services, Inc. or its affiliates. All rights reserved. Notices This document
Machine- Learning Summer School - 2015
Machine- Learning Summer School - 2015 Big Data Programming David Franke Vast.com hbp://www.cs.utexas.edu/~dfranke/ Goals for Today Issues to address when you have big data Understand two popular big data
Spark: Making Big Data Interactive & Real-Time
Spark: Making Big Data Interactive & Real-Time Matei Zaharia UC Berkeley / MIT www.spark-project.org What is Spark? Fast and expressive cluster computing system compatible with Apache Hadoop Improves efficiency
HiBench Introduction. Carson Wang ([email protected]) Software & Services Group
HiBench Introduction Carson Wang ([email protected]) Agenda Background Workloads Configurations Benchmark Report Tuning Guide Background WHY Why we need big data benchmarking systems? WHAT What is
Parallel Databases. Parallel Architectures. Parallelism Terminology 1/4/2015. Increase performance by performing operations in parallel
Parallel Databases Increase performance by performing operations in parallel Parallel Architectures Shared memory Shared disk Shared nothing closely coupled loosely coupled Parallelism Terminology Speedup:
Introduction to Big Data! with Apache Spark" UC#BERKELEY#
Introduction to Big Data! with Apache Spark" UC#BERKELEY# This Lecture" The Big Data Problem" Hardware for Big Data" Distributing Work" Handling Failures and Slow Machines" Map Reduce and Complex Jobs"
E6895 Advanced Big Data Analytics Lecture 3:! Spark and Data Analytics
E6895 Advanced Big Data Analytics Lecture 3:! Spark and Data Analytics Ching-Yung Lin, Ph.D. Adjunct Professor, Dept. of Electrical Engineering and Computer Science Mgr., Dept. of Network Science and Big
Designing Agile Data Pipelines. Ashish Singh Software Engineer, Cloudera
Designing Agile Data Pipelines Ashish Singh Software Engineer, Cloudera About Me Software Engineer @ Cloudera Contributed to Kafka, Hive, Parquet and Sentry Used to work in HPC @singhasdev 204 Cloudera,
Shark Installation Guide Week 3 Report. Ankush Arora
Shark Installation Guide Week 3 Report Ankush Arora Last Updated: May 31,2014 CONTENTS Contents 1 Introduction 1 1.1 Shark..................................... 1 1.2 Apache Spark.................................
Moving From Hadoop to Spark
+ Moving From Hadoop to Spark Sujee Maniyam Founder / Principal @ www.elephantscale.com [email protected] Bay Area ACM meetup (2015-02-23) + HI, Featured in Hadoop Weekly #109 + About Me : Sujee
Unified Big Data Processing with Apache Spark. Matei Zaharia @matei_zaharia
Unified Big Data Processing with Apache Spark Matei Zaharia @matei_zaharia What is Apache Spark? Fast & general engine for big data processing Generalizes MapReduce model to support more types of processing
Going Deep with Spark Streaming
Going Deep with Spark Streaming Andrew Psaltis (@itmdata) ApacheCon, April 16, 2015 Outline Introduction DStreams Thinking about time Recovery and Fault tolerance Conclusion About Me Andrew Psaltis Data
Hadoop2, Spark Big Data, real time, machine learning & use cases. Cédric Carbone Twitter : @carbone
Hadoop2, Spark Big Data, real time, machine learning & use cases Cédric Carbone Twitter : @carbone Agenda Map Reduce Hadoop v1 limits Hadoop v2 and YARN Apache Spark Streaming : Spark vs Storm Machine
Hadoop MapReduce and Spark. Giorgio Pedrazzi, CINECA-SCAI School of Data Analytics and Visualisation Milan, 10/06/2015
Hadoop MapReduce and Spark Giorgio Pedrazzi, CINECA-SCAI School of Data Analytics and Visualisation Milan, 10/06/2015 Outline Hadoop Hadoop Import data on Hadoop Spark Spark features Scala MLlib MLlib
Big Data Processing. Patrick Wendell Databricks
Big Data Processing Patrick Wendell Databricks About me Committer and PMC member of Apache Spark Former PhD student at Berkeley Left Berkeley to help found Databricks Now managing open source work at Databricks
Hadoop IST 734 SS CHUNG
Hadoop IST 734 SS CHUNG Introduction What is Big Data?? Bulk Amount Unstructured Lots of Applications which need to handle huge amount of data (in terms of 500+ TB per day) If a regular machine need to
Challenges for Data Driven Systems
Challenges for Data Driven Systems Eiko Yoneki University of Cambridge Computer Laboratory Quick History of Data Management 4000 B C Manual recording From tablets to papyrus to paper A. Payberah 2014 2
Big Data Processing with Google s MapReduce. Alexandru Costan
1 Big Data Processing with Google s MapReduce Alexandru Costan Outline Motivation MapReduce programming model Examples MapReduce system architecture Limitations Extensions 2 Motivation Big Data @Google:
Other Map-Reduce (ish) Frameworks. William Cohen
Other Map-Reduce (ish) Frameworks William Cohen 1 Outline More concise languages for map- reduce pipelines Abstractions built on top of map- reduce General comments Speci
SPARK USE CASE IN TELCO. Apache Spark Night 9-2-2014! Chance Coble!
SPARK USE CASE IN TELCO Apache Spark Night 9-2-2014! Chance Coble! Use Case Profile Telecommunications company Shared business problems/pain Scalable analytics infrastructure is a problem Pushing infrastructure
Tutorial: Big Data Algorithms and Applications Under Hadoop KUNPENG ZHANG SIDDHARTHA BHATTACHARYYA
Tutorial: Big Data Algorithms and Applications Under Hadoop KUNPENG ZHANG SIDDHARTHA BHATTACHARYYA http://kzhang6.people.uic.edu/tutorial/amcis2014.html August 7, 2014 Schedule I. Introduction to big data
MapReduce. MapReduce and SQL Injections. CS 3200 Final Lecture. Introduction. MapReduce. Programming Model. Example
MapReduce MapReduce and SQL Injections CS 3200 Final Lecture Jeffrey Dean and Sanjay Ghemawat. MapReduce: Simplified Data Processing on Large Clusters. OSDI'04: Sixth Symposium on Operating System Design
SparkLab May 2015 An Introduction to
SparkLab May 2015 An Introduction to & Apostolos N. Papadopoulos Assistant Professor Data Engineering Lab, Department of Informatics, Aristotle University of Thessaloniki Abstract Welcome to SparkLab!
Hadoop Ecosystem B Y R A H I M A.
Hadoop Ecosystem B Y R A H I M A. History of Hadoop Hadoop was created by Doug Cutting, the creator of Apache Lucene, the widely used text search library. Hadoop has its origins in Apache Nutch, an open
Lecture 10 - Functional programming: Hadoop and MapReduce
Lecture 10 - Functional programming: Hadoop and MapReduce Sohan Dharmaraja Sohan Dharmaraja Lecture 10 - Functional programming: Hadoop and MapReduce 1 / 41 For today Big Data and Text analytics Functional
Big Data Analytics Hadoop and Spark
Big Data Analytics Hadoop and Spark Shelly Garion, Ph.D. IBM Research Haifa 1 What is Big Data? 2 What is Big Data? Big data usually includes data sets with sizes beyond the ability of commonly used software
Brave New World: Hadoop vs. Spark
Brave New World: Hadoop vs. Spark Dr. Kurt Stockinger Associate Professor of Computer Science Director of Studies in Data Science Zurich University of Applied Sciences Datalab Seminar, Zurich, Oct. 7,
Big Graph Analytics on Neo4j with Apache Spark. Michael Hunger Original work by Kenny Bastani Berlin Buzzwords, Open Stage
Big Graph Analytics on Neo4j with Apache Spark Michael Hunger Original work by Kenny Bastani Berlin Buzzwords, Open Stage My background I only make it to the Open Stages :) Probably because Apache Neo4j
Using Apache Spark Pat McDonough - Databricks
Using Apache Spark Pat McDonough - Databricks Apache Spark spark.incubator.apache.org github.com/apache/incubator-spark [email protected] The Spark Community +You! INTRODUCTION TO APACHE
From GWS to MapReduce: Google s Cloud Technology in the Early Days
Large-Scale Distributed Systems From GWS to MapReduce: Google s Cloud Technology in the Early Days Part II: MapReduce in a Datacenter COMP6511A Spring 2014 HKUST Lin Gu [email protected] MapReduce/Hadoop
Near Real Time Indexing Kafka Message to Apache Blur using Spark Streaming. by Dibyendu Bhattacharya
Near Real Time Indexing Kafka Message to Apache Blur using Spark Streaming by Dibyendu Bhattacharya Pearson : What We Do? We are building a scalable, reliable cloud-based learning platform providing services
Apache Spark 11/10/15. Context. Reminder. Context. What is Spark? A GrowingStack
Apache Spark Document Analysis Course (Fall 2015 - Scott Sanner) Zahra Iman Some slides from (Matei Zaharia, UC Berkeley / MIT& Harold Liu) Reminder SparkConf JavaSpark RDD: Resilient Distributed Datasets
Xiaoming Gao Hui Li Thilina Gunarathne
Xiaoming Gao Hui Li Thilina Gunarathne Outline HBase and Bigtable Storage HBase Use Cases HBase vs RDBMS Hands-on: Load CSV file to Hbase table with MapReduce Motivation Lots of Semi structured data Horizontal
Big Data and Scripting Systems build on top of Hadoop
Big Data and Scripting Systems build on top of Hadoop 1, 2, Pig/Latin high-level map reduce programming platform Pig is the name of the system Pig Latin is the provided programming language Pig Latin is
MapReduce and Hadoop. Aaron Birkland Cornell Center for Advanced Computing. January 2012
MapReduce and Hadoop Aaron Birkland Cornell Center for Advanced Computing January 2012 Motivation Simple programming model for Big Data Distributed, parallel but hides this Established success at petabyte
Architectural patterns for building real time applications with Apache HBase. Andrew Purtell Committer and PMC, Apache HBase
Architectural patterns for building real time applications with Apache HBase Andrew Purtell Committer and PMC, Apache HBase Who am I? Distributed systems engineer Principal Architect in the Big Data Platform
Real-time Map Reduce: Exploring Clickstream Analytics with: Kafka, Spark Streaming and WebSockets. Andrew Psaltis
Real-time Map Reduce: Exploring Clickstream Analytics with: Kafka, Spark Streaming and WebSockets Andrew Psaltis About Me Recently started working at Ensighten on Agile Maketing Platform Prior 4.5 years
BIG DATA HANDS-ON WORKSHOP Data Manipulation with Hive and Pig
BIG DATA HANDS-ON WORKSHOP Data Manipulation with Hive and Pig Contents Acknowledgements... 1 Introduction to Hive and Pig... 2 Setup... 2 Exercise 1 Load Avro data into HDFS... 2 Exercise 2 Define an
CS 378 Big Data Programming
CS 378 Big Data Programming Lecture 2 Map- Reduce CS 378 - Fall 2015 Big Data Programming 1 MapReduce Large data sets are not new What characterizes a problem suitable for MR? Most or all of the data is
Chapter 7. Using Hadoop Cluster and MapReduce
Chapter 7 Using Hadoop Cluster and MapReduce Modeling and Prototyping of RMS for QoS Oriented Grid Page 152 7. Using Hadoop Cluster and MapReduce for Big Data Problems The size of the databases used in
Systems Infrastructure for Data Science. Web Science Group Uni Freiburg WS 2012/13
Systems Infrastructure for Data Science Web Science Group Uni Freiburg WS 2012/13 Hadoop Ecosystem Overview of this Lecture Module Background Google MapReduce The Hadoop Ecosystem Core components: Hadoop
BIG DATA APPLICATIONS
BIG DATA ANALYTICS USING HADOOP AND SPARK ON HATHI Boyu Zhang Research Computing ITaP BIG DATA APPLICATIONS Big data has become one of the most important aspects in scientific computing and business analytics
CS 378 Big Data Programming. Lecture 2 Map- Reduce
CS 378 Big Data Programming Lecture 2 Map- Reduce MapReduce Large data sets are not new What characterizes a problem suitable for MR? Most or all of the data is processed But viewed in small increments
Spark: Cluster Computing with Working Sets
Spark: Cluster Computing with Working Sets Outline Why? Mesos Resilient Distributed Dataset Spark & Scala Examples Uses Why? MapReduce deficiencies: Standard Dataflows are Acyclic Prevents Iterative Jobs
Architectures for massive data management
Architectures for massive data management Apache Kafka, Samza, Storm Albert Bifet [email protected] October 20, 2015 Stream Engine Motivation Digital Universe EMC Digital Universe with
Outline. High Performance Computing (HPC) Big Data meets HPC. Case Studies: Some facts about Big Data Technologies HPC and Big Data converging
Outline High Performance Computing (HPC) Towards exascale computing: a brief history Challenges in the exascale era Big Data meets HPC Some facts about Big Data Technologies HPC and Big Data converging
Apache Ignite TM (Incubating) - In- Memory Data Fabric Fast Data Meets Open Source
Apache Ignite TM (Incubating) - In- Memory Data Fabric Fast Data Meets Open Source DMITRIY SETRAKYAN Founder, PPMC http://www.ignite.incubator.apache.org @apacheignite @dsetrakyan Agenda About In- Memory
Infrastructures for big data
Infrastructures for big data Rasmus Pagh 1 Today s lecture Three technologies for handling big data: MapReduce (Hadoop) BigTable (and descendants) Data stream algorithms Alternatives to (some uses of)
This is a brief tutorial that explains the basics of Spark SQL programming.
About the Tutorial Apache Spark is a lightning-fast cluster computing designed for fast computation. It was built on top of Hadoop MapReduce and it extends the MapReduce model to efficiently use more types
CSE-E5430 Scalable Cloud Computing Lecture 11
CSE-E5430 Scalable Cloud Computing Lecture 11 Keijo Heljanko Department of Computer Science School of Science Aalto University [email protected] 30.11-2015 1/24 Distributed Coordination Systems Consensus
BIG DATA IN THE CLOUD : CHALLENGES AND OPPORTUNITIES MARY- JANE SULE & PROF. MAOZHEN LI BRUNEL UNIVERSITY, LONDON
BIG DATA IN THE CLOUD : CHALLENGES AND OPPORTUNITIES MARY- JANE SULE & PROF. MAOZHEN LI BRUNEL UNIVERSITY, LONDON Overview * Introduction * Multiple faces of Big Data * Challenges of Big Data * Cloud Computing
Certification Study Guide. MapR Certified Spark Developer Study Guide
Certification Study Guide MapR Certified Spark Developer Study Guide 1 CONTENTS About MapR Study Guides... 3 MapR Certified Spark Developer (MCSD)... 3 SECTION 1 WHAT S ON THE EXAM?... 5 1. Load and Inspect
American International Journal of Research in Science, Technology, Engineering & Mathematics
American International Journal of Research in Science, Technology, Engineering & Mathematics Available online at http://www.iasir.net ISSN (Print): 2328-3491, ISSN (Online): 2328-3580, ISSN (CD-ROM): 2328-3629
Introduction to Hadoop HDFS and Ecosystems. Slides credits: Cloudera Academic Partners Program & Prof. De Liu, MSBA 6330 Harvesting Big Data
Introduction to Hadoop HDFS and Ecosystems ANSHUL MITTAL Slides credits: Cloudera Academic Partners Program & Prof. De Liu, MSBA 6330 Harvesting Big Data Topics The goal of this presentation is to give
Workshop on Hadoop with Big Data
Workshop on Hadoop with Big Data Hadoop? Apache Hadoop is an open source framework for distributed storage and processing of large sets of data on commodity hardware. Hadoop enables businesses to quickly
Hadoop & Spark Using Amazon EMR
Hadoop & Spark Using Amazon EMR Michael Hanisch, AWS Solutions Architecture 2015, Amazon Web Services, Inc. or its Affiliates. All rights reserved. Agenda Why did we build Amazon EMR? What is Amazon EMR?
Big Data looks Tiny from the Stratosphere
Volker Markl http://www.user.tu-berlin.de/marklv [email protected] Big Data looks Tiny from the Stratosphere Data and analyses are becoming increasingly complex! Size Freshness Format/Media Type
Unified Batch & Stream Processing Platform
Unified Batch & Stream Processing Platform Himanshu Bari Director Product Management Most Big Data Use Cases Are About Improving/Re-write EXISTING solutions To KNOWN problems Current Solutions Were Built
Lambda Architecture. Near Real-Time Big Data Analytics Using Hadoop. January 2015. Email: [email protected] Website: www.qburst.com
Lambda Architecture Near Real-Time Big Data Analytics Using Hadoop January 2015 Contents Overview... 3 Lambda Architecture: A Quick Introduction... 4 Batch Layer... 4 Serving Layer... 4 Speed Layer...
COSC 6397 Big Data Analytics. 2 nd homework assignment Pig and Hive. Edgar Gabriel Spring 2015
COSC 6397 Big Data Analytics 2 nd homework assignment Pig and Hive Edgar Gabriel Spring 2015 2 nd Homework Rules Each student should deliver Source code (.java files) Documentation (.pdf,.doc,.tex or.txt
Implementation of Spark Cluster Technique with SCALA
International Journal of Scientific and Research Publications, Volume 2, Issue 11, November 2012 1 Implementation of Spark Cluster Technique with SCALA Tarun Kumawat 1, Pradeep Kumar Sharma 2, Deepak Verma
How To Improve Performance In A Database
Some issues on Conceptual Modeling and NoSQL/Big Data Tok Wang Ling National University of Singapore 1 Database Models File system - field, record, fixed length record Hierarchical Model (IMS) - fixed
