当前位置:   article > 正文

Hdfs的常用命令和使用_hdfs cp命令

hdfs cp命令

 首先需要搭建hadoop环境

如果没有可以阅读这篇文章:https://blog.csdn.net/2202_75334392/article/details/132863607?spm=1001.2014.3001.5501

然后

启动Hadoop 

(1) Hadoop的三种Shell命令

1. hadoop fs

2. hadoop dfs

3. hdfs dfs

hadoop fs适用于任何不同的文件系统,比如本地文件系统和HDFS文件系统

hadoop dfs只能适用于HDFS文件系统

hdfs dfs跟hadoop dfs的命令作用一样,也只能适用于HDFS文件系统

(2)Hadoop HDFS的常用命令

常用命令 功能

-help [cmd] 显示命令的帮助信息

学习HDFS的相关指令,都可以通过-help查询语法,比如:

-appendToFile <localsrc> ... <dst>从本地追加信息到HDFS文件系统上

-ls(r) <path> 显示当前目录下所有文件

-du(s) <path> 显示目录中所有文件大小

-count[-q] <path> 显示目录中文件数量

-mv <src> <dst> 移动多个文件到目标目录

-cp <src> <dst> 复制多个文件到目标目录

-rm(r) 删除文件(夹)

-rmdir                   删除空文件夹

-put <localsrc> <dst> 本地文件复制到hdfs

-copyFromLocal <localsrc> ... <dst> 同put

-moveFromLocal 从本地文件移动到hdfs,本地的文件将被删除

-get <src> <localdst> 复制文件到本地,可以忽略crc校验

-getmerge <src> <localdst> 将源目录中的所有文件排序合并到一个文件中

-cat <src>     在终端显示文件内容

-text <src> 在终端显示文件内容

-copyToLocal [-ignoreCrc] <src> <localdst> 复制到本地

-moveToLocal <src> <localdst> 移动到本地,暂未

-mkdir <path> 创建文件夹

-touchz <path> 创建一个空文件

(3) 集群测试

(1)上传文件到集群

  • 上传小文件

本地Linux的准备工作:

  1. [atguigu@hadoophww ~]$ cd /usr/local/hadoop
  2. [atguigu@hadoophww hadoop]$ mkdir wcinput
  3. [atguigu@hadoophww hadoop]$ cd wcinput
  4. [atguigu@hadoophww wcinput]$ vim word.txt

word.txt中可以输入实验心得

 HDFS上的准备工作:

  1. [atguigu@hadoophww wcinput]$ hadoop fs -mkdir /wordcount
  2. [atguigu@hadoophww wcinput]$ hadoop fs -put word.txt /wordcount

 WEBUI查看

 上传大文件

上传一个超过128M的文件,验证下HDFS的分块。

[atguigu@hadoophww wcinput]$ hadoop fs -put hadoop-3.1.3.tar.gz /hww/hadoop

以此为例,来看下大型文件的分块和存储位置。

(2)上传文件后查看文件存放在什么位置

查看HDFS文件存储路径(根据每个人配置的时候,选定的datanode路径进行查询)

  1. [atguigu@hadoophww subdir0]$
  2. cd /usr/local/hadoop/tmp/dfs/data/current/BP-891536792-192.168.116.80-1661602338471/current/finalized/subdir0/subdir0

 (3)块拼接,验证文件的分块(根据自己上传文件的实际情况进行拼接)

  1. [atguigu@hadoophww subdir0]$ cat blk_1073741848>>tmp.tar.gz
  2. [atguigu@hadoophww subdir0]$ cat blk_1073741849>>tmp.tar.gz
  3. [atguigu@hadoophww subdir0]$ cat blk_1073741850>>tmp.tar.gz
  4. [atguigu@hadoophww subdir0]$ sudo tar -zxvf tmp.tar.gz

(4)下载

[atguigu@hadoophww ~]$ hadoop fs -get /hww/hadoop/hadoop-3.1.3.tar.gz /usr/local/hadoop/tmp

(5)执行wordcount程序 

  1. [atguigu@hadoophww ~]$ cd /usr/local/hadoop/share/hadoop/mapreduce
  2. [atguigu@hadoophww mapreduce]$ hadoop jar hadoop-mapreduce-examples-3.1.3.jar wordcount /wordcount /output2
  3. [atguigu@hadoophww mapreduce]$ hadoop fs -ls /output2
  4. [atguigu@hadoophww mapreduce]$ hadoop fs -cat /output2/part-r-00000

看到Map和Reduce都执行百分百的时候,说明mapreduce程序执行成功。

查看下结果

(6) 编写Hadoop集群常用脚本 (提升)

  1. Hadoop集群启停脚本(包含HDFS,Yarn,Historyserver):myhadoop.sh
  1. #!/bin/bash
  2. if [ $# -lt 1 ]
  3. then
  4. echo "No Args Input..."
  5. exit ;
  6. fi
  7. case $1 in
  8. "start")
  9. echo " =================== 启动 hadoop集群 ==================="
  10. echo " --------------- 启动 hdfs ---------------"
  11. ssh hadoop102 "/opt/module/hadoop-3.1.4/sbin/start-dfs.sh"
  12. echo " --------------- 启动 yarn ---------------"
  13. ssh hadoop103 "/opt/module/hadoop-3.1.4/sbin/start-yarn.sh"
  14. echo " --------------- 启动 historyserver ---------------"
  15. ssh hadoop102 "/opt/module/hadoop-3.1.4/bin/mapred --daemon start historyserver"
  16. ;;
  17. "stop")
  18. echo " =================== 关闭 hadoop集群 ==================="
  19. echo " --------------- 关闭 historyserver ---------------"
  20. ssh hadoop102 "/opt/module/hadoop-3.1.4/bin/mapred --daemon stop historyserver"
  21. echo " --------------- 关闭 yarn ---------------"
  22. ssh hadoop103 "/opt/module/hadoop-3.1.4/sbin/stop-yarn.sh"
  23. echo " --------------- 关闭 hdfs ---------------"
  24. ssh hadoop102 "/opt/module/hadoop-3.1.4/sbin/stop-dfs.sh"
  25. ;;
  26. *)
  27. echo "Input Args Error..."
  28. ;;
  29. esac

 2.查看三台服务器Java进程脚本:jpsall

  1. #! /bin/bash
  2. for host in hadoop102 hadoop103 hadoop104 hadoop100
  3. do
  4. echo --------- $host ----------
  5. ssh $host jps
  6. done

3,分发/home/atguigu/bin目录,保证自定义脚本在三台机器上都可以使用

[root@hadoop102 bin]# xsync /usr/local/hadoop/bin

4.xsync集群分发脚本

(1)需求:循环复制文件到所有节点的相同目录下

(2)需求分析:

(a)scp:需要多次执行

(b)期望脚本:

xsync要同步的文件名称

(c)期望脚本在任何路径都能使用(脚本放在声明了全局环境变量的路径)

  1. [atguigu@hadoop102 ~]$ echo $PATH
  2. /usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/home/atguigu/.local/bin:/home/atguigu/bin:/opt/module/jdk1.8.0_212/bin

(3)脚本实现

(a)在/home/atguigu/bin目录下创建xsync文件

[root@hadoop102 bin]# vim xsync

(b)修改脚本 xsync 具有执行权限

[root@hadoop102 bin]# chmod +x xsync

(c)测试脚本

[root@hadoop102 bin]# xsync /usr/local/hadoop/bin

将新增的对应文档都传输到集群的机器当中。

  

声明:本文内容由网友自发贡献,转载请注明出处:【wpsshop】
推荐阅读
相关标签
  

闽ICP备14008679号