一、大数据两大核心技术:
分布式存储:HDFS、HBase、NoSQL、NewSQL
分布式处理:MapReduce
二、大数据计算模式:
三、代表性大数据技术:
1.Hadoop:ETL工具(extract、transform、load)
YARN的目标就是实现“一个集群多个框架”,即在一个集群上部署一个统 一的资源调度管理框架YARN,在YARN之上可以部署其他各种计算框架,并由YARN为这些计算框架提供统一的资源调度管理服务,可以动态调整各自占用的资源。
一个企业当中同时存在各种不同的业务应用场景,需要采用不同的计算框架,四种计算框架:
- MapReduce实现离线批处理
- 使用Impala实现实时交互式查询分析
- 使用Storm实现流式数据实时分析
- 使用Spark实现迭代计算
这些产品通常来自不同的开发团队,具有各自的资源调度管理机制,为了避免不同类型应用之间互相干扰,企业就需要把内部的服务器拆分成多个集群,分别安装运行不同的计算框架,即“一个框架一个集群”,导致的问题:
- 集群资源利用率低
- 数据无法共享
- 维护代价高
Hadoop缺点:
- 表达能力有限,局限于Map和Reduce操作
- 磁盘IO开销大,延迟高
- 任务之间的衔接涉及IO开销(在前一个任务执行完成之前,其他任务就无法开始,难以胜任复杂、多阶段的计算任务)
2.Spark
Spark优点:
- Spark的计算模式也属于MapReduce,但不局限于Map和Reduce操作,还提供了多种数据集操作类型(groupByKey、MapValues...),编程模型比Hadoop MapReduce更灵活
- Spark提供了内存计算,可将中间结果放到内存中,对于迭代运算效率更高,运行速度快
- Spark基于DAG(有向无环图)的任务调度执行机制,要优于Hadoop MapReduce的迭代执行机制(每次中间降落都要经过磁盘,太慢了)
- 容易使用:支持Scala、Java、Python、R语言进行编程,还可以通过spark shell进行交互式编程
- 具有完整强大的技术栈,包括:SQL查询、流式计算、机器学习和图算法组件
- 运行模式多样:可运行于独立的集群模式中,可运行于Hadoop中,也可运行于Amazon EC2等云环境中,并且可以访问HDFS、Cassandra、HBase、Hive等多种数据源
附:BDAS伯克利数据分析软件栈
问题:Spark会取代Hadoop吗?
Hadoop包括两大核心:HDFS和MapReduce。Spark作为计算框架,与MapReduce是对等的。
谈到“取代”,Spark应该是取代MapReduce,而不是整个Hadoop。Spark借助于Hadoop的HDFS、HBase等来完成数据的存储,然后,由Spark完成数据的计算。
3.Flink
Flink和Spark对比:我觉得最核心的区别是Spark核心实现基于Scala,核心采用批处理模型且基于RDD,所以在流式处理时会有一些延时;Flink内核基于Java,基于操作符的连续流模型按行处理,因此在流式处理方面就比Spark快,支撑毫秒级响应。Flink生态没有Spark好,所以没打过Spark。
4.Beam
谷歌开发的Beam试图一统天下,但是不愠不火,没有惊起波澜。