Hadoop基础知识梳理

Hadoop基础知识梳理

一、hadoop核心框架

1、什么叫大数据?有什么特点?

海量数据,无法用传统工具收集、管理,计算能力要求很高的数据
特点:4V
Volume:流量大
Variety: 多样化
Velocity: 高速
Value: 价值低
理论来自于Google的bigtable论文

2、hadoop大数据开源框架

Apache公司的顶级开源项目,为了解决大数据分布式存储与大数据分布式计算的问题,而产生的一种开源框架
大数据分布式与传统分布式的区别
传统分布式比较依赖于每个节点的运行速度,哪台节点慢提示哪台节点的性能
大数据分布式使用空间换时间的方式提升性能
核心组件:
分布式存储框架:hdfs
分布式计算框架:MapReduce
分布式管理框架:yarn (hadoop 2.x开始)

二、hdfs

1、什么是hdfs

本质上是一个文件系统,但是是分布式文件系统,存储的大文件分成多个block块,存储在不同的节点上,同时在其他节点有多个备份数据安全性较高,适合处理很大的文件(GB~PB)
在这里插入图片描述

2、写文件的流程:

client端发送 写请求给namenode,namenode读取fsimage和edits的信息,查看是否可写;
如可写,要计算写入文件的切块信息,同时生成元数据信息,写入edits,同步传回给client端;
client端先在元数据中最近的datanode进行写入,由这个datanode往其他的datanode扩散请求;
全部写入完成后,所有datanode向namenode报告写入完成的信息;
namenode确认写入edits(保存下来),否则会把edits删除;
由secondaryNamenode复制edits和fsimage合并(闲时处理);
ppt上面有图

3、读文件的流程:

client端发送请求给namenode,namenode读取fsimage和edits的信息,根据client端发送的地址,返回元数据信息给client端,client端根据元数据信息去最近的datanode读取数据,由这个datanode扩散请求。
ppt上面有图

4、常用命令:

	(1) 客户端命令:hdfs  dfs
	hdfs dfs -mkdir -p  递归创建目录
	hdfs dfs -rmr   删除目录
	hdfs dfs -lsr   递归查看目录
	hdfs dfs -put 从本地目录hdfs的目录
	hdfs dfs -copyToLocal   hdfs的目录下载到本地目录
	hdfs dfs -appendToFile   追加文件
	(2) 管理命令:hdfsadmin
	(3) oev和oiv: 分别查看edits 和fsimage

5、Namenode、datanode、secondaryNamenode 三者的工作职能

Namenode:管理元数据,与客户端交互,管理datanode和secondaryNamenode
Datanode:负责读写数据,定时发送心跳给namenode
SecondaryNamenode:辅助namenode合并fsimage和editslog,负责管理数据备份

6、Java API

Configuration conf;   对象获取对应的配置信息
FileSystem fs;        由conf对象创建对象的文件系统
由文件系统执行各种增删改查等操作

三、Yarn

1、yarn的作用

从hadoop2.0开始引入,主要的目的是分担MapReduce在管理方面的压力,另外可以使用其他计算框架代码MapReduce

2、ResourceManager和NodeManager

所有的job请求由ResourceManager管理,同时管理NodeManager,
NodeManager主要相应resourceManager的任务,管理容器的生命周期,发送心跳给resourceManager,管理datanode资源损耗情况

3、Yarn的运行机制

(1)client端发送计算任务的时候,ResourceManager接受请求,创建Appmanager,APPmanager反馈jobid和hdfs目录给client端,client端上传具体的jar包和临时数据以及目标数据信息;

(2)ResourceManager向namenode获取元数据信息后创建ResourceSchedular,根据元数据信息生成大概的 shedule文件(项目规划),得到需要几个datanode的资源,以及每个datanode有几个数据块会涉及;

(3)由资源消耗低的nodeManager来创建AppMaster来具体复制shedule的运作。
AppMaster先去hdfs目录上获取具体的jar包和临时文件等信息,计算各datanode具体所需要的资源,并且上报到ResourceSchedular,更新shedule文件,同时向AppManager申请资源权限;

(4)AppMaster获取权限后,根据shedule文件向对应的NodeManager发送创建Container的任务,各Container对应创建taskTraker,并从hdfs下载jar包及临时文件,创建MapTask和ReduceTask等具体任务,开始执行jar包。Container在执行过程中实时反馈各阶段进度给AppMaster,并反馈心跳给NodeManager。执行完成后结果逐步反馈回client端。NameNode把对应的edits写入;
在这里插入图片描述

四、MapReduce

1、MapReduce的版本变化?
hadoop 1.0的时候复制大数据计算和job任务的管理,Job任务的管理通过jobTraker和taskTraker来处理;
hadoop 2.0的时候专注于大数据分布式计算的功能

2、MapReduce的机制
把要执行的功能通过jar包的形式分发到各节点,由各节点来执行jar包的功能
传统分布式计算是把节点的数据集中到计算节点,由计算节点统一执行

3、MapReduce的工作流程
map阶段:接受任务,对应文本分片,切分分片成行,形成键值对<偏移量,一行的内容>,进入Map阶段,setup中加载缓存文件,map中读取一行的内容进行业务处理,通过键值对写出,进入环形缓冲区直到超过80%开始溢写。
shuffle阶段:从开始溢写进入shuffle阶段,partition(即对map输出的key进行hash之后对节点数取余的结果),partition的结果进行排序(快排),保证小文件分区内有序,归并到大文件,保证分区内有序。根据partition的结果向对应节点分发分区内容,一个节点归并成一个大文件,保证分区内有序。根据key分组,每个key对应的组进入reduce阶段
reduce阶段:业务流程走完,一个节点一个文件,由各个reducer依次写数据
在这里插入图片描述

4、Java API

TestMapper extends Mapper<LongWritable,Text,...,...>{
	Map(LongWritable key,Text value,Context context){
	对value做处理
	context.write(...,...);
	}
}

TestReducer extends Reducer<...,...,...,...>{
	Map(... key,Iterable<...> value,Context context){
	...
	}
}
TestDriver{
	Main{
		Configuration conf;   //模拟一个hadoop配置实例
		Job job=Job.getInstance(conf);  //模拟向这个hadoop发送job请求
		对driver、mapper和reducer等的配置
		对输出格式的映射
		对输入输出文件地址的映射
		运行
	}
}

猜你喜欢

转载自blog.csdn.net/giantleech/article/details/115196679
今日推荐