Hadoop学习(一)——总体学习
Hadoop学习(一)——总体学习
参考文献:
[1]Jure Leskovec,Anand Rajaraman,Jeffrey David Ullman.大数据互联网大规模数据挖掘与分布式处理(第2版) [M]北京:人民邮电出版社,2015.7;
目录:
1、分布式文件系统:
2、Hadoop基本架构:
3、HDFS分布式文件系统的体系:
4、MapReduce体系的两个后台进程:
5、Master和Slave:
1、分布式文件系统:
(1)使用场景:
①文件非常大,比如TB级的文件。
②文件极少更新,而只是作为某些计算的数据读入,并且不时有额外的数据追加到文件尾部。
(2)在DFS中,文件被分成文件块(chunk),文件块的大小通常为64MB。文件块会被复制多个副本放在多个不同的计算节点上。另外,存放同一文件块不同副本的节点应分布在不同机架上,这样在某个机架发生故障时就不至于丢失所有副本。通常来讲,文件块的大小和复制的次数可以由用户指定。
(3)主节点(master node)和名称节点(name node):
为寻找某个文件的文件块,使用主节点或名称节点为该文件所用。主节点本身可以有多个副本,文件系统的总目录可以用于寻找主节点的副本,总目录本身也可以有多个副本,所有使用DFS的用户都知道这些目录副本所在的位置。
参考文献:《大数据互联网大规模数据挖掘与分布式处理(第2版)》 P18
2、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库。
图2.2 Hadoop基本架构2
3、HDFS分布式文件系统的体系:
(1)NameNode:名称节点
①接收用户请求,是用户操作的入口;
②是HDFS的守护程序,是它的核心程序,起到分布式系统的总控的作用;
③维护文件系统的目录结构,记录所有的元数据,记录文件是如何分割成数据块的,以及这些数据块被存储到哪些节点上;
④对内存和I/O进行集中管理
⑤是个单点,发生故障将使集群崩溃。
(2)Secondary NameNode:辅助名称节点
①监控HDFS状态的辅助后台程序;
②每个集群都有一个;
③作为NameNode的后备,可以把NameNode里面的元数据信息再重新保存多一份副本,NameNode会自动跟名称辅助节点通讯,不断把名称辅助节点中的元数据往里面放;
④当NameNode故障可以作为备用NameNode使用;
⑤也是个单点。
(3)DataNode:数据节点
①每台从服务器都运行一个;
②负责把HDFS数据块读写到本地文件系统,用于存储文件。
图3.1 分布式文件系统体系
如图所示,Hadoop集群是部署在真正的服务器上的,服务器是放在机架(Rack)上面的,每一个机架都有一个交换机(Switch),然后这些交换机通过一个大的交换机连接起来,用户是直接通过交换机来进行请求的。
4、MapReduce体系的两个后台进程:
图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放在另一台机器。