一文带你认识Hadoop
文章目录
- 一文带你认识Hadoop
- Hadoop的作用与功能
- Hadoop的优点
- 图解Hadoop体系结构
- 图解HDFS体系结构
- 图解MapReduce
简单来说,Hadoop就是存储海量数据和分析海量数据的工具,是一种在分布式服务器集群上存储海量数据并运行分布式分析应用的开源框架,并且是以一种可靠、高效、可伸缩的方式进行处理的,其核心部件是HDFS与MapReduce。
- HDFS是一个分布式文件系统:引入存放文件元数据信息的服务器Namenode和实际存放数据的服务器Datanode,对数据进行分布式储存和读取。
- MapReduce是一个计算框架:MapReduce的核心思想是把计算任务分配给集群内的服务器里执行。通过对计算任务的拆分(Map计算/Reduce计算)再根据任务调度器(JobTracker)对任务进行分布式计算。
Hadoop的作用与功能
- Hadoop采用了分布式存储方式,提高了读写速度,并扩大了存储容量
- 采用MapReduce来整合分布式文件系统上的数据,可保证分析和处理数据的高效
- Hadoop还采用存储冗余数据的方式保证数据的可靠性(不怕丢数据)
- Hadoop中HDFS的高容错特性,以及它是基于Java 语言开发的,使得Hadoop可以部署在低廉的计算机集群
- Hadoop中HDFS的数据管理能力,MapReduce处理任务时的高效率,以及它的开源特性,使其在同类的分布式系统中大放异彩,并在众多行业中被广泛采用
Hadoop的优点
- Hadoop 是可靠的:因为它假设计算元素和存储会失败,因此它维护多个工作数据副本,确保能够针对失败的节点重新分布处理
- Hadoop 是高效的:因为它以并行的方式工作,通过并行处理加快处理速度。Hadoop 还是可伸缩的,能够处理PB 级数据
- Hadoop成本低:依赖于廉价服务器:因此它的成本比较低,任何人都可以使用
- 运行在Linux平台上:Hadoop带有用Java 语言编写的框架,因此运行在Linux 生产平台上是非常理想的
- 支持多种编程语言:Hadoop 上的应用程序也可以使用其他语言编写,比如C++
图解Hadoop体系结构
- 最底部是Hadoop分布式文件系统(HDFS),它存储Hadoop集群中所有存储节点上的文件,HDFS的上一层是MapReduce引擎;
- HBase位于结构化存储层,是一个分布式的列存储数据库(基于HDFS的一种抽象);
- Zookeeper是一个分布式的、高可用性的协调服务,提供分布式锁之类的基本服务;
- Hive是一个建立在Hadoop 基础之上的数据仓库,用于管理存储于HDFS或Hbase中的结构化/半结构化数据
HDFS和MapReduce共同组成了Hadoop分布式系统体系结构的核心,二者相互作用,完成了Hadoop分布式集群的主要任务
现在只是简单提一下,之后会专门进行讲解!
下两节为之后的介绍打个样
图解HDFS体系结构
HDFS是Master(主控节点)和Slave(从节点)的主从结构。主要由Name-Node、Secondary NameNode、DataNode构成。
- NameNode:在主控节点上,管理HDFS的命名空间和数据块映射信存储元数据与文件到数据块映射的地方。
命名空间:例如文件系统有哪些文件夹,文件夹里有哪些文件
- Secondary NameNode:相当于NameNode的一个备份。
- DataNode:在从节点上,实际存储数据、执行数据块的读写并汇报存储信息给NameNode。
- HDFS支持用户以文件的形式存储数据,文件被分成若干个数据块,而且这若干个数据块存放在一组(若干)DataNode上
- namenode进行统筹,最后datanode直接将结果返回客户端
图解MapReduce
MapReduce框架是由一个单独运行在主节点上的JobTracker 和运行在每个集群从节点上的TaskTracker共同组成的
主节点会定期轮询从节点,确认是否可用
主节点负责调度构成一个作业的所有任务,这些任务分布在不同的从节点上;主节点监控它们的执行情况,并且重新执行之前失败的任务。从节点仅负责由主节点指派的任务
当一个Job 被提交时,JobTracker接收到提交作业和配置信息之后,就会将配置信息等分发给从节点,同时调度任务并监控TaskTracker的执行
TaskTracker和datanode是一对一的,而JobTracker和namenode可以不在一起
然后MapReduce是什么呢, 这个分为Map和reduce, map就是分配任务, 把一个大任务分配成小任务, 这个叫map, 然后reduce就是把每个slave得到的结果汇总起来, 处理结果。