1.块 block一般默认为128m,在hdfs-site.xml里可设置。
2.dfs.blocksize 134217728 128M 规格
3.在集群下副本dfs.replication 为3
通俗说明:
一缸水 260ml
瓶子 128ml规格
需要多少瓶子能装满
260 / 128 =2…4ml
p1 128ml 装满 p1 p1 蓝色
p2 128ml 装满 p2 p2 黄色
p3 4ml 未装满 但是也占用一个瓶子 p3 p3 红色
最终装3个瓶子【如下图】

在伪分布式部署:
dfs.replication 1
原因只有1个DN节点
Default block replication. 块副本数
The actual number of replications can be specified
when the file is created. The default is used
if replication is not specified in create time.

假如一个文件 260M 上传HDFS上
切分3个块,dfs.replication 3(副本数为3)
128M 128M 128M
128M 128M 128M
4M 4M 4M
面试题:
一个文件160M,块大小128M,副本数2份
请问:实际存储多少块,实际多少存储空间?

160/128=1…32M
1:128M 128M
2:32M 32M
实际存储多少块:160/128=1…32M 1+1=2 2=4
实际存储空间:160
2=320M
256*2=512M
a.数据上传HDFS不可能凭空增加新的数据内容
b.dfs.blocksize 规格 未满一个规格 也会占用一个block文件
计算公式:实际块=floor(上传文件大小/128M)副本数
实际存储空间=上传文件大小
副本数

小文件

定义:明显小于block size的文件 80%

危害:(瓶颈)

1)磁盘IO
2)task启动销毁的开销
3)资源有限

Hadoop中的目录、文件、blk都以元数据的方式存储下来的
200字节
生产上:
hdfs适合小文件存储吗? 不
假如不适合,为什么呢?
假如上传文件都是小文件 比如 3m 5m 6m 10m四个文件
dfs.blocksize 134217728 128M 规格
dfs.replication 3
块的数量 3+3+3+3=12块
假设在【上传前合并】这4个文件为 24M文件
块的数量 3块
块的元数据信息是记录在namenode 4G配置
假如已经在hdfs上 真的有小文件,该怎么办?
合并 启动一个服务 单独合并
目标 是为了小文件合并大文件,约定的:
尽量合并的大文件 <=128M blocksize 比如控制 110M
129M=128M 1M
SHELL脚本 10M 阈值
flume --》hdfs …

支架

HDFS架构

1.Namenode: 主 nn

存储:文件系统的命名空间:
a.文件的名称
b.文件的目录结构
c.文件的属性 权限 创建时间 副本数
d.文件对应被切割为哪些数据块+副本数–》数据块分布在哪些DN节点上
blockmap当然NN节点不会持久化存储这种映射关系
是通过集群启动和运行时,DN会定时发送blockreport给NN,
依次NN在内存中动态维护这种映射关系
p1 p1 p1
p2 p2 p2
p3 p3 p3
注意: 一个DN节点上不可能存储一个块的多个副本,只能1个

所在的路径:
[pxj@pxj31 /tmp/hadoop-pxj/dfs/name]$cd current/
[pxj@pxj31 /tmp/hadoop-pxj/dfs/name/current]$ll
总用量 8200
-rw-rw-r--. 1 pxj pxj      42 12月  1 01:31 edits_0000000000000000001-0000000000000000002
-rw-rw-r--. 1 pxj pxj 1048576 12月  1 01:31 edits_0000000000000000003-0000000000000000003
-rw-rw-r--. 1 pxj pxj      42 12月  1 01:42 edits_0000000000000000004-0000000000000000005
-rw-rw-r--. 1 pxj pxj 1048576 12月  1 01:54 edits_0000000000000000006-0000000000000000015
-rw-rw-r--. 1 pxj pxj   12352 12月  1 13:11 edits_0000000000000000016-0000000000000000119
-rw-rw-r--. 1 pxj pxj 1048576 12月  1 13:11 edits_0000000000000000120-0000000000000000120
-rw-rw-r--. 1 pxj pxj      42 12月  1 13:36 edits_0000000000000000121-0000000000000000122
-rw-rw-r--. 1 pxj pxj    8813 12月  1 14:36 edits_0000000000000000123-0000000000000000196
-rw-rw-r--. 1 pxj pxj 1048576 12月  1 14:36 edits_0000000000000000197-0000000000000000197
-rw-rw-r--. 1 pxj pxj      42 12月  1 14:44 edits_0000000000000000198-0000000000000000199
-rw-rw-r--. 1 pxj pxj 1048576 12月  1 14:44 edits_0000000000000000200-0000000000000000200
-rw-rw-r--. 1 pxj pxj      42 12月  1 15:14 edits_0000000000000000201-0000000000000000202
-rw-rw-r--. 1 pxj pxj 1048576 12月  1 15:14 edits_0000000000000000203-0000000000000000203
-rw-rw-r--. 1 pxj pxj 1048576 12月  1 23:47 edits_inprogress_0000000000000000204
-rw-rw-r--. 1 pxj pxj    1880 12月  1 15:14 fsimage_0000000000000000202
-rw-rw-r--. 1 pxj pxj      62 12月  1 15:14 fsimage_0000000000000000202.md5
-rw-rw-r--. 1 pxj pxj    1880 12月  1 23:47 fsimage_0000000000000000203
-rw-rw-r--. 1 pxj pxj      62 12月  1 23:47 fsimage_0000000000000000203.md5
-rw-rw-r--. 1 pxj pxj       4 12月  1 23:47 seen_txid
-rw-rw-r--. 1 pxj pxj     206 12月  1 23:47 VERSION

作用:

管理文件系统的命名空间。维护文件系统树的所有文件和文件夹。
这些信息以两个文件形式永久的保存在本地磁盘上:
镜像文件fsimage
编辑日志文件editlog

Datanode: 从 dn

存储:数据块和数据块校验和与NN通信
a.每隔3s发送心跳包给 nn,我还活者
dfs.heartbeat.interval 3
b.每隔一定的时间发生一次 blockreport
dfs.blockreport.intervalMsec 21600000ms=6h
dfs.datanode.directoryscan.interval 21600s=6h

hdfs debug

[pxj@pxj31 /tmp/hadoop-pxj/dfs/name/current]$hdfs debug
Usage: hdfs debug <command> [arguments]
These commands are for advanced users only.
Incorrect usages may result in data loss. Use at your own risk.
verifyMeta -meta <metadata-file> [-block <block-file>]
computeMeta -block <block-file> -out <output-metadata-file>
recoverLease -path <path> [-retries <num-retries>]
所在位置[pxj@pxj31 /tmp/hadoop-pxj/dfs/data/current/BP-1997438793-192.168.25.31-1575134786543]$ll
总用量 4
drwxrwxr-x. 4 pxj pxj  64 12月  1 16:12 current
-rw-rw-r--. 1 pxj pxj 166 12月  1 01:30 scanner.cursor
drwxrwxr-x. 2 pxj pxj   6 12月  1 23:48 tmp
手动恢复【需要补充】[ruoze@ruozedata001 current]$ hdfs debug recoverLease -path xxx -retries 10
自动恢复待搭建集群后补充
但是有可能: 手动修复 + 自动修复都是失败的
数据仓库 数据质量 数据重刷机制
参考网站:
https://ruozedata.github.io/2019/06/06/%E7%94%9F%E4%BA%A7HDFS%20Block%E6%8D%9F%E5%9D%8F%E6%81%A2%E5%A4%8D%E6%9C%80%E4%BD%B3%E5%AE%9E%E8%B7%B5(%E5%90%AB%E6%80%9D%E8%80%83%E9%A2%98)/

SecondaryNamenode SNN(h+1机制)

1.存储: fsimage+editlog
2.作用: 定期合并 fsimage+editlog文件作为新的fsimage,推送给NN,
简称为checkpoint 检查点
检查点的设置配置

dfs.namenode.checkpoint.period 3600s
dfs.namenode.checkpoint.txns 1000000
备份机制原理图:

NN

edits_0000000000000000306-0000000000000000307
edits_0000000000000000308-0000000000000000324
edits_inprogress_0000000000000000325
fsimage_0000000000000000307
fsimage_0000000000000000307.md5
fsimage_0000000000000000324
fsimage_0000000000000000324.md5
SNN
edits_0000000000000000302-0000000000000000303
edits_0000000000000000304-0000000000000000305
edits_0000000000000000306-0000000000000000307
edits_0000000000000000308-0000000000000000324
fsimage_0000000000000000307
fsimage_0000000000000000307.md5
fsimage_0000000000000000324
fsimage_0000000000000000324.md5
fsimage_0000000000000000307 + edits_0000000000000000308-0000000000000000324
==>fsimage_0000000000000000324

解释部分:
第一步:NN先复制一份新的从edits_0000000000000000203-0000000000000000203成 edits_inprogress_0000000000000000204,并传到SNN的
edits_0000000000000000201-0000000000000000202
第二步:SNN的edit和fs进行合并成新的edits_0000000000000000201-0000000000000000202+fsimage_0000000000000000202=fsimage_0000000000000000202
第三步:fsimage_0000000000000000202+edits_inprogress_0000000000000000204=fsimage_0000000000000000203

总结:

1.roll edit
2.传输 fsimage+edits
3.merge
4.传输 fsimage.ckpt to nn
5.回滚 fsimage.ckpt==》fsimage
edit.new==> edit

改变HDFS的存储目录/tmp目录下想要改变到 当前用户/tmp

第一步:改变权限

[pxj@pxj31 /tmp/hadoop-pxj/dfs/namesecondary/current]$chmod -R 777 /home/pxj/tmp

第二步:cp /tmp

[pxj@pxj31 /tmp/hadoop-pxj/dfs/namesecondary/current]$cp -R /tmp/hadoop-pxj/dfs/ /home/pxj/tmp/

第三步:修改配置文件

[pxj@pxj31 /home/pxj/app/hadoop/etc/hadoop]$vim core-site.xml <property><name>hadoop.tmp.dir</name><value>/home/pxj/tmp</value></property>

第四步:

测试:
[pxj@pxj31 /home/pxj/software]$hadoop fs  -put hadoop-2.6.0-cdh5.16.2.tar.gz  /
19/12/02 00:36:42 WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
[pxj@pxj31 /home/pxj/software]$hadoop fs -ls /
19/12/02 00:37:34 WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
Found 3 items
drwxr-xr-x   - pxj supergroup          0 2019-12-01 14:32 /a
-rw-r--r--   1 pxj supergroup  434354462 2019-12-02 00:37 /hadoop-2.6.0-cdh5.16.2.tar.gz
drwx------   - pxj supergroup          0 2019-12-01 13:06 /tmp
[pxj@pxj31 /home/pxj/tmp/dfs/name/current]$ll
总用量 8264
-rw-rw-r--. 1 pxj pxj      42 12月  2 00:31 edits_0000000000000000001-0000000000000000002
-rw-rw-r--. 1 pxj pxj 1048576 12月  2 00:31 edits_0000000000000000003-0000000000000000003
-rw-rw-r--. 1 pxj pxj      42 12月  2 00:31 edits_0000000000000000004-0000000000000000005
-rw-rw-r--. 1 pxj pxj 1048576 12月  2 00:31 edits_0000000000000000006-0000000000000000015
-rw-rw-r--. 1 pxj pxj   12352 12月  2 00:31 edits_0000000000000000016-0000000000000000119
-rw-rw-r--. 1 pxj pxj 1048576 12月  2 00:31 edits_0000000000000000120-0000000000000000120
-rw-rw-r--. 1 pxj pxj      42 12月  2 00:31 edits_0000000000000000121-0000000000000000122
-rw-rw-r--. 1 pxj pxj    8813 12月  2 00:31 edits_0000000000000000123-0000000000000000196
-rw-rw-r--. 1 pxj pxj 1048576 12月  2 00:31 edits_0000000000000000197-0000000000000000197
-rw-rw-r--. 1 pxj pxj      42 12月  2 00:31 edits_0000000000000000198-0000000000000000199
-rw-rw-r--. 1 pxj pxj 1048576 12月  2 00:31 edits_0000000000000000200-0000000000000000200
-rw-rw-r--. 1 pxj pxj      42 12月  2 00:31 edits_0000000000000000201-0000000000000000202
-rw-rw-r--. 1 pxj pxj 1048576 12月  2 00:31 edits_0000000000000000203-0000000000000000203
-rw-rw-r--. 1 pxj pxj 1048576 12月  2 00:31 edits_0000000000000000204-0000000000000000204
-rw-rw-r--. 1 pxj pxj 1048576 12月  2 00:37 edits_inprogress_0000000000000000205
-rw-rw-r--. 1 pxj pxj    1880 12月  2 00:31 fsimage_0000000000000000202
-rw-rw-r--. 1 pxj pxj      62 12月  2 00:31 fsimage_0000000000000000202.md5
-rw-rw-r--. 1 pxj pxj    1880 12月  2 00:31 fsimage_0000000000000000203
-rw-rw-r--. 1 pxj pxj      62 12月  2 00:31 fsimage_0000000000000000203.md5
-rw-rw-r--. 1 pxj pxj       4 12月  2 00:33 seen_txid
-rw-rw-r--. 1 pxj pxj     206 12月  2 00:31 VERSION
[pxj@pxj31 /home/pxj/tmp/dfs/name/current]$

hadoop的hdfs架构相关推荐

  1. 深入理解Hadoop之HDFS架构

    Hadoop分布式文件系统(HDFS)是一种分布式文件系统.它与现有的分布式文件系统有许多相似之处.但是,与其他分布式文件系统的差异是值得我们注意的: ♦  HDFS具有高度容错能力,旨在部署在低成本 ...

  2. Hadoop:HDFS的概念理解和体系架构-成都加米谷大数据分享

    HDFS是什么? HDFS 全称 Hadoop Distributed File System ,简称HDFS,是一个分布式文件系统.它是谷歌的GFS提出之后出现的另外一种文件系统.它有一定高度的容错 ...

  3. Hadoop核心之HDFS 架构设计

    概述:HDFS即Hadoop Distributed File System分布式文件系统,它的设计目标是把超大数据集存储到分布在网络中的多台普通商用计算机上,并且能够提供高可靠性和高吞吐量的服务.分 ...

  4. 大数据运维架构师培训(1):Zookeeper,Hadoop(HDFS,MR,Yarn)

    一.风哥大数据运维架构师实战培训专题2.0介绍 课程背景: 为满足想学习和掌握大数据运维与体系架构的学员,风哥特别设计的一套比较系统的大数据库运维培训课程. 课程目标: 本套风哥大数据运维架构师实战培 ...

  5. java基础巩固-宇宙第一AiYWM:为了维持生计,大数据Hadoop之HDFS分布式文件系统(HDFS读写流程、主从集群两种问题“单点故障”及“压力过大内存受限”、HDFS的架构设计)~整起

    Hadoop之HDFS 目录 一.大数据 二.HADOOP 三.HDFS 1.HDFS基本概念 2.HDFS的架构设计 3.HDFS自己对于上面两种数据持久化技术的实现: 4.HDFS读写流程 5.H ...

  6. 推荐系统lambda架构学习笔记之Hadoop、HDFS、YARNMapReduce(三)

    Hadoop Hadoop介绍 Hadoop名字的由来 作者:Doug cutting Hadoop项目作者的孩子给一个棕黄色的大象样子的填充玩具的命名 Hadoop的概念: Apache™ Hado ...

  7. Hadoop技术内幕:深入解析Hadoop Common和HDFS架构设计与实现原理

    <Hadoop技术内幕:深入解析Hadoop Common和HDFS架构设计与实现原理> 基本信息 作者: 蔡斌 陈湘萍 出版社:机械工业出版社 ISBN:9787111417668 上架 ...

  8. Hadoop的基础架构

    Hadoop这个名字现在对很多开发者来说,并不陌生,但是很多开发者对其工作原理和架构并不了解.Hadoop怎么实现的分布式存储和分布式计算,其计算性能为什么会提高那么多.本文将从其基本工作原理方面解释 ...

  9. Hadoop之HDFS面试知识复习

    Hadoop之HDFS面试知识复习 目录 HDFS的存储机制 secondary namenode工作机制 NameNode与SecondaryNameNode 的区别与联系? hdfs整体架构介绍 ...

最新文章

  1. C++ 自己重写Vector
  2. Java延迟加载的最佳实践应用示例!
  3. 【正一专栏】第1球和第500球价值一样
  4. 《Objective-c》-(第一个OC程序)
  5. IOS开发(63)之GCD执行延迟操作
  6. Linux中文件颜色所代表的属性和颜色
  7. 【每日算法Day 87】今天我脱单了,所以大家不用做题了!
  8. OSI七层模型:TCP/IP HTTP WebSocket MQTT
  9. LeetCode答案汇总(持续更新...)
  10. 支付宝出征世界杯!白岩松:“中国除了足球队没去,其他都去了”
  11. 12000字深度研究六大消费品牌,挖掘私域战略价值
  12. Android编程 不显示菜单,网易MuMu模拟器不显示Menu(菜单)键的解决办法
  13. 往届毕业生档案去向查询网_往届毕业生档案在哪里可以查吗
  14. 学生HTML个人网页作业作品 基于HTML+CSS+JavaScript明星个人主页(15页)
  15. 计算机课程进制的转换,计算机课程设计 进制转换
  16. caffe学习(4)数据层
  17. h5微信本地调试 vue_VUE开发微信H5页面总结
  18. 充气娃娃?Python告诉你到底有多爽......
  19. 《我编程,我快乐》 摘抄
  20. [转]海尔集团CEO张瑞敏演讲《人不成熟的几大特征》

热门文章

  1. 全国计算机比赛ccf比赛时间,2019年全国青少年信息学奥林匹克相关通知
  2. 【Unity 资源分享】 | Unity 精品写实动物模型+全套动画 资源分享
  3. 程序员接私活的一些平台和建议,千万要注意,别掉坑里!
  4. 【蓝桥杯真题】 (一) 递归与递推 (Acwing 蓝桥杯 笔记)
  5. android仿墨迹天气预报,手机天气预报 墨迹天气安卓版使用教程
  6. 深度强化学习主流算法介绍(二):DPG系列
  7. 搜索引擎下拉食云速捷详细_下拉框搜索四云 速捷超稳,下拉框搜索康云速捷优选...
  8. 测试显卡性能的两种方法
  9. 全面解读Facebook加密货币——从零开始构建Libra区块链
  10. 【PIC单片机】-- ADC相关知识