Hdfs的常用命令和使用

本文详细介绍了如何搭建Hadoop环境,包括启动Hadoop的三种Shell命令,如hadoopfs、hadoopdfs和hdfsdfs的区别,以及HDFS的常用命令,如文件上传、查看、复制、删除等。还展示了如何在Hadoop集群中进行文件操作和执行WordCount示例。最后,给出了Hadoop集群管理和脚本编写的例子。
摘要由CSDN通过智能技术生成

 首先需要搭建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的准备工作:

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

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

 HDFS上的准备工作:

[atguigu@hadoophww wcinput]$ hadoop fs -mkdir /wordcount
[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路径进行查询)

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

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

[atguigu@hadoophww subdir0]$ cat blk_1073741848>>tmp.tar.gz
[atguigu@hadoophww subdir0]$ cat blk_1073741849>>tmp.tar.gz
[atguigu@hadoophww subdir0]$ cat blk_1073741850>>tmp.tar.gz
[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程序 

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

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

查看下结果

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

  1. Hadoop集群启停脚本(包含HDFS,Yarn,Historyserver):myhadoop.sh
#!/bin/bash
if [ $# -lt 1 ]
then
    echo "No Args Input..."
    exit ;
fi
case $1 in
"start")
        echo " =================== 启动 hadoop集群 ==================="

        echo " --------------- 启动 hdfs ---------------"
        ssh hadoop102 "/opt/module/hadoop-3.1.4/sbin/start-dfs.sh"
        echo " --------------- 启动 yarn ---------------"
        ssh hadoop103 "/opt/module/hadoop-3.1.4/sbin/start-yarn.sh"
        echo " --------------- 启动 historyserver ---------------"
        ssh hadoop102 "/opt/module/hadoop-3.1.4/bin/mapred --daemon start historyserver"
;;
"stop")
        echo " =================== 关闭 hadoop集群 ==================="

        echo " --------------- 关闭 historyserver ---------------"
        ssh hadoop102 "/opt/module/hadoop-3.1.4/bin/mapred --daemon stop historyserver"
        echo " --------------- 关闭 yarn ---------------"
        ssh hadoop103 "/opt/module/hadoop-3.1.4/sbin/stop-yarn.sh"
        echo " --------------- 关闭 hdfs ---------------"
        ssh hadoop102 "/opt/module/hadoop-3.1.4/sbin/stop-dfs.sh"
;;
*)
    echo "Input Args Error..."
;;
esac

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

#! /bin/bash
 
 
for host in hadoop102 hadoop103 hadoop104 hadoop100
do
 
    echo --------- $host ----------
 
    ssh $host jps
 
done

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

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

4.xsync集群分发脚本

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

(2)需求分析:

(a)scp:需要多次执行

(b)期望脚本:

xsync要同步的文件名称

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

[atguigu@hadoop102 ~]$ echo $PATH

/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

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

  

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值