解密大数据大数据玩转大数据

《大数据导论》读书笔记——Chapter 6

2018-03-03  本文已影响29人  玉小灵灵七

第六章介绍了大数据处理的相关概念。书中提到理解大数据处理的关键是要认识到大数据处理与传统的关系型数据库的集中处理方式不同,是一种分布式并行的处理方式。

1. Parallel Data processing

并行数据处理是指将一个任务分为多个子任务同时执行以缩短处理时间。并行数据处理通常采用一个机器中的多个处理器完成,而不是在多个机器中完成。

2. Distributed Data processing

分布式数据处理与并行数据处理相同,都是基于“divide-and-conquer”(分而治之,各个击破)的原则,不同的是,分布式数据处理通常采用多个机器互联组成的一个集群来实现,如下图:

3. Hadoop

书中定义Hadoop是用于大规模数据存储与处理的开源框架,是一种大数据解决方案的类工业平台,可用于ETL引擎,或处理大量结构化、半结构化、非结构化数据的分析引擎。在数据分析方面,Hadoop采用MapReduce处理框架。下图展示了Hadoop的一些特点:

4. Processing Workloads

在大数据领域,处理工作量被定义为在一定时间内处理的不同类型数据的量。处理工作量通常被分为两种类型:批处理型和事务型。结合书中的描述,总结对比如下:

5. Cluster

与集群为数据存储提供的可扩展性类似,集群同样可以为数据处理提供可扩展性,也就是说,数据处理可以在存储数据的集群中进行。较大的数据集可被划分为多个小的数据集,以并行分布的方式进行处理,这种方式同时支持批处理型与事务型数据处理模式。

在数据处理方面,同样也具有固有冗余及容错特点。

6. Processing in Batch Mode

在批处理模式中,数据在被处理之前先被保存到磁盘中,其处理响应时间从几分钟到几小时不等,这种处理模式主要针对大数据的Volume和Variety两个特点。

1)Batch Processing with MapReduce

MapReduce被广泛应用于批处理框架中,同样基于“divide-and-conquer”原则,采用并行分布式方式,将一个较大的problem划分为多个较小的problems,快速地分别解决。输入到MapReduce的数据不必遵循某一特定模型。MapReduce最初于2000年由Google在其发布的论文中提出。

在传统的数据处理框架中,数据先被从存储节点传输到处理节点,再在处理节点中进行处理,当数据量增大时,这个传输过程会占用较大的网络带宽并造成较大的处理时延。耗费在数据传输过程中的开支甚至会超过数据处理过程本身需要的开支。

采用MapReduce,可将数据处理算法用于数据存储节点中,即在分布式的数据存储节点中进行数据处理,不需要将数据从存储介质传输到数据处理部分。这大大节约了网络带宽并减少了数据处理时间。

2)Map and Reduce Tasks

每个MapReduce job被分为map task和reduce task,每个task有多个stage组成,如图:

A. Map(映射)

将数据文件分片,每一片以key value pair的方式输入到map中,通常,key表示记录的原始位置,value为实际的记录。每一个分片由一个mapper函数处理,通常一个分片包含多个key value pair,而mapper函数作用于分片中的每个key value pair。

输出的key和value可与输入的key和value相同,也可以是输入key和value的一部分,或是用户定义的某个可串行化的对象。对于一个输入的key value pair来说,可能不会对其产生输出的key value pair(filtering),也可能对其产生多个输出的key value pair(demultiplexing)。

B. Combining(合并)

这个stage是optional(可选的),通常,map task和reduce task是在不同的节点中完成的,这就需要将数据由mapper传输到reducer,当数据量较大时,这需要占用较大的网络带宽和较长的传输时间。基于此,combiner用于对mapper的输出进行summarize,以减少占用的网络带宽和传输时间。

Combiner的本质就是在与mapper同一个节点中进行数据处理的reducer,因此可以用reducer function或用户定义的其他function来作为combiner function。

C. Partition(分区)

在有多个reducer时,partition用于将mapper或combiner输出的数据分配给多个reducer。Partition的数目与reducer的数目相同。

每个partition包含多个key value pair,有着相同key的记录被分配到同一个partition中。必要时,需采用定制的partitioning logic,确保各个reducer所处理的workload被平均分配。

D. Shuffle and Sort(洗牌与排序)

这是reduce task的第一个stage,每个partitioner的输出可能包括同一个key的多条记录,洗牌与排序用于对key value pair进行分组和排序确保所有的key被分门别类,同时同一个key的记录被存放在一起。这个分组和排序的方式可以被用户根据其需求的不同来定制。

E. Reduce(归约)

这是reduce task的最后一个stage,reducer可对它的输入进行summarize,也可不做任何改变。与mapper类似,对于一个输入的key value pair来说,可能不会对其产生输出的key value pair(filtering),也可能对其产生多个输出的key value pair(demultiplexing)。

3)Understanding MapReduce Algorithms

上文中提过,MapReduce基于“divide-and-conquer”原则,通常有两种实现方式:

A. Task Parallelism(任务并行方式)

将一个task分为多个sub-task,每个sub-task在一个独立的处理节点或集群中完成,通常每个sub-task采用不同的算法,每个sub-task的数据汇总形成整个task的处理结果。

B. Data Parallelism(数据并行方式)

将一个dataset分为多个sub-dataset,再将这些sub-dataset分配到多个节点中用同样的算法进行处理,每个sub-dataset被处理后的输出汇总形成整个dataset的处理结果。

7. Processing in Realtime Mode

前文中提到:在批处理模式中,数据在被处理之前先被保存到磁盘中,其处理响应时间从几分钟到几小时不等,这种处理模式主要针对大数据的Volume和Variety两个特点。

而在实时处理模式中,数据先在内存中被处理再存储到磁盘中。实时处理的响应时间从1亚秒到1分钟不等,这种处理模式主要针对大数据的Velocity特点。

在大数据处理中,数据以流的形式连续到达或以事件的形式间隔到达,故实时处理也被称作流处理或事件处理。每个流/事件中的数据量通常较小。

另一个与实时处理相关术语是:交互模式,是指事务型BI或相关数据分析通常以交互的方式进行。

大数据处理相关的一个基本原则是Speed,Consistency and Volume(SCV)原则,描述了实时数据处理中的基本约束。

1)Speed Consistency Volume(SCV)

与分布式数据存储中的CAP定理类似,SCV原则用于约束分布式数据处理,断定一个分布式数据处理系统最多只能满足SCV三个要求中的两个。(下图是不是似曾相识?请见之前推文中的CAP定理《大数据导论》读书笔记——Chapter 5

A.Speed

Speed指数据处理的速度。

B. Consistency

这里的一致性Consistency是指结果的准确和精确。

C. Volume

Volume是指所处理的数据量。

如果同时满足S和C,则不可能满足V,因为大数据量会降低S;

如果同时满足C和V,则不可能满足S,因为S的提高会降低V;

如果同时满足V和S,则不可能满足C,因为对大数据量的高速处理会涉及对数据进行sampling,这会降低C。

在大数据处理场景中,V是不允许降低的,所以通常是在S+V和C+V中选择。

2)ESP & CEP

ESP是Event Stream Processing,即事件流处理,CEP是Complex Event Processing,即复杂事件处理,ESP和CEP是实时大数据处理的两种重要的概念。ESP相对简单,通常是简单的查询或简单算法的应用,以较快的速度执行;而CEP相对复杂,支持丰富的分析方法,是ESP的高级方式,处理速度也相对较慢。ESP的输出也可以用作CEP的输入。

3)Realtime Big Data Processing and MapReduce

MapReduce通常不适用于实时大数据处理,文中提到两个原因:一是MapReduce只用于处理完整的dataset,也就是要求所有的输入数据在执行数据处理时是完整的,而在实时数据处理中,数据是连续的或间隔到达的,现有的数据通常是不完整的。另一个原因是MapReduce中的reduce task需要在map task完成后才能执行,mapper输出的数据需要传输到reducer中,这造成了响应时间的增加,不适用于实时数据处理场景。

相关文章:

《大数据导论》读书笔记——Chapter 1

《大数据导论》读书笔记——Chapter 2

Big Data Adoption and Planning Consideration

《大数据导论》读书笔记——Chapter 4

《大数据导论》读书笔记——Chapter 5

慢火烹茶看图说话——铁路&民航

END

长按二维码关注

上一篇下一篇

猜你喜欢

热点阅读