⑴ Hadoop,MapRece,YARN和Spark的区别与联系
(1) Hadoop 1.0
第一代Hadoop,由分布式存储系统HDFS和分布式计算框架MapRece组成,其中,HDFS由一个NameNode和多个DataNode组成,MapRece由一个JobTracker和多个TaskTracker组成,对应Hadoop版本为Hadoop 1.x和0.21.X,0.22.x。
(2) Hadoop 2.0
第二代Hadoop,为克服Hadoop 1.0中HDFS和MapRece存在的各种问题而提出的。针对Hadoop 1.0中的单NameNode制约HDFS的扩展性问题,提出了HDFS Federation,它让多个NameNode分管不同的目录进而实现访问隔离和横向扩展;针对Hadoop 1.0中的MapRece在扩展性和多框架支持方面的不足,提出了全新的资源管理框架YARN(Yet Another Resource Negotiator),它将JobTracker中的资源管理和作业控制功能分开,分别由组件ResourceManager和ApplicationMaster实现,其中,ResourceManager负责所有应用程序的资源分配,而ApplicationMaster仅负责管理一个应用程序。对应Hadoop版本为Hadoop 0.23.x和2.x。
(3) MapRece 1.0或者MRv1(MapReceversion 1)
第一代MapRece计算框架,它由两部分组成:编程模型(programming model)和运行时环境(runtime environment)。它的基本编程模型是将问题抽象成Map和Rece两个阶段,其中Map阶段将输入数据解析成key/value,迭代调用map()函数处理后,再以key/value的形式输出到本地目录,而Rece阶段则将key相同的value进行规约处理,并将最终结果写到HDFS上。它的运行时环境由两类服务组成:JobTracker和TaskTracker,其中,JobTracker负责资源管理和所有作业的控制,而TaskTracker负责接收来自JobTracker的命令并执行它。
(4)MapRece 2.0或者MRv2(MapRece version 2)或者NextGen MapRec
MapRece 2.0或者MRv2具有与MRv1相同的编程模型,唯一不同的是运行时环境。MRv2是在MRv1基础上经加工之后,运行于资源管理框架YARN之上的MRv1,它不再由JobTracker和TaskTracker组成,而是变为一个作业控制进程ApplicationMaster,且ApplicationMaster仅负责一个作业的管理,至于资源的管理,则由YARN完成。
简而言之,MRv1是一个独立的离线计算框架,而MRv2则是运行于YARN之上的MRv1。
(5)Hadoop-MapRece(一个离线计算框架)
Hadoop是google分布式计算框架MapRece与分布式存储系统GFS的开源实现,由分布式计算框架MapRece和分布式存储系统HDFS(Hadoop Distributed File System)组成,具有高容错性,高扩展性和编程接口简单等特点,现已被大部分互联网公司采用。
(6)Hadoop-YARN(Hadoop 2.0的一个分支,实际上是一个资源管理系统)
YARN是Hadoop的一个子项目(与MapRece并列),它实际上是一个资源统一管理系统,可以在上面运行各种计算框架(包括MapRece、Spark、Storm、MPI等)。当前Hadoop版本比较混乱,让很多用户不知所措。实际上,当前Hadoop只有两个版本:Hadoop 1.0和Hadoop 2.0,其中,Hadoop 1.0由一个分布式文件系统HDFS和一个离线计算框架MapRece组成,而Hadoop 2.0则包含一个支持NameNode横向扩展的HDFS,一个资源管理系统YARN和一个运行在YARN上的离线计算框架MapRece。相比于Hadoop 1.0,Hadoop 2.0功能更加强大,且具有更好的扩展性、性能,并支持多种计算框架。Borg/YARN/Mesos/Torca/Corona一类系统可以为公司构建一个内部的生态系统,所有应用程序和服务可以“和平而友好”地运行在该生态系统上。有了这类系统之后,你不必忧愁使用Hadoop的哪个版本,是Hadoop 0.20.2还是 Hadoop 1.0,你也不必为选择何种计算模型而苦恼,因此各种软件版本,各种计算模型可以一起运行在一台“超级计算机”上了。
从开源角度看,YARN的提出,从一定程度上弱化了多计算框架的优劣之争。YARN是在Hadoop MapRece基础上演化而来的,在MapRece时代,很多人批评MapRece不适合迭代计算和流失计算,于是出现了Spark和Storm等计算框架,而这些系统的开发者则在自己的网站上或者论文里与MapRece对比,鼓吹自己的系统多么先进高效,而出现了YARN之后,则形势变得明朗:MapRece只是运行在YARN之上的一类应用程序抽象,Spark和Storm本质上也是,他们只是针对不同类型的应用开发的,没有优劣之别,各有所长,合并共处,而且,今后所有计算框架的开发,不出意外的话,也应是在YARN之上。这样,一个以YARN为底层资源管理平台,多种计算框架运行于其上的生态系统诞生了。目前spark是一个非常流行的内存计算(或者迭代式计算,DAG计算)框架,在MapRece因效率低下而被广为诟病的今天,spark的出现不禁让大家眼前一亮。
从架构和应用角度上看,spark是一个仅包含计算逻辑的开发库(尽管它提供个独立运行的master/slave服务,但考虑到稳定后以及与其他类型作业的继承性,通常不会被采用),而不包含任何资源管理和调度相关的实现,这使得spark可以灵活运行在目前比较主流的资源管理系统上,典型的代表是mesos和yarn,我们称之为“spark on mesos”和“spark on yarn”。将spark运行在资源管理系统上将带来非常多的收益,包括:与其他计算框架共享集群资源;资源按需分配,进而提高集群资源利用率等。
FrameWork On YARN
运行在YARN上的框架,包括MapRece-On-YARN, Spark-On-YARN, Storm-On-YARN和Tez-On-YARN。
(1)MapRece-On-YARN:YARN上的离线计算;
(2)Spark-On-YARN:YARN上的内存计算;
(3)Storm-On-YARN:YARN上的实时/流式计算;
(4)Tez-On-YARN:YARN上的DAG计算
⑵ 2分钟读懂大数据框架Hadoop和Spark的异同
1、 Spark VSHadoop哪些异同点
Hadoop:布式批处理计算强调批处理用于数据挖掘、析
Spark:基于内存计算源集群计算系统目让数据析更加快速, Spark 种与 Hadoop 相似源集群计算环境两者间存些同处些用同处使 Spark 某些工作负载面表现更加优越换句说Spark 启用内存布数据集除能够提供交互式查询外优化迭代工作负载
Spark Scala 语言实现 Scala 用作其应用程序框架与 Hadoop 同Spark Scala 能够紧密集其 Scala 像操作本集合象轻松操作布式数据集
尽管创建 Spark 支持布式数据集迭代作业实际 Hadoop 补充 Hadoop 文件系统并行运行通名Mesos第三集群框架支持行Spark 由加州伯克利校 AMP 实验室 (Algorithms,Machines,and People Lab) 发用构建型、低延迟数据析应用程序
虽 Spark 与 Hadoop 相似处提供具用差异新集群计算框架首先Spark 集群计算特定类型工作负载设计即些并行操作间重用工作数据集(比机器习算)工作负载优化些类型工作负载Spark 引进内存集群计算概念内存集群计算数据集缓存内存缩短访问延迟.
数据处理面相信家hadoop已经耳熟能详基于GoogleMap/Rece实现Hadoop发者提供map、rece原语使并行批处理程序变非简单优美Spark提供数据集操作类型种像Hadoop提供MapRece两种操作比map,filter, flatMap,sample, groupByKey, receByKey, union,join, cogroup,mapValues, sort,partionBy等种操作类型些操作称Transformations同提供Count,collect, rece, lookup, save等种actions些种数据集操作类型给层应用者提供便各处理节点间通信模型再像Hadoop唯Data Shuffle种模式用户命名物化控制间结区等说编程模型比Hadoop更灵.
2、Spark容错性面否比其工具更优越性
Spark论文《Resilient Distributed Datasets: AFault-TolerantAbstraction for In-Memory Cluster Computing》没看容错性做倒提布式数据集计算做checkpoint两种式checkpoint dataloggingthe updates貌似Spark采用者文提虽者看似节省存储空间由于数据处理模型类似DAG操作程由于图某节点错由于lineage chains依赖复杂性能引起全部计算节点重新计算本低说存数据存更新志做checkpoint由用户说算吧相于都没说皮球踢给用户所我看由用户根据业务类型衡量存储数据IO磁盘空间代价重新计算代价选择代价较种策略取代给间结进行持久化或建立检查点Spark记住产某些数据集操作序列节点现故障Spark根据存储信息重新构造数据集认错其节点帮助重建
3、Spark于数据处理能力效率哪些特色
Spark提供高性能数据处理能力使用户快速反馈体验更另类应用做数据挖掘Spark充利用内存进行缓存利用DAG消除必要步骤所比较合适做迭代式运算相部机器习算通迭代收敛算所适合用Spark实现我些用算并行化用Spark实现R语言便调用降低用户进行数据挖掘习本
Spark配流数据处理模型与Twitter Storm框架相比Spark采用种趣且独特办Storm基本像放入独立事务管道其事务布式处理相反Spark采用模型收集事务短间内(我假设5秒)批处理式处理事件所收集数据自RDD使用Spark应用程序用组进行处理作者声称种模式缓慢节点故障情况更加稳健且5秒间间隔通于数应用已经足够快种统流式处理与非流式处理部
总结
几看Hadoop权威指南、hbase权威指南、hive权威指南、规模布式存储系统、zoopkeeper、数据互联网规模数据挖掘与布式处理等书同补充能静完整看完本书相错
⑶ 为什么Spark Streaming越来越流行
Spark Streaming不仅能够非常好地解决数据流分析问题,同时它还统一了技术框架,使用了与Spark一致的编程模型和处理引擎。而在Spark Streaming出现之前,用户需要借助多种开源软件才能构建出具有流处理、批处理和机器学习能力的系统。
⑷ Spark与Hadoop MapRece大比拼,谁实力更强
一提到大数据处理,相信很多人第一时间想到的是 Hadoop MapRece。没错,Hadoop MapRece 为大数据处理技术奠定了基础。近年来,随着 Spark 的发展,越来越多的声音提到了 Spark。而Spark相比Hadoop MapRece有哪些优势?
Spark与Hadoop MapRece在业界有两种说法 :一是 Spark 将代替 Hadoop MapRece,成为未来大数据处理发展的方向 ;二是 Spark 将会和 Hadoop 结合,形成更大的生态圈。其实 Spark 和 Hadoop MapRece 的重点应用场合有所不同。相对于 Hadoop MapRece 来说,Spark 有点“青出于蓝”的感觉,Spark 是在Hadoop MapRece 模型上发展起来的,在它的身上我们能明显看到 MapRece的影子,所有的 Spark 并非从头创新,而是站在了巨人“MapRece”的肩膀上。千秋功罪,留于日后评说,我们暂且搁下争议,来看看相比 Hadoop MapRece,Spark 都有哪些优势。
1、计算速度快
大数据处理首先追求的是速度。Spark 到底有多快?用官方的话说,“Spark 允许 Hadoop 集群中的应用程序在内存中以 100 倍的速度运行,即使在磁盘上运行也能快 10 倍”。可能有的读者看到这里会大为感叹,的确如此,在有迭代计算的领域,Spark 的计算速度远远超过 MapRece,并且迭代次数越多,Spark 的优势越明显。这是因为 Spark 很好地利用了目前服务器内存越来越大这一优点,通过减少磁盘 I/O 来达到性能提升。它们将中间处理数据全部放到了内存中,仅在必要时才批量存入硬盘中。或许读者会问 :如果应用程序特别大,内存能放下多少 GB ?答曰 :什么? GB ?目前 IBM 服务器内存已经扩展至几 TB 了。
2、应用灵活,上手容易
知道 AMPLab 的 Lester 为什么放弃 MapRece 吗?因为他需要把很多精力放到Map和Rece的编程模型上,极为不便。 Spark在简单的Map及Rece操作之外,还支持 SQL 查询、流式查询及复杂查询,比如开箱即用的机器学习算法。同时,用户可以在同一个工作流中无缝地搭配这些能力,应用十分灵活。
Spark 核心部分的代码为 63 个 Scala 文件,非常的轻量级。并且允许 Java、Scala、Python 开发者在自己熟悉的语言环境下进行工作,通过建立在Java、Scala、Python、SQL(应对交互式查询)的标准 API 以方便各行各业使用,同时还包括大量开箱即用的机器学习库。它自带 80 多个高等级操作符,允许在 Shell中进行交互式查询。即使是新手,也能轻松上手应用。
3、兼容竞争对手
Spark 可以独立运行,除了可以运行在当下的 YARN 集群管理外,还可以读取已有的任何 Hadoop 数据。它可以运行在任何 Hadoop 数据源上,比如 HBase、HDFS 等。有了这个特性,让那些想从 Hadoop 应用迁移到 Spark 上的用户方便了很多。Spark 有兼容竞争对手的胸襟,何愁大事不成?
4、实时处理性能非凡
MapRece 更 加 适 合 处 理 离 线 数 据( 当 然, 在 YARN 之 后,Hadoop也可以借助其他工具进行流式计算)。Spark 很好地支持实时的流计算,依赖Spark Streaming 对数据进行实时处理。Spark Streaming 具备功能强大的 API,允许用户快速开发流应用程序。而且不像其他的流解决方案,比如Storm,Spark Streaming 无须额外的代码和配置,就可以做大量的恢复和交付工作。
5、社区贡献力量巨大
从 Spark 的版本演化来看,足以说明这个平台旺盛的生命力及社区的活跃度。尤其自 2013 年以来,Spark 一度进入高速发展期,代码库提交与社区活跃度都有显着增长。以活跃度论,Spark 在所有的 Apache 基金会开源项目中位列前三,相较于其他大数据平台或框架而言,Spark 的代码库最为活跃。
Spark 非常重视社区活动,组织也极为规范,会定期或不定期地举行与 Spark相关的会议。会议分为两种 :一种是 Spark Summit,影响力极大,可谓全球 Spark顶尖技术人员的峰会,目前已于 2013—2015 年在 San Francisco 连续召开了三届Summit 大会 ;另一种是 Spark 社区不定期地在全球各地召开的小型 Meetup 活动。Spark Meetup 也会在我国的一些大城市定期召开,比如北京、深圳、西安等地,读者可以关注当地的微信公众号进行参与。
Spark 的适用场景
从大数据处理需求来看,大数据的业务大概可以分为以下三类 :
(1)复杂的批量数据处理,通常的时间跨度在数十分钟到数小时之间。
(2)基于历史数据的交互式查询,通常的时间跨度在数十秒到数分钟之间。
(3)基于实时数据流的数据处理,通常的时间跨度在数百毫秒到数秒之间。
目前已有很多相对成熟的开源和商业软件来处理以上三种情景 :第一种业务,可以利用 MapRece 来进行批量数据处理 ;第二种业务,可以用 Impala 来进行交互式查询 ;对于第三种流式数据处理,可以想到专业的流数据处理工具Storm。但是这里有一个很重要的问题 :对于大多数互联网公司来说,一般会同时遇到以上三种情景,如果采用不同的处理技术来面对这三种情景,那么这三种情景的输入/ 输出数据无法无缝共享,它们之间可能需要进行格式转换,并且每个开源软件都需要一支开发和维护团队,从而提高了成本。另外一个不便之处就是,在同一个集群中对各个系统协调资源分配比较困难。
那么,有没有一种软件可以同时处理以上三种情景呢? Spark 就可以,或者说有这样的潜力。Spark 同时支持复杂的批处理、互操作和流计算,而且兼容支持HDFS 和 Amazon S3 等分布式文件系统,可以部署在 YARN 和 Mesos 等流行的集群资源管理器上。
从 Spark 的设计理念(基于内存的迭代计算框架)出发,其最适合有迭代运算的或者需要多次操作特定数据集的应用场合。并且迭代次数越多,读取的数据量越大,Spark 的应用效果就越明显。因此,对于机器学习之类的“迭代式”应用,Spark 可谓拿手好戏,要比 Hadoop MapRece 快数十倍。另外,Spark Streaming因为内存存储中间数据的特性,处理速度非常快,也可以应用于需要实时处理大数据的场合。
当然,Spark 也有不适用的场合。对于那种异步细粒度更新状态的应用,例如 Web 服务的存储或增量的 Web 爬虫和索引,也就是对于那种增量修改的应用模型不适合。Spark 也不适合做超级大的数据量的处理,这里所说的“超级大”是相对于这个集群的内存容量而言的,因为 Spark 要将数据存储在内存中。一般来说,10TB 以上(单次分析)的数据就可以算是“超级大”的数据了。
一般来说,对于中小企业的数据中心而言,在单次计算的数据量不大的情况下,Spark 都是很好的选择。另外,Spark 也不适合应用于混合的云计算平台,因为混合的云计算平台的网络传输是很大的问题,即便有专属的宽带在云端 Cluster和本地 Cluster 之间传输数据,相比内存读取速度来说,依然不抵。
⑸ spark编程语言
如果条件许可,公司提供Spark集群机器,在Spark集群机器上进行开发和学习是最好的; 如果条件不允许,在亚马逊云计算平台上构建Spark集群环境也是一种非常理想的选择; 如果纯粹是学习使用,安装单机版的Spark也是可以的
⑹ 大数据培训一般都将些什么内容
参加大数据培训都学习些什么,随着互联网在近几年的飞速发展,大数据页被越来越多的人所熟知,不管是行内的人还是行外的人都纷纷加入这个行业!于是许多的培训机构也纷纷崛起,开设相关的培训课程!作为一个未来的十分有前景的行业。成为大数据工程师无疑是迎接一个很有前景的职业生涯,那么大数据工程师,要学习什么内容呢。
大数据培训的内容:
不同的培训机构来说,根据注重的点不同大数据课程内容也有所差异,培训周期也都不大相同。课程内容除开第一阶段学习Java语言基础之外,还要学习HTML、CSS、Java、JavaWeb和数据库、Linux基础、Hadoop生态体系、Spark生态体系等课程内容。
二、基础内容学习
对于初学大数据的同学来说尤其是零基础的,感觉大数据比较复杂比较难,很难记住。但是对于大数据学习者而言,对于学员的逻辑思维能力要求较高。
三、项目实战训练
参加大数据培训学习还有一项内容是必须要注意的,那就是课程内容安排上必须要有大数据开发相关的项目,项目练习是学习的核心,在这个过程中可以让我们更加了解项目制作流程,积累一定的经验,在后边的工作面授中也能应答自如。
⑺ 科普Spark,Spark是什么,如何使用Spark
科普Spark,Spark是什么,如何使用Spark
1.Spark基于什么算法的分布式计算(很简单)
2.Spark与MapRece不同在什么地方
3.Spark为什么比Hadoop灵活
4.Spark局限是什么
5.什么情况下适合使用Spark
Spark与Hadoop的对比
Spark的中间数据放到内存中,对于迭代运算效率更高。
Spark更适合于迭代运算比较多的ML和DM运算。因为在Spark里面,有RDD的抽象概念。
Spark比Hadoop更通用
Spark提供的数据集操作类型有很多种,不像Hadoop只提供了Map和Rece两种操作。比如map, filter, flatMap, sample, groupByKey, receByKey, union, join, cogroup, mapValues, sort,partionBy等多种操作类型,Spark把这些操作称为Transformations。同时还提供Count, collect, rece, lookup, save等多种actions操作。
这些多种多样的数据集操作类型,给给开发上层应用的用户提供了方便。各个处理节点之间的通信模型不再像Hadoop那样就是唯一的Data Shuffle一种模式。用户可以命名,物化,控制中间结果的存储、分区等。可以说编程模型比Hadoop更灵活。
不过由于RDD的特性,Spark不适用那种异步细粒度更新状态的应用,例如web服务的存储或者是增量的web爬虫和索引。就是对于那种增量修改的应用模型不适合。
容错性
在分布式数据集计算时通过checkpoint来实现容错,而checkpoint有两种方式,一个是checkpoint data,一个是logging the updates。用户可以控制采用哪种方式来实现容错。
可用性
Spark通过提供丰富的Scala, Java,Python API及交互式Shell来提高可用性。
Spark与Hadoop的结合
Spark可以直接对HDFS进行数据的读写,同样支持Spark on YARN。Spark可以与MapRece运行于同集群中,共享存储资源与计算,数据仓库Shark实现上借用Hive,几乎与Hive完全兼容。
Spark的适用场景
Spark是基于内存的迭代计算框架,适用于需要多次操作特定数据集的应用场合。需要反复操作的次数越多,所需读取的数据量越大,受益越大,数据量小但是计算密集度较大的场合,受益就相对较小(大数据库架构中这是是否考虑使用Spark的重要因素)
由于RDD的特性,Spark不适用那种异步细粒度更新状态的应用,例如web服务的存储或者是增量的web爬虫和索引。就是对于那种增量修改的应用模型不适合。总的来说Spark的适用面比较广泛且比较通用。
运行模式
本地模式
Standalone模式
Mesoes模式
yarn模式
Spark生态系统
Shark ( Hive on Spark): Shark基本上就是在Spark的框架基础上提供和Hive一样的H iveQL命令接口,为了最大程度的保持和Hive的兼容性,Shark使用了Hive的API来实现query Parsing和 Logic Plan generation,最后的PhysicalPlan execution阶段用Spark代替Hadoop MapRece。通过配置Shark参数,Shark可以自动在内存中缓存特定的RDD,实现数据重用,进而加快特定数据集的检索。同时,Shark通过UDF用户自定义函数实现特定的数据分析学习算法,使得SQL数据查询和运算分析能结合在一起,最大化RDD的重复使用。
Spark streaming: 构建在Spark上处理Stream数据的框架,基本的原理是将Stream数据分成小的时间片断(几秒),以类似batch批量处理的方式来处理这小部分数据。Spark Streaming构建在Spark上,一方面是因为Spark的低延迟执行引擎(100ms+)可以用于实时计算,另一方面相比基于Record的其它处理框架(如Storm),RDD数据集更容易做高效的容错处理。此外小批量处理的方式使得它可以同时兼容批量和实时数据处理的逻辑和算法。方便了一些需要历史数据和实时数据联合分析的特定应用场合。
Bagel: Pregel on Spark,可以用Spark进行图计算,这是个非常有用的小项目。Bagel自带了一个例子,实现了Google的PageRank算法。
End.
⑻ Spark中ml和mllib的区别
Mahout是hadoop的一个机器学习库,主要的编程模型是MapRece;Spark ML则是基于Spark的机器学习,Spark自身拥有MLlib作为机器学习库。现在Mahout已经停止接受新的MapRece算法了,向Spark迁移。