HDFS
1.snn流程
**fsimage:**在nn启动是对整个文件系统的快照。
作用:就是Hadoop文件系统元数据的一个永久的检查点,其中包含Hadoop文件系统中的所有目录和文件idnode的序列化信息。
editlog: nn启动后,对文件系统的系列操作,都会存储在editlog中。
作用:存放Hadoop文件系统的虽有跟新操作的路径,文件系统客户端执行的所有写操作首先会被记录到edits文件中。
作用:
在nn启动的时候,nn会将fsimage文件中的内容加载到内存中,之后再执行edits文件中的各项操作,使得内存中的元数据和实际的同步,存在内存中的元数据支持客户端的读操作。
其中fsimage和edits存放的目录在tmp/dfs/name/current
snn就是合并fsimage和edits,之后再将合并后的fsimage推送给nn,在nn中生成fsimage。其中edits中显示inprogress,表示正在写的状态
2.Hadoop fs 指令操作
bin:可执行脚本 命令
sbin:放置HDFS的启动 停止 重启脚本
etc:配置文件夹 也有的叫conf/config
lib:lib目录 放置jar包
logs:放置日志
share:源码的编译文件
主要关心bin etc lib
说明:
cd bin #后缀为.cmd这种都可以删除不要,是win中的应用脚本
2.1查看文件(ls)
hadoop fs -ls /==hdfs dfs -ls /
2.2Hadoop文件下载到Hadoop
hadoop fs -get /1.log ./2.log #./表示当前路径并重新命名
-get -copyToLocal #这两个等价,是相同的
-put -copyFromLocal
2.3查看文件大小(du)
hadoop fs -du /
2.4其他(生产中应用最多的)
hadoop fs #这个是下面命令都需要带的前缀
如:hadoop fs -ls / #查看hadoop中的根目录文件
-get #下载
-put #上传
-ls #查看文件夹
-mkdir #创建文件夹
-mv #移动
-cp #拷贝 为了保险起见,一般都是用拷贝,尽量不用移动
-rm #删除 -rm -rf r:表示删除文件夹 f:表示强制删除
---------------------------------------------
cd bin/hadoop
hadoop checknative #查看是否支持压缩的格式
如果需要,则在hadoop编译进行设置压缩格式
-rm [-f] [-r|-R] [[-skipTrash] <scr>...] #-skipTrash:是一个回收站,在生产上是必须要开启,因为一旦删除,就无法恢复,其中再生产中,一般回收机制设置为7天。
配置:
cd app/hadoop/etc/hadoop
vi core-site.xml
configuration>
<property>
<name>fs.trash.interval</name>
<value>10080</value>
</property>
</configuration>
------------------------------
备注:1>单位是minutes
2>默认的是0,表示回收站被禁用了
3>生产中回收机制一定要开启
4>慎用-skipTrash, 不要加这个!!!
配置完以后,需要重启HDFS
sbin/stop-dfs.sh
sbin/start-dfs.sh
3.hdfs指令操作
3.1安全模式
安全模式:可以查看,不能进入写模式
su - hadoop
hdfs dfsadmin #查看
hdfs dfsadmin -report #查看系统的健康状况,查看子节点是否存活,达到监控的目的
【-safeadmin <enter | leave | get | wait>】
安全模式:当hdfs进入安全模式,别人是不能进入写模式,但是可以进入读模式,其实也就是一种自我保护。
hdfs dfsadmin -safemode enter #进入安全模式
hdfs dfs -put 1.log / #则无法将linux文件放置到hadoop环境当中
错误: Name node is in safe mode
解决方法: hdfs dfs -safemode leave
应用场景:什么时候会安全模式
1.hdfs故障 检查nn的log日志 #故障场景
解决:根据错误去看看尝试是否能够解决,并尝试先手动查看安全模式
2>业务场景
集群在维护时,就让nn进入安全模式
hdfs安全模式的维护窗口的场景一般选择hdfs的下游,尽量选择最小化的窗口维护。
3.2各节点
cd app/hadoop/sbin
./start-balancer.sh #默认threshold=10
每个节点的磁盘使用率-平均的磁盘使用率<10%
1.生产上,./start-balance.sh -threshold 10.0 放到业务低估比如凌晨,去做平衡操作。定时每天的
2.调整平衡的网络宽带 hdfs-site.xml
dfs.datanode.balance.bandwidthPerSec 10m==>50m
3.3单个dn的多块磁盘的数据平衡
在投产中使用
这里暂时我先不学