`

spark (1)初学者对于spark的几个疑问

阅读更多

 

(1)初学者对于spark的几个疑问 http://aperise.iteye.com/blog/2302481
(2)spark开发环境搭建 http://aperise.iteye.com/blog/2302535
(3)Spark Standalone集群安装介绍 http://aperise.iteye.com/blog/2305905
(4)spark-shell 读写hdfs 读写redis 读写hbase http://aperise.iteye.com/blog/2324253

 

初学者对于spark的几个疑问

  • Hadoop是啥?spark是啥?
  • spark能完全取代Hadoop吗?
  • Hadoop和Spark属于哪种计算计算模型(实时计算、离线计算)?
  • 学习Hadoop和spark,哪门语言好?
  • 哪里能找到比较全的学习资料?

1 Hadoop是啥?spark是啥?

        (1)先来了解下Hadoop历史渊源。

        Doug Cutting是Apache Lucene创始人, Apache Nutch项目开始于2002年,Apache Nutch是Apache Lucene项目的一部分。2005年Nutch所有主要算法均完成移植,用MapReduce和NDFS来运行。2006年2月,Nutch将MapReduce和NDFS移出Nutch形成Lucene一个子项目,命名Hadoop。

        Hadoop不是缩写,而是虚构名。项目创建者Doug Cutting解释Hadoop的得名:“这个名字是我孩子给一个棕黄色的大象玩具命名的。我的命名标准就是简短,容易发音和拼写,没有太多的意义,并且不会被用于别处。小孩子恰恰是这方面的高手。”

 

        (2)狭义的Hadoop

        个人认为,狭义的Hadoop指Apache下Hadoop子项目,该项目由以下模块组成:

  • Hadoop Common: 一系列组件和接口,用于分布式文件系统和通用I/O
  • Hadoop Distributed File System (HDFS?): 分布式文件系统
  • Hadoop YARN: 一个任务调调和资源管理框架
  • Hadoop MapReduce: 分布式数据处理编程模型,用于大规模数据集并行运算

        狭义的Hadoop主要解决三个问题,提供HDFS解决分布式存储问题,提供YARN解决任务调度和资源管理问题,提供一种编程模型,让开发者可以进来编写代码做离线大数据处理。

 

        (3)广义的Hadoop

        个人认为,广义的Hadoop指整个Hadoop生态圈,生态圈中包含各个子项目,每个子项目为了解决某种场合问题而生,主要组成如下图:


 

  • Apache Hadoop: 是Apache开源组织的一个分布式计算开源框架,提供了一个分布式文件系统子项目(HDFS)和支持MapReduce分布式计算的软件架构。
  • Apache Hive: 是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表,通过类SQL语句快速实现简单的MapReduce统计,不必开发专门的MapReduce应用,十分适合数据仓库的统计分析。
  • Apache Pig: 是一个基于Hadoop的大规模数据分析工具,它提供的SQL-LIKE语言叫Pig Latin,该语言的编译器会把类SQL的数据分析请求转换为一系列经过优化处理的MapReduce运算。
  • Apache HBase: 是一个高可靠性、高性能、面向列、可伸缩的分布式存储系统,利用HBase技术可在廉价PC Server上搭建起大规模结构化存储集群。
  • Apache Sqoop: 是一个用来将Hadoop和关系型数据库中的数据相互转移的工具,可以将一个关系型数据库(MySQL ,Oracle ,Postgres等)中的数据导进到Hadoop的HDFS中,也可以将HDFS的数据导进到关系型数据库中。
  • Apache Zookeeper: 是一个为分布式应用所设计的分布的、开源的协调服务,它主要是用来解决分布式应用中经常遇到的一些数据管理问题,简化分布式应用协调及其管理的难度,提供高性能的分布式服务
  • Apache Mahout:是基于Hadoop的机器学习和数据挖掘的一个分布式框架。Mahout用MapReduce实现了部分数据挖掘算法,解决了并行挖掘的问题。
  • Apache Cassandra:是一套开源分布式NoSQL数据库系统。它最初由Facebook开发,用于储存简单格式数据,集Google BigTable的数据模型与Amazon Dynamo的完全分布式的架构于一身
  • Apache Avro: 是一个数据序列化系统,设计用于支持数据密集型,大批量数据交换的应用。Avro是新的数据序列化格式与传输工具,将逐步取代Hadoop原有的IPC机制
  • Apache Ambari: 是一种基于Web的工具,支持Hadoop集群的供应、管理和监控。
  • Apache Chukwa: 是一个开源的用于监控大型分布式系统的数据收集系统,它可以将各种各样类型的数据收集成适合 Hadoop 处理的文件保存在 HDFS 中供 Hadoop 进行各种 MapReduce 操作。
  • Apache Hama: 是一个基于HDFS的BSP(Bulk Synchronous Parallel)并行计算框架, Hama可用于包括图、矩阵和网络算法在内的大规模、大数据计算。
  • Apache Flume: 是一个分布的、可靠的、高可用的海量日志聚合的系统,可用于日志数据收集,日志数据处理,日志数据传输。
  • Apache Giraph: 是一个可伸缩的分布式迭代图处理系统, 基于Hadoop平台,灵感来自 BSP (bulk synchronous parallel) 和 Google 的 Pregel。
  • Apache Oozie: 是一个工作流引擎服务器, 用于管理和协调运行在Hadoop平台上(HDFS、Pig和MapReduce)的任务。
  • Apache Crunch: 是基于Google的FlumeJava库编写的Java库,用于创建MapReduce程序。与Hive,Pig类似,Crunch提供了用于实现如连接数据、执行聚合和排序记录等常见任务的模式库
  • Apache Whirr: 是一套运行于云服务的类库(包括Hadoop),可提供高度的互补性。Whirr学支持Amazon EC2和Rackspace的服务。
  • Apache Bigtop: 是一个对Hadoop及其周边生态进行打包,分发和测试的工具。
  • Apache HCatalog: 是基于Hadoop的数据表和存储管理,实现中央的元数据和模式管理,跨越Hadoop和RDBMS,利用Pig和Hive提供关系视图。
  • Cloudera Hue: 是一个基于WEB的监控和管理系统,实现对HDFS,MapReduce/YARN, HBase, Hive, Pig的web化操作和管理。

        从广义的角度来讲,spark是Hadoop生态圈中的一个子项目

 

        (4)spark历史渊源

百度百科 写道
    Spark是UC Berkeley AMP lab所开源的类Hadoop MapReduce的通用并行框架,Spark,拥有Hadoop MapReduce所具有的优点;但不同于MapReduce的是Job中间输出结果可以保存在内存中,从而不再需要读写HDFS,因此Spark能更好地适用于数据挖掘与机器学习等需要迭代的MapReduce的算法。
    Spark 是一种与 Hadoop 相似的开源集群计算环境,但是两者之间还存在一些不同之处,这些有用的不同之处使 Spark 在某些工作负载方面表现得更加优越,换句话说, Spark 启用了内存分布数据集,除了能够提供交互式查询外,它还可以优化迭代工作负载。
    Spark 是在 Scala 语言中实现的,它将 Scala 用作其应用程序框架。与 Hadoop 不同,Spark 和 Scala 能够紧密集成,其中的 Scala 可以像操作本地集合对象一样轻松地操作分布式数据集。
    尽管创建 Spark 是为了支持分布式数据集上的迭代作业,但是实际上它是对 Hadoop 的补充,可以在 Hadoop 文件系统中并行运行。通过名为 Mesos 的第三方集群框架可以支持此行为。Spark 由加州大学伯克利分校 AMP 实验室 (Algorithms, Machines, and People Lab) 开发,可用来构建大型的、低延迟的数据分析应用程序。

 

        (5)spark目前项目组成

  • Spark Streaming:实时流式数据处理,与之类似的有storm
  • Spark SQL, DataFrames and Datasets:SQL化处理一切数据,与之类似的有hive
  • Machine Learning Library:机器学习
  • GraphX:图形可视化
  • Bagel on Spark:谷歌公司Bagel图形处理技术,如何运行于spark
  • R on Spark:R语言在spark上运用

 

2 spark能完全取代Hadoop吗?

        个人认为,spark目前不能完全取代Hadoop,理由如下:Haoop中的分布式文件存储是spark没有的,目前能站得住脚的就只有这点了

        

        spark的出现是有原因的,这个得从Hadoop的编程模型mapreduce说起,mapreduce中间结果首先存储到磁盘文件,大量的IO读写会影响整个计算的耗时,而spark中间结果首先是基于内存存储,免去IO带来的性能开销

        mapreduce有这个弱点,为啥不也用内存呢?个人认为,既然都是Apache项目,spark已经解决了这个问题,那么很可能是Apache放弃了在mapreduce方面的优化,也是顺应大势所趋,没必要在mapreduce浪费时间和经历,当然这也是个人片面之词。

 

3.Hadoop和Spark属于哪种计算计算模型(实时计算、离线计算)?

        这个首先要看你说的是哪个明确的子项目了,个人观点:

  • Hadoop生态圈中子项目Apache Hadoop中的mapreduce是属于离线计算技术;
  • Hadoop生态圈中子项目Apache hive本质是mapreduce,也属于离线计算技术;
  • Hadoop生态圈中子项目Apache storm属于实时计算技术;
  • Hadoop生态圈中子项目Apache spark中spark-shell属于离线计算技术,只不过它基于内存存储中间结果,速度上比mapreduce快很多倍,又离实时计算技术很近;
  • Hadoop生态圈中子项目Apache spark中spark streaming属于实时计算技术,类似于storm;
  • Hadoop生态圈中子项目Apache spark中sparkSQL属于离线计算技术,只不过它基于内存存储中间结果,速度上比hive快很多倍。

4 学习Hadoop和spark,哪门语言好?

        这个问题先要看下我们用到的技术首先是用啥写的,目前,spark和kafka这两个是用基于JVM上的语言Scala实现的,而Hadoop、hbase、hive这些是用基于JVM上的语言java实现的。

        所以个人认为,学习这些技术,如果要深入源代码研究和查找问题,建议首选java和Scala,最好做到精通。

        那么其他语言开发者咋办,也不是不能从事大数据开发了,因为目前大数据技术方面考虑到了其他语言开发者的感受,提供多种语言支持的,这里首先推荐去学习解释型语言Python,推荐这个的另一好处是,Python使用matlib不用考虑版权问题了但用这些非JVM语言一个缺点是,当出现了问题的时候,你拿到的一堆JVM错误信息,你可咋办???

 

5.哪里能找到比较全的学习资料?

        就个人目前学习大数据经验来说,最全的资料还是官网了

        很多微博和视频都有介绍,包括我现在在写的微博,总体来说都比较片面,你被强迫的接受就是要这么去操作,例如Hadoop很多地方部署都写的是Hadoop1.x版本里面的namenode+secondarynamenode部署方式,很少人告诉你这是是部署方式之一,还有Hadoop2.x里面的HA部署方式;spark部署方式很多地方介绍的是单master方式,很少有地方告诉你还有基于zookeeper上的多master部署方式,而这些没有告诉你的方式在某些视频中被标榜为独门秘籍,那些老师得意洋洋的说:“来吧,交点钱,来听我的课,在我的课程里我会告诉你怎么部署spark多master方式

  • 大小: 105.4 KB
分享到:
评论

相关推荐

    spark-branch-2.3.zip

    在Spark 2.3中,主要包含以下几个关键组件: 1. Spark Core:这是Spark的基础模块,负责任务调度、内存管理、故障恢复、与存储系统交互等功能。Spark Core提供了一种通用的计算模型,使得其他模块如Spark SQL、...

    Spark_SQL大数据实例开发教程.pdf by Spark_SQL大数据实例开发教程.pdf (z-lib.org)1

    《Spark SQL大数据实例开发教程》是一本专注于...本书适合Spark初学者和进阶者,不仅作为入门教材,也可以作为开发过程中的参考手册。通过这本书,读者将能够全面理解Spark SQL的内部工作原理,提升大数据处理的技能。

    scala与spark基础

    这个压缩包中的"spark---scala学习"文件很可能是Scala和Spark相关的学习资料,包括笔记、教程或者示例代码,对于初学者来说是一份宝贵的资源。建议仔细阅读和实践其中的内容,以便更好地掌握这两个工具。

    Bright Spark 1.10 模拟电路仿真

    在模拟电路仿真领域,Bright Spark具有以下几个关键知识点: 1. **电路设计**:用户可以通过图形化界面拖放电阻、电容、电感、晶体管、运算放大器等元件,构建复杂的电路网络。这种直观的方式使电路设计变得简单...

    spark-1.4.0-src

    7. **Examples**:源码包中的示例代码展示了如何使用Spark的各种功能,对于初学者来说,这是理解Spark工作原理的好起点。 在深入研究Spark 1.4.0源代码时,你可以学习到如何配置和启动Spark集群,理解Spark的工作...

    spark1.6.1

    根据提供的文件信息,我们可以深入探讨Spark 1.6.1版本...无论是对于初学者还是有经验的数据工程师来说,掌握Spark 1.6.1的安装和使用方法都是非常重要的。希望以上介绍能够帮助大家更好地理解和使用这个版本的Spark。

    Apache Spark 2.0.2 中文文档 - v0.1.0

    总的来说,"Apache Spark 2.0.2 中文文档 - v0.1.0"是深入了解Spark及其各种组件的宝贵资源,无论你是初学者还是有经验的开发人员,都能从中受益。通过阅读这份文档,你可以掌握Spark的核心概念,学会如何利用Spark...

    spark内核设计与艺术.zip

    书中的内容可能涵盖以下几个方面: 1. **RDD(弹性分布式数据集)**:RDD是Spark的基础数据抽象,它是不可变、分区的记录集合,可以在集群中进行并行操作。RDD提供了转换(Transformation)和动作(Action)两种...

    spark技术讲解

    本文将深入探讨Spark的核心技术,适合对Spark有一定兴趣或刚刚接触的初学者阅读。 首先,Spark的核心技术主要包括以下几个方面: 1. **弹性分布式数据集(Resilient Distributed Datasets, RDD)**:RDD是Spark的...

    spark源码以及官方的示例(方便阅读源码学习)

    官方示例则为初学者提供了一个快速上手和理解Spark功能的平台。 在Spark源码中,我们可以深入研究以下几个关键知识点: 1. **RDD(弹性分布式数据集)**:RDD是Spark的基础数据抽象,它是不可变的、分区的数据集合...

    Spark从入门到精通

    ### Spark从入门到精通 #### 一、大数据框架概述 在大数据处理领域,有几种主流的大数据处理框架,包括以Hadoop2.x为核心的大数据生态系统...无论是对于初学者还是经验丰富的开发者来说,掌握Spark都是非常有价值的。

    图解Spark核心技术与案例实战

    Spark的核心技术主要包括以下几个方面: 1. **Spark架构**:Spark采用分布式计算模型,由Driver程序、Executor进程和Cluster Manager组成。Driver负责任务调度和管理,Executor在工作节点上执行任务,而Cluster ...

    基于spark的地铁大数据客流分析系统.zip

    总的来说,“基于Spark的地铁大数据客流分析系统”是一个全面展示大数据处理流程的实例,涵盖了数据科学、分布式计算和实时分析等多个关键领域,对于学习和理解Spark及其在现实问题中的应用具有很高的价值。...

    spark mllib 常用的自学demo

    根据提供的信息,我们可以总结出以下有关Spark MLlib的知识点,主要关注K-Means算法以及相关的推荐系统案例。 ...通过理解和掌握这些内容,可以帮助初学者更好地利用Spark MLlib进行机器学习实践。

    数据算法:Hadoop+Spark大数据 中文版

    通过阅读这本书,无论是初学者还是有经验的开发者,都能深入理解Hadoop和Spark在大数据处理中的作用,提升自己的技能,更好地应对大数据时代的挑战。同时,书中的实例和实践指导也能帮助读者快速掌握这两项技术,并...

    Spark2.6.3源码

    7. **examples**:这里包含了一些示例应用,展示了如何使用Spark的各种功能,对于初学者了解Spark的用法非常有帮助。 在分析源码时,开发者通常会关注以下几个方面: - **设计模式**:Spark广泛使用了函数式编程和...

    Apache Spark 应用

    本部分将详细介绍Apache Spark的几个关键知识点,包括其分布式计算方法、与大规模数据集优化问题相关的算法,以及如何在Spark上实现交替方向乘子法(Alternating Direction Method of Multipliers, ADMM)。...

Global site tag (gtag.js) - Google Analytics