目录
数据处理的方式有哪些
单机数据处理
依赖单个计算机的资源,处理的数据量较少,当数据量过大时,无法执行
集群数据处理
采用分布式技术,借助分布式服务实现海量数据处理
- 分布式存储 HDFS : 主-NameNode 从-DataNode
- 分布式资源调度 Yarn : 主-ResourceManager 从-NodeManager
分布式计算框架
MapReduce
- 需要开发人员编写计算代码
- MapReduce采用的是多任务方式(进程)进行分布式计算,每个计算任务运行在不同的服务器上
- MapReduce包含Map和Reduce两个部分,两个部分分别以进程的方式运行
- Map运行的数量由谁决定?
- 默认情况下,split切割的数据会给到Map,而split默认切割一个块的的数据,所以,一个块对应一个map
- Reduce运行数量?
- 默认情况下,根据计算的数据量自动决定产生多少个reduce
- hive在进行计算时,可以通过set进行设置
- 指定的reduce个数决定了分区数 ,分区数和reudce个数是一致的
ApplicationMaster
ApplicationMaster管理MapReduce的计算
Spark分布式计算类别
spark有很多部署方式,不同的部署方式决定spark计算时的资源调度方式
- Local模式 使用单机资源
- 使用master参数指定资源调度方式 默认 loca
- standalone 使用spark自带的资源调度
- yarn 使用hadoop的资源调度
进程与线程的区别
进程是计算时分配资源的最小单位
- 如果要执行一个计算任务,是按照进程分配资源
- 运行时,需要先创建进程,一个进程就有一份资源
线程是执行计算任务的最小任务
- 线程依赖进程的资源,没有进程就没有线程
- 默认情况下一个进程中包含一个线程,使用线程执行任务
多进程的执行效率没有多线程的执行效率高
- 创建进程资源需要花费时间
- spark的执行速度比Mapreduce的速度快
多任务
- 可以通过多任务实现多个计算机任务同时执行
- 多任务可以通过进程实现多个任务,也可以多个线程实现
Spark和MapReduce的区别
处理速度
MapReduce只要是基于磁盘计算,将数据存储在HDFS上,并在计算工程中频繁读写磁盘.
Spark是支持内存计算,当内存够大,可以比MapReduce快100倍
实现方式
MapReduce 采用的是多进程方式实现多任务计算,提升计算效率
Spark 采用的多线程方式实现多任务,提升计算效率
容错机制
MapReduce 通过在HDFS上存储中间数据来实现容错
Spark通过RDD的血统机制来实现容错,如果某个节点失败,可以从血统信息重新计算丢失的数据.
调度
MapReduce使用Hadoop的YARN作为资源调度器
Spark有自己的调度器,可以更高效的管理资源和任务