目录
https://www.bilibili.com/video/bv1wy4y197g7?p=26
切换到hadoop用户
su - hadoop
进程启停管理
一键启停脚本
hadoop hdfs组件内置了hdfs集群的一键启停脚本。
- $hadoop_home/sbin/start-dfs.sh,一键启动hdfs集群
执行原理:- 在执行此脚本的机器上,启动secondarynamenode
- 读取core-site.xml内容(fs.defaultfs项),确认namenode所在机器,启动namenode
- 读取workers内容,确认datanode所在机器,启动全部datanode
start-dfs.sh
- $hadoop_home/sbin/stop-dfs.sh,一键关闭hdfs集群
执行原理:- 在执行此脚本的机器上,关闭secondarynamenode
- 读取core-site.xml内容(fs.defaultfs项),确认namenode所在机器,关闭namenode
- 读取workers内容,确认datanode所在机器,关闭全部namenode
stop-dfs.sh
单进程启停
除了一键启停外,也可以单独控制进程的启停。
- $hadoop_home/sbin/hadoop-daemon.sh,此脚本可以单独控制所在机器的进程的启停
用法:
hadoop-daemon.sh (start|status|stop) (namenode|secondarynamenode|datanode)
start启动、status状态、stop停止
hadoop-daemon.sh start namenode
hadoop-daemon.sh start secondarynamenode
hadoop-daemon.sh start datanode
hadoop-daemon.sh status namenode
hadoop-daemon.sh status secondarynamenode
hadoop-daemon.sh status datanode
hadoop-daemon.sh stop namenode
hadoop-daemon.sh stop secondarynamenode
hadoop-daemon.sh stop datanode
- $hadoop_home/bin/hdfs,此程序也可以用以单独控制所在机器的进程的启停
用法:
hdfs --daemon (start|status|stop) (namenode|secondarynamenode|datanode)
hdfs --daemon start namenode
hdfs --daemon start secondarynamenode
hdfs --daemon start datanode
hdfs --daemon status namenode
hdfs --daemon status secondarynamenode
hdfs --daemon status datanode
hdfs --daemon stop namenode
hdfs --daemon stop secondarynamenode
hdfs --daemon stop datanode
文件系统操作命令
hdfs文件系统基本信息
- 如何区分呢?
linux:file:///
hdfs:hdfs://namenode:port/ - 如上路径:
linux:file:///usr/local/hello.txt
hdfs:hdfs://node1:8020/usr/local/hello.txt
介绍
关于hdfs文件系统的操作命令,hadoop提供了2套命令体系
hadoop命令(老版本用法),用法:hadoop fs [generic options]
hadoop fs
hdfs命令(新版本用法),用法:hdfs dfs [generic options]
hdfs dfs
创建文件夹
用法:
hadoop fs -mkdir [-p] <path> ...
hdfs dfs -mkdir [-p] <path> ...
path 为待创建的目录
-p选项的行为与linux mkdir -p一致,它会沿着路径创建父目录。
先启动hadoop集群
start-dfs.sh
创建linux系统的文件
hadoop fs -mkdir -p file:///home/hadoop/test1
ls
创建hdfs文件系统的文件
hadoop fs -mkdir -p hdfs://node1:8020/test/test2
不写协议头自动识别为需要创建的是hdfs文件系统的文件
hadoop fs -mkdir -p /hello/world/test3
查看指定目录下内容
用法:
hadoop fs -ls [-h] [-r] [<path> ...]
hdfs dfs -ls [-h] [-r] [<path> ...]
path 指定目录路径
-h 人性化显示文件size
-r 递归查看指定目录及其子目录
hadoop fs -ls /
hadoop fs -ls /hello
hadoop fs -ls /hello/world
hadoop fs -ls /test
hadoop fs -ls -r /
上传文件到hdfs指定目录
hadoop fs -put [-f] [-p] <localsrc> ... <dst>
hdfs dfs -put [-f] [-p] <localsrc> ... <dst>
-f 覆盖目标文件(已存在下)
-p 保留访问和修改时间,所有权和权限。
localsrc 本地文件系统(客户端所在机器)
dst 目标文件系统(hdfs)
hadoop fs -put file:///home/hadoop/test.txt hdfs://node1:8020/
hadoop fs -put ./test2.txt /
查看hdfs文件内容
用法:
hadoop fs -cat <src> ...
hdfs dfs -cat <src> ...
读取指定文件全部内容,显示在标准输出控制台。
hadoop fs -cat /test.txt
读取大文件可以使用管道符配合more
hadoop fs -cat <src> | more
hdfs dfs -cat <src> | more
把test2.txt的内容追加到test.txt,多执行几次,test.txt文件变得很大。
cat test2.txt >> test.txt
覆盖原文件上传
hadoop fs -put -f ./test.txt /
翻页查看,按空格键查看下一页
hadoop fs -cat /test.txt | more
下载hdfs文件
hadoop fs -get [-f] [-p] <src> ... <localdst>
hdfs dfs -get [-f] [-p] <src> ... <localdst>
下载文件到本地文件系统指定目录,localdst必须是目录
-f 覆盖目标文件(已存在下)
-p 保留访问和修改时间,所有权和权限。
hadoop fs -get /test2.txt .
拷贝hdfs文件
hadoop fs -cp [-f] <src> ... <dst>
hdfs dfs -cp [-f] <src> ... <dst>
-f 覆盖目标文件(已存在下)
hadoop fs -cp /test2.txt /hello/
复制过去,同时改名
hadoop fs -cp /test2.txt /hello/a.txt
追加数据到hdfs文件
hadoop fs -appendtofile <localsrc> ... <dst>
hdfs dfs -appendtofile <localsrc> ... <dst>
将所有给定本地文件的内容追加到给定dst文件。
dst如果文件不存在,将创建该文件。
如果为-,则输入为从标准输入中读取。
hadoop fs -appendtofile append.txt /test2.txt
报错了,修改配置文件。
cd /export/server/hadoop/etc/hadoop
vim hdfs-site.xml
添加以下内容
<property>
<name>dfs.support.append</name>
<value>true</value>
</property>
<property>
<name>dfs.client.block.write.replace-datanode-on-failure.policy</name>
<value>never</value>
</property>
<property>
<name>dfs.client.block.write.replace-datanode-on-failure.enable</name>
<value>true</value>
</property>
再次执行命令
hadoop fs -appendtofile append.txt /test2.txt
hadoop fs -cat /test2.txt
hdfs数据移动
hadoop fs -mv <src> ... <dst>
hdfs dfs -mv <src> ... <dst>
移动文件到指定文件夹下
可以使用该命令移动数据,重命名文件的名称
hadoop fs -mv /test.txt /test/
移动文件同时改名
hadoop fs -mv /test2.txt /test/a.txt
hdfs数据删除
hadoop fs -rm -r [-skiptrash] uri [uri ...]
hdfs dfs -rm -r [-skiptrash] uri [uri ...]
删除指定路径的文件或文件夹
-skiptrash 跳过回收站,直接删除
hadoop fs -rm -r /hello
回收站功能默认关闭,如果要开启需要在core-site.xml内配置:
vim /export/server/hadoop/etc/hadoop/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
其他命令
命令官方指导文档
https://hadoop.apache.org/docs/r3.3.4/hadoop-project-dist/hadoop-common/filesystemshell.html
hdfs web浏览
http://node1:9870/
除了使用命令操作hdfs文件系统外,在hdfs的web ui上也可以查看hdfs文件系统的内容。
使用web浏览操作文件系统,一般会遇到权限问题
这是因为web浏览器中是以匿名用户(dr.who)登陆的,其只有只读权限,多数操作是做不了的。
如果需要以特权用户在浏览器中进行操作,需要配置如下内容到core-site.xml并重启集群。
但是,不推荐这样做
hdfs webui,只读权限挺好的,简单浏览即可。
如果给与高权限,会有很大的安全问题,造成数据泄露或丢失。
hdfs权限
修改权限
在hdfs中,可以使用和linux一样的授权语句,即:chown和chmod
修改所属用户和组:
hadoop fs -chown [-r] root:root /xxx.txt
hdfs dfs -chown [-r] root:root /xxx.txt
修改权限
hadoop fs -chmod [-r] 777 /xxx.txt
hdfs dfs -chmod [-r] 777 /xxx.txt
hadoop fs -chown root:supergroup /test.txt
hadoop fs -chmod 777 /test.txt
发表评论