HDFS

三个进程

NameNode (NN): 名称节点  --》client第一个操作的对象
DataNode (DN): 数据节点  --》存储数据的
Secondary NameNode(SNN): 第二名称节点 

组成:block(数据块)

大小:
64M
128M 
参数: dfs.blocksize

副本数
dfs.replication : 3
hadoop2.x一般公司就3个
hadoop3.0 : 1.5(新特性 纠删码) 1+0.5


架构设计
NameNode: 文件系统的命名空间  
 1.文件名称
 2.文件目录结构
 3.文件的属性(权限 创建时间 副本数)
 4.文件对应哪些数据块--》这些数据块对应哪些DataNode节点上
 不会持久化存储这个映射关系,是通过集群的启动和运行时,datanode定期发送blockReport给NN,
 以此NN在【内存】中动态维护这种映射关系。
          存储:维护文件系统树及整个树内的所有文件和目录,这些信息以两种文件形式永久保存在本地磁盘上命名空间镜像文件fsimage+编辑日志editlog

DataNode: 
存储: 数据块+数据块校验和
与NN通信:
1.每隔3秒发送一次心跳  参数可配置
2.每隔10次心跳发送一次blockReport  (30s)

Secondary NameNode:
        存储: 命名空间镜像文件fsimage+编辑日志editlog
        作用: 定期合并fsimage+editlog文件为新的fsimage,推送给NN,称为检查点,checkpoint
        参数: dfs.namenode.checkpoint.period: 3600 秒
3.文件读流程--》FSDataInputStream 
[hadoop@rzdatahadoop002 hadoop]$ bin/hdfs dfs -cat /test.log

3.1 client通过FileSystem.open(filePath)方法,去NN进行RPC通信,返回该文件的部分或者全部的block块,
也就是返回FSDataInputStream对象;

4.文件写流程--》FSDataOutputStream 
[hadoop@rzdatahadoop002 hadoop]$ bin/hdfs dfs -put rzdata.log /xxx
重命名

[hadoop@rzdatahadoop002 hadoop]$ bin/hdfs dfs -put rzdata.log /xxx01/
put: `/xxx01/': No such file or directory: `hdfs://192.168.137.201:9000/xxx01'

要求: 1.流程搞清楚
      2.文件写流程--》FSDataOutputStream
      3.校验文件是否存在和权限问题
      4.最后一步DFS.complete()方法,告诉NN节点写入成功
https://wenku.baidu.com/view/fabe57b004a1b0717fd5dda5.html
5.命令jps 查看进程
[hadoop@rzdatahadoop002 ~]$ jps 
54450 Jps
10611 NodeManager
5720 NameNode
6030 SecondaryNameNode
5823 DataNode
10511 ResourceManager

[hadoop@rzdatahadoop002 ~]$ which jps
/usr/java/jdk1.8.0_45/bin/jps

[root@rzdatahadoop002 ~]# cd /tmp/hsperfdata_hadoop/
[root@rzdatahadoop002 hsperfdata_hadoop]# ll
total 160
-rw-------. 1 hadoop hadoop 32768 Dec 17 10:11 10511
-rw-------. 1 hadoop hadoop 32768 Dec 17 10:11 10611
-rw-------. 1 hadoop hadoop 32768 Dec 17 10:11 5720
-rw-------. 1 hadoop hadoop 32768 Dec 17 10:11 5823
-rw-------. 1 hadoop hadoop 32768 Dec 17 10:11 6030

5.1 正常流程
[root@rzdatahadoop002 hsperfdata_hadoop]# jps
10611 -- process information unavailable
6325 jar
54487 Jps
5720 -- process information unavailable
6030 -- process information unavailable
5823 -- process information unavailable
10511 -- process information unavailable
[root@rzdatahadoop002 hsperfdata_hadoop]# ps -ef |greo 10611
找到该进程的使用用户名称

[root@rzdatahadoop002 hsperfdata_hadoop]# su - hadoop
[hadoop@rzdatahadoop002 ~]$ jps
10611 NodeManager
5720 NameNode
54524 Jps
6030 SecondaryNameNode
5823 DataNode
10511 ResourceManager
[hadoop@rzdatahadoop002 ~]$ 

5.2 异常流程
[root@rzdatahadoop002 rundeck]# jps
10611 -- process information unavailable
6325 jar
5720 -- process information unavailable
6030 -- process information unavailable
54591 Jps
5823 -- process information unavailable
10511 -- process information unavailable


[root@rzdatahadoop002 rundeck]# kill  -9 10611
[root@rzdatahadoop002 rundeck]# jps
10611 -- process information unavailable
6325 jar
5720 -- process information unavailable
54605 Jps
6030 -- process information unavailable
5823 -- process information unavailable
10511 -- process information unavailable
[root@rzdatahadoop002 rundeck]# ps -ef|grep 10611
root     54618 48324  0 10:15 pts/1    00:00:00 grep 10611
[root@rzdatahadoop002 rundeck]# 
10611信息残留,去/tmp/hsperfdata_hadoop文件夹删除该10611文件

[root@rzdatahadoop002 hsperfdata_hadoop]# ll
total 160
-rw-------. 1 hadoop hadoop 32768 Dec 17 10:17 10511
-rw-------. 1 hadoop hadoop 32768 Dec 17 10:15 10611
-rw-------. 1 hadoop hadoop 32768 Dec 17 10:17 5720
-rw-------. 1 hadoop hadoop 32768 Dec 17 10:17 5823
-rw-------. 1 hadoop hadoop 32768 Dec 17 10:16 6030
[root@rzdatahadoop002 hsperfdata_hadoop]# rm -f 10611
[root@rzdatahadoop002 hsperfdata_hadoop]# jps
54626 Jps
6325 jar
5720 -- process information unavailable
6030 -- process information unavailable
5823 -- process information unavailable
10511 -- process information unavailable
[root@rzdatahadoop002 hsperfdata_hadoop]# su - hadoop
[hadoop@rzdatahadoop002 ~]$ jps
54661 Jps
5720 NameNode
6030 SecondaryNameNode
5823 DataNode
10511 ResourceManager

登录一台机器,jps命令+ps命令,残留信息删除
参考: http://blog.itpub.net/30089851/viewspace-1994344/

6.hadoop和hdfs 文件系统命令
hadoop fs 
等价
hdfs dfs 

[hadoop@rzdatahadoop002 hadoop]$ bin/hdfs dfs -ls /
[hadoop@rzdatahadoop002 hadoop]$ bin/hdfs dfs -mkdir -p /rzdatadir001/001
[hadoop@rzdatahadoop002 hadoop]$ bin/hdfs dfs -cat /test.log

[hadoop@rzdatahadoop002 hadoop]$ bin/hdfs dfs -put rzdata.log1 /rzdatadir001/001
[hadoop@rzdatahadoop002 hadoop]$ bin/hdfs dfs -get /rzdatadir001/001/rzdata.log1 /tmp/    
[hadoop@rzdatahadoop002 hadoop]$ bin/hdfs dfs -get /rzdatadir001/001/rzdata.log1 /tmp/rzdata.log123   重命名

[-moveFromLocal <localsrc> ... <dst>]
[-moveToLocal <src> <localdst>]

删除:
1.配置回收站
[-rm [-f] [-r|-R] [-skipTrash] [-safely] <src> ...]

core-site.xml
fs.trash.interval : 10080

2.测试
bin/hdfs dfs -rm -r -f /xxxx  ---》进入回收站,是可以恢复的
bin/hdfs dfs -rm -r -f -skipTrash /xxxx ---》不进入回收站,是不可以恢复的

[-chmod [-R] <MODE[,MODE]... | OCTALMODE> PATH...]
[-chown [-R] [OWNER][:[GROUP]] PATH...]

1.启动顺序
start-all.sh
nn dn snn
rm nm

2.hdfs dfsadmin
[hadoop@rzdatahadoop002 ~]$ hdfs dfsadmin -report
[hadoop@rzdatahadoop002 ~]$ hdfs dfsadmin -safemode enter
Safe mode is ON
[hadoop@rzdatahadoop002 ~]$ hdfs dfs -ls /
Found 5 items
-rw-r--r--   1 hadoop supergroup          4 2017-12-17 09:38 /rzdata.log
drwxr-xr-x   - hadoop supergroup          0 2017-12-17 10:29 /rzdatadir001
drwx------   - hadoop supergroup          0 2017-12-16 10:23 /tmp
drwxr-xr-x   - hadoop supergroup          0 2017-12-16 10:23 /user
-rw-r--r--   1 hadoop supergroup          4 2017-12-17 09:39 /xxx

[hadoop@rzdatahadoop002 ~]$ echo "345">jepson.log
[hadoop@rzdatahadoop002 ~]$ hdfs dfs -put jepson.log /
put: Cannot create file/jepson.log._COPYING_. Name node is in safe mode.

[hadoop@rzdatahadoop002 ~]$ hdfs dfsadmin -safemode leave
Safe mode is OFF

[hadoop@rzdatahadoop002 ~]$ hdfs dfs -put jepson.log /
[hadoop@rzdatahadoop002 ~]$ hdfs dfs -ls /
Found 6 items
-rw-r--r--   1 hadoop supergroup          4 2017-12-19 21:19 /jepson.log
-rw-r--r--   1 hadoop supergroup          4 2017-12-17 09:38 /rzdata.log
drwxr-xr-x   - hadoop supergroup          0 2017-12-17 10:29 /rzdatadir001
drwx------   - hadoop supergroup          0 2017-12-16 10:23 /tmp
drwxr-xr-x   - hadoop supergroup          0 2017-12-16 10:23 /user
-rw-r--r--   1 hadoop supergroup          4 2017-12-17 09:39 /xxx
[hadoop@rzdatahadoop002 ~]$ 

1.多台机器的磁盘存储分布不均匀?
解决方案: 1.1 不加新机器,原机器的磁盘分布不均匀:
  [hadoop@rzdatahadoop002 ~]$ hdfs dfsadmin -setBalancerBandwidth  52428800
  Balancer bandwidth is set to 52428800
  [hadoop@rzdatahadoop002 ~]$ 
  [hadoop@rzdatahadoop002 sbin]$ ./start-balancer.sh  
  等价
  [hadoop@rzdatahadoop002 sbin]$ hdfs balancer 
  

  Apache Hadoop集群环境:  shell脚本每晚业务低谷时调度
  CDH集群环境: 忽略

  http://blog.itpub.net/30089851/viewspace-2052138/

 1.2 加新机器,原机器的磁盘比如450G(500G),现在的新机器磁盘规格是5T
   在业务低谷时,先将多台新机器加入到HDFS,做DN;
   然后选一台的DN下架掉,等待hdfs自我修复块,恢复3份(网络和io最高的,也是最有风险性的)

2.一台机器的多个磁盘分布不均匀?
 2.1.无论加不加磁盘,且多块磁盘的分布不均匀
https://hadoop.apache.org/docs/r3.0.0-alpha2/hadoop-project-dist/hadoop-hdfs/HDFSDiskbalancer.html
hdfs diskbalancer -plan node1.mycluster.com
hdfs diskbalancer -execute /system/diskbalancer/nodename.plan.json
Apache Hadoop3.x
CDH5.12+
[hadoop@rzdatahadoop002 sbin]$  hdfs fsck / 
Connecting to namenode via http://rzdatahadoop002:50070/fsck?ugi=hadoop&path=%2F
FSCK started by hadoop (auth:SIMPLE) from /192.168.137.201 for path / at Tue Dec 19 21:47:08 CST 2017
..........Status: HEALTHY

 Total size:    389306 B
 Total dirs:    16
 Total files:   10
 Total symlinks:                0
 Total blocks (validated):      10 (avg. block size 38930 B)
 Minimally replicated blocks:   10 (100.0 %)
 Over-replicated blocks:        0 (0.0 %)
 Under-replicated blocks:       0 (0.0 %)
 Mis-replicated blocks:         0 (0.0 %)
 Default replication factor:    1
 Average block replication:     1.0
 Corrupt blocks:                0
 Missing replicas:              0 (0.0 %)
 Number of data-nodes:          1
 Number of racks:               1
FSCK ended at Tue Dec 19 21:47:08 CST 2017 in 16 milliseconds
The filesystem under path '/' is HEALTHY
[hadoop@rzdatahadoop002 sbin]$ 

 Corrupt blocks:               100
 Missing replicas:              20 (1.0 %) ==:>发邮件给管理员
 [hadoop@rzdatahadoop002 sbin]$  hdfs fsck / -delete
 [hadoop@rzdatahadoop002 sbin]$  hdfs dfs -get /xxx/xxx ./

 [hadoop@rzdatahadoop002 sbin]$ hdfs haadmin

打印出hadoop的环境变量
 [hadoop@rzdatahadoop002 sbin]$ hadoop classpath

A盘450G 
B盘400G
新来的data01,会选择B盘,让B盘追上A盘

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/31513228/viewspace-2149504/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/31513228/viewspace-2149504/

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值