大数据学习Hadoop之HDFS详解二

一、HDFS基础

5、HDFS的写流程

5.1、写流程图:

大数据学习Hadoop之HDFS详解二


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 /

大数据学习Hadoop之HDFS详解二

root 用户有读取hdfs的权限.


5.2.2、向/目录中写入数据:

hdfs   dfs   -put   1.sh /

大数据学习Hadoop之HDFS详解二


root用户没有写入数据的权限。

查看hdfs/目录的权限和属性:

大数据学习Hadoop之HDFS详解二


用户为hadoop  权限为rw    用户组为supergroup r  其他用户只有r的权限。


5.2.3、解决用root用户上传数据的问题,:

方法一、使用hadoop用户的权限执行操作

su - hadoop  -c  "hdfs dfs -put  /tmp/1.sh  /"

大数据学习Hadoop之HDFS详解二


方法二、在hdfs/目录下创建,专门用户root用户操作是文件夹:

hdfs  dfs -mkdir   /root

hdfs dfs -chown -R root:root /root

大数据学习Hadoop之HDFS详解二


在/tmp文件夹下创建2.sh 

大数据学习Hadoop之HDFS详解二


在root用户下上传到hdfs/目录下:

大数据学习Hadoop之HDFS详解二


大数据学习Hadoop之HDFS详解二


6、pid:

6.1、pId文件的存储目录

大数据学习Hadoop之HDFS详解二


pid默认的存储目录在/tmp目录

pid内容为进程号


6.2、删除pid文件,进程会停止吗?还能提供服务吗?

进程不会停止,服务正常。

测试:删除/tmp目录下的进程文件,查看进程和hdfs的读权限:

rm *.pid

jps

hdfs dfs -ls /

大数据学习Hadoop之HDFS详解二


二、Hadoop命令:

1、查看命令如何使用:

hdfs dfs 

大数据学习Hadoop之HDFS详解二


2、查看版本号

hadoop version

大数据学习Hadoop之HDFS详解二


3、查看hadoop支持哪些压缩格式:

hadoop checknative

大数据学习Hadoop之HDFS详解二


4、查看环境

hadoop  classpath

大数据学习Hadoop之HDFS详解二

如果缺少jar包,可以通过这个命令进行添加


三、hdfs常用命令

1、查看帮助:

大数据学习Hadoop之HDFS详解二


2、安全模式命令

hdfs dfsadmin

大数据学习Hadoop之HDFS详解二


报告集群运行状况:

hdfs dfsadmin -report

大数据学习Hadoop之HDFS详解二


3、检查文件损坏的块数:

大数据学习Hadoop之HDFS详解二


4、文件系统命令:

hdfs dfs

大数据学习Hadoop之HDFS详解二