【大数据·hadoop】在hdfs上运行shell基本常用命令

一、准备工作

1.1格式化并启动Hadoop服务

参见Hadoop在ubuntu虚拟机上的伪分布式部署|保姆级教程的4.7节

在这里插入图片描述

二、HDFS常用命令

接着,就愉快地在刚刚的命令行里敲命令啦

1.显示hdfs目录结构

hadoop fs -ls -R /
  • hadoop fs: 这是Hadoop文件系统命令行的一部分,用于与HDFS进行交互。
  • -ls: 类似于UNIX/Linux中的 ls 命令,用于列出目录内容。
  • -R: 这个参数使得 ls 命令递归地列出所有目录和子目录的内容。没有这个参数,ls 命令只会列出指定目录的直接内容。
  • /: 指定要列出内容的目录路径。在这个命令中,它是根目录。
    在这里插入图片描述

🌸Tips:这里的Hadoop的目录结构,是指hdfs文件系统的目录结构,而非hadoop这个软件所在的目录结构

根据运行结果我们可以得到以下信息:

1. 目录和权限:

  • /tmp: 这是一个临时目录,权限设置为 drwxrwx---,表明目录的拥有者(hadoop)和其所在的组(supergroup)具有读、写、执行权限,而其他用户没有任何权限。
  • /tmp/hadoop-yarn: 这是存放与Hadoop YARN(资源管理器)相关的临时数据的目录,权限同上。
  • /tmp/hadoop-yarn/staging: 用于存放YARN作业的准备阶段数据的目录,权限同上。
  • /tmp/hadoop-yarn/staging/history: 存放YARN作业历史信息的目录,权限同上。
  • /tmp/hadoop-yarn/staging/history/done: 存放已完成的YARN作业历史信息的目录,权限同上。
  • /tmp/hadoop-yarn/staging/history/done_intermediate: 存放正在处理中的YARN作业历史信息的目录,权限设置为 drwxrwxrwt。这里的 t 权限(粘滞位)表明只有文件的拥有者、目录的拥有者或超级用户才能删除或重命名目录中的文件。

2. 所有者和组:

  • 所有列出的目录均由用户 hadoop 拥有,并且属于 supergroup 组。
  • 在Hadoop生态系统中,supergroup 是一个默认的用户组,通常与HDFS的超级用户(即 Hadoop 的管理员账户,类似于 Unix 系统中的 root 用户)关联。超级用户和属于 supergroup 组的用户通常有着对HDFS上所有文件和目录的全权限,这包括读取、写入和执行权限。
    3. 大小:
  • 所有目录的大小均为 0,这是因为在大多数文件系统中,目录不占用可见的存储空间,或者说目录的大小表示的是目录结构本身的大小,而不是其中包含的文件大小。

2.在hdfs指定目录内创建新目录

hadoop fs -mkdir /yaoyao

在这里插入图片描述

3.删除hdfs上指定文件夹(包含子目录等)

hadoop fs -rm -r /yaoyao

在这里插入图片描述

4.在hdfs上创建文件和编辑❌

其实我一开始就完全把HDFS当作像windowslinux那样的文件操作系统了,其实忽略了hdfs的本质:它是一个分布式文件存储系统,专为大文件的存储和处理设计,而非像windows和Linux那样常规的对本地文件进行操作(创建和编辑),因此一般不直接在hdfs上进行文件的创建和编辑。

它的设计理念是:一次写入,多次读取(保证数据的一致性):HDFS不支持文件的随机写入或修改。一旦文件在HDFS上创建和写入,我们不能修改文件的某一部分内容。我们只能追加数据或重写整个文件。

这里的“写入”就是将本地文件写入系统,而非用户自己在Hdfs上创建文件

5.文件写入:将本地数据写入hdfs⭐

文件写入的原理图如下,但是我们写shell命令时,这些原理是由hdfs底层实现的了,我们只需要敲命令就好
在这里插入图片描述

5.1:本地文件准备

我们现在本地系统上创建一个文件,待会把它写入hdfs系统中:

  • 先在用户目录下创建一个hadoop_file的文件夹,待会用来存储要写入到hdfs中的文件
    在这里插入图片描述

  • 在终端打开这个文件夹,创建文件hello.txt

    touch hello.txt
    

    在这里插入图片描述

  • 使用vim编辑器:

    vim hello.txt
    

    启动后按i进入插入模式,可以开始输入文本。完成后,按Esc退出插入模式,输入:wq保存并退出vim。
    在这里插入图片描述

5.2:将本地文件上传到hdfs

有两种命令实现:

  1. -copyFromLocal
hadoop fs -copyFromLocal [本地地址] [hadoop目录]
  1. -put
hadoop fs -put [本地地址] [hadoop目录]

在这里插入图片描述
这里对于本地地址一定要清楚linux的目录结构:
在这里插入图片描述
home:
用户的主目录,在 Linux 中,每个用户都有一个自己的目录,一般该目录名是以用户的账号命名的,如上图中的 alice、bob 和 eve。

我在当前用户(用户名为hadoophome目录下创建了hadoop_file文件夹,那么我们文件的路径应该为:

/home/hadoop/hadoop_file/hello.txt

6.查看指定目录下内容

hadoop fs -ls [hdfs的文件目录]

在这里插入图片描述

7.打开查看某个已存在文件

hadoop fs -cat [file_path]

在这里插入图片描述

8.在hdfs指定目录下新建一个空文件

hadoop fs -touchz [hdfs的文件路径+文件名]

在这里插入图片描述

9.将hdfs上某个文件重命名

hadoop fs -mv /yaoyao/test.txt /yaoyao/test02.txt

在这里插入图片描述

10.将hdfs上的文件down到本地⭐

  1. -get

    hadoop fs -get [hdfs目录] [本地目录] 
    

    在这里插入图片描述

  2. -copyToLocal

    hadoop fs -copyToLocal [hdfs目录] [本地目录] 
    

11.其他常用命令

  1. -count:显示hdfs目录下的子目录数、文件数、占用字节数、所有文件和目录名,-q 选项显示目录和空间的配额信息。实例代码如下所示:

    hadoop fs -count /yaoyao
    

    命令输出格式为:

    DIR_COUNT FILE_COUNT CONTENT_SIZE PATH_NAME
    

    在这里插入图片描述
    DIR_COUNT - 2:/yaoyao路径下有2个子目录。
    FILE_COUNT - 3:/yaoyao路径下有3个文件。
    CONTENT_SIZE - 50:这3个文件的总字节数为50字节。
    PATH_NAME - /yaoyao:这是你指定的HDFS路径。

  2. -df:查看 HDFS 中目录空间的使用情况,使用 -df 选项查看Hadoop文件系统(HDFS)的磁盘空间使用情况,而 -h 选项让输出以易读的格式(例如GB、KB)显示。实例代码如下所示:

    hadoop fs -df -h /yaoyao
    

    在这里插入图片描述
    Filesystem:显示文件系统的名称。这里是 hdfs://localhost:9000,表示这是运行在本地主机上,默认端口为9000的HDFS实例。
    Size:显示文件系统的总大小。这里是 38.6 G,表示HDFS的总空间为38.6吉字节(GB)。
    Used:显示已经使用的空间大小。这里是 52 K,表示已经有52千字节(KB)的空间被使用。
    Available:显示还可用的空间大小。这里是 22.4 G,表示还有22.4吉字节(GB)的空间可用。
    Use%:显示已使用的空间百分比。这里是 0%,由于展示的精度问题,实际已使用空间非零(52 KB),但相对于总空间来说非常小,所以使用百分比显示为0%。

  3. -tail:显示一个文件的末尾数据,通常是显示文件最后的 1KB 的数据。-f 选项可以监听文件的变化,当有内容追加到文件中时,-f 选项能够实时显示追加的内容。实例代码如下所示:

    hadoop fs -tail /yaoyao/hello.txt
    

    在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/700313.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

36. 有效的数独 - 力扣(LeetCode)

基础知识要求: Java:方法、for循环、if判断、数组 Python: 方法、for循环、if判断、列表、集合 题目: 请你判断一个 9 x 9 的数独是否有效。只需要 根据以下规则 ,验证已经填入的数字是否有效即可。 数字 1-9 在每一…

SystemC学习使用记录

一、概述 对于复杂的片上系统,在进行RTL编码前,需进行深入的系统级仿真,以确认设计的体系结构是否恰当、总线是否能满足吞吐量和实现性要求以及存储器是否浪费,所进行的这些仿真要求在芯片的仿真模型上运行大量的软件&#xff0c…

LVS负载均衡超详细入门介绍

LVS 一、LVS入门介绍 1.1.LVS负载均衡简介 1.2.负载均衡的工作模式 1.2.1.地址转换NAT(Network Address Translation) 1.2.2.IP隧道TUN(IP Tunneling) 1.2.3.直接路由DR(Direct Routing) 1.3.…

版本控制:软件开发的基石(一文读懂版本控制)

未经允许,禁止转载! 在现代软件开发中,版本控制是不可或缺的工具。它帮助开发者跟踪和管理代码的变化,协作完成项目,并确保代码的完整性和安全性。本文将基于Git官网的视频“什么是版本控制”来深入探讨版本控制的基本…

macOS Sonoma 14.5(23F79)发布

系统介绍 黑果魏叔5 月 14 日快报,苹果今日向 Mac 电脑用户推送了 macOS 14.5 正式版更新(内部版本号:23F79 同 RC)。这是去年 9 月发布的 macOS Sonoma 操作系统的第五次更新,距离上一次的 macOS Sonoma 14.4 更新已…

在React中利用Postman测试代码获取数据

文章目录 概要名词解释1、Postman2、axios 使用Postman测试API在React中获取并展示数据小结 概要 在Web开发中,通过API获取数据是一项常见任务。Postman是一个功能强大的工具,可以帮助开发者测试API,并查看API的响应数据。在本篇博客中&…

Windows snmp++获取本地主机信息

编译snmp的包 调用snmp.lib实现信息获取_哔哩哔哩_bilibili 代码&#xff1a; #include <iostream> #include <libsnmp.h> #include <vector> #include <fstream> #include <string> #include "snmp_pp/snmp_pp.h" //#define _NO_L…

C语言错题本之<结构体>

以下叙述中正确的是________. A)预处理命令行必须位于源文件的开头 B)在源文件的一行上可以有多条预处理命令 C)宏名必须用大写字母表示 D)宏替换不占用程序的运行时间 答案&#xff1a;D 解析&#xff1a; A&#xff1a;在C、C等编程语言中&#xff0c;预处理指令&#xff08;…

两小时看完花书(深度学习入门篇)

1.深度学习花书前言 机器学习早期的时候十分依赖于已有的知识库和人为的逻辑规则&#xff0c;需要人们花大量的时间去制定合理的逻辑判定&#xff0c;可以说是有多少人工&#xff0c;就有多少智能。后来逐渐发展出一些简单的机器学习方法例如logistic regression、naive bayes等…

【Linux】自动化编译工具——make/makefile(超细图例详解!!)

目录 一、前言 二、make / Makefile背景介绍 &#x1f95d;Makefile是干什么的&#xff1f; &#x1f347;make又是什么&#xff1f; 三、demo实现【见见猪跑&#x1f416;】 四、依赖关系与依赖方法 1、概念理清 2、感性理解【父与子&#x1f468;】 3、深层理解【程序…

vscode 之 output 输出中文乱码,终端输出中文正常

# 1. 背景 因为没钱买正版的软件&#xff0c;所以转战 vscode 编译器。 在编译 python 文件时&#xff0c;发现直接右键 runner code&#xff0c;输出中文乱码。 但是在 teiminal 终端 执行py test.py 时&#xff0c;输出正常&#xff0c;中文正常。 output 输出中文样式(中文…

西门子博途WINCC精致触摸屏配方实用一例

我们现场有一台设备&#xff0c;是用来锯切钢坯的&#xff0c;里面有几个重要的参数&#xff0c;一开始投产的时候厂家没有做配方功能&#xff0c;需要操作人员每次换钢坯就需要手动计算然后输入&#xff0c;后来有时间我就做了个这个定尺管理的功能&#xff0c;方便了操作人员…