Hadoop学习(一)——总体学习

Hadoop学习(一)——总体学习

参考文献:

[1]Jure Leskovec,Anand Rajaraman,Jeffrey David Ullman.大数据互联网大规模数据挖掘与分布式处理(第2版) [M]北京:人民邮电出版社,2015.7;

目录:

1、分布式文件系统:

2Hadoop基本架构:

3、HDFS分布式文件系统的体系:

4、MapReduce体系的两个后台进程:

5、Master和Slave:


1、分布式文件系统:

(1)使用场景:

①文件非常大,比如TB级的文件。

②文件极少更新,而只是作为某些计算的数据读入,并且不时有额外的数据追加到文件尾部。

(2)在DFS中,文件被分成文件块(chunk),文件块的大小通常为64MB。文件块会被复制多个副本放在多个不同的计算节点上。另外,存放同一文件块不同副本的节点应分布在不同机架上,这样在某个机架发生故障时就不至于丢失所有副本。通常来讲,文件块的大小和复制的次数可以由用户指定。

(3)主节点(master node)和名称节点(name node):

为寻找某个文件的文件块,使用主节点或名称节点为该文件所用。主节点本身可以有多个副本,文件系统的总目录可以用于寻找主节点的副本,总目录本身也可以有多个副本,所有使用DFS的用户都知道这些目录副本所在的位置。

参考文献:《大数据互联网大规模数据挖掘与分布式处理(第2版)》 P18

 

2、Hadoop基本架构:

 Hadoop学习(一)——总体学习

图2.1 Hadoop基本架构1

(1)Hadoop Common:

Hadoop体系最底层模块,为Hadoop各子项目提供各种工具,如配置文件和日志操作等。

(2)MapReduce:

依赖磁盘IO的批处理计算模型,通过一个JobTracker主节点和多个TaskTracker从节点,分Map阶段和Reduce阶段执行任务。

(3)HDFS:

①Hadoop Distributed File System,分布式文件系统,提供高吞吐量的应用程序数据访问,负责数据的分布式存储。

②HDFS结构是基于一组特定的节点构建的,包括一个在HDFS内部提供元数据服务的NameNode主节点和多个提供存储块的DataNode从节点。

附注:

分布式存储:数据分散在很多的机器上进行存储。

分布式计算:数据分散在很多的机器上进行计算。

(4)Yarn:

①资源管理平台,负责作业调度与集群的管理,只有一个ResourceManager主节点和多个NodeManager从节点。

②ResourceManager负责集群资源的分配与调度,MapReduce、Storm、Spark等应用,必须实现ApplicationMaster接口,才能被RM管理。

③NodeManager负责单节点资源的管理。

(5)Pig:

Pig是一个并行计算的高级的数据流语言和执行框架,是在MapReduce上构建的一种高级查询语言,轻量级脚本语言,使用shell命令方式来输入数据处理、数据分析的命令,然后系统会自动将这些命令转换为Map和Reduce的形式,进行MapReduce的工作,然后把结果返回给用户。相当于用户和MapReduce之间的转换器。

(6)Hive:

相当于Sql语言到MapReduce的映射器。将Sql转换为MapReduce分布式任务,在各节点运行,再将结果返回给用户。

(7)Hbase:

面向数据分析,基于列式存储模型,支持大量结构化数据存储的数据库,提高响应速度,减少IO量。

(8)ZooKeeper:

负责服务器节点以及进程之间的通讯,通讯的协调工具。提供配置维护、名字服务、分布式同步、组服务等功能。

(9)Chukwa:

管理大型分布式系统的数据采集系统。

(10)Mahout:

可扩展的机器学习和数据挖掘的library库。

 Hadoop学习(一)——总体学习

图2.2 Hadoop基本架构2

 

3、HDFS分布式文件系统的体系:

(1)NameNode:名称节点

①接收用户请求,是用户操作的入口;

②是HDFS的守护程序,是它的核心程序,起到分布式系统的总控的作用;

③维护文件系统的目录结构,记录所有的元数据,记录文件是如何分割成数据块的,以及这些数据块被存储到哪些节点上;

④对内存和I/O进行集中管理

⑤是个单点,发生故障将使集群崩溃。

(2)Secondary NameNode:辅助名称节点

①监控HDFS状态的辅助后台程序;

②每个集群都有一个;

③作为NameNode的后备,可以把NameNode里面的元数据信息再重新保存多一份副本,NameNode会自动跟名称辅助节点通讯,不断把名称辅助节点中的元数据往里面放;

④当NameNode故障可以作为备用NameNode使用;

⑤也是个单点。

(3)DataNode:数据节点

①每台从服务器都运行一个;

②负责把HDFS数据块读写到本地文件系统,用于存储文件。

 Hadoop学习(一)——总体学习

图3.1 分布式文件系统体系

如图所示,Hadoop集群是部署在真正的服务器上的,服务器是放在机架(Rack)上面的,每一个机架都有一个交换机(Switch),然后这些交换机通过一个大的交换机连接起来,用户是直接通过交换机来进行请求的。

 

4、MapReduce体系的两个后台进程:

Hadoop学习(一)——总体学习

图4.1 MapReduce体系的两个后台进程

(1)JobTracker:作业跟踪器

运行在主节点上的后台进程,起到对MapReduce体系的总调度作用。

①用于处理用户提交后的作业;

②决定有哪些文件参与作业处理,然后把Job切割为一个个小Task,并把这些Task分配到数据节点中,Hadoop的原则是就近运行,就是程序要和数据在同一个物理节点里面;

③监控Task,重启失败的Task,释放它所占用的资源;

④每个集群只有唯一一个JobTracker,和NameNode一样,是个单点,位于Master节点。

(2)TaskTracker:任务跟踪器

①位于Slave节点上,与DataNode结合(代码与数据一起的原则);

②管理各自节点上的Task(由JobTracker分配);

③每个节点只有一个TaskTracker,但一个TaskTracker可以启动多个JVM,用于并行执行Map或Reduce任务;

④与JobTracker交互。

 

5、Master和Slave:

(1)Master:NameNode、Secondary NameNode、JobTracker的节点的机器。

(2)Slave:TaskTracker、DataNode的机器

(3)Master不是唯一的。通常把NameNode和JobTracker放在同一台机器,把Secondary NameNode放在另一台机器。