Coursera, Big Data 3, Integration and Processing (week 4)

Week 4

Big Data Precessing Pipeline

  

  

  

 上图可以generalize 成下图,也就是Big data pipeline

   

some high level processing operations in big data pipeline

在一个pipeline里 有哪些data transformation 方法?课程上讲了一个类比data transformation的例子,把原木加工成家具.

基本的data transformation 操作有 : Map 是第一个,还有Reduce, Cross/Cartesian, Match/Join, Co-Group, Filter

Aggregation opeartions in big data pipeline

  

   

比如上图中,每个星星的值是1,求和就是一个aggregation操作,还有对所有星星按颜色分类也是一个aggression操作。 对全部数据求 sum, avg, max, min, std 都是aggression操作

  

 analytical opearations in big data pipeline

  

   

Classification - DT

Clustering - K-means

Path analysis - find shortest path from home to work

Connectivity analyasis - graph

 Big data processing tool and systems

   

  

上面是  big data 的3层结构, 系列课程的整个course 2就是讲最底层的 data management and storage 的. 第二层就是这个course 3 主要讲的内容

Redis, AeroSpike - key value storage

Lucene

Gephi - vector and graph data storage

Vertica, Cassadra, HBase- column store database

Solr, Asterisk DB - for managing unstrunctured and semi-structured text.

mongodb - document store

 下面看第二层

  

YARN - enabler

Hive, Spark SQL - query interface

Pig - 脚本化使用 Map-Reduce 框架

Giraph, Spark GraphX - graph analytics

Mahout, Spark MLib - machine learning

接下来是第三层

  

OOZiE - workflow scheduler, 可以和第二层的很多tool 交互

ZooKeeper - Resource coordination and monitoring tool

  

现在回到第二层,主要讲5个data processing engine

  

Map-Reduce 从HDFS读数据,没有in-memory 支持,意味着Mapper只能写数据到files然后Reduce去读, 这就导致high letency 和 less scalable. 虽然也有python库但是只有Java可以作为高效编程语言.   

 Spark 支持迭代的交互的data processing pipeline. 有in-memory 结构的RDD(Resilient Distributed Datasets)支持, 除了支持 Map, Reduce 还支持Join, Filter 操作. 所有的transformation操作都能放到 RDD里,所有效率很高. 除了能从HDFS读数据,还可以从很多storage platform读数据。可以用micro-batching 技术读取streaming data.

  

 Flink 和Spark 类似,同时提供了连接stream data ingestion engine (比如Kafka, Flume) 的接口. Flink 有自己的 execution engine 叫 Nephele, 它支持在Hadoop上跑,可以在自己的Nephele上跑。 除了支持Map, Reduce, 还支持join, group by. Flink最大的优点是有一个优化器可以自动选择最优模式和实行策略.

  

Beam, 来自google 

  

Storm, 提供了输入抽象 spouts 和计算抽象 bolts. Storm 提供了Lambda Architecture, 可以把streaming 处理和 batch 处理分开处理

  

big data 领域的 Lambda Architecture (Storm 的作者设计的)开始版本的是下面这样的,batch 和 steam 分开处理, stream 处理就用的storm

   

下面这个通用版本的Lambda Arch 在保留了上面的Hadoop 和Storm 的情况下,增加了Spark, 可以用spark 既处理stream又处理batch. 

  

Dive into Spark

  

 Hadoop 的MapReduce 又弊端,首先它是针对batch processing的,对streaming 不支持,还有它只支持Map 和Reduce两种操作,很多情况下无法满足一个复杂Pipeline的需求

  

Spark 的优点如下

  

Spark组件建立在Spark计算引擎上, 其中Spark Core 包括支持分布式调度,内存管理,全容错。和像YARN和Mesos 这样的资源调度器,以及像HBase等各种NoSQL数据库交互都是通过Spark Core.Core 非常重要的一个部分是用来定义RDD的APIs.

Spark SQL 可以通过共同的query languange 查询结构化和非结构化数据.

Spark Streaming 对streaming data 做操作的.

MLlib 是机器学习库

GraphX - 图处理分析库

  

Getting started with Spark

  

   

   

Spark Cluster Manager 支持3种接口: Standalone Cluster Manger, YARN, Mesos.

怎么选 cluster manager, 见下面link.

 Summary architecure

Terms:

  neo4j - graph database, 用来查询的query language 叫 Cypher.

  Kafka - stream data ingestion engine

  Flume - stream data ingestion engine, collects and aggregates log data

转载请注明出处 http://www.cnblogs.com/mashuai-191/
原文地址:https://www.cnblogs.com/mashuai-191/p/10231416.html