零基础学习大数据怎样入门Spark

1.什么是Spark

Apache Spark是一个围绕速度、易用性和复杂分析构建的大数据处理框架。最初在2009年由加州大学伯克利分校的AMPLab开发,并于2010年成为Apache的开源项目之一。

与Hadoop和Storm等其他大数据和MapReduce技术相比,Spark有如下优势,一起来看看吧。

首先,Spark为我们提供了一个全面、统一的框架用于管理各种有着不同性质(文本数据、图表数据等)的数据集和数据源(批量数据或实时的流数据)的大数据处理的需求。

Spark可以将Hadoop集群中的应用在内存中的运行速度提升100倍,甚至能够将应用在磁盘上的运行速度提升10倍。

Spark让开发者可以快速的用Java、Scala或Python编写程序。它本身自带了一个超过80个高阶操作符集合。而且还可以用它在shell中以交互式地查询数据。

除了Map和Reduce操作之外,它还支持SQL查询,流数据,机器学习和图表数据处理。开发者可以在一个数据管道用例中单独使用某一能力或者将这些能力结合在一起使用。

在这个Apache Spark文章系列的第一部分中,我们将了解到什么是Spark,它与典型的MapReduce解决方案的比较以及它如何为大数据处理提供了一套完整的工具。

2.Hadoop和Spark

Hadoop这项大数据处理技术大概已有十年历史,而且被看做是首选的大数据集合处理的解决方案。MapReduce是一路计算的优秀解决方案,不过对于需要多路计算和算法的用例来说,并非十分高效。数据处理流程中的每一步都需要一个Map阶段和一个Reduce阶段,而且如果要利用这一解决方案,需要将所有用例都转换成MapReduce模式。

在下一步开始之前,上一步的作业输出数据必须要存储到分布式文件系统中。因此,复制和磁盘存储会导致这种方式速度变慢。另外Hadoop解决方案中通常会包含难以安装和管理的集群。而且为了处理不同的大数据用例,还需要集成多种不同的工具(如用于机器学习的Mahout和流数据处理的Storm)。

如果想要完成比较复杂的工作,就必须将一系列的MapReduce作业串联起来然后顺序执行这些作业。每一个作业都是高时延的,而且只有在前一个作业完成之后下一个作业才能开始启动。

而Spark则允许程序开发者使用有向无环图(DAG)开发复杂的多步数据管道。而且还支持跨有向无环图的内存数据共享,以便不同的作业可以共同处理同一个数据。

Spark运行在现有的Hadoop分布式文件系统基础之上(HDFS)提供额外的增强功能。它支持将Spark应用部署到现存的Hadoop v1集群(with SIMR – Spark-Inside-MapReduce)或Hadoop v2 YARN集群甚至是Apache Mesos之中。

我们应该将Spark看作是Hadoop MapReduce的一个替代品而不是Hadoop的替代品。其意图并非是替代Hadoop,而是为了提供一个管理不同的大数据用例和需求的全面且统一的解决方案。

3.Spark特性

Spark通过在数据处理过程中成本更低的洗牌(Shuffle)方式,将MapReduce提升到一个更高的层次。利用内存数据存储和接近实时的处理能力,Spark比其他的大数据处理技术的性能要快很多倍。

Spark还支持大数据查询的延迟计算,这可以帮助优化大数据处理流程中的处理步骤。Spark还提供高级的API以提升开发者的生产力,除此之外还为大数据解决方案提供一致的体系架构模型。

Spark将中间结果保存在内存中而不是将其写入磁盘,当需要多次处理同一数据集时,这一点特别实用。Spark的设计初衷就是既可以在内存中又可以在磁盘上工作的执行引擎。当内存中的数据不适用时,Spark操作符就会执行外部操作。Spark可以用于处理大于集群内存容量总和的数据集。

Spark会尝试在内存中存储尽可能多的数据然后将其写入磁盘。它可以将某个数据集的一部分存入内存而剩余部分存入磁盘。开发者需要根据数据和用例评估对内存的需求。Spark的性能优势得益于这种内存中的数据存储。大数据学习群142973723

Spark的其他特性包括:

· 支持比Map和Reduce更多的函数。

· 优化任意操作算子图(operator graphs)。

· 可以帮助优化整体数据处理流程的大数据查询的延迟计算。

· 提供简明、一致的Scala,Java和Python API。

· 提供交互式Scala和Python Shell。目前暂不支持Java。

Spark是用Scala程序设计语言编写而成,运行于Java虚拟机(JVM)环境之上。目前支持如下程序设计语言编写Spark应用:

· Scala

· Java

· Python

· Clojure

· R

原文地址:https://www.cnblogs.com/A12345678/p/9864997.html

时间: 2024-10-07 14:22:47

零基础学习大数据怎样入门Spark的相关文章

零基础学习大数据需要掌握的基础

大数据已经成为时代发展的趋势,很多人纷纷选择学习大数据,想要进入大数据行业.大数据技术体系庞大,包括的知识较多,系统的学习大数据可以让你全面掌握大数据技能.学习大数据需要掌握哪些知识? 我还是要推荐下我自己创建的大数据资料分享群142973723,这是大数据学习交流的地方,不管你是小白还是大牛,小编都欢迎,不定期分享干货,包括我整理的一份适合零基础学习大数据资料和入门教程. 1.学习大数据首先要学习Java基础 怎样进行大数据学习的快速入门?学大数据课程之前要先学习一种计算机编程语言.Java是

零基础学习大数据之前,你不得不面对的几个问题

大数据作为当前前景广阔.薪资优渥的新兴行业,很多零基础者也萌生了想要学习大数据的想法,随之而来的,就会产生诸如我不是计算机专业到底能不能学大数据?我到底适不适合学大数据技术?大数据到底要学什么?等等一系列问题.下面我们就从零基础学习大数据的角度,来说一说学习前需要考虑的问题. 首先说一下学习大数据的基本要求,学历需要在大专及以上,因为这是企业用人时需求的最低学历要求,学习者年龄最好在20-32岁比较适宜,如果不在这个年龄段内,恐怕就需要根据个人实际情况具体分析了. 作为零基础者在学习大数据前,尤

零基础学习大数据Hadoop需要什么准备?Hadoop如何发展起来的?

Hadoop是一个由Apache基金会所开发的分布式系统基础架构,是用Java语言开发的一个开源分布式计算平台,适合大数据的分布式存储和计算平台.今天加米谷大数据就来简单介绍一下Hadoop的简史,以及学习Hadoop前要做哪些准备.狭义上,Hadoop就是单独指代Hadoop这个软件: 广义上,Hadoop指代大数据的一个生态圈,包括很多其他的软件. Hadoop的起源 1.2001年,Nutch问世.Nutch的设计目标是构建一个大型的全网搜索引擎,包括网页抓取.索引.查询等功能,但随着抓取

零基础学习大数据人工智能,学习路线篇!

大数据处理技术怎么学习呢?首先我们要学习Python语言和Linux操作系统,这两个是学习大数据的基础,学习的顺序不分前后. 大数据学习群:870097548 Python:Python 的排名从去年开始就借助人工智能持续上升,现在它已经成为了语言排行第一名. 分享之前推荐一个大数据学习交流群:870097548未来将是大数据时代,需要学习大数据的抓紧时间学习,群内不定期分享视频资料,欢迎加入 从学习难易度来看,作为一个为“优雅”而生的语言,Python语法简捷而清晰,对底层做了很好的封装,是一

零基础学习大数据的完整学习路线

最近很多人都想学习大数据开发,但是却不知道如何开始学习,今天软妹子专门整理了一份针对大数据初学者的大数据开发学习路线. 下面分十个章节来说明大数据开发要学习的内容: 以上就是一个大数据新手,想要学会大数据开发,需要学习的内容,大数据学习是一个持续的过程,只要用心学,没有学不会的东西哦!我要推荐下我自己建的大数据开发学习群:119599574,专注大数据分析方法,大数据编程,大数据仓库,大数据案例,人工智能,数据挖掘都是纯干货分享都是学大数据开发的,如果你正在学习大数据,欢迎初学和进阶中的小伙伴.

零基础学大数据编程需要哪些基础?

零基础学大数据编程需要哪些基础?程序员薪酬高.工作环境好,是很多同学向往的职业,让很多非计算机专业的同学羡慕不已.非计算机专业难道就不能成为程序员了吗? 一.零基础学大数据编程需要基础: 1.数学基础 从计算机发展和应用的历史来看计算机的数学模型和体系结构等都是有数学家提出的,最早的计算机也是为数值计算而设计的.因此,要学好计算机就要有一定的数学基础,出学者有高中水平就差不多了. 2.逻辑思维能力的培养 学程序设计要有一定的逻辑思维能力,逻思力的培养要长时间的实践锻炼. 要想成为一名优秀的程序员

转型进入IT行业,0基础学习大数据开发需要什么基础?

IT行业发展速度快,市场需求大,而且,程序员薪酬高.福利待遇高,成为很多从业者向往的职业,当然,也刺激了很多非计算机专业的从业者进入该领域.转行进入IT行业在最近的几年一直是个热门,那么对于0基础的求学者,入行大数据开发需要什么基础呢? 在很多人眼中大数据都是一个高端的行业,而且,一联想到IT.数据,很多人就开始纠结,学习大数据开发是否需要数学.英语等基础呢?是不是0基础就无法真正的学懂大数据开发呢? 首先:数学.英语不是限制,逻辑思维是关键 学程序开发,入行IT领域要有一定的逻辑思维能力,而逻

零基础学习C语言如何入门

C语言同C++.Python等都是通用性的编程语言,它们不针对某一个特定的方向,能做的事情很多.C语言主要用于底层开发,Windows.Linux.Unix 等操作系统的内核90%以上都使用C语言开发,开发硬件驱动,让硬件和操作系统连接起来,这样用户才能使用硬件.程序员才能控制硬件. 借用我一个朋友的名言:"现在的程序员,不掌握好几门语言都不好意思跟别人打招呼."就目前的企业的岗位设置来说,只会C语言的话(当然,能达到深究算法.操作系统.数据库.网络协议的C语言工程师除外),基本上是找

0基础学习大数据你需要了解的学习路线和方向

现在大数据这么火,各行各业想转行大数据,那么问题来了,该往哪方面发展,哪方面最适合自己? 首先从字面来了解一下大数据 大数据 (巨量数据集合(IT行业术语)) 大数据(big data),指无法在一定时间范围内用常规软件工具进行捕捉.管理和处理的数据集合,是需要新处理模式才能具有更强的决策力.洞察发现力和流程优化能力的海量.高增长率和多样化的信息资产. 大数据的5V特点(IBM提出):Volume(大量).Velocity(高速).Variety(多样).Value(低价值密度).Veracit