03-hdfs的原理详细介绍

离线课程第三天

sql必练50题

https://blog.csdn.net/fashion2014/article/details/78826299/

课程内容回顾

1、hadoop的基本介绍

2、hadoop的发展历史

3、hadoop的三大发行公司

4、hadoop的基本架构

​ hadoop1.x:

​ HDFS:分布式文件存储系统

​ namenode:主节点,管理元数据信息,以及接受客户端的读写数据的请求

​ datanode:从节点,存储数据

​ snn:辅助namenode管理元数据信息

​ 元数据信息:描述数据的数据

​ MapReduce:分布式的文件计算系统

​ JobTracker:主节点,接受客户端提交的计算任务,分配任务

​ taskTracker:从节点,主要用于执行计算任务

​ hadoop2.x

​ HDFS:分布式的文件存储系统

​ namenode:主节点,管理元数据信息,以及接受客户端的读写数据的请求

​ datanode:从节点,主要用于存储数据

​ snn:辅助namenode管理元数据信息

​ namenode HA的时候

​ journalNode:同步元数据信息

​ zkfc:守护进程,监看namenode的健康状况

​ yarn:资源管理调度系统。(CPU,内存)

​ resourceManager:主节点,主要用于接收客户端提交的任务,以及分配资源

​ nodemanager:从节点,主要用于执行计算任务

hadoop运行的三种环境

​ standAlone:使用一台机器,模拟我们hadoop的运行环境

​ 伪分布式:主节点与从节点都在一台机器上面,从节点还分散到其他机器上面

​ 完全分布式:主节点完全独立的分开。主节点与从节点也要分开

cdh版本的hadoop 本地库没有

重新使用源码进行编译,使其支持本地库以及压缩库

cdh版本的zk环境搭建

cdh版本的hadoop的伪分布式环境搭建

hadoop 使用体验

​ hadoop的shell命令操作

​ hadoop的高级使用命令

​ hadoop的基准测试

今天课程大纲

hdfs:

mapreduce入门:

hdfs的详细介绍

hadoop当中,文件系统是一个抽象的概念。有很多的实现列,比如本地文件系统,分布式文件系统,webHDFS等等

hdfs的设计目标:

1、硬件的错误是常态

2、数据的流访问。主要用于多次读取,不擅长频繁的写入数据

3、大数据集。存储的数据量都是海量数据

4、简单的相关模型。假设所有的数据都是一次写入,多次读取

5、移动计算比移动数据便宜

6、多种软硬件的可实施性

起源于谷歌的三篇论文

hdfs文件副本机制以及block块存储

1、抽象块的好处:解决分布式文件系统存储的难题。不管文件再大或者再小都一视同仁,全部存储成一个个block块

2、block块缓存。对于一些经常需要访问到的block块,我们可以将其进行缓存起来

3、hdfs的权限的验证。采用的是类似linux的权限管理机制

一般线上环境都要打开hdfs的权限管理

设计权限的目的:防止好人做错事,不能阻止坏人干坏事。hdfs相信你告诉我你是谁,你就是谁

<property>
		<name>dfs.permissions</name>
		<value>false</value>
	</property>

hdfs元数据信息的管理

Fsimage:存放的是一份比较完整的元数据信息

Edits:存放的是最近一段时间的元数据信息的操作日志

SNN:合并fsiamge与edist文件成为一个新的fsimage。fsimage的冷备份

	fsimage存放的磁盘位置
	<property>
		<name>dfs.namenode.name.dir</name>
		<value>file:///export/servers/hadoop-2.6.0-cdh5.14.0/hadoopDatas/namenodeDatas</value>
	</property>
	edits操作日志存放的位置
	<property>
		<name>dfs.namenode.edits.dir</name>
		<value>file:///export/servers/hadoop-2.6.0-cdh5.14.0/hadoopDatas/dfs/nn/edits</value>
	</property>
	fsimage检查点文件存放的位置
	<property>
		<name>dfs.namenode.checkpoint.dir</name>
		<value>file:///export/servers/hadoop-2.6.0-cdh5.14.0/hadoopDatas/dfs/snn/name</value>
	</property>
	edits日志检查点存放的位置
	<property>
		<name>dfs.namenode.checkpoint.edits.dir</name>
		<value>file:///export/servers/hadoop-2.6.0-cdh5.14.0/hadoopDatas/dfs/nn/snn/edits</value>
	</property>

hdfs文件读写的过程

文件写入的过程

第一步:客户端请求上传

第二步:namneode校验

第三步:客户端请求第一批block块

第四步:namenode找block块返回给客户端

第五步:客户端与datanode通信,建立pipeline管道连接

第六步:数据以packet的方式发送上传,反向的进行ack数据的校验。一直往上写入数据,直到数据上传完成

文件的读取过程

第一步:客户端请求读取文件

第二步:namenode校验客户端的权限,文件是否存在,如果校验通过,返回一批block块的地址给客户端

第三步:客户端拿到block块的地址,与datanode建立通信连接,读取数据

第四步:所有的block块传输完成,客户端拼接文件

如果CDHjar包下载不下来,使用我给的maven的仓库覆盖你们本地仓库就行了

如果覆盖了还是找不到jar包,

第一步:刷新项目

第二步:本地仓库update

第三步:找到本地仓库的路径,搜索.lastupdated 全部删掉

第四步:本地仓库update

以上步骤都不好使:换maven的版本

如何解决winutils.exe的问题:

需要在windows上面安装hadoop的运行环境,也就是一个客户端环境

需要下载hadoop的源码,在windows上面重新编译即可

第一步:复制windows环境的hadoop到一个没有中文没有空格的路径下

第二步:配置windows的hadoop_home环境变量

第三步:bin/hadoop.dll复制到 C:\Windows\System32

第四步:关闭windows 重启

小文件的合并三种方式:

上传之前进行合并:文件都是属于同一类型的文件,才可以在上传之前进行合并

上传之后进行合并:

归档har文件

MapReduce的基本介绍

谷歌提出来的一种计算模型

核心思想:分治 分而治之。生活中大部分的问题,都可以大而化小的去解决

主要分为两个阶段:

map阶段 :主要负责分

reduce阶段:主要负责合

天龙八部

mapReduce一共有八个步骤:一定要背下来

map阶段两个步骤

第一步:读取文件,解析成key,value对 k1 v1

第二步:自定义map逻辑,接收k1 v1 转换成新的 k2 v2 输出

shuffle阶段四个步骤

第三步:分区。相同key的数据,发送到同一个reduce里面去,key合并,value形成一个集合

第四步:排序

第五步:规约

第六步:分组

reduce阶段的两个步骤

第七步:自定义reduce逻辑,接收k2 v2,转换成新的k3 v3 输出

第八步:将我们k3 v3 写出到目的地

课程总结

hdfs的详细的介绍

hdfs的副本机制block块存储

hdfs的元数据信息的管理:

​ Fsimage:元数据信息管理,保存了一份比较完整的元数据信息

​ Edits:最近一段时间的操作日志

使用SNN来定期的合并fsimage与edits文件

​ 第一步:snn通知namneode准备切换edits文件

​ 第二步:snn通过http方式获取fsimage与edits

​ 第三步:snn将fsimage与edits文件加载到内存当中来,进行合并成为一个新的fsimage

​ 第四步:snn将最新的fsimage发给namneode替换掉原来旧的fsimage

合并edits文件的触发机制:edist文件达到64M进行合并。3600s进行合并

hdfs数据的读写过程

​ hdfs文件写入的过程 背下来

​ 第一步:客户端请求namneode上传文件

​ 第二步:namendoe校验客户端的权限问题,文件是否存在

​ 第三步:客户端请求namenode第一批文件上传到哪些block块

​ 第四步:namenode寻找空闲,离客户端比较近的,比较鲜活的datanode,找到一批block块返回给客户端

​ 第五步:客户端与datanode进行通信,建立pipeline管道,将数据以packet方式往hdfs上面发送,每个packet默认是64KB,反向的进行ack的校验

​ 第六步:第一批数据发送完了之后,继续请求namenode获取第二批block块继续上传

​ hdfs的文件的读取过程 背下来

​ 第一步:客户端请求namenode读取数据

​ 第二步:namendoe校验客户端的权限,数据是否存在

​ 第三步:namenode返回一批block块的地址给客户端

​ 第四步:客户端拿到了block块之后,与datanode建立连接,打开通道,传输数据

​ 第五步:所有的block块传输完成了,客户端进行拼接,合并成为一个完整的文件

hdfs的javaAPI 搞定

mapreduce的入门:

mapreduce核心思想:分治

mr八个步骤:背下来

map阶段两个步骤

第一步:读取文件,解析成key,value对

第二步:自定义map逻辑,接收k1 v1 转换成新的k2 v2 输出

shuffle阶段4个步骤

第三步:分区。相同key的数据,发送到同一个reduce,key合并,value形成一个集合

第四步:排序

第五步:规约

第六步:分组

reduce阶段两个步骤

第七步:自定义reduce逻辑,接收k2 v2 转换成新的k3 v3 输出

第八步:输出k3 v3

wordcount单词计数 搞定

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值