博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Spark简介
阅读量:2726 次
发布时间:2019-05-13

本文共 1966 字,大约阅读时间需要 6 分钟。

1.1 Spark简介与发展

大部分企业习惯用Hadoop去分析数据集,选择Hadoop框架的原因是由于它的编程基于MapReduce编程模型,于此同时,它提供了一个scalable(扩展性)、flexible(兼容性) 、fault-tolerant(容错性) 、cost effective(经济有效)的计算解决方案。就查询和运行之间的等待时间而言,当前考虑的主要问题是去维护处理大数据集的速度。   Spark是由Apache软件基金会推出,Spark出现时为了提高Hadoop处理大数据的速度。但与传统概念相反的是,Spark不是Hadoop的改进版,它不依赖Hadoop,因为spark有自己的群管理器。Hadoop仅仅是Spark实现的一种方法。   Spark使用Hadoop有以下两种方式:存储(storage)和处理(processing)。由于Spark有自己的集群计算管理器,因此它用Hadoop的目的仅仅是为了存储。   Spark是一个轻量级的集群计算基数,设计它的目的是为了更快的计算。它基于Hadoop的MapReduce而且扩展了MapReduce的模型,为了将MapReduce更有效地用于多种类型的计算,其包括交互式查询和流处理。   Spark设计的目的是为了覆盖更大的工作负载范围,例如批处理应用程序、迭代算法、交互查询和流媒体。除了支持所在各自的系统中的工作负载,它还减轻了维护单独的工具的管理负担。   Spark是在2009年在加州大学伯克利分校的AMPLab由马太·扎哈里亚开发Hadoop子项目之一。2010年在BSD许可下,它是开源的。在2013年,它被捐赠给Apache Software Foundation,现在的Apache Spark已经成为一个顶级Apache项目。

1.2 Spark特点

● 处理速度

Spark有助于提高应用程序在Hadoop集群运行速度,在内存中的运行速度是之前的100倍,在硬盘上的运行速度是之前的10倍。通过减少对硬盘读写操作的次数,来提升处理速度。Spark把中间数据存储在内存中。
● 支持多种开发语言
Spark提供了Java、Scala、Python的API。因此,可以用不同的开发语言来开发应用程序。Spark为交互查询配备了80个high-level操作符。
● 超强的分析能力
Spark不但支持Map和Reduce,而且支持SQL查询、流数据、机器学习(ML)和图形算法。

1.3 Spark与Hadoop集成

下面流程图显示了Spark与Hadoop的三种集成方式:

Spark部署的三种方式详细介绍如下:

● 独立安装(standalone)

Spark独立部署意味着Spark占据HDFS的顶部(Hadoop分布式文件系统)与此同时为HDFS分配空间。在这里,Spark和MapReduce将并排运行来覆盖Spark集群中的所有工作。
● Spark与Hadoop资源管理器 (YARN)
Hadoop Yarn部署意味着,Spark仅仅运行在Yarn且不带任何pre-installation或者root权限请求。它有助于把Spark集成进Hadoop生态系统或Hadoop堆栈中。它运行其他组件在堆栈顶部运行。
● Spark与MapReduce
SIMR习惯用来启动单独部署的spark job。用SIMR,用户启动并使用spark的shell, 不需要任何管理员权限。
1.4 Spark组件
● Spark Core
Spark Core是Spark平台(包含所有其他功能函数)的底层一般执行引擎。它提供了 内存计算和外部存储系统引用的数据集。
● Spark SQL
Spark SQL是Spark Core顶部的一个组件,它引入了一种名为SchemaRDD新的 数据抽象,它提供了结构化和半结构化数据的支持。
● Spark Streaming
Spark Streaming利用Spark Core快速的调度能力来执行流的分析。它获取小批量数, 然后在这些小批量数据上进行RDD转换。
● MLlib (Machine Learning Library)
MLlib是Spark上的一个分布式的机器学习框架。Spark是基于内存的分布式架构。根据基准,它是由对交替最小二乘(ALS)实现的MLlib开发完成的。Spark MLlib 是Apache Mahout中的基于磁盘的Hadoop版本的9倍快。
● GraphX
GraphX是一个在Spark顶部的布式图形处理框架。它提供了用于描述图形计算的 API,它用Pregel 抽象的API建立用户定义的图形模型。为该抽象提供了一个优化 的运行时间。

转载地址:http://rujtd.baihongyu.com/

你可能感兴趣的文章
深入理解JVM—JVM内存模型
查看>>
java写一个会导致死锁的程序
查看>>
Java代码解决生产者---消费者问题(两种方法)
查看>>
java web 调优
查看>>
判断Java 对象实例是否死亡
查看>>
Java开发中的23种设计模式详解及代码和图解
查看>>
唯一索引和普通索引的区别
查看>>
java基础
查看>>
使用JDBC获取select count(*) from table_name
查看>>
浅谈 RPC、RMI、REST 这些很绕的概念
查看>>
远程通信的几种选择(RPC,Webservice,RMI,JMS的区别)
查看>>
group by 与 where, having以及顺序
查看>>
XPath 详解,总结
查看>>
初学XPath,其实很简单
查看>>
要提高SQL查询效率where语句条件的先后次序应如何写
查看>>
jni数据类型及使用
查看>>
JNI对引用数据类型的操作
查看>>
JNI的NIO操作
查看>>
JNI的访问域
查看>>
JNI调用Java方法
查看>>