离线课程第三天
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单词计数 搞定