大数据学习Hadoop之HDFS详解二
一、HDFS基础
5、HDFS的写流程
5.1、写流程图:
1、client 调用FileSystem.create(filepath)方法,与namenode进行rpc通信,namenode check该路径的文件是否存在以及有没有权限创建该文件;如果能创建,就创建一个新文件,但并不关联任何block,返回一个FSdataoutputstream对象;否则,就返回错误的信息。
2、client调用FSDataoutputstream对象的write()方法,会将第一个块写入datanode,第一个Datanode写完传给第二个节点,第二个写完传给第三节点,当第三个节点写完返回一个ackpacket给第二个节点,第二个返回一个ackpacket给第一个节点,第一个节点返回ackpacket给FSDataOutputStream对象,意思标识第一个块写完,副本数为3;然后剩余的块依次这样写;
3、当向文件写入数据完成后,client调用FSDataOutputStream.close()方法,关闭输出流,flush缓存区的数据包;
4、在调用filesystem.complete()方法,告诉namenode节点写入成功。
写操作对于client端也是透明的。
5.2、测试root用户对hdfs是否有读写权限:
5.2.1、读/目录数据:
hdfs dfs -ls /
root 用户有读取hdfs的权限.
5.2.2、向/目录中写入数据:
hdfs dfs -put 1.sh /
root用户没有写入数据的权限。
查看hdfs/目录的权限和属性:
用户为hadoop 权限为rw 用户组为supergroup r 其他用户只有r的权限。
5.2.3、解决用root用户上传数据的问题,:
方法一、使用hadoop用户的权限执行操作
su - hadoop -c "hdfs dfs -put /tmp/1.sh /"
方法二、在hdfs/目录下创建,专门用户root用户操作是文件夹:
hdfs dfs -mkdir /root
hdfs dfs -chown -R root:root /root
在/tmp文件夹下创建2.sh
在root用户下上传到hdfs/目录下:
6、pid:
6.1、pId文件的存储目录
pid默认的存储目录在/tmp目录
pid内容为进程号
6.2、删除pid文件,进程会停止吗?还能提供服务吗?
进程不会停止,服务正常。
测试:删除/tmp目录下的进程文件,查看进程和hdfs的读权限:
rm *.pid
jps
hdfs dfs -ls /
二、Hadoop命令:
1、查看命令如何使用:
hdfs dfs
2、查看版本号
hadoop version
3、查看hadoop支持哪些压缩格式:
hadoop checknative
4、查看环境
hadoop classpath
如果缺少jar包,可以通过这个命令进行添加
三、hdfs常用命令
1、查看帮助:
2、安全模式命令
hdfs dfsadmin
报告集群运行状况:
hdfs dfsadmin -report
3、检查文件损坏的块数:
4、文件系统命令:
hdfs dfs