大数据课堂笔记 07

复习回顾

一、Linux操作指令

1、命令提示符

 root:用户名

 localhost:主机名

 $/#:代表当前用户权限,#号表示超级管理员权限,$表示普通用户权限

2.与目录相关

 pwd:查看当前目录的具体路径
 
 mkdir:目录创建指令
 
 touch:文件创建的指令
 
 cd:进行目录切换的指令
 
 -:表示返回当前操作的前一个操作的目录,(有点类似与遥控器返回键)
 
 cp:(1)进行文件复制    文件:cp 文件名  目标目录
  
                        目录:cp -r 目录名  目标目录

     (2)改名操作        cp  -r  文件/目录名    要修改的文件/目录名

 mv:(1) 进行文件或者目录的移动     文件:mv  文件名  目标目录

                            目录:  mv  目录名   目标目录

     (2) 改名:mv  文件/目录名   要修改的文件/目录名

【注意】cp的改名操作,先将文件/目录进行复制,然后对复制的文件/目录进行改名操作;

       mv是在源文件/源目录上直接进行修改(重命名操作)

 vi/vim:文件编辑指令

 一般模式/编辑模式

 (1) 一般模式:具有光标,有内容的主题文职。在左下角有关于当前文件的详细信息(只有只读操作)

 (2)编辑模式:小写i可以将一般模式切换到编辑模式(对文件内容进行操作)

 tar:文件压缩指令          tar -xvf  文件压缩包名字      

 rm:文件/目录删除操作       文件-rm  文件名     目录  rm  -rf  目录名

 -r:递归操作             -f:强制执行

3.ssh远程登录:设置免密登录

(1)在客户端利用ssh设置免密登录操作在客户端生成一对密钥对公钥a,私钥a

(2)客户端会向服务器发送连接请求——将公钥a发送给服务器端

(3)服务器端接收到公钥a,将密码进行加密操作做,生成随机字符串

(4)服务器端将加密的生成的随机字符串返回给客户端

(5)接收到服务器端发来的随机字符串,用私钥a进行解密操作

(6)将解密之后的内容发送给服务器端

(7)接收到解密内容,与未加密之前的内容进行对比,一致则配置成功,反之失败。

二、HDFS的技术细节

1.hdfs模块

  • block——是hdfs中最小的存储单元

    切分规则:默认是128M,最大值但不是固定值

    存储在datanode

  • NameNode——维护元数据信息——block块的存储位置,以及块的内容等

    元数据信息是存到内存当中,但是为了数据的安全性与完整性,会在磁盘文件中备份

  • Datanode——用来存储block的(但是不知道其文件块的具体内容)

  • Secondarynode——用来协助namenode文件合并

2.文件合并:

磁盘内部资源:

  • fsimage:磁盘文件备份元数据信息

  • edits:日志文件,记录元数据修改信息

  • fstime:记录元数据合并的时间

触发文件合并的前提条件:

(1)当edits日志文件中的数据达到64M(2)当fstime里记录的时间达到3600s

文件合并具体操作

(1)在Namenode里先将edits日志文件进行复制,产生新的日志文件edits.new——原始日志文件不会再记录元数据的修改信息,而是新的日志文件进行记录

(2)SNN利用http get 获取NN中的磁盘文件fsimage以及原始日志文件edits,进行文件合并——产生新的磁盘文件fsimage.ckpt

(3)将新的磁盘文件复制给namenode

(4)namenode接收到新的磁盘文件,首先会将原始日志文件删除,并对新的日志文件进行重命名操作改名为edits,然后将原始磁盘文件进行删除,将新的磁盘文件进行重命名操作

【注意】NN是如何与DN进行沟通?——DN每隔3s向NN发送心跳报告,如果超过十分钟,NN未接收到DN的心跳,会向其他的DN发送文件复制指令

3.副本存放策略

(1)副本1有一个规则——就近原则(如果当前客户端就是一个DN会直接存放在本机)

【注意】当前机器是否空闲

(2)副本2放置在与副本1不同机架上

(3)副本3放置在与副本2相同机架上不同机器上,其他副本随机

三、HDFS的执行流程

1.读流程

(1)客户端向服务器端发送请求

(2)服务器端——验证当前用户是否具有访问权限,校验当前文件是否存在

(3)服务器端会向客户端发送文件的存储地址

(4)客户端接收到文件存储地址进行文件的读取操作

(5)文件内容读取完毕,向服务器端发送读取完毕信息,断开连接,释放资源

2.写流程

(1)客户端向服务器发送连接请求

(2)服务器端——验证当前用户是否具有数据写入的权限,校验当前文件是否存在

(3)服务器端会向客户端返回文件写入的地址信息

(4)客户端接收到地址信息之后——将文件进行切块的操作

(5)客户端会拿着这个dn的地址信息,进行block块的存储操作

(6)block——一次存储,在dn内部以管道流(channel)的形式进行副本存储

(7)存储完毕之后dn会逐级向上返回ack信息,直至返回给客户端,再执行下一个block块的存储操作

(8)文件彻底存储完毕,客户端会向服务器端发送文件写入完成的信息,释放资源,关闭连接

四、hdfs的优缺点

1.优点:

  • 支持超大文件

  • 具有检测和快速应对硬件故障的机制

  • 可以进行流式数据的访问

  • 简化的一致性模型

  • 具有高容错性

  • 可以将集群搭建在廉价的机器上面

2.缺点

  • 具备高吞吐但是不具备低延迟的数据访问(毫秒级别)
  • 具有大量的小文件占据内存
  • 用户只支持一次写入,多次读取,但是不支持行级别的增删改(但是在Hadoop2.0添加了追加操作)
  • 不支持超强的事务

【注意】在面试过程中,hdfs的缺点会经常被问到。

五、JavaAPI操作hdfs

1.下载

  • 创建文件系统对象
  • 创建文件下载输入流
  • 创建文件下载输出流
  • 对接流
  • 释放资源,关闭连接

2.上传

  • 创建文件系统对象
  • 创建文件上传输入流
  • 创建文件上传输出流
  • 对接流
  • 释放资源,关闭连接

3.删除

  • 创建文件系统对象
  • 删除操作(在Hadoop2.0默认可以直接对目录进行删除操作,若要关闭删除权限,添加一个Boolean类型的参数false)
  • 释放资源,关闭连接

4.创建

  • 创建文件系统对象
  • 创建操作
  • 释放资源关闭连接

六、MapReduce的技术细节

(一)执行流程

1.进行数据切片的操作(默认情况下与block块一致,默认有几个block块就有几个数据分片)

2.mapper阶段调用map函数(按行读取k1v1——k1是偏移量,v1是当前行内容)——数据分片有几行数据就会调用几次map函数

3.经过数据v1的读取以及切分操作输出k2v2(以单词读取为例,k2是,v2是每行当前单词的数量)

4.k2v2经过shuffle的过程执行执行分区排序的操作——hash取余(模)算法 k2.hashcode()%num(reduce的数量),输出的是k3v3——键不变,值以数组的形式进行表示

5.k3v3执行reducer阶段调用reduce函数,输出k4v4

(二)序列化与反序列化操作

将基本数据类型进行打包操作——以包装类进行表示——实现一个writable接口

(三)yarn资源调度

在Hadoop2.0之前没有yarn,只有jobtracker以及tasktracker

在Hadoop2.0引入yarn概念,将job以及task进行合并,并改名为resourcemanager以及nodemanager

(四)yarn的执行流程

1.写一个mapreduce程序运行在job客户端上

2.job客户端向jobtracker发送作业的存储请求

3.jobt会向job客户端发送一个作业编号以及存储作业的hdfs地址

4.job客户端会拿着这个hdfs的存储地址将作业上传

5.jobt会获取存储好的作业进行初始化操作,进行作业的处理

作业处理规则:(1)遵循本地化策略——将每个任务分发给与当前datanode在同一台机器上的nodemanager(2)验证当前dn是否空闲

6.nodemanager接收到作业任务,会创建一个虚拟子进程(work)——将作业任务交给work处理

【注意】如果当前work在处理任务时出现异常情况,nodemanager会再次创建一个虚拟子进程work继续处理

7.work处理接收到的作业任务

(五)Sqoop:

连接非结构化工具以及结构化工具的中间件

一般在开发环境中:是用于连接hive以及mysql的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值