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

举报
华章计算机 发表于 2020/02/22 13:21:37 2020/02/22
【摘要】 本节书摘来自华章计算机《Spark Streaming实时流式大数据处理实战》 —— 书中第1章,第1.1节,作者是肖力涛 。

第1篇

Spark基础

 

    (  第1章  初识Spark

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

    (  第3章  Spark编程模型

    

第1章  初识Spark

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

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

 image.png

图1.1  谷歌搜索拼写纠正

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

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

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

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

 image.png

图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所示。

 image.png

图1.3  逻辑回归在Hadoop和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所示。

 image.png

图1.4  Spark及其工具库

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

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


【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。