02:hadoop的基本使用

1.启动和关闭hadoop进程

1.启动|关闭 Hadoop 所有的服务

#启动所有进程
start-all.sh
#关闭所有进程
stop-all.sh
-
jps命令查看启动的节点情况

2.启动|关闭 HDFS 的服务

#启动
start-dfs.sh
#关闭
stop-dfs.sh

3.启动/关闭 YARN 的服务

在配置了 ResourceManager 的节点启动YARN

#进入启动目录
 cd /opt/module/hadoop-3.1.3/sbin/
 -
#启动
 start-yarn.sh
 #关闭
 stop-yarn.sh

查看 yarn 的 application 信息

##查看所有任务
 yarn application -list
##查看正在运行的任务
 yarn application -list -appStates RUNNING
##杀掉 yarn 正在运行的服务
yarn application -kill 任务id
##停止yarn 服务
 stop-yarn.sh

4.单点启动|关闭

单点代表只启动正在操作的主机,而不是主机集群

单点启动或者关闭Namenode/Datanode/SecondaryNamenode

 #单点启动DataNode
 hadoop-daemon.sh start/stop datanode
 -
 #单点启动namenode
 hadoop-daemon.sh start/stop namenode
 -
 #单点启动secondarynamenode
 hadoop-daemon.sh start/stop secondarynamenode

单点启动或者关闭Resourcemanager/Nodemanager

#单点启动nodemanager
yarn-daemon.sh start/stop nodemanager
-
#单点启动resourcemanager
yarn-daemon.sh start/stop resourcemanager

5.多点启动或者关闭

多点就代表整个集群启动或者关闭

启动Datanode 或 Nodemanager,在主节点执行

#启动datanode
hadoop-daemons.sh start/stop datanode
-
#启动nodemanager
yarn-daemons.sh start/stop nodemanager

2.查看帮助

hdfs dfs -help

3.目录操作

1.显示目录

 hdfs dfs -ls 目录名(必须是HDFS系统上的)
 -
hdfs dfs -ls /

2.创建目录

是在hadoop创建的这个大平台集群上面创建一个目录

hdfs dfs -mkdir 目录名
-
#在hadoop平台的根目录下创建一个input目录
hdfs dfs -mkdir /input
-
可以加参数-p,一次创建多级目录
hdfs dfs –mkdir –p /a/b

3.删除空目录

 hdfs dfs -rmdir /test

非空目录无法删除

4.文件操作

1.在指定目录下创建空文件

hdfs dfs -touchz /test/zs.txt
-
在test目录下创建一个zs.txt空文件

2.显示文件内容

hdfs dfs -cat /tmp/test_hdfs/testshear.txt
-
查看HDFS系统上/tmp/test_hdfs/testshear.txt的文件内容

如果文件为空,则不显示

3.在文件末尾添加内容

假设test1.txt文件里面内容如下
aaa
-
想要在test1.txt文件末尾添加bbb,在test2.txt文件里面写bbb
vim test2.txt   填写bbb
-
将本地的test2.txt文件内容,添加到HDFS系统的/tmp/test_hdfs/test1.txt文件内容末尾
hdfs dfs -appendToFile test2.txt /tmp/test_hdfs/test1.txt
-
#查看追加结果
hdfs dfs -cat /tmp/test_hdfs/test1.txt

(1)使用此命令时,集群数量不能小于 3 个。

(2)第一个参数是本地文件,第二个是 Hadoop 集群中(HDFS)的文件(不能是本地文件)

4.更改文件权限

#查看文件权限,查看/tmp/test_hdfs/testshear.txt的权限
hdfs dfs -ls /tmp/test_hdfs/testshear.txt
-
#使用chmod将权限更改为755,将/tmp/test_hdfs/testshear.txt文件权限更改为755
hdfs dfs -chmod 755 /tmp/test_hdfs/testshear.txt
-
#再次查看权限是否已经更改
hdfs dfs -ls /tmp/test_hdfs/testshear.txt

5.复制文件

是将HDFS系统上的文件A复制到HDFS系统上指定目录的B位置下

#将 HDFS系统下的testshear.txt 拷贝到HDFS系统下的/tmp 下
hdfs dfs -cp /tmp/test_hdfs/testshear.txt /tmp

(1)只用于同节点内的文件复制。

(2)拷贝相同的文件到同一个目录中会报错。

(3)-f 参数会直接忽视错误,不管文件是否存在,强行将文件拷贝过去。

6.移动(剪切)文件

将HDFS系统上的文件A 移动到HDFS系统上的目录B下

#将HDFS系统下的testshear.txt文件移动到HDFS系统下的/user目录下
hdfs dfs -mv /tmp/testshear.txt /user

(1)文件名相同会报错,并且没有-f 参数。

(2)若源目录和目标目录相同,相当于重命名操作(Linux 的mv 命令同样有剪切和重命名两个功能)。

7.删除文件或者目录

#删除文件
hdfs dfs -rm /tmp/merge_test/file01.txt
#删除文件夹
hdfs dfs -rm -R /tmp/merge_test

rm -r:只能用于删除文件,不能用于删除文件夹。只能删除指定的一个文件,不能删除同时多个文件

rm -R:既能用于删除文件,也能用于删除除文件夹。

5.文件上传和下载操作

1.将本地文件上传到HDFS系统上,本地文件保留

(1)文件存在时,如果再上传相同的文件,会报错。

(2)如果在 put 后加上-f,则会直接覆盖同名文件。

(3)如果上传路径中的目录已存在,却直接执行了命令,会创建出一个和路径名相同的文件:

 hdfs dfs -put testfile.zip /tmp/test_hdfs
 -
 将本地的testfile.zip文件上传到HDFS文件系统上的/tmp/test_hdfs目录下
 -
 hdfs dfs -ls /tmp/test_hdfs
 查看HDFS文件系统上的/tmp/test_hdfs目录下的文件

2.将HDFS系统上的文件下载到本地

#将HDFS系统上的/tmp/test_hdfs/testfile.zip 文件下载到本地的/home目录
hdfs dfs -get /tmp/test_hdfs/testfile.zip /home

3.将本地文件上传到HDFS系统,本地文件不保留

hdfs dfs -moveFromLocal testshear.txt /tmp/test_hdfs
-
将本地的testshear.txt文件上传到HDFS系统上的/tmp/test_hdfs目录下,而且本地的testshear.txt不存在了

与put 功能类似,不同之处在于moveFromLocal 会删除本地文件,而 put则不会。

4.合并下载一个文件夹中的多个文件

假设我们的/usr目录下有A.txt,B.txt这两个文件,我们想将它们联合下载下来

hdfs dfs -getmerge /usr Download.txt
-
将usr目录下的A.txt与B.txt追加在一个文件中Download.txt中,然后将Download.txt下载到本地

6.进阶操作

1.统计系统的可用空间

 hdfs dfs -df -h /

-h:以 K,M,G 为单位,提高信息的可读性

2.统计文件或者文件夹的大小

#统计/tmp/test_hdfs文件夹下的各个文件大小
hdfs dfs -du -s -h /tmp/test_hdfs

-h:以 K,M,G 为单位,提高信息的可读性;

加-s:查看文件夹大小;

不加-s:查看文件夹内每个文件大小。

3.统计指定目录下的文件个数

#统计/tmp/test_hdfs目录下的文件个数
hdfs dfs -count -h /tmp/test_hdfs

第一列 1 表示指定目录下文件夹的数量,第二列 2表示指定目录下文件的个数。

190.7 M 表示指定目录下所有文件占用的磁盘容量(不包括 HDFS 副本)。

4.杀死hadoop某个进程

#查看进程号
jps
#杀死指定进程
 hadoop job –kill [job-id]

5.设置HDFS副本数量

最后一个参数 无论是文件夹还是文件,本文件夹中所有文件的副本数都会被重新设置

#将/tmp/test_hdfs文件夹副本数量设置为4
hdfs dfs -setrep 4 /tmp/test_hdfs

6.指定目录查看数据块是否损坏

## 从根目录检查每个文件的数据块是否损坏、丢失
 hdfs fsck /

7.查看被检查文件的状态信息

## 注意-files 参数要写在文件信息后
hdfs fsck /test/word.txt -files

8.显示文件的块信息

## 注意要和-files 参数一起使用
> hdfs fsck /test/word.txt -files -blocks

9.显示块信息的位置

## 注意要和-files -blocks 参数一起使用
> hdfs fsck /test/word.txt -files -blocks -racks

7.查看hadoop支持的压缩方式

hadoop checknative

如果返回’true’,说明 Hadoop 支持此种压缩

8.虚拟内存修改

集群里面的所有主机都需要执行下面的所有操作

如果集群内存比较小,在运行一些占用比较大内存进程的时候,会产生内存溢出,所以需要设置一下虚拟内存,防止内存溢出现象,当然如果内存很足,则不用考虑

1.查看集群虚拟内存大小

free

使用 free 命令查看内存信息,Swap 就是 Linux 的虚拟内存,0 表示没有虚拟内存

2.创建虚拟内存缓存文件

我们在root目录下,创建一个swap缓存文件((每块 1M,总共 8192 块,共计:8192M),比较慢

#注意路径,是在/root目录下
dd if=/dev/zero of=/root/swapfile bs=1M count=8192
-
#创建好以后,查看文件大小,只需要看swapfile文件即可
ll /root -h

3.构建+激活 swap

第一步:构建 swap 格式刡 swapfile

 mkswap /root/swapfile

请添加图片描述

第二步:激活 swap

swapon /root/swapfile

请添加图片描述

第三步:查看激活信息

free

4.永久生效

第一步:保存配置

 vim /etc/fstab

第二步:修改

/swap none swap sw 0 0 这行(如果有的话)注释掉,新增一行

/root/swapfile swap swap defaults 0 0
-
注意路径

5.调整虚拟内存

集群里面的所有主机都需要修改

第一步:关闭swap

swapoff /root/swapfile
-
注意路径

第二步:删除 swapfile 文件

rm -rf /root/swapfile

第三步:重建虚拟内存

猜你喜欢

转载自blog.csdn.net/qq_63119830/article/details/130166246