大数据生态与Spark
1. 大数据技术概述
大数据不仅仅是数据的“大量化”,而是包含“快速化”、“多样化”和“价值化”等多重属性。
大数据是由结构化和非结构化数据组成的
- 10%的结构化数据,存储在数据库中
- 90%的非结构化数据,它们与人类信息密切相关
在思维方式方面,大数据完全颠覆了传统的思维方式:
- 全样而非抽样
- 效率而非精确
- 相关而非因果
大数据技术的不同层面及其功能
两大核心技术为分布式存储和分布式处理
- GFS\HDFS
- BigTable\HBase
- NoSQL(键值、列族、图形、文档数据库)
- NewSQL(如:SQL Azure)
代表性大数据技术
Hadoop、Spark、Flink、Beam
2.Hadoop
Hadoop是Apache软件基金会下用Java语言开发的一个开源分布式计算平台, 实现在大量计算机组成的集群中对海量数据进行分布式计算,适合大数据的分布式存储和计算平台,用户可以在不了解分布式底层细节的情况下,开发分布式程序,充分利用集群的威力进行高速运算和存储。
Hadoop生态系统
Hadoop——MapReduce
MapReduce是一种基于java的分布式计算的处理技术和程序模型
- MapReduce将复杂的、运行于大规模集群上的并行计算过程高度地抽象到了两个函数:Map和Reduce
- 编程容易,不需要掌握分布式并行编程细节,也可以很容易把自己的程序运行在分布式系统上,完成海量数据的计算
- MapReduce采用“分而治之”策略,一个存储在分布式文件系统中的大规模数据集,会被切分成许多独立的分片(split),这些分片可以被多个Map任务并行处理
MapReduce工作流程
Hadoop——YARN
YARN是Hadoop集群的资源管理系统
- YARN的目标就是实现“一个集群多个框架”,即在一个集群上部署一个统一的资源调度管理框架YARN,在YARN之上可以部署其他各种计算框架
- 由YARN为这些计算框架提供统一的资源调度管理服务,并且能够根据各种计算框架的负载需求,调整各自占用的资源,实现集群资源共享和资源弹性收缩
- 可以实现一个集群上的不同应用负载混搭,有效提高了集群的利用率 不同计算框架可以共享底层存储,避免了数据集跨集群移动
在YARN上部署各种计算框架
3.Spark简介
概念:Spark是基于内存计算的大数据并行计算框架,可用于构建大型的、低延迟的数据分析应用程序
Spark是当前热门的大数据处理技术
特点:
- 运行速度快:使用DAG执行引擎以支持循环数据流与内存计算
- 容易使用:支持使用Scala、Java、Python和R语言进行编程,可以通过Spark Shell进行交互式编程
- 通用性:Spark提供了完整而强大的技术栈,包括SQL查询、流式计算、机器学习和图算法组件
- 运行模式多样:可运行于独立的集群模式中,可运行于Hadoop中,也可运行于Amazon EC2等云环境中,并且可以访问HDFS、Cassandra、HBase、Hive等多种数据源
Spark架构图
4.Hadoop与Spark的对比
Hadoop的缺点:
- 表达能力有限
- 磁盘IO开销大
- 延迟高
- 任务之间的衔接涉及IO开销
- 在前一个任务执行完成之前,其他任务就无法开始,难以胜任复杂、多阶段的计算任务
Hadoop与Spark的对比
Spark在借鉴Hadoop MapReduce优点的同时,很好地解决了MapReduce所面临的问题
相比于Hadoop MapReduce,Spark主要具有如下优点:
- Spark的计算模式也属于MapReduce,但不局限于Map和Reduce操作,还提供了多种数据集操作类型,编程模型比Hadoop
MapReduce更灵活 - Spark提供了内存计算,可将中间结果放到内存中,对于迭代运算效率更高
- Spark基于DAG的任务调度执行机制,要优于HadoopMapReduce的迭代执行机制
- 使用Hadoop进行迭代计算非常耗资源
- Spark将数据载入内存后,之后的迭代计算都可以直接使用内存中的中间结果作运算,避免了从磁盘中频繁读取数据
Hadoop与Spark的执行流程对比
Hadoop与Spark执行逻辑回归的时间对比
Spark没有存储,借助于Hadoop的HDFS、HBase等来完成数据的存储,然后,由Spark完成数据的计算