一、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写入

Logo

瓜分20万奖金 获得内推名额 丰厚实物奖励 易参与易上手

更多推荐