你好,游客 登录
背景:
阅读新闻

大数据处理技术

[日期:2019-07-21] 来源:  作者: [字体: ]

本文节选自艾叔即将出版的图书《Spark大数据编程实用教程》

前面介绍了大数据的开发过程大数据采集技术大数据存储技术,如图1-1所示。

图 1-1大数据开发通用步骤图

本节介绍大数据处理技术

1. 大数据和普通数据的处理技术对比

大数据和普通数据的处理技术不同之处在于:处理方法处理框架

传统处理方法有:串行处理、多线程处理和分布式处理。

而大数据处理则主要采用Map-Reduce方法来处理数据。

普通数据通常不需要特定的处理框架。

大数据处理,则需要编写专门的程序,在特定的处理框架上运行。

例如MapReduce程序需要在Hadoop的Yarn框架下运行;Spark程序需要有Yarn、Standalone等框架支持才能运行。

在这些处理框架中,Spark由于其灵活和高性能的特点,已经成为主流的大数据处理框架;Hadoop的MapReduce是之前更早的主流大数据处理框架;Storm在实时流处理中占有一席之地。

2. 大数据处理所涉及的技术

按照大数据处理的技术方向划分,可以分为四类,每类所涉及的技术如下:

2.1 大数据处理系统运维

此方向主要是从事大数据处理系统的的运行和维护工作,具体技术包括:

1. Linux平台的基本知识和操作,目前的大数据平台基本都是在Linux上运行的;

2. 常用的大数据处理系统,如Hadoop平台(包括:Yarn、HDFS和MapReduce)、Spark、Storm等,要熟悉这些平台的运行机制,构建方法,基本使用,常用命令,日志查看等;

3. 常用的运维工具,如SaltStack,常用的监控工具,如Zabbix等;

4. Shell编程,很多批处理操作和复杂逻辑可以使用Shell脚本方便地完成。

2.2 大数据应用开发

此方向主要是开发面向大数据应用的程序,实现大数据处理逻辑,并能进行相应的优化。

涉及的具体技术除了前面大数据处理系统运维基础外,还包括:

第一,与大数据处理框架相关的编程语言

例如,使用MapReduce框架,Java语言是最合适的,因为Hadoop就是用Java写的,可以无缝对接。如果使用Spark框架,Scala是最合适的,因为Spark就是用Scala开发的。

但这不是绝对的,每个框架都支持多种语言进行交互,例如Python也可以编写MapReduce程序和Spark程序。

总之,至少要掌握一门框架所支持的语言,除了基本的语法外,要着重掌握框架所提供的API函数及使用方法;

第二,每个框架所对应的编程模型

例如MapReduce模型就是将数据的处理过程,分解为Map和Reduce两个阶段。

程序启动后,将待处理的数据划分为若干部分,每个部分进行Map处理。

所谓Map处理,就是做映射,将输入的数据通过Map函数,映射为另一部分数据输出。

每个Map的输出,分为若干个部分,每个部分称为一个分区(Partition)。

如果每个Map上相同id的分区都准备好了,就会发送到同一个节点,进行Reduce(汇总)操作。

在整个处理过程中,Map阶段和Reduce阶段都是并行的,这样就实现了整个程序的并行处理,这就是MapReduce的编程模型。

如果使用MapReduce编程,就要将程序逻辑分成Map和Reduce两步进行处理;

Spark也同样如此,Spark中的核心是RDD,所有的并行处理都是围绕RDD进行的,在进行Spark程序设计时,也要设计合理的RDD,进行并行处理,具体的后面会详述;

第三,如果要进行大数据应用的优化,还需要深入掌握各个处理框架的运行机制,以及编程语言的特性。

例如Scala语言,如果不注意的话,同样的功能,不同的实现,效率可能会有100倍以上的差距。

同样的,MapReduce程序和Spark程序如果不注意,造成数据倾斜或者Shuffle过多的话,对程序的性能也会大大影响。

2.3 大数据处理算法

此方向主要是针对具体的问题,选取合适的大数据算法,如果该算法已实现,则在预处理后,调用现有实现。

如果没有实现,或者已有实现无法满足要求,则需要编写算法实现。如果没有合适的大数据算法,则要根据具体的问题来设计算法。

具体涉及的技术除了前面大数据处理系统运维和大数据处理应用开发外,还包括:

第一,常用的大数据算法

例如分类回归、聚类、关联规则、推荐、降维、特征抽取筛选等,要清楚每种算法的基本原理,同时,每种算法,例如推荐,本身又有很多种不同的推荐算法,要搞清楚,这些典型推荐算法之间的优劣对比,特别要关注其中的并行化算法及实现,这样面对具体问题时,就可以实现算法的快速选型;

第二,典型大数据算法的实现方法

算法的实现是和特定的处理框架相关的,例如Spark算法主要集中在mllib库,可以通过阅读源码的方式来学习和积累经验,这些都是自身实现大数据处理算法时所需要的;

第三,如果要设计算法,则需要有频繁项挖掘算法,则需要数学、概率论、数量统计、以及计算机离散数学、数据结构和算法等方面的基础,同时考虑并行化,还需要有操作系统的基础知识。

2.4 大数据处理技术研究

此方向偏向于大数据处理自身技术的研究。

例如设计开发类似于Spark的大数据处理框架。

除了前面涉及的技术外,还需要:分布式处理相关理论、分布式处理模型设计、分布式系统设计与实现技术等。


艾叔大数据系列

推荐:和艾叔一起学:Docker+Hadoop企业级项目实战

为何我自学大数据这么久,效果却不好呢?

艾叔:最全【大数据采集技术】总结

艾叔:大数据存储技术

什么样的数据可以称为“大数据”?

大数据开发的通用步骤

Python or Java? 真的没有那么重要

如何理解Scala的函数式编程

艾叔,我的两台虚拟机咋就通不了呢?

明明是按书上的步骤一步步来的,为什么还总出错?


新公众号,没法留言,如果你想和艾叔交流的话,可扫码私信,咱们微信见

Ps:艾叔不是高手,也不是牛人,编程的道路上,走了很多弯路,也踩了很多坑,如果你也和艾叔当年一样,欢迎关注公众号

如果你觉得本文有用,分享给需要的人。

你的分享点赞,是对艾叔最大的支持和鼓励

收藏 推荐 打印 | 阅读:
相关新闻