一、前言
1、启动虚拟机
2、连接工具
3、启动Hadoop并查询确保进程为5+1
start-all.sh
jps
练习完请一定 stop-all.sh
关掉hadoop进程
关掉虚拟机
再关机电脑
二、Hadoop命令行主命令
1、进入Hadoop安装目录的bin路径
cd /training/hadoop-3.3.0/bin/
2、查看低下的执行文件(这是两个小写的L)
ll
可以看到Hadoop有四个主命令
,其中hadoop和hdfs和HDFS有关
,mapred和yarn与数据处理有关
。
3、hadoop与hdfs
目前我们将学习这两个和HDFS有关的命令
1)当你输入hadoop回车,你可以看到如图
2)当你输入hdfs回车,你可以看到如图
你可以发现这两个主命令有共同和不同的点
其中共同点为:从命令都分为三类:管理l类Admin,客户类Client,进程类Daemon
其中不同点为:从命令数量和内容不同,以及使用范围不同
三、Hadoop命令行从命令
目前我们将学习HDFS文件系统的命令行语句,属于client类的从命令
1、根据上图你会发现hadoop
命令涉及到的HDFS从命令为fs
,hdfs
命令涉及到的HDFS从命令为dfs
为了方便未来好记,你可以记成所谓的固定搭配,即:
hdfs+dfs、hadoop+fs
2、那hdfs dfs 和 hadoop fs有什么不同呢?
hadoop fs 适用于所有文件系统(Windows文件系统,Linux文件系统,HDFS······)
hdfs dfs 只适用于HDFS
因为是学习HDFS的命令行,后续将大部分使用 hdfs dfs 搭配 ,所以如果看到代码是hdfs dfs开头的,或者hadoop fs 开头的说明是hadoop的代码,如果没有这个开头就是普通Linux命令
四、Hadoop端口
Hadoop中进程之间有沟通,会有内部端口使用tcp协议沟通,同时会有网页可视化文件系统方便使用
内部为8020,在core-site.xml里配置了
HTTP网页端口为9870,可以可视化看hadoop网页
可以用ip去访问,也可以用主机名访问,下面来配置一下主机名访问的东西
1、在window中进入C:\Windows\System32\drivers\etc找到hosts文件
2、右键,属性,把只读取消掉
3、点击安全,点击编辑,把用户名每一个都点一遍,把能勾的都勾上,然后应用,然后关闭
4、用管理员的记事本打开这个文件
5、添加自己的ip和主机名
6、在浏览器地址栏写主机名:9870,就可以打开了
7、这里可以看hadoop文件系统
五、Hadoop命令行语句
注意在hadoop中只有绝对路径,没有相对路径,涉及到路径的必须全部写全
hdfs + dfs + 主操作 + 从操作
1、-ls
查看某个路径下的所有文件文件夹
hdfs dfs -ls /
2、-mkdir
在某个路径下创建文件夹
hdfs dfs -mkdir /niit
3、-touch
、touchz
创建空文件
hdfs dfs -touch /niit/agatha
hdfs dfs -touchz /niit/aggie
touch和touchz的区别:
4、-put
将Linux文件传到HDFS
cd /
echo "this is a file" > file.txt
hdfs dfs -put /file.txt /niit
5、-cat
查看文件内容
hdfs dfs -cat /niit/file.txt
6、-text
查看文件转成文本后的内容
这里我们创建一个压缩包,并上传到HDFS,当你用cat查看你会发现他显示的是二进制内容,因为压缩的原因,而如果你使用text命令,会帮你转换成原本的文本显示
echo "this is a compressed file" | gzip > compress.gz
hdfs dfs -put /compress.gz /niit
hdfs dfs -cat /niit/compress.gz
hdfs dfs -text /niit/compress.gz
7、-tail
、-head
查看文件最后1KB、查看文件最开始1KB
hdfs dfs -tail /niit/file.txt
hdfs dfs -head /niit/file.txt
8、-test
检查 -e
检查是否存在-z
检查是否为空-d
检查是否是文件夹
1)-test -e 检查是否存在,存在为0,不存在为1
hdfs dfs -test -e /niit/agatha
调用系统变量?查看返回值
echo $?
有agatha文件,所以返回0
hdfs dfs -test -e /niit/haha
调用系统变量?查看返回值
echo $?
没有haha文件,所以返回1
2)-test -z检查是否为空,为空则返回0,不为空则返回1
hdfs dfs -test -z /niit/agatha
调用系统变量?查看返回值
echo $?
agatha为空所以返回0
hdfs dfs -test -z /niit/file.txt
调用系统变量?查看返回值
echo $?
file.txt不为空所以返回1
3)-test -d 检查是否是文件夹, 是文件夹为0,不是文件夹为1
hdfs dfs -test -d /niit/agatha
调用系统变量?查看返回值
echo $?
agatha为文件,所以返回1
hdfs dfs -test -d /niit
调用系统变量?查看返回值
echo $?
niit为文件夹,所以返回0
9、-count
计数文件夹,文件,文件夹总大小
hdfs dfs -count /niit
显示3个参数,参数1为包含该目录有几个文件夹,参数2为有几个文件,参数3为整个文件夹的大小
10、-du
显示文件夹下单个文件的字节大小 -h
将超过KB的字节转成KB\MB形式,-s
整个文件夹计算
显示三个参数,单个大小,单个大小*副本数量,文件路径
hdfs dfs -du /niit
hdfs dfs -du -h /niit
这里由于文件没有超过KB,所以没什么区别
hdfs dfs -du -h -s /niit
11、-copyFromLocal
从Linux传到HDFS
记得Hadoop命令是区分大小写的,后面不再提示
1)创一个文件夹用于传数据
hdfs dfs -mkdir /niit/learn
2)使用copyFromLocal上传
hdfs dfs -copyFromLocal Linux路径/文件(/file.txt) HDFS路径(/niit/learn)
运行后刷新页面就传过来了
12、-copyToLocal
从HDFS传到Linux
hdfs dfs -copyToLocal HDFS路径/文件(/niit/learn/file.txt) Linux路径(/tools)
13、-moveFromLocal
从Linux剪切到HDFS
(我就不运行了,不然文件剪切掉了,和copyFromLocal是同理的,只不过一个是复制一个是剪切)
hdfs dfs -mkdir /niit/learn1
hdfs dfs -moveFromLocal /file.txt /niit/learn1
14、-moveToLocal
从HDFS剪切到Linux
目前实现不了,因为HDFS剪切要删元数据,但是HDFS不允许,所以未实现这个命令,可以用copyToLocal替换,只需知道功能是从HDFS剪切到Linux就行
15、-cp
在HDFS里面进行文件复制
1)创一个文件夹/niit/learn1用于一会演示复制
hdfs dfs -mkdir /niit/learn1
2)cp命令HDFS内部复制
hdfs dfs -cp HDFS原路径/文件(/niit/learn/file.txt) 新HDFS路径(/niit/learn1)
复制过来啦
16、-getmerge
合并HDFS文件并将合并内容放到Linux文件里面
1)创几个文件用于一会合并用
echo "this is file1 content" > /file1.txt
echo "this is file2 content" > /file2.txt
echo "this is file3 content" > /file3.txt
2)把刚刚3个文件传进HDFS去
hdfs dfs -put /file1.txt /niit/learn
hdfs dfs -put /file2.txt /niit/learn
hdfs dfs -put /file3.txt /niit/learn
3)合并这个learn文件夹里的 file file1 file2 file3 并将结果放到Linux的文件里
这里我取名filemerge.txt,放到Linux/目录下
hdfs dfs -getmerge HDFS路径(/niit/learn) Linux路径/文件名(/filemerge.txt)
用Linux cat命令查看一下文件内容
cat /filemerge.txt
你就可以看到4个文件内容合成一个放这个文件里了
17、-rm
删除文件
hdfs dfs -rm HDFS路径/文件
18、-rmdir
删除空文件夹
hdfs dfs -rmdir HDFS空文件夹路径
19、-rm -r
删除非空文件夹( 旧命令为-rmr 现建议用 -rm -r)
hdfs dfs -rm -r HDFS路径
20、-expunge
清空回收站
回收站的真实功能需要在core-site.xml里配置点代码,不过只运行没有什么影响
配置的两个东西如下,只了解就行
1、fs.trash.interval
文件在回收站多久之后有资格被删除
2、fs.trash.checkpoint.interval
Hadoop多久去自动删除一次回收站的频率
21、一些偶尔用但要考的命令 背就行了
hdfs dfs -stat HDFS路径
查看文件或文件夹的最新编辑时间
hdfs dfs -setrep 数量 HDFS文件
编辑某单个文件副本数量
hdfs dfs -setrep -R 数量 HDFS文件夹
统一编辑某个文件夹内所有文件副本数量
hdfs dfs -chgrp
换组
hdfs dfs -chmod
换权限
hdfs dfs -chown
换用户
22、一些不常用但要考的命令 背就行了
hadoop distcp
跨集群文件复制
hdfs fsck
HDFS状态检查
hadoop balancer
hadoop资源平衡
hadoop jar
jar包运行
hdfs dfsadmin
hadoop客户端管理
hdfs dfsadmin -safemode leave
退出hadoop安全模式
hadoop namenode
hadoop和主节点有关的命令
hadoop namenode -format
hadoop格式化
hadoop job
hadoop和任务有关的命令