spark 运维实战 简介

 Spark 大数据计算框架、架构、计算模型和数据管理策略及 Spark 在工业界的应用。围绕 Spark 的 BDAS 项目及其子项目进行了简要介绍。目前,Spark 生态系统已经发展成为一个包含多个子项目的集合,其中包含 SparkSQL、Spark Streaming、GraphX、 MLlib 等子项目,本章只进行简要介绍,后续章节再详细阐述。

1.1 Spark 是什么

Spark 是基于内存计算的大数据并行计算框架。Spark 基于内存计算,提高了在大数据环境下数据处理的实时性,同时保证了高容错性和高可伸缩性,允许用户将 Spark 部署在大量廉价硬件之上,形成集群。

Spark 于 2009 年诞生于加州大学伯克利分校 AMPLab。目前,已经成为 Apache 软件基金会旗下的顶级开源项目。下面是 Spark 的发展历程。

1.Spark 的历史与发展

2009 年:Spark 诞生于 AMPLab。

2010 年:开源。

2013 年 6 月:Apache 孵化器项目。

2014 年 2 月:Apache 顶级项目。

2014 年 2 月:大数据公司 Cloudera 宣称加大 Spark 框架的投入来取代 MapReduce。

2014 年 4 月:大数据公司 MapR 投入 Spark 阵营,Apache Mahout 放弃 MapReduce,

将使用 Spark 作为计算引擎。

2014 年 5 月:Pivotal Hadoop 集成 Spark 全栈。

2014 年 5 月 30 日:Spark 1.0.0 发布。

2014 年 6 月:Spark 2014 峰会在旧金山召开。

2014 年 7 月:Hive on Spark 项目启动。

目前 AMPLab 和 Databricks 负责整个项目的开发维护,很多公司,如 Yahoo!、Intel 等

参与到 Spark 的开发中,同时很多开源爱好者积极参与 Spark 的更新与维护。

AMPLab 开发以 Spark 为核心的 BDAS 时提出的目标是:one stack to rule them all,也

就是说在一套软件栈内完成各种大数据分析任务。相对于 MapReduce 上的批量计算、迭代型计算以及基于 Hive 的 SQL 查询,Spark 可以带来上百倍的性能提升。目前 Spark 的生态系统日趋完善,Spark SQL 的发布、Hive on Spark 项目的启动以及大量大数据公司对 Spark 全栈的支持,让 Spark 的数据分析范式更加丰富。

2Spark 之于 Hadoop

更准确地说,Spark 是一个计算框架,而 Hadoop 中包含计算框架 MapReduce 和分布式文件系统 HDFS,Hadoop 更广泛地说还包括在其生态系统上的其他系统,如 Hbase、

Hive 等。

Spark 是 MapReduce 的替代方案,而且兼容 HDFS、Hive 等分布式存储层,可融入

Hadoop 的生态系统,以弥补缺失 MapReduce 的不足。 Spark 相比 Hadoop MapReduce 的优势 如下。

(1)中间结果输出基于 MapReduce 的计算引擎通常会将中间结果输出到磁盘上,进行存储和容错。出于

任务管道承接的考虑,当一些查询翻译到 MapReduce 任务时,往往会产生多个 Stage,而这些串联的 Stage 又依赖于底层文件系统(如 HDFS)来存储每一个 Stage 的输出结果。

Spark 将执行模型抽象为通用的有向无环图执行计划(DAG),这可以将多 Stage 的任务串联或者并行执行,而无须将 Stage 中间结果输出到 HDFS 中。类似的引擎包括 Dryad、

Tez。

(2)数据格式和内存布局由于 MapReduce Schema on Read 处理方式会引起较大的处理开销。Spark 抽象出分布式内存存储结构弹性分布式数据集 RDD,进行数据的存储。RDD 能支持粗粒度写操作,但对于读取操作,RDD 可以精确到每条记录,这使得 RDD 可以用来作为分布式索引。

Spark的特性是能够控制数据在不同节点上的分区,用户可以自定义分区策略,如 Hash 分区等。 Shark 和 Spark SQL 在 Spark 的基础之上实现了列存储和列存储压缩。

(3)执行策略 MapReduce 在数据 Shuffle 之前花费了大量的时间来排序,Spark 则可减轻上述问题带

来的开销。因为 Spark 任务在 Shuffle 中不是所有情景都需要排序,所以支持基于 Hash 的分布式聚合,调度中采用更为通用的任务执行计划图(DAG),每一轮次的输出结果在内存缓存。

(4)任务调度的开销传统的 MapReduce 系统,如 Hadoop,是为了运行长达数小时的批量作业而设计的,在

某些极端情况下,提交一个任务的延迟非常高。

Spark 采用了事件驱动的类库 AKKA 来启动任务,通过线程池复用线程来避免进程或线程启动和切换开销。

3Spark 能带来什么

Spark 的一站式解决方案有很多的优势,具体如下。(1)打造全栈多计算范式的高效数据流水线

Spark 支持复杂查询。在简单的“ map ”及“ reduce ”操作之外,Spark 还支持 SQL 查询、流式计算、机器学习和图算法。同时,用户可以在同一个工作流中无缝搭配这些计算范式。

(2)轻量级快速处理 Spark 1.0 核心代码只有 4 万行。这是由于 Scala 语言的简洁和丰富的表达力,以及

Spark 充分利用和集成 Hadoop 等其他第三方组件,同时着眼于大数据处理,数据处理速度是至关重要的,Spark 通过将中间结果缓存在内存减少磁盘 I/O 来达到性能的提升。

(3)易于使用,Spark 支持多语言 Spark 支持通过 Scala、Java 及 Python 编写程序,这允许开发者在自己熟悉的语言环境

下进行工作。它自带了 80 多个算子,同时允许在 Shell 中进行交互式计算。用户可以利用 Spark 像书写单机程序一样书写分布式程序,轻松利用 Spark 搭建大数据内存计算平台并充分利用内存计算,实现海量数据的实时处理。

(4)与 HDFS 等存储层兼容 Spark 可以独立运行,除了可以运行在当下的 YARN 等集群管理系统之外,它还可以读取已有的任何 Hadoop 数据。这是个非常大的优势,它可以运行在任何 Hadoop 数据源上,0 Hive、HBase、HDFS 等。这个特性让用户可以轻易迁移已有的持久化层数据。(5)社区活跃度高

Spark 起源于 2009 年,当下已有超过 50 个机构、260 个工程师贡献过代码。开源系统的发展不应只看一时之快,更重要的是支持一个活跃的社区和强大的生态系统。

同时我们也应该看到 Spark 并不是完美的,RDD 模型适合的是粗粒度的全局数据并行计算。不适合细粒度的、需要异步更新的计算。对于一些计算需求,如果要针对特定工作负载达到最优性能,还是需要使用一些其他的大数据系统。例如,图计算领域的 GraphLab 在特定计算负载性能上优于 GraphX,流计算中的 Storm 在实时性要求很高的场合要比

Spark Streaming 更胜一筹。

随着 Spark 发展势头日趋迅猛,它已被广泛应用于 Yahoo!、Twitter、阿里巴巴、百度、网易、英特尔等各大公司的生产环境中。

时间: 2024-10-11 16:30:01

spark 运维实战 简介的相关文章

运维实战案例之“Argument list too long”错误与解决方法

作为一名运维人员来说,这个错误并不陌生,在执行rm.cp.mv等命令时,如果要操作的文件数很多,可能会使用通配符批量处理大量文件,这时就可能会出现"Argument list too long"这个问题了. 1.错误现象 这是一台Mysql数据库服务器,在系统中运行了很多定时任务,今天通过crontab命令又添加了一个计划任务,退出时发生了如下报错: #crontab -e 编辑完成后,保存退出,就出现下面如下图所示错误: 2.解决思路 根据上面报错的提示信息,基本判定是磁盘空间满了,

运维实战案例之文件已删除但空间不释放问题解析

1.错误现象 运维的监控系统发来通知,报告一台服务器空间满了,登陆服务器查看,根分区确实没有空间了,如下图所示: 这里首先说明一下服务器的一些删除策略,由于Linux没有回收站功能,我们的线上服务器所有要删除的文件都会首先移动到系统/tmp目录下,然后定期清除/tmp目录下的数据.这个策略本身没有问题,但是通过检查发现这台服务器的系统分区中并没有单独划分/tmp分区,这样/tmp下的数据其实是占用了根分区的空间.既然找到了问题,那么删除/tmp目录下一些大数据即可,执行如下命令,检查/tmp下最

linux运维实战练习-正则表达式

一.linux运维实战练习题及解答 1.显示/etc/passwd文件中以bash结尾的行 2.显示/etc/passwd文件中的两位数或三位数 3.显示`netstat -tan`命令结果中以'LISTEN'后跟0个.1个或者多个空白字符结尾的行 4.添加用户bash.testbash.basher以及nologin用户(nologin用户的shell为/sbin/nologin):而后找出/etc/passwd文件中用户名与其shell名相同的行 5.显示当前系统上root.centos或者

《大企业云桌面运维实战》v1.15

<大企业云桌面运维实战> 链接:http://pan.baidu.com/s/1mhX5yYG 密码:g5tg 第01章 规划(待续)已更新 第02章 准备-环境已更新 第03章 部署-IT 基础架构已更新 第04章 部署-Microsoft-服务器虚拟化-Hyper-V 2012 R2已更新 第05章 部署-VMware-服务器虚拟化-esxi 6.0.0 U1第06章 部署-VMware-桌面虚拟化-Horizon View 6.2.1第07章 部署-VMware-应用程序虚拟化-Thin

《vSphere企业运维实战》内容提要及封面选择

各位博友大家好,我的新书<vSphere企业运维实战>即将由人民邮电出版社出版.这本书介绍了VMware vSphere企业运维内容,包括虚拟化的实施规划.从己有物理服务器迁移到虚拟服务器.数据中心实时管理.数据中心动态管理.虚拟机的备份与恢复.VMware虚拟云基础架构vCloud Director等内容.<VMware vSphere企业运维 从入门到提高>系列视频就是参照这本书来制作的.下面是当前设计的几个封面,朋友们认为第几个好请直接发表评论留言,选出认为合适的封面,谢谢!

2017最新企业Shell面试题及企业运维实战共30道案例

<跟老男孩学习Linux运维:Shell高级编程实战>一书第19章企业面试题分享. 答案: 1.答案在<跟老男孩学习Linux运维:Shell高级编程实战>第19章一书2016年年底前即将出版. 2.2016最新Shell视频http://edu.51cto.com/pack/view/id-546.html 第19章企业Shell面试题及企业运维实战案例 19.1 企业Shell面试题实战案例 19.1.1 企业Shell面试题1:批量生成随机字符文件名案例 使用for循环在/o

Openvpn技术企业级中级运维实战视频教程

课程目录: openvpn技术企业级中级运维实战(上) 1.01-课前思想必看2.02-VPN概述介绍与图解3.03-VPN的作用介绍与图解4.04-VPN的企业应用分类介绍与图解15.05-VPN的企业应用分类介绍与图解26.06-常见隧道协议介绍-PPTP7.07-常见隧道协议介绍-L2TP8.08-常见隧道协议介绍-IPSEC-SSLVPN9.09-实现vpn功能常见开源产品及实际应用特点介绍10.10-根据企业生产场景需求选择vpn产品及方案建议11.11-openvpn开源vpn产品介

《大企业云桌面运维实战》v1.13

<大企业云桌面运维实战>-培训大纲 v1.1.3 <大企业云桌面运维实战>-授课计划 v1.1.3 链接:http://pan.baidu.com/s/1b6LxL0 密码:5c61

linux运维实战练习-2015年9月01日课程作业(练习)

linux运维实战练习-2015年9月01日课程作业(练习)安排 一.作业(练习)内容: 1.复习本次课程所讲的内容 2.总结整理磁盘管理及文件系统管理中设计的各种命令的使用,并附注一定的示例: 在Linux中,一块磁盘能被使用(可以被访问.被写入.被存储)要有以下三个步骤: (1)进行磁盘分区,及创建分区 (2)创建文件系统 (3)挂载文件系统 (1)磁盘分区 创建分区的命令: fdisk, parted, sfdisk fdisk:最多支持在一块硬盘上的15个分区:fdisk提供了一个交互式