一. Hadoop是什么?
hadoop是一种分析和处理海量数据的软件平台,是一款开源软件,使用java开发,可以提供一个分布式基础架构。
二. Hadoop特点
高可靠性、高扩展性、高效性、高容错性、低成本。
三、Hadoop三大核心组件
HDFS :Hadoop:分布式文件系统
MapReduce:分布式计算框架
Yarn:集群资源管理系统。
1) HDFS主要是用于做什么的?
HDFS(Hadoop Distributed File System)是Hadoop项目的核心子项目,是分布式计算中数据存储管理的基础,是基于流数据模式访问和处理超大文件的需求而开发的,可以运行于廉价的商用服务器上。它所具有的高容错、高可靠性、高可扩展性、高获得性、高吞吐率等特征为海量数据提供了不怕故障的存储,为超大数据集(Large Data Set)的应用处理带来了很多便利。
HDFS 采用Master/Slave的架构来存储数据,这种架构主要由四个部分组成,分别为HDFS Client、NameNode、DataNode和Secondary NameNode。以下分别介绍这四个组成部分。
HDFS Client:就是客户端。
1、文件切分。文件上传 HDFS 的时候,Client 将文件切分成 一个一个的Block,然后进行存储。
2、与 NameNode 交互,获取文件的位置信息。
3、与 DataNode 交互,读取或者写入数据。
4、Client 提供一些命令来管理 HDFS,比如启动或者关闭HDFS。
5、Client 可以通过一些命令来访问 HDFS。
NameNode:就是 master,它是一个主管、管理者。
1、管理 HDFS 的名称空间。
2、管理数据块(Block)映射信息
3、配置副本策略
4、处理客户端读写请求。
DataNode:就是Slave。NameNode 下达命令,DataNode 执行实际的操作。
1、存储实际的数据块。
2、执行数据块的读/写操作。
**- DataNode:就是Slave。NameNode 下达命令,DataNode 执行实际的操作
1、存储实际的数据块。
2、执行数据块的读/写操作。
Secondary NameNode:并非 NameNode 的热备。当NameNode 挂掉的时候,它并不能马上替换 NameNode 并提供服务。
1、辅助 NameNode,分担其工作量。
2、定期合并 fsimage和fsedits,并推送给NameNode。
3、在紧急情况下,可辅助恢复 NameNode。
2)MapReduce角色及概述
MapReduce是一中分布式计算模型,源自Googlede的MapReduce论文,主要用于搜索领域,解决海量数据的计算问题。
-
Jobclient:提交作业
-
jobTracker:Master节点,只有一个,初始化作业,分配作业,管理所以作业的监控、错误等,并将分解的一系列任务分派给TaskTracker.
-
TaskTracker:Slave节点,一半多台,运行Map Task Reduce
Task,并与jobTracker交互,汇报任务状态。 -
Map Task:解析每条数据记录,传递给用户编写的map()并执行,将结果写入本地磁盘。
-
Reduce Task:从Map Task的执行结果中,远程读取输入数据,对数据进行排序,将数据按照分组传递给用户编写的reduce函数执行。
这两个函数的形参是key、value对,表示函数的输入信息。
3)Yarn是Hadoop的一个通用的资源管理系统
Yarn 核心思想:是将jobTracker和Task Tacker进行分离
三、Hadoop模式:
Hadoop部署的三种模式
1.单机
2.伪分布式
3.完全分布式