阶段二,hadoop,3.hdfs

三、HDFS

1.使用场景:一次写入多次读出

2.优点:高容错、适合处理大数据、可构建于廉价机器

  •  缺点:不适合低延时数据访问、无法高效的对大量文件进行存储、不支持并发写入

3.NameNode、DataNode、Client、Secondery NameNode

4.hdfs分块储存(Block),为128M,寻址时间为传输时间的1%,磁盘速率为100MB/s(速率影响)

  • 块太小会增加寻址时间、太大会放慢处理文件速度

5.命令:

  • 上传:hadoop fs  -moveFromLocal、-copyFromLocal、-put、-appendToFile

  • 下载:-copyToLocal、-get

  • 一般:-ls、-cat、-chmod、-chown、、、-rm -r、-du、-setrep、、

6.API:(需要配置环境变量、再配置xml文件、设置用户名(VM Options:))

  • 文件上传:

  • 获取文件系统 --FileSystem.get(new URI(namenode地址,参数配置,用户)

  • 上传文件--fs.copyFromLocatFile(new Path("***"),new Path("***"))

  • 关闭资源--fs.close

  • 文件下载:

  • 下载文件--fs.copyToLocalFile(原文删除,原文路径,目标路径,开启文件校验)--文件校验(验证文件完整性)

7.设置备份数量参数(优先级):

  • 客户端---代码

  • 客户端---配置文件

  • 服务器端----xxx-site.xml

  • 服务器端----xxx-default.xml

  • 客户端操作:代码 > 客户端---配置文件 > 服务器端默认配置xxx-default.xml

  • 服务器操作:xxx-site.xml > 服务器端----xxx-default.xml

8.给main方法传参:

  • idea:Program Arguments:参数1 参数2 ......

  • 命令:java 字节码文件名 参数1 参数2 .......

  • jar包:hadoop jar xxx.jar 类的全类名 参数1 参数2 参数3 ......

9.HDFS写流程:packet(chunk+chunksum)

  • 客户端--->namenode(返回节点位置)

  • 客户端--->datannode1:传第一个块

  •  datanode1--->datanode2

  • datanode2--->datanode3

  • 第二个块。。。循环

10.节点距离:连个节点到达最近的共同祖先的距离总和

  • namenode会选择最近距离datanode接收数据

  • 副本节点选择:

  • 第一个副本在Client所处节点上,若客户端在集群外,随机选一个

  • 第二个副本在另一个机架的随机一个节点

  • 第三个副本在第二个副本所处机架的随机节点

10.HDFS读流程:

  • 客户端--->namenode(返回节点位置)

  • 客户端--->datanode:返回第一个packet

  • 第二块。。。循环

11.nn--2nn工作机制

  • 启动nn,加载edits和fsimage到内存

  • client的请求,记录到edits_inrogress,再转为edits发送到2nn

  • 2nn将全部edits加载到内存,2nn触发checkpoint(默认时间1h、数量100w)

  • 将edits转为fsimage,并将fsimage发送到nn

12.fsimage、edits

  • fsimage:包含所有信息

  • edits:包含指令

  • 查看fsimage( current路径下):hdfs oiv -p 文件类型 -i镜像文件 -o 转换后文件输出路径

  • 查看edits:hdfs oev -p 文件类型 -i编辑日志 -o 转换后文件输出路径

13.datanode工作机制:

  • datanode存储着数据本身和元数据(数据块长度、校验和、时间戳)

  • datanode每6小时向namenode上报块信息

  • datanode3秒一次心跳,namenode收到并返回命令,若10分30秒nn未收到心跳,则认为该节点不可用

14.数完整性

  • datanode读取block时,会计算checksum

  • 若与创建是不同,则判断为数据损坏,会周期性验证

  • 常见校验算法有:crc,md5,sha1

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值