HDFS详解一

block

bolck块一般默认为128M,运行一个文件会把这个文件分成一个一个的块来运行
比如160M大小的文件会分成俩个块,第一个是占满的,而剩下的就给第二个块,也就是第一个块128M,第二个快32M

那这时我们想一个问题,文件小而且多会造成什么问题?
比如我们有1亿个小文件,每个文件250个字节,假设我们的namenode是4个g,这时就会把它挤爆,所以我们必须要把小文件给合并成一个差不多的文件才行,不过生产上面一般不会
那了解了小文件的危害我们要说一下怎么解决?
解决的办法:
1.在hdfs之前合并
2.在spark service服务合并
3.通过调度,比如每天调度合并15天

小文件讲完了接下来当然还有大文件
大文件的问题就是如果分成128M的块,那内存的占用很高,所以解决办法很简单,就是可以把我们的块调大,一般调到256M即可

HDFS的架构

hdfs是主从架构关系
namenode(大哥)负责名称的命名空间
1.文件名称
2.块的副本数
3.目录结构
4.块对应运行在datanode节点
5.对datanode进行动态维护

datanode(小弟)负责干活
1.datanode会3秒给namenode发送一次心跳包,证明自己还活着
2.每隔6小时会发送一次快报告blockreport

sercondarynamenode(二哥)
负责给namenode检查editlogs进行合并再发送回去

检查日志的路径是[hadoop@hadoop002 dfs]$ cd /tmp/hadoop-hadoop/dfs
然后我们会看到

[hadoop@hadoop002 dfs]$ ll
total 12
drwx------. 3 hadoop hadoop 4096 Jan  4 19:47 data
drwxrwxr-x. 3 hadoop hadoop 4096 Jan  4 19:47 name
drwxrwxr-x. 3 hadoop hadoop 4096 Jan  4 19:48 namesecondary

[hadoop@hadoop002 dfs]$ cd name/current/

cd进去后我们会看见

[hadoop@hadoop002 current]$ ll
total 11352
-rw-rw-r--. 1 hadoop hadoop      42 Jan  4 12:13 edits_0000000000000000001-0000000000000000002
-rw-rw-r--. 1 hadoop hadoop 1048576 Jan  4 12:13 edits_0000000000000000003-0000000000000000003
-rw-rw-r--. 1 hadoop hadoop      42 Jan  4 12:31 edits_0000000000000000004-0000000000000000005
-rw-rw-r--. 1 hadoop hadoop 1048576 Jan  4 12:59 edits_0000000000000000006-0000000000000000196
-rw-rw-r--. 1 hadoop hadoop 1048576 Jan  4 13:02 edits_0000000000000000197-0000000000000000197
-rw-rw-r--. 1 hadoop hadoop 1048576 Jan  4 13:03 edits_0000000000000000198-0000000000000000198
-rw-rw-r--. 1 hadoop hadoop      42 Jan  4 13:46 edits_0000000000000000199-0000000000000000200
-rw-rw-r--. 1 hadoop hadoop 1048576 Jan  4 13:46 edits_0000000000000000201-0000000000000000201
-rw-rw-r--. 1 hadoop hadoop 1048576 Jan  4 13:58 edits_0000000000000000202-0000000000000000202
-rw-rw-r--. 1 hadoop hadoop      42 Jan  4 18:11 edits_0000000000000000203-0000000000000000204
-rw-rw-r--. 1 hadoop hadoop      42 Jan  4 19:11 edits_0000000000000000205-0000000000000000206
-rw-rw-r--. 1 hadoop hadoop 1048576 Jan  4 19:11 edits_0000000000000000207-0000000000000000207
-rw-rw-r--. 1 hadoop hadoop      42 Jan  4 19:24 edits_0000000000000000208-0000000000000000209
-rw-rw-r--. 1 hadoop hadoop 1048576 Jan  4 19:24 edits_0000000000000000210-0000000000000000210
-rw-rw-r--. 1 hadoop hadoop      42 Jan  4 19:32 edits_0000000000000000211-0000000000000000212
-rw-rw-r--. 1 hadoop hadoop 1048576 Jan  4 19:32 edits_0000000000000000213-0000000000000000213
-rw-rw-r--. 1 hadoop hadoop      42 Jan  4 19:37 edits_0000000000000000214-0000000000000000215
-rw-rw-r--. 1 hadoop hadoop 1048576 Jan  4 19:37 edits_0000000000000000216-0000000000000000216
-rw-rw-r--. 1 hadoop hadoop      42 Jan  4 19:49 edits_0000000000000000217-0000000000000000218
-rw-rw-r--. 1 hadoop hadoop   13515 Jan  4 20:49 edits_0000000000000000219-0000000000000000329
-rw-rw-r--. 1 hadoop hadoop      42 Jan  4 21:49 edits_0000000000000000330-0000000000000000331
-rw-rw-r--. 1 hadoop hadoop 1048576 Jan  4 21:49 edits_inprogress_0000000000000000332
-rw-rw-r--. 1 hadoop hadoop    4102 Jan  4 20:49 fsimage_0000000000000000329
-rw-rw-r--. 1 hadoop hadoop      62 Jan  4 20:49 fsimage_0000000000000000329.md5
-rw-rw-r--. 1 hadoop hadoop    4102 Jan  4 21:49 fsimage_0000000000000000331
-rw-rw-r--. 1 hadoop hadoop      62 Jan  4 21:49 fsimage_0000000000000000331.md5
-rw-rw-r--. 1 hadoop hadoop       4 Jan  4 21:49 seen_txid
-rw-rw-r--. 1 hadoop hadoop     207 Jan  4 17:12 VERSION

其中-rw-rw-r--. 1 hadoop hadoop 1048576 Jan 4 21:49 edits_inprogress_0000000000000000332表示正在写,而这个正在写就是分割线标识符,表示0000000000000000332之前的都已经写好了

块的副本

首先为什么要有副本?
答:副本是为了避免机器出现崩溃等问题导致数据丢失,默认我们是生成三个副本
那我们副本需要怎么放置?
答:第一个副本一般放在自己datanode的机器中,第二和三个副本放在同一个机架不同机器上
因为副本也是会占用实际内存的,就相当于我们windows那样复制了一份,所以对于有时数据量实在是太多,可以把副本数减小为2个,这样可以让出我们的内存空间

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值