首先需要明确一点,Hadoop应该算是大数据技术的代名词了,现在所讲的Hadoop,更多是大数据技术生态,而不是单纯的只是在讲Hadoop本身。
Hadoop作为第一代大数据技术,发展至今已经有了十几年了,现在的版本已经迭代到了Hadoop3。由此可以看出,与其说是Hadoop已经过时了,不如说MapReduce作为第一代大数据技术已经完成了其该有的历史使命。现在Hadoop的发展更多是生态兼容,因为很多的大数据处理框架,还是要依赖于Hadoop,比如资源调度框架YARN,分布式文件系统HDFS,都是目前使用频次比较高的大数据技术,再比如SQL ON Hadoop的OLAP分析引擎Hive,这些无一例外都需要依赖于Hadoop。
在说回Hadoop本身,Hadoop包括HDFS、MapReduce和YARN,其中HDFS是目前使用比较多的分布式文件系统,YARN也是目前使用比较多的资源调度框架,而MapReduce主要用于批处理,由于中间结果要落入磁盘,所以速度会比较慢,另外,map和reduce的编程范式也比较单一,对于复杂的计算不是很友好,可以说是很少使用了。
我们在来看Spark,Spark可以说是第二代大数据处理引擎,以其内存计算(并不单纯的基于内存)和擅长迭代计算而著称,Spark官网也显示其性能是Hadoop的100倍,所以在数据处理方面,Spark无疑是优于Hadoop的MapReduce的。另外,Spark是一个统一的大数据分析引擎,也就是说既可以支持批处理(比如SparkCore,SparkSQL),又支持流处理(比如SparkStreaming等),还要就是Spark还提供了机器学习的库SparkML以及图计算的库GraphX,可以看出Spark是一个生态栈,即支持一站部署,可以满足不同场景的业务需求。但是这并不能说Spark可以取代Hadoop,两者并不是互为替代品,而是互补的,比如在企业中会把Spark的任务部署在YARN上进行资源调度,比如使用SparkSQL处理Hive数据(数据存储在HDFS上)。
在来说一下目前比较火的Flink,Flink可以说是第三代大数据处理引擎,业务目前比较火的流处理引擎,Flink从一开始就是擅长流处理,发展至今,已经成为了非常成熟的大数据处理引擎,未来的方向是流批统一。对比Spark和Flink,你会发现,它们之间有很多的相似之处,其实大数据处理引擎本质上都是相似的,就目前而言,Spark和Flink的使用率都是很高的。
回到问题本身,既然Spark比Hadoop性能好很多,Hadoop可不可以从Spark中借鉴一些技术,可以借鉴哪些技术,未来Hadoop可不可能达到与Spark类似的水平?其实上面的解释也已经很清楚了,一句话就是定位不一样,每个技术都是有自己的适用场景的,所以Hadoop的发展发现也不是Spark。至于Hadoop的未来发展方向,那要看未来其他大数据技术是否还依赖于Hadoop,如果整个大数据技术生态都抛弃了Hadoop,那么Hadoop就真的过时了,不过话又说回来,目前的比较成熟的大数据处理引擎还是很依赖与Hadoop的,所以未来Hadoop可能会作为一个大数据处理引擎的基础设施,而不是成为下一个Spark或者Flink。
关于大数据学习,我平时会写一些大数据技术的原创文章,欢迎各位看官一起交流
- 基于Canal与Flink实现数据实时增量同步(一)
- CDH集群之YARN性能调优
- Flink运行架构剖析
- Flink的状态后端(StateBackends)
- 基于Canal与Flink实现数据实时增量同步(二)
- Flink的八种分区策略源码解读
- 经典Hive-SQL面试题
- Flink1.10集成Hive快速入门
- LeeCode数据库部分题目汇总
- Impala使用的端口汇总
- 浅析数据库缓冲池与SQL查询成本
- 你真的了解Flink Kafka source吗?
- 如何使用Hive进行OLAP分析
- Flink DataStream API编程指南
- Flink的时间与watermarks详解
- Flink内部Exactly Once三板斧:状态、状态后端与检查点
- Flink DataStream API 中的多面手——Process Function详解
- 透过窗口观无限数据流——Flink的Window全面解析
- Flink DataSet API编程指南
- Hive开窗函数实战
- Greenplum集群Master与Segment节点故障检测与恢复
- Hive的条件函数与日期函数全面汇总解析
- 一统江湖的数仓开发辅助神器--DBeaver
- Flink Table API & SQL编程指南(1)
- Flink Table API & SQL编程指南之动态表(2)
- Flink Table API&SQL编程指南之时间属性(3)
- 数仓开发需要了解的BI数据分析方法
- 数仓|Hive性能调优指北
- 实时数仓|Flink SQL之维表join
- 数据分析|使用多元线性回归构建销售额预测模型
- Hive的架构剖析
- 数仓开发应避免的10个陷阱
- Kafka生产者ack机制剖析
- Kafka的Controller Broker是什么
- 数仓规范|使SQL更易于阅读的几个小技巧
- 数仓|大数据时代,维度建模过时了吗?
- 第一篇|Spark概览
- 第二篇|Spark core编程指南
- 第三篇|Spark SQL编程指南
- 第四篇|Spark Streaming编程指南(1)
- 第五篇|Spark-Streaming编程指南(2)
- 第六篇|Spark MLlib机器学习(1)
- 第七篇|Spark平台下基于LDA的k-means算法实现
- 数仓面试|四个在工作后才知道的SQL密技
- 内含面试|一文搞懂HBase的基本原理
- Flink1.11中的CDC Connectors操作实践
- SQL查询的底层运行原理分析
- 元数据管理|Hive Hooks和Metastore监听器介绍
- 项目实践|基于Flink的用户行为日志分析系统
- 使用SQL窗口函数进行商务数据分析
- Hive SQL使用过程中的奇怪现象
- 面试|Kafka常见面试问题总结
- 篇一|ClickHouse快速入门
- 篇二|什么是ClickHouse的表引擎?
- 篇三|ClickHouse的数据类型
- 篇四|ClickHouse的可视化界面与集群状态监控
- Kafka生产环境的几个重要配置参数
- 第八篇|Spark SQL百万级数据批量读写入MySQL
- 第九篇|Spark的五种JOIN策略解析
- Impala的组件和架构介绍
- [第十篇|SparkStreaming手动维护Kafka Offset的几种方式
大数据技术与数仓:面试|不可不知的十大Hive调优技巧最佳实践大数据技术与数仓:篇五|ClickHouse数据导入(Flink、Spark、Kafka、MySQL、Hive)大数据技术与数仓:第十一篇|基于SparkSQL的电影分析项目实战大数据技术与数仓:数仓开发需要了解的5大SQL分析函数 |