零.HDFS的Shell操作
一.进程启停管理
1.一键启停脚本
Hadoop HDFS组件内置了HDFS集群的一键启停脚本。
1)$HADOOP_HOME/sbin/start-dfs.sh
,一键启动HDFS集群
执行原理:
(1)在执行此脚本的机器上,启动SecondaryNameNode
(2)读取core-site.xml内容(fs.defaultFS项),确认NameNode所在机器,启动NameNode
(3)读取workers内容,确认DataNode所在机器,启动全部DataNode
2)$HADOOP_HOME/sbin/stop-dfs.sh
,一键关闭HDFS集群
执行原理:
(1)在执行此脚本的机器上,关闭SecondaryNameNode
(2)读取core-site.xml内容(fs.defaultFS项),确认NameNode所在机器,关闭NameNode
(3)读取workers内容,确认DataNode所在机器,关闭全部NameNode
2.单进程启停
除了一键启停外,也可以单独控制进程的启停。
- $HADOOP_HOME/sbin/hadoop-daemon.sh,此脚本可以单独控制所在机器的进程的启停
用法:hadoop-daemon.sh (start|status|stop) (namenode|secondarynamenode|datanode)
例如:hadoop-daemon.sh stop datanode
3.$HADOOP_HOME/bin/hdfs,此程序也可以用以单独控制所在机器的进程的启停
用法:hdfs --daemon (start|status|stop) (namenode|secondarynamenode|datanode)
例如:hdfs --daemon stop secondarynamenode
这里同理在node2和node3上尝试
4.HDFS文件系统基本信息
HDFS作为分布式存储的文件系统,有其对数据的路径表达方式。
1)HDFS同Linux系统一样,均是以/作为根目录的组织形式
关于HDFS文件系统的操作命令,Hadoop提供了2套命令体系
1)hadoop命令(老版本用法),用法:hadoop fs [generic options]
2)hdfs命令(新版本用法),用法:hdfs dfs [generic options]
5.创建文件夹
hadoop fs -mkdir [-p] <path> ...
hdfs dfs -mkdir [-p] <path> ...
path 为待创建的目录
-p选项的行为与Linux mkdir -p一致,它会沿着路径创建父目录。
#创建文件夹旧写法
hadoop fs -mkdir -p /itcast/bigdata
#创建文件夹新写法
hdfs fs -mkdir -p /itheima/hadoop
6.查看指定目录下内容
1)hadoop fs -ls [-h] [-R] [
2)hdfs dfs -ls [-h] [-R] [
path 指定目录路径
-h 人性化显示文件size
-R 递归查看指定目录及其子目录
7.上传文件到HDFS指定目录下
1)hadoop fs -put [-f] [-p] …
2)hdfs dfs -put [-f] [-p] …
-f 覆盖目标文件(已存在下)
-p 保留访问和修改时间,所有权和权限。
localsrc 本地文件系统(客户端所在机器)
dst 目标文件系统(HDFS)
hadoop fs -put words.txt /itcast
hdfs dfs -put file:///etc/profile hdfs://node1:8020/itcast
8.查看HDFS文件内容
1)hadoop fs -cat …
2)hdfs dfs -cat …
读取指定文件全部内容,显示在标准输出控制台。
hadoop fs -cat /itcast/words.txt
hdfs dfs -cat /itcast/profile
读取大文件可以使用管道符配合more,翻页查看;
1)hadoop fs -cat | more
2)hdfs dfs -cat | more
使用该命令,若要翻页,只需要按一下空格即可实现翻页;
9.下载HDFS文件
1)hadoop fs -get [-f] [-p] …
2)hdfs dfs -get [-f] [-p] …
下载文件到本地文件系统指定目录,localdst必须是目录
-f 覆盖目标文件(已存在下)
-p 保留访问和修改时间,所有权和权限。
10.拷贝HDFS文件
1)hadoop fs -cp [-f] …
2)hdfs dfs -cp [-f] …
-f 覆盖目标文件(已存在下)
11.追加数据到HDFS文件中
1)hadoop fs -appendToFile …
2)hdfs dfs -appendToFile …
将所有给定本地文件的内容追加到给定dst文件。
dst如果文件不存在,将创建该文件。
如果为-,则输入为从标准输入中读取。
12.HDFS数据移动操作
1)hadoop fs -mv …
2)hdfs dfs -mv …
移动文件到指定文件夹下
可以使用该命令移动数据,重命名文件的名称
13.HDFS数据删除操作
1)hadoop fs -rm -r [-skipTrash] URI [URI …]
2)hdfs dfs -rm -r [-skipTrash] URI [URI …]
删除指定路径的文件或文件夹
-skipTrash 跳过回收站,直接删除
回收站功能默认关闭,如果要开启需要在core-site.xml内配置:
<property>
<name>fs.trash.interval</name>
<value>1440</value>
</property>
<property>
<name>fs.trash.checkpoint.interval</name>
<value>120</value>
</property>
无需重启集群,在哪个机器配置的,在哪个机器执行命令就生效。
回收站默认位置在:/user/用户名(hadoop)/.Trash
vim /export/server/hadoop/etc/hadoop/core-site.xml
14.HDFS shell其它命令
1)命令官方指导文档
https://hadoop.apache.org/docs/r3.3.4/hadoop-project-dist/hadoop-common/FileSystemShell.html
2)提示
常见的操作自己最好能够记住,其他操作可以根据需要查询文档使用。
命令属于多用多会,孰能生巧,不用就忘。
15.HDFS WEB浏览
除了使用命令操作HDFS文件系统外,在HDFS的WEB UI上也可以查看HDFS文件系统的内容。
现在在命令行上传一个文件
hadoop fs -put test.txt /
hadoop fs -ls /
使用WEB浏览操作文件系统,一般会遇到权限问题
这是因为WEB浏览器中是以匿名用户(dr.who)登陆的,其只有只读权限,多数操作是做不了的。
如果需要以特权用户在浏览器中进行操作,需要配置如下内容到core-site.xml并重启集群
<property>
<name>hadoop.http.staticuser.user</name>
<value>hadoop</value>
</property>
但是,不推荐这样做
1)HDFS WEBUI,只读权限挺好的,简单浏览即可
2)如果给与高权限,会有很大的安全问题,造成数据泄露或丢失