大数据:HDFS的Shell常用命令操作

2023-11-10


一 HDFS的Shell介绍

HDFS允许用户数据组织成文件和文件夹的方式,它提供一个叫DFSShell的接口,使用户可以和HDFS中的数据交互。命令集的语法跟其他用户熟悉的shells(bash,csh)相似。

Shell在计算机科学中俗称“壳”,是提供给使用者使用界面的进行与系统交互的软件,通过接收用户输入的命令执行相应的操作,Shell分为图形界面Shell和命令行式Shell。

文件系统(FS)Shell包含了各种的类Shell的命令,可以直接与Hadoop分布式文件系统以及其他文件系统进行交互。

三种Shell命令方式
命令 适用场合
hadoop fs 适用于任何不同的文件系统,比如本地文件系统和HDFS文件系统
hadoop dfs 只能适用于HDFS文件系统
hdfs dfs hdfs dfs跟hadoop dfs的命令作用一样,也只能适用于HDFS文件系统

二 HDFS常用命令操作

启动hadoop集群
在这里插入图片描述

01 创建目录

(1)创建单层目录

输入命令:hdfs dfs -mkdir /ied在这里插入图片描述
在Hadoop WebUI查看创建的目录
在这里插入图片描述

(3)创建多层目录

输入命令:hdfs dfs -mkdir /love/books,会报错,因为/love目录不存在
在这里插入图片描述
这里可以先创建 /luzhou 目录,然后在里面再创建 lzy 子目录,但是想要一步到位,就只需要一个 -p 参数即可。

输入命令:hdfs dfs -mkdir -p /luzhou/lzy
在这里插入图片描述
在Hadoop WebUI查看创建的多层目录
在这里插入图片描述

02 查看目录

输入命令:hdfs dfs -ls /,查看根目录(可以在任何节点上查看,结果均一样)。
在这里插入图片描述
在这里插入图片描述

输入命令:hdfs dfs -ls /love
在这里插入图片描述

注:如果我们要查看根目录里全部的资源,那么要用到递归参数-R(必须大写)。

执行命令:hdfs dfs -ls -R /,递归查看/目录(采用递归算法遍历树结构)
在这里插入图片描述

03 上传本地文件到HDFS

创建一个本地目录:/document/txt,输入命令:mkdir -p /document/txt
在这里插入图片描述
/txt目录下创建一个test.txt文件,输入命令(>:重定向命令):echo "hello hadoop world" > /document/txt/test.txt
在这里插入图片描述
查看test.txt文件内容,输入命令:cat /document/txt/test.txt
在这里插入图片描述上传test.txt文件到HDFS的/ied目录,输入命令:hdfs dfs -put /document/txt/test.txt /ied
在这里插入图片描述在Hadoop WebUI界面查看是否上传成功
在这里插入图片描述

04 查看文件内容

输入命令:hdfs dfs -cat /ied/test.txt
在这里插入图片描述

05 下载HDFS文件到本地

1.删除本地的 /document/txt/ 目录下的 test.txt 文件,输入命令:rm -rf /document/txt/test.txt
在这里插入图片描述2.下载HDFS文件系统的 /ied/test.txt 到本地当前目录不改名,输入命令:hdfs dfs -get /ied/test.txt /document/txt/
在这里插入图片描述3.检查是否下载成功,输入命令:ll /document/txt/test.txt
在这里插入图片描述可以将HDFS上的文件下载到本地指定位置,并且可以更改文件名,输入命令:hdfs dfs -get /ied/test.txt /document/txt/exam.txt
在这里插入图片描述
检查是否下载成功,输入命令:ll /document/txt/exam.txt
在这里插入图片描述

06 删除HDFS文件

输入命令:hdfs dfs -rm /ied/test.txt
在这里插入图片描述
检查是否删除成功,输入命令:hdfs dfs -ls /ied/test.txt
在这里插入图片描述
使用通配符,可以删除满足一定特征的文件
在这里插入图片描述在这里插入图片描述
在这里插入图片描述

07 删除HDFS目录

输入命令:hdfs dfs -rmdir /yibin
在这里插入图片描述
输入命令:hdfs dfs -rmdir /love
在这里插入图片描述

提示: -rmdir 命令删除不了非空目录。
要递归删除才能删除非空目录:hdfs dfs -rm -r /love(-r:recursive)

在这里插入图片描述

08 移动目录或文件

-mv 命令兼有移动与改名的双重功能
/ied 目录更名为 /ied01,输入命令:hdfs dfs -mv /ied /ied01
在这里插入图片描述

在Hadoop WebUI查看是否更名成功
在这里插入图片描述/ied01/exam.txt更名为/ied01/test.txt,输入命令:hdfs dfs -mv /ied01/exam.txt /ied01/test.txt
在这里插入图片描述查看改名后的test.txt文件内容,输入命令:hdfs dfs -cat /ied01/test.txt
在这里插入图片描述创建/ied02目录,将ied01/test.txt移动到/ied02目录,并且改名为exam.txt
创建ied02目录,输入命令:hdfs dfs -mkdir /ied02
在这里插入图片描述

移动改名,输入命令:hdfs dfs -mv /ied01/test.txt /ied02/exam.txt
在这里插入图片描述在Hadoop WebUI界面查看
在这里插入图片描述在这里插入图片描述

09 文件合并下载

/document/txt/目录下创建sport.txt、music.txt和book.txt并上传
在这里插入图片描述在这里插入图片描述
在这里插入图片描述在Hadoop WebUI界面查看上传的三个文件,注意文件名是按字典排序了的
在这里插入图片描述合并/ied01目录的文件下载到/document/txt目录的merger.txt,输入命令:hdfs dfs -getmerge /ied01/* /document/txt/merger.txt

在这里插入图片描述查看本地的merger.txt,看是不是三个文件合并后的内容,输入命令:cat /document/txt/merger.txt
在这里插入图片描述
由上图可知,merger.txtbook.txtmusic.txtsport.txt合并后的结果

10 检查文件信息

fsck: file system check —— 文件系统检查

检查/ied01/book.txt文件,输入命令:hdfs fsck /ied01/book.txt -files -blocks -locations -racks
在这里插入图片描述
已知HDFS里一个文件块是128MB,上传一个大于128MB的文件,hadoop-3.3.4.tar.gz大约663.24MB
在这里插入图片描述

128MB×5=640MB<663.24MB<768MB=128MB×6 ,HDFS会将hadoop-3.3.4.tar.gz分割成6块

输入命令:hdfs dfs -put /opt/hadoop-3.3.4.tar.gz /ied01,将hadoop压缩包上传到HDFS的/ied01目录
在这里插入图片描述
查看HDFS上hadoop-3.3.4.tar.gz文件信息,输入命令:hdfs fsck /ied01/hadoop-3.3.4.tar.gz -files -locations -racks
在这里插入图片描述在Hadoop WebUI来查看文件块信息更加方便,总共有6个文件块:Block0、Block1、Block2、Block3、Block4、Block5
在这里插入图片描述第1个文件块信息
在这里插入图片描述第6个文件块信息
在这里插入图片描述

11 创建时间戳文件

/ied01目录里创建一个文件sunshine.txt,执行命令:hdfs dfs -touchz /ied01/sunshine.txt
在这里插入图片描述在Hadoop WebUI来查看到创建的是一个空文件,大小为0字节
在这里插入图片描述
这种空文件,一般用作标识文件,也可叫做时间戳文件,再次在/ied01目录下创建sunshine.txt同名文件
在这里插入图片描述

说明:如果touchz命令的路径指定的文件不存在,那就创建一个空文件;如果指定的文件存在,那就改变该文件的时间戳。

12 复制文件或目录

cp: copy - 拷贝或复制

(1)同名复制文件

/ied01/music.txt复制到/ied02里,输入命令:hdfs dfs -cp /ied01/music.txt /ied02
在这里插入图片描述查看拷贝生成的文件
在这里插入图片描述

(2)改名复制文件

/ied01/book.txt复制到/ied02目录,改名为read.txt,输入命令:hdfs dfs -cp /ied01/book.txt /ied02/read.txt
在这里插入图片描述查看拷贝后的文件内容,输入命令:hdfs dfs -cat /ied02/read.txt
在这里插入图片描述

源文件book.txt依然存在
在这里插入图片描述

(3)复制目录

/ied01目录复制到/ied03目录,输入命令:hdfs dfs -cp /ied01 /ied03
在这里插入图片描述
查看拷贝后的/ied03目录,输入命令:hdsf dfs -ls /ied03, 其内容跟/ied01完全相同
在这里插入图片描述

13 查看文件大小

du: disk usage
输入命令:hdfs dfs -du /ied01/book.txt
在这里插入图片描述在这里插入图片描述
可以看到文件/ied01/book.txt大小是12个字符,包含9个字母、2个空格和一个看不见的结束符

14 上传文件

-copyFromLocal类似于-put,输入命令:hdfs dfs -copyFromLocal merger.txt /ied02
在这里插入图片描述
查看是否上传成功,输入命令:hdfs dfs -ls /ied02
在这里插入图片描述

15 下载文件

-copyToLocal类似于-get,执行命令:hdfs dfs -copyToLocal /ied01/sunshine.txt /document/txt/sunlight.txt
在这里插入图片描述查看是否下载成功,输入命令:ll /document/txt/
在这里插入图片描述

16 查看某目录下文件个数

输入命令:hdfs dfs -count /ied01
在这里插入图片描述

17 检查hadoop本地库

输入命令:hadoop checknative -a
在这里插入图片描述
查看hadoop本地库文件
在这里插入图片描述

18 进入和退出安全模式

(1)进入安全模式

输入命令:hdfs dfsadmin -safemode enter,

注意:进入安全模式之后,只能读不能写

在这里插入图片描述

此时,如果要创建目录,就会报错
在这里插入图片描述

(2)退出安全模式

输入命令:hdfs dfsadmin -safemode leave
在这里插入图片描述此时,创建目录/ied04就没有任何问题
在这里插入图片描述

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

大数据:HDFS的Shell常用命令操作 的相关文章

  • Hive:如何分解嵌入 CSV 文件中的 JSON 列?

    从 CSV 文件 带有标题和管道分隔符 中 我得到了以下两个内容 其中包含一个 JSON 列 内部有一个集合 如下所示 第一种情况 使用没有名称的 JSON 集合 ProductId IngestTime ProductOrders 918
  • 处理 oozie 工作流程中的循环

    我有一个 oozie 用例 用于检查输入数据可用性并根据数据可用性触发 MapReduce 作业 所以我编写了一个 shell 脚本来检查输入数据 并在 oozie 中为其创建了一个 ssh 操作 输入数据检查的重试次数和重试间隔应该是可配
  • 在 Windows 7 64 位中删除 Spark 临时目录时出现异常

    我正在尝试在 Windows 7 64 位中运行 Spark 作业的单元测试 我有 HADOOP HOME D winutils winutils path D winutils bin winutils exe 我运行了以下命令 winu
  • Hadoop 推测任务执行

    在Google的MapReduce论文中 他们有一个备份任务 我认为这与Hadoop中的推测任务是一样的 推测任务是如何实现的 当我启动一项推测任务时 该任务是从一开始就作为较旧且缓慢的任务开始 还是从较旧的任务到达的位置开始 如果是这样
  • hive 添加分区语句忽略前导零

    我在 hdfs 上有文件夹 user test year 2016 month 04 dt 25 000000 0 需要将上面的分区路径添加到test table 命令 ALTER TABLE test ADD IF NOT EXISTS
  • 在 PIG 中加载文件时如何忽略“(双引号)?

    我的文件中有以下数据 a b 1 2 a b 4 3 a b 3 1 我正在使用以下命令读取此文件 File1 LOAD path using PigStorage as f1 chararray f2 chararray f3 int f
  • 是否可以使用 Java 读写 Parquet,而不依赖 Hadoop 和 HDFS?

    我一直在寻找这个问题的解决方案 在我看来 如果不引入对 HDFS 和 Hadoop 的依赖 就无法在 Java 程序中嵌入读写 Parquet 格式 它是否正确 我想在 Hadoop 集群之外的客户端计算机上进行读写 我开始对 Apache
  • 将 Apache Zeppelin 连接到 Hive

    我尝试将我的 apache zeppelin 与我的 hive 元存储连接起来 我使用 zeppelin 0 7 3 所以没有 hive 解释器 只有 jdbc 我已将 hive site xml 复制到 zeppelin conf 文件夹
  • 在蜂巢中出现错误

    当我连接到 ireport 时 如果说在 hive shell 中显示表 则会出现此错误 元数据错误 java lang RuntimeException 无法实例化 org apache hadoop hive metastore Hiv
  • 公平调度器和容量调度器有什么区别?

    我是 Hadoop 世界的新手 想了解公平调度程序和容量调度程序之间的区别 另外我们什么时候应该使用每一个 请简单地回答一下 因为我在网上读了很多东西 但从中得到的不多 公平调度是一种为作业分配资源的方法 使得所有作业随着时间的推移平均获得
  • 适用于 Python 3.x 的 Hive 客户端

    是否可以使用 Python 3 x 连接到 hadoop 并运行 hive 查询 我正在使用Python 3 4 1 我发现可以按照这里写的方式完成 https cwiki apache org confluence display Hiv
  • 使用 org.apache.hadoop/* 依赖项离线编译 sbt 时遇到的问题

    使用依赖于 org apache hadoop 包的 sbt 进行离线编译时遇到很多麻烦 一个简单的build sbt name Test version 1 0 scalaVersion 2 10 4 libraryDependencie
  • 覆盖hadoop中的log4j.properties

    如何覆盖hadoop中的默认log4j properties 如果我设置 hadoop root logger WARN console 它不会在控制台上打印日志 而我想要的是它不应该在日志文件中打印 INFO 我在 jar 中添加了一个
  • 与文件名中的冒号“:”作斗争

    我有以下代码 用于加载大量 csv gz 并将它们转储到其他文件夹中 并将源文件名作为一列 object DailyMerger extends App def allFiles path File List File val parts
  • 为什么我们需要将外部表移动到托管 Hive 表?

    我是 Hadoop 新手 正在学习 Hive 在 Hadoop 权威指南第 3 版中 第 12 页 第428章 最后一段 我不明白下面关于 HIVE 中外部表的段落 一种常见的模式是使用外部表访问存储在 HDFS 中的初始数据集 由另一个进
  • ETL informatica 大数据版(非云版)可以连接到 Cloudera Impala 吗?

    我们正在尝试在 Informatica 大数据版本 不是云版本 上进行概念验证 我发现我们可能能够使用 HDFS Hive 作为源和目标 但我的问题是 Informatica 是否连接到 Cloudera Impala 如果是这样 我们是否
  • 在 Google Cloud Dataproc 环境中使用 Hadoop 流式处理运行 python map reduce 作业时出错

    我想使用 hadoop 流方法在 Google Cloud Dataproc 中运行 python map reduce 作业 我的map reduce python脚本 输入文件和作业结果输出位于Google Cloud Storage中
  • 如何用snappy解压hadoop的reduce输出文件尾?

    我们的 hadoop 集群使用 snappy 作为默认编解码器 Hadoop作业减少输出文件名就像part r 00000 snappy JSnappy 无法解压缩文件 bcz JSnappy 需要以 SNZ 开头的文件 归约输出文件以某种
  • 以编程方式读取 Hadoop Mapreduce 程序的输出

    这可能是一个基本问题 但我在谷歌上找不到答案 我有一个映射缩减作业 它在其输出目录中创建多个输出文件 我的 Java 应用程序在远程 hadoop 集群上执行此作业 作业完成后 需要使用以下命令以编程方式读取输出org apache had
  • MapReduce 中的分区到底是如何工作的?

    我认为我总体上对 MapReduce 编程模型有一定的了解 但即使在阅读了原始论文和其他一些来源之后 我仍然不清楚许多细节 特别是关于中间结果的分区 我将快速总结到目前为止我对 MapReduce 的理解 我们有一个可能非常大的输入数据集

随机推荐

  • 学术文献也有身份证?

    关注 心仪脑 查看更多脑科学知识的分享 关键词 科普散文 干货分享 生活中 证明你是你很简单 只需拿出你的身份证或护照 其实 学术文献也有如假包换 具有唯一性的身份证 对于经常需要下载文献的同学们来说 肯定再熟悉不过了 那就是文献的DOI号
  • OpenGL渲染结果发生了奇怪的拉伸和奇怪的彩条

    部分代码如下 Load create texture and generate mipmaps int width height unsigned char image SOIL load image 1 jpg width height
  • 【分享】docker引发的172.17.x.x网段无法访问

    前言 想搭建一个测试环境 折腾vmware虚拟机 发现公司的172 17网段怎么都访问不了 使用traceroute 发现 一直走172 17 0 1 无论是怎么更改配置 都是如此 查阅资料发现 当 Docker 启动时 会自动在主机上创建
  • jquery-migrate-1.2.1.min.js 作用

    在网上下载一些 js 插件使用的时候 经常出现这种情况 但是更换低版本 jquery 比如 使用 1 7 版本的 jquery 却不会报错 能正常使用 经过一番搜索 发现是因为高版本 1 9版本以后 不兼容以前的 需要引入一个 jquery
  • linux虚拟机安装后查不到IPV4地址的解决办法

    由于选择了桥接方式 网络配置设置不正确导致 编辑network配置文件 解决此问题 cd etc sysconfig network scripts vi enp0s3 若为做特殊修改 此名字是你打ifconfig查看显示的名字 改成如下配
  • AntDesign Pro安装过程

    详细资料请到官网查看文档 Ant Design Pro相关系列文章 一 AntDesign Pro安装过程 二 基于Ant DesignPro实现通过SpringBoot后台加载自定义菜单 前端部分 三 基于Ant DesignPro实现通
  • Excel数据过大,导出超时解决方案

    问题 随着业务量的增加 数据存储也越来越大 当我们从数据库读取数据生成excel时 往往会出现超时情况 尝试解决方案 考虑直接更改该请求的超时时长 但发现 随着数据增长 依然会出现超时情况 考虑采用多线程的方式 理论可以加快数据的读取效率
  • 二叉树17:路径总和

    主要是我自己刷题的一些记录过程 如果有错可以指出哦 大家一起进步 转载代码随想录 原文链接 代码随想录 leetcode链接 112 路径总和 112 路径总和 题目 给你二叉树的根节点 root 和一个表示目标和的整数 targetSum
  • 【C进阶】深度剖析数据在内存中的存储

    目录 一 数据类型的介绍 1 类型的意义 2 类型的基本分类 二 整形在内存中的存储 1 原码 反码 补码 2 大小端介绍 3 练习 三 浮点型在内存中的存储 1 一个例子 2 浮点数存储规则 一 数据类型的介绍 前面我们已经学习了基本的内
  • 《kubernetes-1.8.0》20-examples-Deployments

    kubernetes 1 8 0 20 examples Deployments kubernetes 1 8 0 测试环境安装部署 时间 2017 12 19 一 基础知识 Deployment 为 Pod 和 ReplicaSet 提供
  • AI 机器学习实践总结

    机器学习基础 什么是机器学习 机器学习是一种从数据生成规则 发现模型 来帮助我们预测 判断 分组和解决问题的技术 机器学习是一种从数据中生产函数 而不是程序员直接编写函数的技术 说起函数就涉及到自变量和因变量 在机器学习中 把自变量叫做特征
  • 力扣(LeetCode)算法_C++——存在重复元素 II

    存在重复元素 II 给你一个整数数组 nums 和一个整数 k 判断数组中是否存在两个 不同的索引 i 和 j 满足 nums i nums j 且 abs i j lt k 如果存在 返回 true 否则 返回 false 示例 1 输入
  • 程序员的自我修养--链接、装载与库笔记:Linux共享库的组织

    共享库 Shared Library 概念 其实从文件结构上来讲 共享库和共享对象没什么区别 Linux下的共享库就是普通的ELF共享对象 由于共享对象可以被各个程序之间共享 所以它也就成为了库的很好的存在形式 很多库的开发者都以共享对象的
  • tensorflow学习笔记二:入门基础

    基本概念 使用TensorFlow前必须明白的基本概念 图 Graph 图描述了计算的过程 TensorFlow使用图来表示计算任务 张量 Tensor TensorFlow使用tensor表示数据 每个Tensor是一个类型化的多维数组
  • java---日期类汇总

    java中常用的日期类有Date SimpleDateFormat Calendar这三种 现在分别对三个类的日常使用进行大概的总结 1 Date类 1 1 基本介绍 一般常用的事Java util Date包下的Date类 在java s
  • 11月7日 Unreal Engine Rider 学习笔记

    创建蓝图接口 添加蓝图Class 添加接口用指针 添加宝箱Actor类 添加Mesh类 首先在类后面添加一个公用接口声明 class ACTIONROUGELIKE API AASItemChest public AActor public
  • 华为OD机试 - 食堂供餐(Java)

    题目描述 某公司员工食堂以盒饭方式供餐 为将员工取餐排队时间降低为0 食堂的供餐速度必须要足够快 现在需要根据以往员工取餐的统计信息 计算出一个刚好能达成排队时间为0的最低供餐速度 即 食堂在每个单位时间内必须至少做出多少价盒饭才能满足要求
  • httpclient下载文件

    private static CloseableHttpClient client static PoolingHttpClientConnectionManager connectionManager new PoolingHttpCli
  • 抓httpclient发送的http请求包

    1 使用fiddler或者Charles抓不到httpclient发送的http请求包 2 需要使用以下代码 HttpHost proxy new HttpHost 127 0 0 1 8888 http 127 0 0 1 8888地址为
  • 大数据:HDFS的Shell常用命令操作

    文章目录 一 HDFS的Shell介绍 二 HDFS常用命令操作 01 创建目录 1 创建单层目录 3 创建多层目录 02 查看目录 03 上传本地文件到HDFS 04 查看文件内容 05 下载HDFS文件到本地 06 删除HDFS文件 0