开发者学堂课程【高校精品课-北京理工大学-大数据技术导论:大数据处理(二)】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/857/detail/15611
大数据处理(二)
内容介绍:
一、spark 概述
二、spark 的生态系统
spark 是重要的一个开源框架,大数据处理开源框架 spark。spark 内容分为四个部分,第一 spark 的概述,讲spark的起源和 spark 的历史。第二个部分,spark 这个生态系统上相关的一些个开源框架。第三个,spark 的运行原理,第四,spark 有哪些重要的组件。以及这些组件在什么场景下进行应用。
一、spark 概述
主要是 spark 的历史,Spark 的特点,以及 spark 与外一个很重要的大数据处理框架 hadoop 的对比分析。spark最初是由美国加州伯克利大学的这个 amp 实验室开发的一个框架,在2009年开发的一个基于内存的大数据处理框架,可用于构建大型的低延迟的数据分析处理任务。在2013年的时候,Spark 加入了 apache 的开源项目伯克利大学的。AMT实验室把 spark 项目贡献给 apache 基金会,成为一个重要的开源项目。Spark 已经成为 apache 软件基金会最重要的三大分布式计算框架之一。
1.spark 历史
Spark 在2014年打破了由重要的开源处理框架 hadoop 创造的一个大数据处理的排序记录。spark 用了1/10的计算资源,获得了比 hadoop 当时处理一个100TB 的数据,快三倍的一个速度。我们下面看一下这张表格来对比,
在2013年的时候,hadoop 创造了一个排序记录的一个记录,用了2100个机器72分钟,完成了100TB 数据的一个排序任务,在2014年的时候,Spark 用了207个机器,在23分钟的时间内完成了100TB的数据处理排序任务,那么他们的排序数量,都是由100TB 的数据。节点数 hadoop2013年的时候用了2000个节点,而 spark 用了207个节点,那么在时间上,hadoop 用了72分钟完成了数据的排序,而 spark 只用了23分钟完成了100TB 的数据的排序,Spark 在2014年以十倍的快速的速度刷新了 hadoop 创建的100TB 数据的排序记录,所以使得 spark 项目一举成名。
2. spark 的特点
Spark 是一个可以完成流数据处理的一个框架,可以完成 stream processing,Spark 的处理速度非常快,通过刚才的例子可以看出,它比的 hadoop 处理框架可以快十倍。还有一点,它可以实现这么快速的数据处理,原因是它是一个基于内存的一个数据处理框架。而 hadoop 是基于硬盘的数据库处理框架,Hadoop 的数据都是存在 HDFS 的硬盘文件当中,而 spark 这个框架,它的数据是在处理过程当中是存在内存的。取数据从硬盘来取的话,要比从内存来取数据要慢将近1000倍,所以基于内存的数据库里,框架一定是会比基于硬盘的数据处理框快很多,spark 还有一个特点,比较简洁,Spark 是可以用 scala 语言进行开发。scala语言是一个非常简洁的一个高级数据处理语言,它的编程语言可以实现比 Java 少1/10的代码。而完成同样的功能,还有 spark 一个特点,它是一个 lazy evaluation,也就是惰性处理机制,也就是 spark 在处理数据的时候,它会进行一系列的转换,在转换最后必须要进行数据计算的时候才完成数据计算,而在中间过程当中,不去进行数据的计算,而只进行一系列的数据转换。
3. spark 支持语言
spark 支持的最原生的语言是 scala,它是用 scala 语言进行开发的,它同时还可以支持其他的主流的大数据处理语言,包括 python,Java,还有 R 语言。
4.使用 Spark 架构的公司
Spark 作为这样一个快速的表现优秀的一个大数据处理框架,很多大型的公司都采用了这个数据处理框架来处理大数据的分析。比如包括雅虎,包括 ebay,包括 Uber,还有包括亚马逊,百度、阿里巴巴都使用 spark 大数据处理框架来完成大量数据的分析和处理任务,这也说明了 spark 这个大数据处理框架是非常的有用,非常的实效而且性能非常好。
5.spark 与 hadoop 的对比
对比一下 spark 和 hadoop 这两个大数据处理框架,来进一步的了解 spark 和 hadoop。
hadoop 的数据读取是从磁盘进行读取的每一步完成任务也是把数据写到磁盘里面,而 spark 数据在进行分析和处理的时候,是从内存里面进行数据的读取,读取之后进行数据转换,把中间的结果写在内存里面这样可以使 spark的速度非常快,就会让它在完成大量数据处理的时候,Spark 的延迟比较低,而 hadoop 的延迟比较高,所以 hadoop只适合这种批处理,文件批处理的这个任务。
从基本的处理单元来讲,Hadoop 是以进程为基本处理单元的,而 spark 是以线程为处理单元的,以线程处理单元使得 spark 可以进行并行的数据处理,从这个角度上并行的完成一系列的任务,使得 spark 也可以更快速一些。
在执行机制上,Hadoop 是以迭代的执行机制进行多次的 map reduce 这样的迭代机制,而 spark 是基于 dag的任务调度机制执行机制,它基于 dag,把任务转换成一系列的 dag 图,对 dag 图进行一步一步的进行处理。
那么基于以上的 hadoop 的特点和 spark 的特点,那么它们适合的数据处理场景是不一样的,hadoop 比较适合批处理的数据处理场景。它的延迟比较高,它可以一次完成大量数据处理,但是,时间会比较长,spark 的快速的数据处理机制可以使得 spark 可以支持流数据的处理,它的延迟比较低,它可以支持数据查询、统计分析,还有图数据和机器学习等不同的数据处理场景,hadoop 只支持一种批处理的场景。而 spark 可以支持四种图处理,机器学习、流处理。和传统的数据查询、处理、分析这样四种不同的经典的数据处理的场景,使得 spark 比 hadoop 的适用的场景和范围更加广。
二、spark 的生态系统
Spark 作为一个很重要的开源的大数据处理框架,它和其他很多大数据的相关的开源框架一起完成一些大数据处理任务。
这些开源框架有包括数据来源的,spark 可以进行一起工作的数据来源,包括有 h base,HDFS,have mysql和mango DB 等等,还有消息处理机制卡夫卡。spark 可以跟大部分的主流的数据源的框架进行集成,那么对于运行环境这边,spark 也可以跟 hadoop 和我 cubanics docker 等等一些主流的环境进行集成。
对于上层的应用 Spark 基于 spark 可以构建很多上层的应用框架,包括 school,包括机器学习的 mahout,包括数据仓库的 have,ambery 等等,这些主流的应用框架都可以构建在 spark 这个大数据处理框架上。这一部分,
展示了主流的还 spark 的生态处理系统,可以集成的一些个重要的主流的软件。