hadoop详解
- 一、hadoop核心框架
- 1.什么是大数据?有什么特点
- 2.Hadoop:大数据开源框架
- 二、HDFS
- 1.概述
- 2,写文件的流程:
- 3,读文件流程
- 4.常用命令:
- 5,Namenode datanode secondarynNamenode的工作职能
- 6.Java API
- 三、Mapreduce
- 1.Mapreduce版本变化
- 2.mapreduce机制
- 3.mapreduce工作流程
- 四、Yarn
- 1.概述
- 2.Resourcemanager和nodemanager
- 3.yarn运行机制
一、hadoop核心框架
1.什么是大数据?有什么特点
海量数据,无法用传统工具收集、管理,计算能力要求很高的数据
特点:4V
流量大
速度快
多样化
价值密度低
来自于Google的bigtable论文
2.Hadoop:大数据开源框架
Apache公司的顶级开源项目,为了解决大数据分布式存储与计算的问题,而产生的一种开源框架
大数据分布式与传统分布式的区别
传统分布式比较依赖于每个节点的运行速度,哪台节点满=慢提升那台节点的性能
大数据分布式使用空间换时间的方式,提升性能
核心组件:
分布式存储框架:hdfs
分布式计算框架:mapreduce
分布式管理框架:yarn(hadoop2.x)
二、HDFS
1.概述
本质上是一个文件系统,但是是分布式文件系统,存储的大文件分成多个block块,存储在不同节点上,同时在其他节点上有多个备份,数据安全性高,适宜处理很大的文件(GB-PB)
2,写文件的流程:
client发送写请求给namenode,namenode读取fsimage和edits的信息,查看是否可写,如可写要计算写入文件的切块信息,同时生成元数据信息,写入edits,同步传回client端,client端先在元数据中最近的datanode进行写入,由这个datanode往其他datanode扩散请求,quanbu写入完后,所有datanode向namenode报告写入完成信息,namenode确认写入edits,否则会把edits删除
由secondarynode在闲时负责edits和fsimage的合并
3,读文件流程
client发送对请求给namenode,namenode读取fsimage和edits的元数据信息,根据client端发送的地址,返回元数据给client端,client端根据元数据信息去最近的datanode读取数据,由这个datanode扩散请求
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:看edit和fsimag的元数据信息
5,Namenode datanode secondarynNamenode的工作职能
Namenode管理元数据,与客户端交互,管理datanode和secondaryNamenode
DataNode负责读写/备份数据,定时发送心跳给namenode
SecondaryNamenode 辅助namenode合并fsimage和editslog、负责管理数据备份
6.Java API
Configuartion conf 对象获取对应的配置信息
FileSystem fs 由conf创建对应的文件系统
由文件系统执行各种增删改查等操作
三、Mapreduce
1.Mapreduce版本变化
hadoop1.0时负责大数据计算和job任务的管理
job任务的管理通过jobTraker和taskTraker来处理
hadoop2.0时专注于大数据分布式计算的功能
2.mapreduce机制
把要执行的功能通过jar包的形式分发到各节点,由各节点来执行jar包的功能
传统分布式计算是把其他节点的数据集中到计算节点,由计算节点统一执行
3.mapreduce工作流程
对应文本分片,切分分片成行,形成键值对<偏移量,一行内容>,进入map阶段,setup中加载缓存文件,map中读取一行的内容进行业务处理,通过键值对写出,进入环形环形缓冲区,80%
溢写开始进入shuffle阶段,partition(即对map输出的key的hashcode对节点数取余的结果),partition的结果进行排序,保证小文件分区内有序,归并到大文件,,保证分区内有序,根据partition结果向对应节点分发分区内容,一个节点归并成大文件,根据key分组,每个key对应的组进入reducer,一个节点一个文件,由各个reducer依次写数据
四、Yarn
1.概述
从hadoop2.x引入,主要目的是分但mapreduce在管理方面的压力,另外可以使用其他的计算框架代替mapreduce
2.Resourcemanager和nodemanager
所有的job请求有resourcemanager管理,同时管理nodemanager
nodemanager主要执行resourcemanager的任务,管理容器的生命周期,定时发送心跳给resourcemanager,管理datanode的资源损耗情况
3.yarn运行机制
client端发送计算任务的时候,Resourcemanager接受请求,创建appManager,appManager反馈jobid和hdfs目录给client端,client端上传具体的jar包和临时数据以及目标数据信息,Resourcemanager向namenode获取元数据信息,创建ResouceScheduler,根据元数据信息生成大概的schedule文件,得到需要几个datanode的资源,以及每个datanode有几个数据块会涉及,由资源消耗低的nodemanager来创建APPMaster来具体负责schedule的运作,APPmaster先去hdfs目录上获取具体的jar包及临时文件信息,计算革datanode具体所需要的资源,并且报道resourcemanager,更新schedule文件,同时向appManager申请资源权限,Appmaster获取权限后,根据schedule文件相对应nodemanager发送创建container的任务,各Container对应创建TaskTraker,并从hdfs下载jar包及临时文件,创建mapTask和reduceTask等具体任务,开始执行jar包,执行过程中不听反馈各阶段进度给AppMaster,并返回心跳给nodemanager,执行完成后结果逐步反馈回client端,namenode把对应的edits写入