{eval=Array;=+count(Array);}

问答专栏Q & A COLUMN

Spark和Hadoop对于大数据的关系?

娣辩孩娣辩孩 回答0 收藏1
收藏问题

3条回答

Cruise_Chan

Cruise_Chan

回答于2022-06-28 15:02

Hadoop生态



Apache™Hadoop®项目开发了用于可靠,可扩展的分布式计算的开源软件。

Apache Hadoop软件库是一个框架,该框架允许使用简单的编程模型跨计算机集群对大型数据集进行分布式处理。 它旨在从单个服务器扩展到数千台机器,每台机器都提供本地计算和存储。 库本身不是设计用来依靠硬件来提供高可用性,而是设计为在应用程序层检测和处理故障,因此可以在计算机集群的顶部提供高可用性服务,而每台计算机都容易出现故障。

1、hadoop1.0时期架构



2、hadoop2.0时期架构



3、hdfs架构



Active Namenode

主 Master(只有一个),管理 HDFS 的名称空间,管理数据块映射信息;配置副本策略;处理客户端读写请求

Secondary NameNode

NameNode 的热备;定期合并 fsimage 和 fsedits,推送给 NameNode;当 Active NameNode 出现故障时,快速切换为新的 Active NameNode。

Datanode

Slave(有多个);存储实际的数据块;执行数据块读 / 写

Client

与 NameNode 交互,获取文件位置信息;与 DataNode 交互,读取或者写入数据;管理 HDFS、访问 HDFS。

4、MapReduce

源自于 Google 的 MapReduce 论文

发表于 2004 年 12 月

Hadoop MapReduce 是 Google MapReduce 克隆版

MapReduce特点

良好的扩展性

高容错性

适合 PB 级以上海量数据的离线处理

5、yarn架构



6、hadoop1.0与hadoop2.0比较图



7、Hive(基于MR的数据仓库)

由Facebook开源,最初用于海量结构化日志数据统计;ETL(Extraction-Transformation-Loading)工具构建在Hadoop之上的数据仓库;数据计算使用 MapReduce,数据存储使用HDFS

Hive 定义了一种类 SQL 查询语言——HQL

类似SQL,但不完全相同

通常用于进行离线数据处理(采用 MapReduce);可认为是一个 HQL→MR 的语言翻译器

8、Hbase(分布式数据库)

源自 Google 的 Bigtable 论文

发表于 2006 年 11 月

Hbase 是 Google Bigtable 克隆版

Spark


Apache Spark是用于大规模数据处理的统一分析引擎。 它提供Java,Scala,Python和R中的高级API,以及支持常规执行图的优化引擎。 它还支持丰富的高级工具集,包括用于SQL和结构化数据处理的Spark SQL,用于机器学习的MLlib,用于图形处理的GraphX和用于增量计算和流处理的结构化流。

速度

运行工作负载的速度提高了100倍。

Apache Spark使用最新的DAG调度程序,查询优化器和物理执行引擎,为批处理数据和流数据提供了高性能。

使用方便

使用Java,Scala,Python,R和SQL快速编写应用程序。

Spark提供了80多个高级操作员,可轻松构建并行应用程序。 您可以从Scala,Python,R和SQL Shell交互使用它。

通用

结合使用SQL,流和复杂的分析。

Spark为包括SQL和DataFrames,用于机器学习的MLlib,GraphX和Spark Streaming在内的一堆库提供支持。 您可以在同一应用程序中无缝组合这些库。

无处不在

Spark可在Hadoop,Apache Mesos,Kubernetes,独立或云中运行。 它可以访问各种数据源。

您可以在EC2,Hadoop YARN,Mesos或Kubernetes上使用其独立集群模式运行Spark。 访问HDFS,Alluxio,Apache Cassandra,Apache HBase,Apache Hive和数百种其他数据源中的数据。

评论0 赞同0
  •  加载中...
yagami

yagami

回答于2022-06-28 15:02

1)hadoop简介

Hadoop是一个由Apache基金会所开发的分布式系统基础架构。 Hadoop实现了一个分布式文件系统HDFS。HDFS有高容错性的特点,并且设计用来部署在低廉的硬件上;而且它提供高吞吐量来访问应用程序的数据,适合那些有着超大数据集的应用程序。Hadoop的框架最核心的设计就是:HDFS和MapReduce。HDFS为海量的数据提供了存储,而MapReduce则为海量的数据提供了计算

2)hadoop优点

Hadoop 以一种可靠、高效、可伸缩的方式进行数据处理。

可靠性: Hadoop将数据存储在多个备份,Hadoop提供高吞吐量来访问应用程序的数据。

高扩展性: Hadoop是在可用的计算机集簇间分配数据并完成计算任务的,这些集簇可以方便地扩展到数以千计的节点中。

高效性: Hadoop以并行的方式工作,通过并行处理加快处理速度。

高容错性: Hadoop能够自动保存数据的多个副本,并且能够自动将失败的任务重新分配。

低成本: Hadoop能够部署在低廉的(low-cost)硬件上。

1)spark简介

Spark 是专为大规模数据处理而设计的快速通用的计算引擎。Spark拥有Hadoop MapReduce所具有的优点,Spark在Job中间输出结果可以保存在内存中,从而不再需要读写HDFS,因此Spark性能以及运算速度高于MapReduce。

2)spark优点

计算速度快: 因为spark从磁盘中读取数据,把中间数据放到内存中,,完成所有必须的分析处理,将结果写回集群,所以spark更快。

Spark 提供了大量的库: 包括Spark Core、Spark SQL、Spark Streaming、MLlib、GraphX。

支持多种资源管理器: Spark 支持 Hadoop YARN,及其自带的独立集群管理器

操作简单: 高级 API 剥离了对集群本身的关注,Spark 应用开发者可以专注于应用所要做的计算本身

1)应用场景不同

Hadoop和Spark两者都是大数据框架,但是各自应用场景是不同的。Hadoop是一个分布式数据存储架构,它将巨大的数据集分派到一个由普通计算机组成的集群中的多个节点进行存储,降低了硬件的成本。Spark是那么一个专门用来对那些分布式存储的大数据进行处理的工具,它要借助hdfs的数据存储。

2)处理速度不同

hadoop的MapReduce是分步对数据进行处理的,从磁盘中读取数据,进行一次处理,将结果写到磁盘,然后在从磁盘中读取更新后的数据,再次进行的处理,最后再将结果存入磁盘,这存取磁盘的过程会影响处理速度。spark从磁盘中读取数据,把中间数据放到内存中,,完成所有必须的分析处理,将结果写回集群,所以spark更快。

3)容错性不同

Hadoop将每次处理后的数据都写入到磁盘上,基本谈不上断电或者出错数据丢失的情况。Spark的数据对象存储在弹性分布式数据集 RDD,RDD是分布在一组节点中的只读对象集合,如果数据集一部分丢失,则可以根据于数据衍生过程对它们进行重建。而且RDD 计算时可以通过 CheckPoint 来实现容错。

Hadoop提供分布式数据存储功能HDFS,还提供了用于数据处理的MapReduce。 MapReduce是可以不依靠spark数据的处理的。当然spark也可以不依靠HDFS进行运作,它可以依靠其它的分布式文件系统。但是两者完全可以结合在一起,hadoop提供分布式 集群和分布式 文件系统,spark可以依附在hadoop的HDFS代替MapReduce弥补MapReduce计算能力不足的问题。

总结一句话:spark在hadoop肩膀上可以让大数据跑的更快

评论0 赞同0
  •  加载中...
IntMain

IntMain

回答于2022-06-28 15:02

早期Hadoop指的hdfs+mapreduce,后来衍生为整个大数据生态。

大数据生态从底层往上是分布式文件存储,分布式数据库,分布式计算(实时+离线),检索,资源管理,任务调度,以及周边工具。

从上可以看出,spark只是Hadoop生态中的一个小分支。

评论0 赞同0
  •  加载中...

最新活动

您已邀请0人回答 查看邀请

我的邀请列表

  • 擅长该话题
  • 回答过该话题
  • 我关注的人
向帮助了您的网友说句感谢的话吧!
付费偷看金额在0.1-10元之间
<