HDFS详解一

1.hosts文件

无论Linux还是window系统都有hosts文件
cat /etc/hosts

Linux/mac:
局域网内网机器 /VM : 内网ip
云服务器: 内网ip + 外网ip(ssh链接、打开服务web界面、对外提供服务)

[root@hadoop001 ~]# cat /etc/hosts
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
#内网ip 
192.168.137.130 hadoop001
[root@hadoop001 ~]#
 hosts里面就配置内网ip

windows:打开外部界面
192.168.137.130:50070
ip记不住,想用机器名称,在win配置hosts
hadoop001:50070

C:\Windows\System32\drivers\etc 配置
192.168.137.130 hadoop001

在win上面的配置:
hadoop001假如是vm/内网机器 直接内网ip
假如是云主机 直接是外网ip 云主机是外部的,所以用外网ip

提醒:
apache hbase 开发
hosts文件 都要配置hbase集群的节点的ip hostname

2.块block

块的大小128M 默认
块的副本数3

<property>
        <name>dfs.blocksize</name>
        <value>134217728</value>
</property>
<property>
        <name>dfs.replication</name>
        <value>3</value>
</property>

比如一个文件260M
(生产上 hdfs不适合存储小文件?为什么不合适?如果真的有小文件,该怎么办?该怎么合并)
将文件以块的方式分割,去存储

 实际存储  规格

块A: 128M 128M A0 A1 A2
块B: 128M 128M B0 B1 B2
块C: 4M 128M C0 C1 C2

每个瓶子容量128ml 一碗水260ml
A 128ml
B 128ml
c 4ml

面试题:
一个文件160m,块大小128m,副本数2。
请问实际几个块,实际物理存储多少?
128m +128m
32m + 32
4个块: 160/128=1…32(进1,为2) 2*2=4

160m *2 =320m

3.HDFS架构设计

进程
namenode nn 名称节点
secondary namenode snn 第二名称节点
datanode dn 数据节点

主从架构
Rack : 机架 可以放多个主机 正常10个 GPU主机 5个
副本放置策略

nn: 文件系统的命名空间
a.文件名称
b.文件目录结构
c.文件属性 创建时间 权限 副本数
d.文件对应哪些数据块
–>数据块对应哪些datanode节点上
blockmap 块的映射
nn节点不会持久化存储这种映射关系
dn定期发送blockreport 块报告 给nn,
以此nn在【内存】中动态维护这种映射关系!

假设 nn 8G,在内存里面维护 小文件特别多撑 爆了

(生产上 hdfs不适合存储小文件?为什么不合适?如果真的有小文件,该怎么办?该怎么合并)
1个小文件: nn节点需要250字节
1亿: 1亿*250字节 大

假如真的有小文件 合并
100小文件合并一个大文件 : nn节点需要300字节
1亿/100 * 300字节 小

建议: 合并为一个文件尽量在块大小 120m <=128m

hdfs合并小文件那些方法

作用:
管理文件系统的命名空间,
维护文件系统树,以两种文件永久保存在磁盘上
命名空间镜像文件 fsimage
编辑日志editlog

[root@hadoop001 current]# pwd
/tmp/hadoop-root/dfs/name/current
[root@hadoop001 current]# ll
total 1040
-rw-r--r--. 1 root root 1048576 Feb 17 20:23 edits_inprogress_0000000000000000001  读和写的请求
-rw-r--r--. 1 root root     321 Feb 17 19:23 fsimage_0000000000000000000
-rw-r--r--. 1 root root      62 Feb 17 19:23 fsimage_0000000000000000000.md5
-rw-r--r--. 1 root root       2 Feb 17 19:23 seen_txid
-rw-r--r--. 1 root root     219 Feb 17 19:23 VERSION
[root@hadoop001 current]# 

dn:
存储: 数据块 和数据块的校验盒 验证是否损毁
与nn通信:
a.每隔3秒发送一个心跳 告诉老大我还存活
hadoop001:50070
b.每10次心跳发送一次当前节点的blockreport
作用: 读写文件的数据块

snn:
存储: fsiamge+editlog
作用: 定期合并fsimage+editlog文件为新的fsimage文件
推送个nn节点,简称为检查点 checkpoint
参数 :
dfs.namenode.checkpoint.period 3600s

editlog: 读写的记录
fsiamge: 读写的记录

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值