Hadoop是一个开源的可运行于大规模集群上的分布式并行编程框架,其最核心的设计包括:HDFS和MapReduce
Hadoop的组成
Hadoop目前主要包括Hadoop1.x和hadoop2.x,两种版本差距较大,目前常用的是Hadoop2.x版本,所以主要基于Hadoop2.x进行讲解
主要组成模块:
Hadoop Distributed File System(HDFS):分布式文件存储系统。
MapReduce:并行计算框架(可以自定义计算逻辑的部分)
Yet Another Resource Negotiator(YARN):另一种资源协调者(顾名思义,Hadoop1.x采用的不是这一个资源管理器。
各个模块的作用
Job:由客户端向集群提交的一次计算任务。
Task:集群的最小可执行单位(一个Job将会分为多个Task执行)
ResourceManager(以下简称RM):管理整个集群的计算资源,主要用于为每一个Job分配计算资源(整个集群只有一个RM)
Container:资源分配单位,一个Container包括一些CPU和存储资源
NodeManager(以下简称NM):管理单台服务器的计算资源,类似RM得更细粒度实现(集群中每台服务器有一个NM)。
ApplicationMaster(以下简称AM):监控每一个Job的执行情况,包括资源申请、Task调度等。
主要组件的特点
HDFS的主要特点:
高容错性:数据自动保存多个副本(默认存3份),副本丢失后自动恢复
大数据处理:适合处理TB甚至PB级的数据;百万规模的文件数量;10K 节点规模
文件分块存储:HDFS会将一个完整的大文件平均分块存储到不同计算器上
流式文件访问:一次性写入,多次读取,保证数据一致性
廉价机器运行:HDFS可以应用在普通的PC机上,几十台廉价的计算机就可以构成一个大数据集群
MapReduce的主要特点:
适合数据复杂度运算;
不适合算法复杂度的运算;
不适合实时计算、流式计算、DAG有向图计算。