淘先锋技术网

首页 1 2 3 4 5 6 7

一、Hadoop是什么

Hadoop是一个能够对大量数据进行分布式处理的软件框架,实现了Google的MapReduce编程模型和框架,能够把应用程序分割成许多的小的工作单元,并把这些单元放到任何集群节点上执行。在MapReduce中,一个准备提交执行的应用程序称为“作业(job)”,而从一个作业划分出 得、运行于各个计算节点的工作单元称为“任务(task)”。此外,Hadoop提供的分布式文件系统(HDFS)主要负责各个节点的数据存储,并实现了高吞吐率的数据读写。


二、Hadoop的主要模块:

Hadoop框架的主要模块包括如下:

  • Hadoop Common
  • Hadoop分布式文件系统(HDFS)
  • Hadoop YARN
  • Hadoop MapReduce

虽然上述四个模块构成了Hadoop的核心,不过还有其他几个模块。这些模块包括:Ambari、Avro、Cassandra、Hive、 Pig、Oozie、Flume和Sqoop,它们进一步增强和扩展了Hadoop的功能。


三、(Master/Slave)主从架构:

Hadoop使用(Master/Slave)主从架构进行分布式储存和分布式计算。Master负责分配和管理任务,Slave负责实际执行任务。

在分布式存储和分布式计算方面,Hadoop都是用从/从(Master/Slave)架构。在一个配置完整的集群上,想让Hadoop这头大象奔跑起来,需要在集群中运行一系列后台(deamon)程序。不同的后台程序扮演不用的角色,这些角色由NameNode、DataNode、Secondary NameNode、JobTracker、TaskTracker组成。其中NameNode、Secondary NameNode、JobTracker运行在Master节点上,而在每个Slave节点上,部署一个DataNode和TaskTracker,以便 这个Slave服务器运行的数据处理程序能尽可能直接处理本机的数据。对Master节点需要特别说明的是,在小集群中,Secondary NameNode可以属于某个从节点;在大型集群中,NameNode和JobTracker被分别部署在两台服务器上。
  
数据存取 - HDFS架构:

Master / Slave(主从结构) - 节点可以理解为物理机器

  • 主节点,只有一个: Namenode
  • 从节点,有很多个: Datanodes

数据运算 - MapReduce架构:

主从结构

  • 主节点,只有一个: JobTracker
  • 从节点,有很多个: TaskTrackers

Hadoop集群示意图:

Hadoop集群示意图


四、HDFS与MapReduce的设计思路:

HDFS:

将文件进行切块处理,再通过文件信息服务器Namenode存放切块的文件信息存放地址,实际存放数据的服务器Datanode存放切块后的数据。

系统默认:每个片块大小为64M,以保证寻址速度;数据会写入3个Datanode中,以保证更高的容错性。

HDFS还设计了Secondary Namenode来更新Namenode,以避免日志文件过大。

HDFS Client帮助Namenode对写入读取数据进行预处理,进行文件的分块与发送读取操作。Namenode负责为数据任务寻址。

MapReduce:

通过JobClient生成任务运行文件,并在JobTracker进行调度指派TaskTracker完成任务。

JobTracker分为把任务文件进行分解并派送到TaskTracker的程序JobinProgress和执行调度器的TaskScheduler。

JobinProgress把作业分解成Map计算和Reduce计算并放置到TaskTracker服务器中。

数据在Hadoop中的流程处理示意图:

流程处理示意图


五、HDFS与MapReduce组件介绍:

HDFS:

HDFS Client:进行文件的分块与文件的发送读取。

Namespace image:记录每个文件的存在位置信息。

Edit log:记录每个文件的位置移动信息。
  
  Namenode(Master):管理着每个文件中各个块所在的数据节点的位置信息。
  
  Secondary Namenode:更新并备份Namenode。
  
  Datanode(Slave):记录着服务器内所储存的数据块的列表。

Secondary Namenode:更新并备份Namenode。

MapReduce:

JobClient:用于把用户的作业任务生成Job的运行包,并存放到HDFS中。

JobinProgress:把Job运行包分解成MapTask和ReduceTask并存放于TaskTracker中。

JobTracker(Master):进行调度管理TaskTracker执行任务。

TaskTracker(Slave):执行分配下来的Map计算或Reduce计算任务。