学习Spark一定要先学Hadoop吗

不需要,Spark做计算可以不依赖Hadoop,只不过Hadoop的HDFS已经是大数据存储的标配了,Hadoop也比较成熟了,大多数情况下,你只需要部署好Hadoop直接用就可以了。
■网友
【学习Spark一定要先学Hadoop吗】 Spark是用来弥补基于MapReduce处理数据速度上的缺点,它的特点是把数据装载到内存中计算而不是去读慢的要死进化还特别慢的硬盘。特别适合做迭代运算,所以算法流们特别稀饭它。它是用scala编写的。Java语言或者Scala都可以操作

■网友
你们这些人答问题不要负责任的哦!======== 分割线 ========敲黑板! 邦邦邦!我们为什么要用Spark? 用来做大数据分析!Spark是数据分析引擎。但不学hadoop 你分析的数据从哪里读?数据数据分析完了存哪里? hdfs至少要了解吧, hive,hbase得知道如何call吧。其实这完全是伪命题。为啥用spark, spark跟MR比更高效的是利用的hadoop里的组件。所以你都不想学hadoop学啥spark
■网友
不一定。但学到一定程度还要是要去学习。
目前,在企业中大数据的工作方向大致有几类
数据平台研发:侧重于大数据平台部署、运维、开源软件优化改造等数据研发: 侧重于数仓建设、数据同步、数据埋点设计等BI和数据挖掘:侧重于指标体系建设、报表建设、业务异常分析、数据挖掘等算法:侧重于算法平台的算法开发,如推荐算法,或语音识别等全能选手:小公司什么都要做或者大牛什么都懂不同角色对技术对Spark/Hadoop的了解深度是不一样的。比如平台研发的同学更注重Spark原理,如任务调度,Sql解析引擎等,这样定制开发。但这一块在国内也只有一线互联网公司有资源做。数据研发的同学,需要了解如何在Spark上运行任务,如何编写sql实现ETL
解决不同问题,技术侧重也是不一样的。比如解决OLAP时,更侧重的查询响应时间。所以Presto,Kylin就需要去了解。而构建数仓时需要开发和管理很多ETL任务,有不同数据源,这时候就需要了解Hadoop的HDFS是如何存储数据的。如何拿到自己的数据。
以上。等等
对于初学的同学来说,找准一个和自己职业规划相契合的切入点的技术,结合现在自己做的项目,先满足现在的需求,再怀着一颗好奇心,逐步构建自己的知识体系。最终成为全能选手。
因为,对于程序员来说,技术才是硬实力。



■网友
没必要说先后,不过可以一起学,没有坏处。

Spark 是计算引擎,分为 Spark.sql, Spark streaming。其中 Spark.sql 是处理离线任务的,小时级,天级别统计任务可以用它。Spark streaming 是处理事实任务用的,同级别竞品有 Flink, Kafka streame 等等。

Hadoop 是一个生态系统,包括了计算引擎 mapreduce 底层存储 HDFS 大数据数据库 Hbase 查询应用 Hive 等等。
学习Spark一定要先学Hadoop吗

图为Hadoop核心系统,摘自
帐号登录单纯的 Spark 只能做计算的事,但是有了 Hadoop 生态的结合,可以做更多的事。比如 OLAP (Online Analytical Processing,在线分析处理) 的应用 Hive ,可以用 Spark.sql 作为计算引擎,HDFS作为数据存储,完美的将 Spark 和 Hadoop 结合在一起。

除此以外,还可以对比 mapreduce 和 Spark 异同,不过私以为 mapreduce 能做的 Spark 基本都可以做,除此以外 Spark 可以更优雅的控制计算过程。相比于 mapreduce 仅仅提供的 mapper, reducer 两个算子,Spark有更多好用的算子,比如 mapPartitions(可以对每个数据分片处理), groupByKey(可以通过指定的key分组)。



■网友
hadoop和spark,有关系,但并不是需要先学hadoop才能学spark的关系,它俩之间的对比如下


推荐阅读