hadoop总结

一、hadoop

1、hadoop4v特点

1、流量大
2、速度快
3、多样化
4、价值密度低
Hadoop源自于来自于Goole的bigtalbe论文

2、大数据开源框架

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

二、hdfs

简介

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

写文件的流程:
client端发送写请求给namenode,namenode读取fsimage和edits的信息,查看是否可写;如可写,要计算写入文件的切块信息,同时生成元数据信息,写入edits,同步传回给client端;client端先在元数据最近的datanode进行写入,由这个datanode往其他datanode扩散请求,全部写入完成后,所有datanode向namenode报告写入完成的信息;namenode确认写入edits,否则会把edits删除。

由secondaryNamenode负责edits和fsimage的合并

读文件流程

client端发送写请求给namenode,namenode读取fsimage和edits的信息,查看是否可写;如可写,要计算写入文件的切块信息,同时生成元数据信息,写入edits,同步传回给client端;client端根据元数据区最近的datanode进行读写数据,由这个datanode往其他datanode扩散请求

常用命令:

(1)客户端命令:hdfs dfs
hdfs dfs -mkdir 创建目录
hdfs dfs -rmr 递归删除目录
hdfs dfs -lsr 递归查看目录
hdfs dfs -put 本地目录 hdfs的目录
hdfs dfs -copyToLocal hdfs 的目录 本目录
hdfs dfs -appendToFile 追加的文件 dfs上要追加的文件
(2)管理命令:hdfs dfsadmin
(3)oev和oiv查看edits log和fsimage

oiv

1.用于查看Hadoop fsimage
2.语法
$> hdfs oiv -i inputfile -o outputfile -P process
3.inputfile: 要查看的fsimage文件
outputfile: 用于保存格式化之后的文件
process: 使用什么进程解码,XML|Web|…

oev

例如:hdfs oev -i edits_0000000000000000011-0000000000000000012 -o a.xml(如果存在的文件会被覆盖)
1.用于查看Hadoop 的 edit 文件
2.语法
$> hdfs oev -i inputfile -o outputfile -P process
3.inputfile: 要查看的edit文件
outputfile: 用于保存格式化之后的文件
process: 使用什么进程解码,XML|Web|…
5、Namenode、datanode、secondaryNamenode三者的职能
Namenode 管理元数据,与客户端交互,管理datanode和secondaryNamenode
datanode 负责读写/备份数据,定时发送心跳给namenode
secondaryNamenode 辅助namenode合并fsimage和edits log、负责数据管理备份
6、java API
Configuration conf;获取对象对应的配置信息 (就是地址如 hdfs://ip:9000)
FileSystem fs;由conf对象创建对应的文件系统
由文件系统执行各种增删改查等操作。

三、Yarn

1、简介

从hadoop2.0开始引入,主要的目的是分担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获取元素数据信息;创建Rsourcescheduler,根据元数据信息生成大概的shedule文件,得到需要几个datanode的资源,以及每个datanode有几个数据块会涉及;一般由资源消耗低的nodemanager来创建APPmaster来具体负责shedule的运作,APPmaster先去hdfs目录上获取具体的jar包及临时文件信息,计算各datanode所需要的的资源,并且上报到ResourceSchedular,更新shedule文件,同时向APPmanager申请资源权限;APPmaster获取权限后,根据shedule文件向nodemanager返送创建container的任务,各container对应创建tasktraker,并从hdfs下载jar包及临时文件,创建Maptask和reducetask等具体任务,开始执行jar包,执行过程中不停反馈各阶段进度给APPmaster,并反馈心跳给nodemanager,执行完成后结果逐步反馈回client端。namenode把对应的edits写入。

四、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进行hash之后对节点数进行取余的结果)partition的结果进行排序(快排),保证小文件的分区内有序,归并到大文件,保证分区内有序。根据partition结果向对应节点分发分区内容,一个节点归并成一个大文件,保证分区内有序。根据key分组每个key对应的分组进入reducer,对应业务流程走完,一个节点的一个文件,由各个reducer依次写数据。

五、JavaAPI

testmapper extends Mapper<LongWritable,Text,…,…>{
Map(LongWritable key,Text value,Context context){}
对value做处理
context.write(。。。,。。。)
}
}
TestReducer extends Reducer<…,…,…>{
reduce(… key,iterable<…>values,Context context){

}
}
TestDriver{
Main{
Configuration conf,模拟一个hadoop配置实例
Job job=Job.getinstance(conf);//模拟向这个hadoop发送job请求
对driver,mapper,reducer等的配置
对输出格式的映射
对输入输出文件的映射
运行
}
}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值