• 沒有找到結果。

Big Data and Internet Thinking

N/A
N/A
Protected

Academic year: 2022

Share "Big Data and Internet Thinking"

Copied!
84
0
0

加載中.... (立即查看全文)

全文

(1)

Big Data and Internet Thinking

Chentao Wu

Associate Professor

Dept. of Computer Science and Engineering [email protected]

(2)

Download lectures

• ftp://public.sjtu.edu.cn

• User: wuct

• Password: wuct123456

• http://www.cs.sjtu.edu.cn/~wuct/bdit/

(3)

Schedule

• lec1: Introduction on big data, cloud computing & IoT

• Iec2: Parallel processing framework (e.g., MapReduce)

• lec3: Advanced parallel processing techniques (e.g., YARN, Spark)

• lec4: Cloud & Fog/Edge Computing

• lec5: Data reliability & data consistency

• lec6: Distributed file system & objected-based storage

• lec7: Metadata management & NoSQL Database

• lec8: Big Data Analytics

(4)

Collaborators

(5)

Contents

Parallel Programming Basic

1

(6)

Task/Channel Model

• Parallel computation = set of tasks

• Task

• Program

• Local memory

• Collection of I/O ports

• Tasks interact by sending messages through

channels

(7)

Task/Channel Model

Task

Channel

(8)

Foster’s Design Methodology

• Partitioning

• Communication

• Agglomeration

• Mapping

(9)

Foster’s Design Methodology

Problem

Partitioning

Communication

Agglomeration Mapping

(10)

Partitioning

• Dividing computation and data into pieces

• Domain decomposition

• Divide data into pieces

• Determine how to associate computations with the data

• Functional decomposition

• Divide computation into pieces

• Determine how to associate data with the

computations

(11)

Example Domain Decompositions

(12)

Example Functional Decomposition

(13)

Partitioning Checklist

• At least 10x more primitive tasks than processors in target computer

• Minimize redundant computations and redundant data storage

• Primitive tasks roughly the same size

• Number of tasks an increasing function of problem

size

(14)

Communication

• Determine values passed among tasks

• Local communication

• Task needs values from a small number of other tasks

• Create channels illustrating data flow

• Global communication

• Significant number of tasks contribute data to perform a computation

• Don’t create channels for them early in design

(15)

Communication Checklist

• Communication operations balanced among tasks

• Each task communicates with only small group of neighbors

• Tasks can perform communications concurrently

• Task can perform computations concurrently

(16)

Agglomeration

• Grouping tasks into larger tasks

• Goals

• Improve performance

• Maintain scalability of program

• Simplify programming

• In MPI programming, goal often to create one

agglomerated task per processor

(17)

Agglomeration Can Improve Performance

• Eliminate communication between primitive tasks agglomerated into consolidated task

• Combine groups of sending and receiving tasks

(18)

Agglomeration Checklist

• Locality of parallel algorithm has increased

• Replicated computations take less time than communications they replace

• Data replication doesn’t affect scalability

• Agglomerated tasks have similar computational and communications costs

• Number of tasks increases with problem size

• Number of tasks suitable for likely target systems

• Tradeoff between agglomeration and code

modifications costs is reasonable

(19)

Mapping

• Process of assigning tasks to processors

• Centralized multiprocessor: mapping done by operating system

• Distributed memory system: mapping done by user

• Conflicting goals of mapping

• Maximize processor utilization

• Minimize interprocessor communication

(20)

Mapping Example

(21)

Optimal Mapping

• Finding optimal mapping is NP-hard

• Must rely on heuristics

(22)

Mapping Decision Tree

• Static number of tasks

• Structured communication

• Constant computation time per task

• Agglomerate tasks to minimize comm

• Create one task per processor

• Variable computation time per task

• Cyclically map tasks to processors

• Unstructured communication

• Use a static load balancing algorithm

• Dynamic number of tasks

(23)

Mapping Strategy

• Static number of tasks

• Dynamic number of tasks

• Frequent communications between tasks

• Use a dynamic load balancing algorithm

• Many short-lived tasks

• Use a run-time task-scheduling algorithm

(24)

Mapping Checklist

• Considered designs based on one task per processor and multiple tasks per processor

• Evaluated static and dynamic task allocation

• If dynamic task allocation chosen, task allocator is not a bottleneck to performance

• If static task allocation chosen, ratio of tasks to

processors is at least 10:1

(25)

Contents

Map-Reduce Framework

2

(26)

MapReduce Programming Model

• Inspired from map and reduce operations commonly used in functional programming languages like Lisp.

• Have multiple map tasks and reduce tasks

• Users implement interface of two primary methods:

Map: (key1, val1) → (key2, val2)

Reduce: (key2, [val2]) → [val3]

(27)

Example: Map Processing in Hadoop

• Given a file

A file may be divided into multiple parts (splits).

• Each record (line) is processed by a Map function,

written by the user,

takes an input key/value pair

produces a set of intermediate key/value pairs.

e.g. (doc—id, doc-content)

Draw an analogy to SQL group-by clause

(28)

Map

map (in_key, in_value) ->

(out_key, intermediate_value) list

(29)

Processing of Reducer Tasks

Given a set of (key, value) records produced by map tasks.

all the intermediate values for a given output key are combined together into a list and given to a reducer.

Each reducer further performs (key2, [val2]) → [val3]

Can be visualized as aggregate function (e.g., average) that is computed over all the rows with the same group-by attribute.

(30)

Reduce

reduce (out_key, intermediate_value list) ->

out_value list

(31)

Put Map and Reduce Tasks Together

(32)

Example: Wordcount (1)

(33)

Example: Wordcount (2)

Input/Output for a Map-Reduce Job

(34)

Example: Wordcount (3)

Map

(35)

Example: Wordcount (4)

Map

(36)

Example: Wordcount (5)

Map→Reduce

(37)

Example: Wordcount (6)

Input to Reduce

(38)

Example: Wordcount (7)

Reduce Output

(39)

MapReduce: Execution overview

Reducers output the result on stable storage.

Shuffle phase assigns reducers to these buffers, which are remotely read and processed by reducers.

Map task reads the allocated data, saves the map results in local buffer.

Master Server distributes M map tasks to machines and monitors their progress.

(40)

Execute MapReduce on a cluster of

machines with HDFS

(41)

MapReduce in Parallel: Example

(42)

MapReduce: Execution Details

Input reader

Divide input into splits, assign each split to a Map task

Map task

Apply the Map function to each record in the split

Each Map function returns a list of (key, value) pairs

Shuffle/Partition and Sort

Shuffle distributes sorting & aggregation to many reducers

All records for key k are directed to the same reduce processor

Sort groups the same keys together, and prepares for aggregation

Reduce task

Apply the Reduce function to each key

The result of the Reduce function is a list of (key, value) pairs

(43)

MapReduce: Runtime Environment

Partitioning the input data.

Scheduling program across cluster of machines, Locality Optimization and

Load balancing

Dealing with machine failure

Managing Inter-Machine communication

MapReduce Runtime Environment

(44)

Hadoop Cluster with MapReduce

(45)

MapReduce (Single Reduce Task)

(46)

MapReduce (No Reduce Task)

(47)

MapReduce (Multiple Reduce Tasks)

(48)

High Level of Map-Reduce in Hadoop

(49)

Status Update

(50)

MapReduce with data shuffling & sorting

(51)

Lifecycle of a MapReduce Job

Map function

Reduce function

Run this program as a MapReduce job

(52)

MapReduce: Fault Tolerance

Handled via re-execution of tasks.

Task completion committed through master

Mappers save outputs to local disk before serving to reducers

Allows recovery if a reducer crashes

Allows running more reducers than # of nodes

If a task crashes:

Retry on another node

OK for a map because it had no dependencies

OK for reduce because map outputs are on disk

If the same task repeatedly fails, fail the job or ignore that input block

For the fault tolerance to work, user tasks must be deterministic and side-effect-free

If a node crashes:

Relaunch its current tasks on other nodes

Relaunch any maps the node previously ran

Necessary because their output files were lost along with the crashed node

(53)

MapReduce: Locality Optimization

• Leverage the distributed file system to schedule a map task on a machine that contains a replica of the corresponding input data.

• Thousands of machines read input at local disk speed

• Without this, rack switches limit read rate

(54)

MapReduce: Redundant Execution

• Slow workers are source of bottleneck, may delay completion time.

• Near end of phase, spawn backup tasks, one to finish first wins.

• Effectively utilizes computing power, reducing job

completion time by a factor.

(55)

MapReduce: Skipping Bad Records

• Map/Reduce functions sometimes fail for particular inputs.

• Fixing the Bug might not be possible : Third Party Libraries.

• On Error

Worker sends signal to Master

If multiple error on same record, skip record

(56)

MapReduce: Miscellaneous Refinements

• Combiner function at a map task

• Sorting Guarantees within each reduce partition.

• Local execution for debugging/testing

• User-defined counters

(57)

Combining Phase

• Run on map machines after map phase

• “Mini-reduce,” only on local map output

• Used to save bandwidth before sending data to full reduce tasks

• Reduce tasks can be combiner if commutative &

associative

(58)

Combiner, graphically

Combiner replaces with:

Map output

To reducer

On one mapper machine:

To reducer

(59)

Examples of MapReduce Usage in Web Applications

• Distributed Grep.

• Count of URL Access Frequency.

• Clustering (K-means)

• Graph Algorithms.

• Indexing Systems

MapReduce Programs In Google Source Tree

(60)

Contents

Applications Using Map-Reduce

3

(61)

More MapReduce Applications

• Map Only processing

• Filtering and accumulation

• Database join

• Reversing graph edges

• Producing inverted index for web search

• PageRank graph processing

(62)

MapReduce Use Case 1: Map Only

Data distributive tasks – Map Only

• E.g. classify individual documents

• Map does everything

• Input: (docno, doc_content), …

• Output: (docno, [class, class, …]), …

• No reduce tasks

(63)

MapReduce Use Case 2: Filtering and Accumulation

Filtering & Accumulation – Map and Reduce

E.g. Counting total enrollments of two given student classes

Map selects records and outputs initial counts

In: (Jamie, 11741), (Tom, 11493), …

Out: (11741, 1), (11493, 1), …

Shuffle/Partition by class_id

Sort

In: (11741, 1), (11493, 1), (11741, 1), …

Out: (11493, 1), …, (11741, 1), (11741, 1), …

Reduce accumulates counts

In: (11493, [1, 1, …]), (11741, [1, 1, …])

Sum and Output: (11493, 16), (11741, 35)

(64)

MapReduce Use Case 3: Database Join

A JOIN is a means for combining fields from two tables by using values common to each.

Example :For each employee, find the department he works in

Employee Table

LastName DepartmentID

Rafferty 31

Jones 33

Steinberg 33

Robinson 34

Smith 34

Department Table

DepartmentID DepartmentName

31 Sales

33 Engineering

34 Clerical

35 Marketing

JOIN

Pred:

EMPLOYEE.DepID=

DEPARTMENT.DepID

JOIN RESULT

LastName DepartmentName

Rafferty Sales

Jones Engineering

Steinberg Engineering

(65)

MapReduce Use Case 3 – Database Join

Problem: Massive lookups

Given two large lists: (URL, ID) and (URL, doc_content) pairs

Produce (URL, ID, doc_content) or (ID, doc_content) Solution:

Input stream: both (URL, ID) and (URL, doc_content) lists

(http://del.icio.us/post, 0), (http://digg.com/submit, 1), …

(http://del.icio.us/post, <html0>), (http://digg.com/submit, <html1>), …

Map simply passes input along,

Shuffle and Sort on URL (group ID & doc_content for the same URL together)

Out: (http://del.icio.us/post, 0), (http://del.icio.us/post, <html0>), (http://digg.com/submit, <html1>), (http://digg.com/submit, 1), …

Reduce outputs result stream of (ID, doc_content) pairs

In: (http://del.icio.us/post, [0, html0]), (http://digg.com/submit, [html1, 1]), …

Out: (0, <html0>), (1, <html1>), …

(66)

MapReduce Use Case 4: Reverse graph edge directions & output in node order

• Input example: adjacency list of graph (3 nodes and 4 edges)

(3, [1, 2]) (1, [3]) (1, [2, 3]) ➔ (2, [1, 3])

(3, [1])

• node_ids in the output values are also sorted.

But Hadoop only sorts on keys!

• MapReduce format

• Input: (3, [1, 2]), (1, [2, 3]).

• Intermediate: (1, [3]), (2, [3]), (2, [1]), (3, [1]). (reverse edge direction)

• Out: (1,[3]) (2, [1, 3]) (3, [[1]).

1 2

3

1 2

3

(67)

MapReduce Use Case 5: Inverted Indexing Preliminaries

Construction of inverted lists for document search

• Input: documents: (docid, [term, term..]), (docid, [term, ..]), ..

• Output: (term, [docid, docid, …])

E.g., (apple, [1, 23, 49, 127, …])

A document id is an internal document id, e.g., a unique integer

• Not an external document id such as a url

(68)

Using MapReduce to Construct Indexes:

A Simple Approach

A simple approach to creating inverted lists

Each Map task is a document parser

Input: A stream of documents

Output: A stream of (term, docid) tuples

(long, 1) (ago, 1) (and, 1) … (once, 2) (upon, 2) …

We may create internal IDs for words.

Shuffle sorts tuples by key and routes tuples to Reducers

Reducers convert streams of keys into streams of inverted lists

Input: (long, 1) (long, 127) (long, 49) (long, 23) …

The reducer sorts the values for a key and builds an inverted list

Output: (long, [df:492, docids:1, 23, 49, 127, …])

(69)

Inverted Index: Data flow

This page contains so much text

My page contains text too

Foo

Bar

contains: Bar My: Bar

page : Bar text: Bar too: Bar

contains: Foo much: Foo page : Foo so : Foo text: Foo This : Foo

contains: Foo, Bar much: Foo

My: Bar

page : Foo, Bar so : Foo

text: Foo, Bar This : Foo too: Bar

Reduced output Foo map output

Bar map output

(70)

Processing Flow Optimization

A more detailed analysis of processing flow

Map: (docid1, content1) → (t1, docid1) (t2, docid1) …

Shuffle by t, prepared for map-reducer communication

Sort by t, conducted in a reducer machine

(t5, docid1) (t4, docid3) … → (t4, docid3) (t4, docid1) (t5, docid1) …

Reduce: (t4, [docid3 docid1 …]) → (t, ilist)

docid: a unique integer

t: a term, e.g., “apple”

ilist: a complete inverted list

but a) inefficient, b) docids are sorted in reducers, and c) assumes ilist of a word fits in memory

(71)

Using Combine () to Reduce Communication

• Map: (docid1, content1) → (t1, ilist1,1) (t2, ilist2,1) (t3, ilist3,1) …

Each output inverted list covers just one document

• Combine locally

Sort by t

Combine: (t1 [ilist1,2 ilist1,3 ilist1,1 …]) → (t1, ilist1,27)

Each output inverted list covers a sequence of documents

• Shuffle by t

• Sort by t

(t4, ilist4,1) (t5, ilist5,3) … → (t4, ilist4,2) (t4, ilist4,4) (t4, ilist4,1) …

• Reduce: (t7, [ilist7,2, ilist3,1, ilist7,4, …]) → (t7, ilistfinal) ilisti,j: the j’th inverted list fragment for term i

(72)

Using MapReduce to Construct Indexes

Parser / Indexer Parser / Indexer

Parser / Indexer :

:

:

: :

:

Merger

Merger

Merger

: :

A-F Documents

Inverted Lists

Map/Combine

Inverted List Fragments

Shuffle/Sort Reduce

G-P

Q-Z

(73)

Construct Partitioned Indexes

Useful when the document list of a term does not fit memory

Map: (docid1, content1) → ([p, t1], ilist1,1)

Combine to sort and group values

([p, t1] [ilist1,2 ilist1,3 ilist1,1 …]) → ([p, t1], ilist1,27)

Shuffle by p

Sort values by [p, t]

Reduce: ([p, t7], [ilist7,2, ilist7,1, ilist7,4, …]) → ([p, t7], ilistfinal) p: partition (shard) id

(74)

Generate Partitioned Index

Parser / Indexer Parser / Indexer

Parser / Indexer :

:

:

: :

:

Merger

Merger

Merger

: :

Partition Documents

Inverted Lists

Map/Combine

Inverted List Fragments

Shuffle/Sort Reduce

Partition

Partition

(75)

MapReduce Use Case 6: PageRank

(76)

PageRank

Model page reputation on the web

i=1,n lists all parents of page x.

PR(x) is the page rank of each page.

C(t) is the out-degree of t.

d is a damping factor .

=

+

= n

i i

i

t C

t d PR

d x

PR

1 ( )

) ) (

1 ( )

(

0.4

0.4

0.2

0.2 0.2

0.2 0.4

(77)

Computing PageRank Iteratively

Start with seed PageRank values

Each page distributes PageRank “credit” to all pages it points to.

Each target page adds up

“credit” from multiple in- bound links to compute PRi+1

Effects at each iteration is local. i+1th iteration depends only on ith iteration

At iteration i, PageRank for individual nodes can be computed independently

(78)

PageRank using MapReduce

Map: distribute PageRank “credit” to link targets

Reduce: gather up PageRank “credit” from multiple sources to compute new PageRank value

Iterate until convergence

(79)

PageRank Calculation:

Preliminaries

One PageRank iteration:

Input:

(id1, [score1(t), out11, out12, ..]), (id2, [score2(t), out21, out22, ..]) ..

Output:

(id1, [score1(t+1), out11, out12, ..]), (id2, [score2(t+1), out21, out22, ..]) ..

MapReduce elements

Score distribution and accumulation

Database join

(80)

PageRank:

Score Distribution and Accumulation

Map

In: (id1, [score1(t), out11, out12, ..]), (id2, [score2(t), out21, out22, ..]) ..

Out: (out11, score1(t)/n1), (out12, score1(t)/n1) .., (out21, score2(t)/n2), ..

Shuffle & Sort by node_id

In: (id2, score1), (id1, score2), (id1, score1), ..

Out: (id1, score1), (id1, score2), .., (id2, score1), ..

Reduce

In: (id1, [score1, score2, ..]), (id2, [score1, ..]), ..

Out: (id1, score1(t+1)), (id2, score2(t+1)), ..

(81)

PageRank:

Database Join to associate outlinks with score

Map

In & Out: (id1, score1(t+1)), (id2, score2(t+1)), .., (id1, [out11, out12, ..]), (id2, [out21, out22, ..]) ..

Shuffle & Sort by node_id

Out: (id1, score1(t+1)), (id1, [out11, out12, ..]), (id2, [out21, out22, ..]), (id2, score2(t+1)), ..

Reduce

In: (id1, [score1(t+1), out11, out12, ..]), (id2, [out21, out22, .., score2(t+1)]), ..

Out: (id1, [score1(t+1), out11, out12, ..]), (id2, [score2(t+1), out21, out22, ..]) ..

(82)

Conclusion

Application cases

Map only: for totally distributive computation

Map+Reduce: for filtering & aggregation

Database join: for massive dictionary lookups

Secondary sort: for sorting on values

Inverted indexing: combiner, complex keys

PageRank: side effect files

(83)

References

• J. Dean and S. Ghemawat. “MapReduce: Simplified Data Processing on Large Clusters.” In Proc. of OSDI 2004.

• S. Ghemawat, H. Gobioff, and S.-T. Leung. “The Google File System.” In Proc. of SOSP 2003.

• http://hadoop.apache.org/common/docs/current/mapred_tu torial.html. “Map/Reduce Tutorial”. Fetched January 21,

2010.

• Tom White. Hadoop: The Definitive Guide. O'Reilly Media.

2013.

• http://developer.yahoo.com/hadoop/tutorial/module4.html

• J. Lin and C. Dyer. Data-Intensive Text Processing with MapReduce, Book Draft. February 7, 2010.

(84)

Thank you!

參考文獻

相關文件

Following the supply by the school of a copy of personal data in compliance with a data access request, the requestor is entitled to ask for correction of the personal data

• Use table to create a table for column-oriented or tabular data that is often stored as columns in a spreadsheet.. • Use detectImportOptions to create import options based on

what is the most sophisticated machine learning model for (my precious big) data. • myth: my big data work best with most

important to not just have intuition (building), but know definition (building block).. More on

• 57 MMX instructions are defined to perform the parallel operations on multiple data elements packed into 64-bit data types. • These include add, subtract, multiply, compare ,

• 57 MMX instructions are defined to perform the parallel operations on multiple data elements packed into 64-bit data types.. • These include add, subtract, multiply, compare ,

 Human Factor Big-data Research Center – Health Promotion for Sub-health

(2011) The Project Approach In Early Years Provision : A Practical Guide To Promoting Children's Creativity And Critical Thinking Through Project