Spark Streaming实时流式大数据处理实战》 ——1 初识Spark

网友投稿 572 2022-05-29

第1篇

Spark基础

(  第1章  初识Spark

(  第2章  Spark运行与开发环境

(  第3章  Spark编程模型

第1章  初识Spark

笔者目前正在使用微软的Word进行书籍的撰写。而Word中一个很好用的功能便是拼写检查,当发生拼写错误时,会提供一 个列表让我们选择。而背后的原理就是Word使用了一份庞大的词典来进行匹配,类似于专家的人工匹配行为。

而另一种思路是借用群体智慧,我们在使用谷歌浏览器的时候,会遇到一个“你是不是找”的功能模块,当输入比较“冷门”的搜索条件时,谷歌浏览器会给出一个更加准确的搜索条件,如图1.1所示。

图1.1  谷歌搜索拼写纠正

谷歌就是利用了大数据,当我们输错一个词的时候,在每日海量的搜索数据中,一定有跟我们搜索相同内容的用户,他们会重新输入,那么这个重新输入的词也许就是我们想要的词;而另一方面,如果用户单击了该词,说明匹配正确,这样反馈学习的机制能够更好地提高拼写纠正的准确性。

类似的场景已经融入了人们生活中的方方面面,例如淘宝购物,平台会根据用户的购买行为记录推荐用户可能感兴趣的商品;看新闻,App根据用户个人行为记录及群体的观看记录,向用户推荐热点新闻和用户感兴趣的新闻;社交平台,根据用户大量的记录构建用户画像,进行更加精准的广告投放。

互联网时代,社交网络、电子商务与移动通信将我们的社会推向了一个以PB(1024TB)为单位的结构与非结构数据的新大数据时代。而面对海量的数据我们需要以更加高效的方式进行挖掘与应用,这就提出了大数据处理的需求。前几年随着Hadoop的兴起,大数据处理一时风起云涌,如图1.2展示了一个大数据平台的全景。

Data一词源于拉丁语,其本意是要对未来进行预测。这也正反映了大数据处理的核心任务——预测。大数据平台给我们提供了面对海量数据进行挖掘的能力,将其转化为生产力并产生价值。

图1.2  大数据平台全景

也许有读者不禁会问:既然Hadoop平台中Map/Reduce框架的提出在很大程度上解决了大数据的处理问题,那么为什么还会诞生Spark呢?本节就来介绍Spark的由来。

1.1  Spark由来

Spark最早源于一篇论文Resilient Distributed Datasets: A Fault-Tolerant Abstraction for In-Memory Cluster Computing。该论文是由加州大学柏克莱分校的Matei Zaharia等人发表的。论文中提出了一种弹性分布式数据集(即RDD)的概念,原文开头对其的解释是:

A distributed memory abstraction that lets programmers perform in-memory computations on large clusters in a fault-tolerant manner.

翻译过来就是:RDD是一种分布式内存抽象,其使得程序员能够在大规模集群中做内存运算,并且有一定的容错方式。而这也是整个Spark的核心数据结构,Spark整个平台都围绕着RDD进行。之后加州大学柏克莱分校AMPLab将其开发出来。

Apache Spark是一种针对大规模数据处理的快速通用开源引擎,主要有以下特点。

* 速度快:由于Apache Spark支持内存计算,并且通过DAG(有向无环图)执行引擎支持无环数据流,所以官方宣称其在内存中的运算速度要比Hadoop的MapReduce快100倍,在硬盘中要快10倍,如图1.3所示。

图1.3  逻辑回归在Hadoop和Spark中运算速度对比

《Spark Streaming实时流式大数据处理实战》 ——1 初识Spark

* 易于使用:截至笔者完稿时,Spark的版本已经更新到Spark 2.3.1,支持了包括Java、Scala、Python和R语言在内的多种语言。

* 通用性强:在Spark的基础上,Spark还提供了包括Spark SQL、Spark Streaming、MLib及GraphX在内的多个工具库,我们可以在一个应用中无缝地使用这些工具库。其中,Spark SQL提供了结构化的数据处理方式,Spark Streaming主要针对流式处理任务(也是本书的重点),MLib提供了很多有用的机器学习算法库,GraphX提供图形和图形并行化计算,如图1.4所示。

图1.4  Spark及其工具库

* 运行方式:Spark支持多种运行方式,包括在Hadoop和Mesos上,也支持Standalone的独立运行模式,同时也可以运行在云上。另外对于数据源而言,Spark支持从HDFS、HBase、Cassandra及Kafka等多种途径获取数据。

Spark内部引入了一种称为弹性分布式数据集的结构(RDD),在数据结构之间利用有向无环图(DAG)进行数据结构间变化的记录,这样可以方便地将公共的数据共享,并且当数据发生丢失时,可以依靠这种继承结构(血统Lineage)进行数据重建,具有很强的容错性。

Spark spark 大数据 大数据

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:关于大数据hadoop的35个科普小知识
下一篇:华为云@HC2019 | 这些超酷的展岛,你打卡了哪些?
相关文章