Spark——大数据技术栈的长子

题记

本想将上一系列‘数据仓库’还没有分享的模块——数据集市的在实际场景的概念模型和用处,基于数据仓库上层的ETL工程设计分享出来,但是最近领导安排我,要给开发部的同事讲解大数据的知识和技术,所以先放下数据仓库的那些事儿,根据同事们的反馈,他们最想学的技术就是现在大数据技术栈里面,数据计算处理的王者——Spark.
这篇分享从介绍Spark开始,算是入门前的入门,不涉及原理,不涉及技术,但是却很重要,重要的是理解Spark是什么?用来做什么?为什么要选择Spark?这将对以后工程师们在选择和使用Spark的时候,更加能知道,应该怎样的去用Spark,在什么样的场景下去使用什么样的Spark组件,来发挥它的价值。

what is spark?

Spark是一个通用数据处理引擎。
适用于各种环境 ,这里介绍一下,主要应用于两种最常见的场景

离线场景:可以是时间为维度,几年的数据集,或者是业务为维度,某个领域的大数据集,这种数据可以我们一般叫做离线数据,或者冷数据。
实时场景:网站埋点,实时从前端页面传输过来的数据,或者业务系统,物理硬件实时传输过来的数据,硬件信号或者图像数据,我们需要实时的去计算处理并且返回结果。
应用程序开发人员和数据科学家将Spark纳入其应用程序,以便快速查询,分析和转换数据。

所以与Spark关联最频繁的任务包括跨大型数据集的交互式查询,处理来自传感器或金融系统的流数据以及机器学习任务。
Spark于2009年开始在加利福尼亚大学伯克利分校的AMPLab项目中生活。更具体地说,它是由于需要证明Meso的概念而诞生的,这也是在AMPLab中创建的。

(科普:Mesos是Apache下的开源分布式资源管理框架,它被称为是分布式系统的内核。)

从一开始,Spark就被优化成在内存中运行。它比Hadoop的MapReduce等替代方法更快速地处理数据,这往往会在每个处理阶段之间向计算机硬盘驱动器写入数据。Spark的支持者声称,Spark在内存中的运行速度比Hadoop MapReduce快100倍,而且在处理基于Hadoop MapReduce本身的磁盘数据时速度也快了10倍。这种比较并不完全公平,这不仅仅是因为对于Spark的典型用例,原始速度往往比批处理更重要,在这种情况下类似MapReduce的解决方案仍然非常出色。基于Hadoop基于YARN的体系结构为Spark和其他应用程序共享通用集群和数据集提供了基础,同时确保一致的服务和响应级别。

下图是构成Spark的生态系统,强大的生态系统:

clipboard.png

其中 Spark Core是Spark的核心API,并且支持Scala,Python,Java编程语言,R,SQL分析语言,在以Spark Core为基础之上,有着Spark SQL,Spark Streaming,Spark Mlib,Spark Graphx四个亲儿子。这四个组件,我将在之后的文章详细的介绍,并且会从应用和代码示例来讲解。

spark do what?

Spark能够一次处理数PB的数据,分布在数千个协作的物理或虚拟服务器集群中。

(科普:什么是分布式计算?所谓分布式计算是一门计算机科学,它研究如何把一个需要非常巨大的计算能力才能解决的问题分成许多小的部分,然后把这些部分分配给许多计算机进行处理,最后把这些计算结果综合起来得到最终的结果。分布式网络存储技术是将数据分散的存储于多台独立的机器设备上。分布式网络存储系统采用 可扩展的系统结构,利用多台存储服务器分担存储负荷,利用位置服务器定位存储信息,不但解决了传统集中式存储系统中单存储服务器的瓶颈问题,还提高了系统的可靠性、可用性和扩展性。)

它有一套广泛的开发者库和API,并且支持Java,Python,R和Scala等语言; (现在在写spark应用程序时,最长使用的是Scala语言,因为spark的源码就是用scala来编写的,再其次就是python语言,python的第三方库很多,节省了程序员很多的时间要去自己实现某些功能,这两个语言的语法都很简洁,上手简单,支持函数式编程)
它的灵活性使其非常适合于各种用例。Spark通常与Hadoop的数据存储模块HDFS一起使用,但它可以与HBase,Cassandra,MapR-DB,MongoDB和Amazon S3 等其他流行的数据存储子系统集成,并且可以和Kafka,Flume等数据传输队列和数据采集工具一起搭配使用。

who use spark?

Spark是为数据科学设计的,其抽象使数据科学变得更加简单。数据科学家通常使用机器学习 - 一套可以从数据中学习的技术和算法。这些算法通常是迭代的,Spark将数据集缓存在内存中的能力大大加快了迭代数据处理速度,使得Spark成为实现这种算法的理想处理引擎。
Spark是为大数据工程师设计的,在强大的计算能力和优秀的架构设计面前,可以让数据工程师在不管是离线情景下还是实时的业务需求下,都可以放心的选择使用Spark,一次读取,并行化处理,对数据集支持容错,操作灵活性,第三方社区的积极支持,虽然Spark还面对着缺点,但我相信Spark的明天会更好。

why use spark?

选择Spark有很多原因,但三个关键:

简单性:Spark的功能可以通过一组丰富的API来访问,所有这些都是专门为大规模数据快速轻松地交互而设计的。这些API都有详细的文档和结构,使数据科学家和应用程序开发人员能够快速地将Spark工作。

速度:Spark是为速度而设计的,可以在内存和磁盘上运行。来自Databricks的团队使用Spark在2014年Daytona Grey Sort 100TB Benchmark挑战赛中与加利福尼亚大学圣地亚哥分校的一队队员并列第一名。挑战包括处理静态数据集; Databricks团队能够在23分钟内处理存储在固态硬盘上的100TB的数据,而之前的获胜者通过使用Hadoop和不同的集群配置需要72分钟的时间。在支持存储在内存中的数据的交互式查询时,Spark可以执行得更好。在这种情况下,有人声称Spark可以比Hadoop的MapReduce快100倍。

支持:Spark支持一系列编程语言,包括Java,Python,R和Scala。尽管通常与HDFS密切相关,但Spark还包括对Hadoop生态系统及其以后的许多领先存储解决方案的紧密集成的本地支持。此外,Apache Spark社区是大型的,活跃的和国际性的。包括Databricks,IBM以及所有主要Hadoop供应商在内的不断增长的商业提供商为Spark解决方案提供全面的支持。

spark use case

随着 Apache Spark的发展势头继续增长,几乎所有一站式大数据平台都早已集成Spark,国外最为著名的CDH,HDP,国内的TDH等,所有行业用于实际应用。正在使用Spark来改善他们的业务,通过检测模式和提供可操作的洞察力来推动组织变革,并开始改变生活的某些方面。下面提供了一些从保险到互联网公司如何使用Spark的例子:

保险行业: 通过使用Spark的机器学习功能来处理和分析所有索赔,优化索赔报销流程。
医疗保健: 使用Spark Core,Streaming和SQL构建病人护理系统。
零售业 : 使用Spark分析销售点数据和优惠券使用情况。
互联网 : 使用Spark的ML功能来识别虚假的配置文件,并增强他们向客户展示的产品匹配。
银行业 : 使用机器学习模型来预测某些金融产品的零售银行客户的资料。
政府 : 分析地理,时间和财政支出。
科学研究 : 通过时间,深度,地理分析地震事件来预测未来的事件。
投资银行 : 分析日内股价以预测未来的价格走势。
地理空间分析: 按时间和地理分析Uber旅行,以预测未来的需求和定价。
Twitter情绪分析: 分析大量的推文,以确定特定组织和产品的积极,消极或中立的情绪。
航空公司 : 建立预测航空旅行延误的模型。
设备 : 预测建筑物超过临界温度的可能性。

上面所举的应用实例是想让大家更直接的去理解,Spark到底在实际的生产环境中能带来什么样的作用和发挥什么样的价值,对以后的学习,能更好的指导方向!

加油吧~~ 接下来的Spark分享应该会从Spark Core开始~

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值