深入理解 HDFS(一):Block
HDFS使用类似Linux文件目录结构来抽象表示存储...
HDFS 使用类似 Linux 文件目录结构来抽象表示存储的数据结构,使用 inode 来表示目录或文件。
【资料图】
当你通过 hdfs dfs -copyFromLocal /
命令上传一份日志文件,还是使用计算引擎存储临时状态或计算结果,你看见 HDFS 目录上的所有文件,在实际存储时都会被切割加工成一个个的块(默认大小 128M,快还有副本默认 3 个),最后这些 block 的元数据信息会统一存储在 NameNode 中。
上面所说的块就是我们今天的主角 Block:HDFS 存储数据的基本单元,其核心属性有:
id:唯一标识,long 类型,默认情况下从 1073741824(2 的 30 次方)开始,每创建 1 个 block 自增 1;
blockName:块的名称,字符串 blk_ + id,例如 blk_1073741825、blk_1073741826 等;
numBytes:块的大小,long 类型,通常情况下 <= 128M,小于的原因要么文件本身大小 < 128M 或者是文件对应 blocks 的最后一块;
generationStamp:邮戳信息,long 类型,NameNode 中 GenerationStamp 类负责生成默认从 1000 开始,每创建 1 个 Block 自增 1,用于 DataNode 重新加入集群时检测过时的副本;
bcId:块集合 id 即 文件 inodeId,long 类型,NameNode 中 INodeId 负责生成默认从 16384(2 的 14 次方)开始,根目录 /
使用 16385,之后每创建目录或文件自增 1。
有的文件只有 1 个 block,有的却有多个,为什么会有多个?内部切割逻辑是什么?
我们假设变量 blockSize 表示 block 默认大小,文件如何切割会有以下 2 种情景:
情景 1:文件大小 <= blockSize
对于大小 <= blockSize 的文件只有 1 个 block。
情景 2:文件大小 > blockSize
对于大小 > blockSize 的文件至少有 2 个 block,block 数量计算可以理解为:(( 文件大小 * / blockSize)).longValue()
为了调研做了一些前期准备工作:
搭建 hadoop 伪分布式集群;
查看 hadoop 集群状态;
上传文件到 HDFS;
查看上传文件元数据信息。
参照 HDFS 官网在本地搭建了伪分布式集群,可使用命令 hdfs dfsadmin -report
查看集群状态:
上传本地 697M 的 hadoop 安装文件到 HDFS,通过 hdfs fsck
查看文件被切割成 6 个 block:
# 创建 /tmp 目录
hdfs dfs -mkdir /tmp
# 上传文件
hdfs dfs -copyFromLocal /tmp
# 查看是否上传成功
hdfs dfs -ls -h /tmp
# 查看实际的 Block
hdfs fsck /tmp/ -files -locations -blocks
那 HDFS 实际落盘文件存储在什么地方?
find /tmp -iname "blk_1073741825"
# 输出如下:
#/tmp/hadoop-root/dfs/data/current//current/finalized/subdir0/subdir0/blk_1073741825
cd /tmp/hadoop-root/dfs/data/current//current/finalized/subdir0/subdir0
ls -lh
从上图可以看出前 5 个 block 大小都是 128M,最后一个 block 是 57 M:697 - 128 * 5(MB)和预想的一致,此时还发现每个 block 都会对应 1 个数据文件和 1 个元数据文件,文件命名方式:
block 数据文件命名:blk_ + blockId
block 元数据文件命名:blk_ + blockId + _ + generationStamp + .meta
那 block 对应的数据文件仅仅是按 128M 大小进行切割吗?HDFS 有没有做其它的处理?
为了一探究竟,首先使用 split 命令按照 128M 大小切割原始的 hadoop 安装文件:
# 按照大小 128M 切割文件,文件切割后:
split -b 128M
# 对切割后的文件计算 md5
ls | grep xa | grep -v 'grep' | xargs md5sum
原始文件最终切割成 xaa...xaf 6 个文件,之后计算每个文件的 md5。
现在让我们计算 6 个 block 数据文件的 md5:
ls -lh
ls | grep blk | grep -Ev 'grep|*.meta' | xargs md5sum
复制代码
将上面的两种方式输出的结果进行对比,6 个文件的 md5 分别相等,那么可以说明:HDFS 仅仅是按照 128M blockSize 的大小做了切割。
如果上传 1 个 128M + 1 个字节的文件后,生成几个 block ?
# 生成 128M + 1 字节的文件,文件大小:128 * 1024 * 1024 + 1 = 134217729
fio -filename=/root/ -direct=1 -ioengine=libaio -bs=4k -size=134217729 -numjobs=1 -iodepth=16 -runtime=1 -thread -rw=write -group_reporting -name="write_test"
# 上传到 hdfs
hdfs dfs -copyFromLocal /tmp
# 查看究竟是几个 block
hdfs fsck /tmp/ -files -locations -blocks
看来 HDFS 切割 block 还是很认真的。
NameNode 存储元数据信息的文件前缀为 fsimage_,下面定位下目录:
# 定位目录
find /tmp -iname "fsimage_*"
# 定位个最大编号的
fsimage
ls -alht /tmp/hadoop-root/dfs/name/current/
# 进入 home 目录,不要对 hadoop 工作目录造成影响
cd ~
# 导出元数据信息到 xml 文件中
hdfs oiv -i /tmp/hadoop-root/dfs/name/current/fsimage_0000000000000000078 -o -p XML
# 打开 文件
vim # xml格式化 :%!xmllint --format %
打开 同样可以定位到 block 信息:
最后,大家如果有问题,欢迎留言讨论!
关键词:
仓储是现代物流建设中不可缺少的一个重要环节。为了鼓励仓储行业发展,今年7月底,河南出台的17条政策支持现代物流强省建设,第一条就提到
网易新闻 2022-09-162022年8月15日,A股上市公司美诺华(代码:603538 SH)发布2022年半年度业绩报告。2022年1月1日-2022年6月30日,公司实现营业收入8 97亿元,
资本邦 2022-08-17中新经纬11月24日电 (张澍楠)虽说三百六十行,行行出状元,但行业之间的差距,仍然很大。究竟什么行业“最香”?被视为“高富帅”的金
2021-11-24新华社郑州11月23日电(记者冯大鹏)在“狗咬人”舆情发酵后,23日晚,河南安阳通报了对涉“狗咬人”事件责任单位和责任人的处理决定。
2021-11-2411月23日晚,朝阳区来广营地区清苑路第五社区华贸城7号院6号楼正式解除管控。 11月23日,华贸城7号院6号楼583户管控居民进行了第四
2021-11-2411月23日大连市新冠肺炎疫情防控总指挥部发布,大连市严格落实新冠肺炎疫情防控各项措施,至2021年11月23日24时,大连市庄河市城关街道
2021-11-24根据云南省普洱市哀牢山 "11·15 "联合指挥部通报,2021年11月23日21时50分,4名遇难人员遗体已移交其所在单位。 【编辑:叶攀】
2021-11-24仓储是现代物流建设中不可缺少的一个重要环节。为了鼓励仓储行业发展,今年7月底,河南出台的17条政策支持现代物流强省建设,第一条就提到
网易新闻 2022-09-162022年8月15日,A股上市公司美诺华(代码:603538 SH)发布2022年半年度业绩报告。2022年1月1日-2022年6月30日,公司实现营业收入8 97亿元,
资本邦 2022-08-17中新经纬11月24日电 (张澍楠)虽说三百六十行,行行出状元,但行业之间的差距,仍然很大。究竟什么行业“最香”?被视为“高富帅”的金
2021-11-24中新网拉萨11月23日电 (记者 冉文娟)第三届拉萨市旅游行业服务技能大赛决赛11月23日精彩举行。百余名选手经过层层选拔,经历初赛、网
2021-11-24中新网长春11月23日电 (郭佳 吴林锡)东北虎豹国家公园23日全面启动2021-2022年今冬明春清山清套·打击乱捕滥猎专项行动。该行动旨在
2021-11-242021-11-24
中新网广州11月23日电 (蔡敏婕 罗瑞雄)“穗港澳职工交流服务基地”23日在广州挂牌。广州市总工会主席唐航浩称,设立穗港澳职工交流服
2021-11-24HDFS使用类似Linux文件目录结构来抽象表示存储...
交易商品牌 产地交货地最新报价DL-酒石酸 99...
在“八一”建军节即将到来之际,为了进一步增...
黄金前7个月走势可谓一波三折,年初由于美联储...
8月1日,理想汽车公布2023年7月交付数据。7月...
山西长子“羊倌”养羊20余年 带动700余户养殖户发“羊财”
上海首个“两山”实践创新基地成功创建
黄埔海关破获案值5.5亿元走私进口二手挖掘机案
绛州鼓乐搭起晋港青少年文化交流桥梁
中国援建老挝铁道职业技术学院 为老培养铁路技术人才
Copyright 2015-2022 中公仓储网版权所有 备案号:沪ICP备2022005074号-18 联系邮箱:5855973@qq.com