hadoop
-
整体定位:是一个用来存储计算海量数据的框架,核心是HDFS+MapReduce
- HDFS:分布式文件系统。引入了存放文件元数据信息的服务器Namenode和实际存放数据的服务器Datanode,对数据进行分布式储存和读取
一个形象的比喻:一个分布式的,有冗余备份的,可以动态扩展的用来存储大规模数据的大硬盘
- MapReduce: 计算框架。核心思想是把大任务分成小任务给集群内的服务器执行。其中用Map+Reduce这俩过程对任务进行拆分
一个计算引擎,按照MapReduce的规则编写Map计算/Reduce计算的程序,可以完成计算任务
-
一些相关的概念
- Data Node:每台机器上都会运行一个dataNode以管理机器上的磁盘,这样很多机器就组成了分布式文件系统
- Node Manager:管理机器上的计算资源(CPU+内存)
- Name Node:运行于主节点上,与每台机器上的Data Node通信,维护元信息,从而形成大的分布式文件系统
- Resource Manager:主节点,与Node Manager通信,了解各个机器目前运行的任务的情况,从而维护了整个集群的分布式计算
yarn
- 概念:是一个资源管理系统
- 功能步骤:
- client提交作业给Resource Manager
- RM会在Node Manager中选一台作为App Master运行主进程
- App Master会向RM请求资源。。。后面就不懂了,再议
MapReduce
- 概念:是一个计算框架
- 结构:认为一个计算就分为map+reduce这两步。复杂任务用多个MapReduce串联起来,形如Map->Reduce->Map->Reduce
- 详解:
- map:搞一个list[map<key,value>]出来
- shuffling:根据map结果的key来哈希一波放到对应的机器上,把map的结果变为了map<key,list[value]>,从而key相同的肯定放一台机器上了
- reduce:合在一起进行最后的计算变成,map<key,res>
- 例子
Spark
- 概念:另一个计算框架
- 优点
- 弹性数据集
- 数据在内存中丢了可以恢复
- 函数式编程
- 速度比MR快
flink
- TBD