【hadoop——HDFS操作常用的Shell命令】

2023-11-10

 

1.Hadoop分布式文件系统(Hadoop Distributed File System,HDFS)是Hadoop核心组件之一,我们已经安装好了Hadoop 2.7.1,其中已经包含了HDFS组件,不需要另外安装

最基本的shell命令: HDFS既然是Hadoop的组件,那么首先需要启动Hadoop:启动虚拟机,打开终端,输入以下命令:
 

cd /usr/local/hadoop      #进入 hadoop安装目录    

./sbin/start-dfs.sh           #启动 hadoop

可以看到,输入启动Hadoop的命令之后,在本地主机 localhost上面开始启动名称节点,然后启动数据节点,第二名称节点

 2.Hadoop启动成功之后,可以开始在终端使用常用的shell命令与HDFS进行交互了: Hadoop支持很多Shell命令,其中 fs 是HDFS最常用的命令,利用 fs 可以查看HDFS文件系统的目录结构、上传和下载数据、创建文件等。

在终端输入如下命令,查看fs总共支持了哪些命令:

./bin/hadoop fs

在终端输入如下命令,可以查看具体某个命令的作用:

./bin/hadoop fs -help 某个命令的名称

比如大家喜欢的 cp:

./bin/hadoop fs -help cp

 

而实际上,HDFS有三种shell命令方式:

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

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

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

尝试以”./bin/hadoop dfs”开头的Shell命令方式

输入了”./bin/hadoop dfs”命令之后,同样,给出了fs 总共支持了哪些命令,但是这里红框里多出了一行提示:

根据提示,尝试以”./bin/hdfs dfs”开头的Shell命令方式:

没有再出现提示:

 

在HDFS中,shell命令的统一格式是类似“hdfs dfs -ls”这种形式,即在“-”后面跟上具体的操作

下面开始常用的Shell操作:

1.目录操作

Hadoop系统安装好以后,第一次使用HDFS时,需要首先在HDFS中创建用户目录,由于我是采用hadoop用户登录Linux系统,因此,需要在HDFS中为hadoop用户创建一个用户目录,即 user/hadoop,命令如下:

./bin/hdfs dfs –mkdir –p /user/hadoop 

此命令表示在HDFS中创建一个“/user/hadoop”目录,“–mkdir”是创建目录的操作,“-p”表示如果是多级目录,则父目录和子目录一起创建,这里“/user/hadoop”就是一个多级目录,因此必须使用参数“-p”,否则会出错。 此时,“/user/hadoop”目录就成为hadoop用户对应的用户目录,可以使用如下命令显示HDFS中与当前用户hadoop对应的用户目录下的内容:
 

./bin/hdfs dfs –ls .

 

该命令中,“-ls”表示列出HDFS某个目录下的所有内容,“.”表示HDFS中的当前用户目录,也就是“/user/hadoop”目录,因此,上面的命令和下面的命令是等价的:

./bin/hdfs dfs –ls /user/hadoop

 

这个带“.”的命令 “./bin/hdfs dfs –ls . ”与下面这个命令等价:

 ./bin/hdfs dfs –ls

 

这里我们发现,这几个命令得到的结果都一样,是因为我们的HDFS使用(且只使用)过一次,时间在上面有标注,里面已经有了input和output两个文件夹,这是我们上次装hadoop伪分布式模式的时候,第五步,运行伪分布式实例的操作,我们一起来回顾一下:

运行Hadoop伪分布式实例: 单机模式下,grep 例子读取的是本地数据,伪分布式读取的则是 HDFS 上的数据。要使用 HDFS,首先需要在 HDFS 中创建用户目录

./bin/hdfs dfs -mkdir -p /user/hadoop

 

然后,在当前目录,即/user/hadoop/下面创建一个文件夹input,用如下命令: 

./bin/hdfs dfs -mkdir input  

接着用如下命令将 ./etc/hadoop 中的 xml 文件作为输入文件复制到分布式文件系统中: 即将 /usr/local/hadoop/etc/hadoop 复制到分布式文件系统中的 /user/hadoop/input 中:

./bin/hdfs dfs -put ./etc/hadoop/*.xml input

复制完成后,可以通过如下命令查看文件列表:

./bin/hdfs dfs -ls input

 

可以看到其中有8个xml文件。

刚才是在/user/hadoop/下面创建了一个文件夹input,使用的命令是:

./bin/hdfs dfs –mkdir input

如果要在HDFS的根目录下创建一个名称为input的目录,则需要使用如下命令:

./bin/hdfs dfs –mkdir /input

此时,我们再来对当前HDFS的各级目录里面的内容进行查看,使用如下三个命令:
 

./bin/hdfs dfs -ls /         #查看HDFS的根目录

./bin/hdfs dfs -ls /user

./bin/hdfs dfs -ls /user/hadoop

查看的结果如下:请注意各级目录里面的内容

 

可以使用 rm 命令删除一个目录,比如,可以使用如下命令删除刚才在HDFS中创建的“/input”目录(在根目录中创建的,不是“/user/hadoop/input”目录)

./bin/hdfs dfs –rm –r /input

 

2. 文件操作

在实际应用中,经常需要从本地文件系统,即Linux的本地文件系统,向HDFS中上传文件,或者把HDFS中的文件下载到本地文件系统中。 首先,使用vim编辑器,在本地Linux文件系统的“/home/hadoop/”目录下创建一个文件myLocalFile.txt,里面可以随意输入一些单词,比如,输入如下三行:

 

 

这个 myLocalFile.txt 文件创建完成之后,我们使用 ls 命令可以查看到它,注意,/home/hadoop这个目录就是我们当前登录Linux的账户hadoop的主文件夹:

然后,可以使用如下命令把本地文件系统的“/home/hadoop/myLocalFile.txt”上传到HDFS中的当前用户目录的input目录下,也就是上传到HDFS的“/user/hadoop/input/”目录下:

./bin/hdfs dfs -put /home/hadoop/myLocalFile.txt  input

然后,使用 ls 命令查看一下文件是否成功上传到HDFS中,具体如下:

./bin/hdfs dfs –ls input

 

如上图红框,文件 myLocalFile.txt 已成功上传到HDFS中

下面使用如下命令查看HDFS中的myLocalFile.txt这个文件的内容:

./bin/hdfs dfs –cat input/myLocalFile.txt

 

下面把HDFS中的 myLocalFile.txt 文件下载到本地文件系统中的“/home/hadoop/下载/”这个目录下,命令如下:

./bin/hdfs dfs -get input/myLocalFile.txt  /home/hadoop/下载

 

这里虽然报了一个警告信息,但是我们去查看一下下载这个目录,发现本次操作是成功完成了的: 

   以上为本文全部内容
由于我是新手小白,如有错误请斧正。

 

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

【hadoop——HDFS操作常用的Shell命令】 的相关文章

  • java.lang.IllegalArgumentException:错误的 FS:,预期:hdfs://localhost:9000

    我正在尝试实现reduce side join 并使用mapfile reader来查找分布式缓存 但在stderr中检查时它没有查找值 它显示以下错误 lookupfile文件已经存在于hdfs中 并且似乎已正确加载进入缓存 如标准输出中
  • Hive如何存储数据,什么是SerDe?

    当查询表时 SerDe 将将文件中的字节中的一行数据反序列化为 Hive 内部使用的对象来操作该行数据 执行 INSERT 或 CTAS 时 请参阅第 441 页上的 导入数据 表的 SerDe 将将 Hive 的一行数据的内部表示序列化为
  • Cat 文件与 HDFS 中的模式不匹配?

    我正在尝试 cat 与 hadoop HDFS 中的以下模式不匹配的文件 hdfs dfs cat gz 如何捕获所有不以 gz 结尾的文件 编辑 抱歉 但我需要在 Hadoop 中管理文件 显然 hdfs 附带的命令非常少 编辑2 所有文
  • Curl下载到HDFS

    我有这个代码 curl o fileName csv url xargs hdfs dfs moveFromLocal 1 somePath 当我执行此代码时 curl 将请求中的值放入 fileName csv 中 该文件将移动到 HDF
  • java.io.IOException:无法获取 LocationBlock 的块长度

    我正在使用 HDP 2 1 对于集群 我遇到了以下异常 并且 MapReduce 作业因此失败 实际上 我们定期使用 Flume 版本的数据创建表 1 4 我检查了映射器尝试读取的数据文件 但我找不到任何内容 2014 11 28 00 0
  • 连接到 Hive 时使用 Spark 进行 Kinit

    我正在尝试从独立的 Spark 连接到 Hive hadoop 集群具有 kerberos 身份验证 有人可以让我知道如何在 Spark 程序中执行 kinit 我可以连接到配置单元吗 更新 我的 Spark 与 Hadoop 位于不同的集
  • 尝试将稀疏 df 保存到 hdf5 时,获取“SparseDtype”对象没有属性“itemsize”?

    我正在尝试将大型稀疏数据帧保存到 hdf5 文件 但出现归因错误 one hot pd get dummies my DF columns cat sparse True one hot to hdf content data h5 tab
  • 如果 HBase 不是运行在分布式环境中,它还有意义吗?

    我正在构建数据索引 这将需要以形式存储大量三元组 document term weight 我将存储多达几百万个这样的行 目前我正在 MySQL 中将其作为一个简单的表来执行 我将文档和术语标识符存储为字符串值 而不是其他表的外键 我正在重
  • 在 Hadoop 中处理带标头的文件

    我想在 Hadoop 中处理很多文件 每个文件都有一些头信息 后面跟着很多记录 每个记录都存储在固定数量的字节中 对此有何建议 我认为最好的解决方案是编写一个自定义的InputFormat http hadoop apache org co
  • 使用 Python3 与 HDFS 交互的最佳模块是什么? [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 我看到有 hdfs3 snakebite 和其他一些 哪一个支持最好且最全面 据我所知 可能性并不像人们想象的那么多 但我建议使用官方的Pyth
  • Oozie SSH 操作

    Oozie SSH 操作问题 Issue 我们正在尝试在集群的特定主机上运行一些命令 我们为此选择了 SSH Action 我们面对这个 SSH 问题已经有一段时间了 这里真正的问题可能是什么 请指出解决方案 logs AUTH FAILE
  • 获取行 HBase 的特定列族中的列

    我正在编写一个应用程序 通过 JSP 显示 HBase 中特定表中的数据 我想获取一行的特定列族中的所有列 有什么办法可以做到这一点吗 public String getColumnsInColumnFamily Result r Stri
  • 如何将Hive数据表迁移到MySql?

    我想知道如何将日期从 Hive 转移到 MySQL 我看过有关如何将 Hive 数据移动到 Amazon DynamoDB 的示例 但没有看到有关如何将 Hive 数据移动到 MySQL 等 RDBMS 的示例 这是我在 DynamoDB
  • 遍历 ArrayWritable - NoSuchMethodException

    我刚刚开始使用 MapReduce 并且遇到了一个奇怪的错误 我无法通过 Google 回答该错误 我正在使用 ArrayWritable 制作一个基本程序 但是当我运行它时 在Reduce过程中出现以下错误 java lang Runti
  • 在 Amazon EMR 上使用 java 中的 hbase 时遇到问题

    因此 我尝试使用作为 MapReduce 步骤启动的自定义 jar 来查询 Amazon ec2 上的 hbase 集群 我的 jar 在地图函数内 我这样调用 Hbase public void map Text key BytesWri
  • 带有安全 Kafka 抛出的 Spark 结构化流:无权访问组异常

    为了在我的项目中使用结构化流 我正在 hortonworks 2 6 3 环境上测试 Spark 2 2 0 和 Kafka 0 10 1 与 Kerberos 的集成 我正在运行下面的示例代码来检查集成 我能够在 Spark 本地模式下的
  • 使用Spring批处理从HDFS读取文件

    我必须编写一个 Spring 批处理 它将从 HDFS 读取文件并更新 MySQL DB 中的数据 HDFS 中的源文件包含一些 CSV 格式的报告数据 有人能给我举一个从 HDFS 读取文件的例子吗 Thanks The FlatFile
  • 非 hdfs 文件系统上的 hadoop/yarn 和任务并行化

    我已经实例化了 Hadoop 2 4 1 集群 并且发现运行 MapReduce 应用程序的并行化方式会有所不同 具体取决于输入数据所在的文件系统类型 使用 HDFS MapReduce 作业将生成足够的容器 以最大限度地利用所有可用内存
  • 运行时异常:java.lang.NoSuchMethodException:tfidf$Reduce.()

    如何解决这个问题 tfidf是我的主类 为什么运行jar文件后会出现这个错误 java lang RuntimeException java lang NoSuchMethodException tfidf Reduce
  • HDFS:使用 Java / Scala API 移动多个文件

    我需要使用 Java Scala 程序移动 HDFS 中对应于给定正则表达式的多个文件 例如 我必须移动所有名称为 xml从文件夹a到文件夹b 使用 shell 命令我可以使用以下命令 bin hdfs dfs mv a xml b 我可以

随机推荐

  • day6-列表的遍历,增删查改,比较运算,列表推导式,列表的相关函数

    列表基础学习 一 遍历列表 1 遍历列表 二 列表的增删查改操作 1 增 1 列表 append 元素 2 列表 insert 下标 元素 2 删 删除元素 1 del 列表 下标 2 列表 remove 元素 3 列表 pop 下标 列表
  • Win7、Win10系统封装后GHO文件太大?是因为虚拟内存没关、休眠文件没删!

    很多镜像文件封装好都是3 5g的 而最近我自己封装系统 封装完是8g 百度才知道是C盘有休眠文件大概5 4g 下图是我正在用的电脑删除休眠文件后的大小对比 删除休眠文件方法 1 在开始栏的 附件 里面找到 命令提示符 右击 以管理员身份运行
  • 文举论金:3.17黄金原油全面走势分析策略指导。

    市场没有绝对 涨跌没有定势 所以 对市场行情的涨跌平衡判断就是你的制胜法宝 欲望 有句意大利谚语 让金钱成为我们忠心耿耿的仆人 否则 它就会成为一个专横跋扈的主人 空头 多头都能赚钱 唯有贪心不能赚 是你掌控欲望还是欲望掌控你 古人云 不积
  • 使用eclipse创建一个图书管理系统(1)-----搭建架构

    目录 思维导图 图书管理系统的创建 第一步 搭建框架 使用者 第二步 搭建框架 被使用者 第三步 操作方法 第四步 main函数 思维导图 前言 昨天学了一下使用Java语言来写一个图书管理系统 于是今天写一篇博客作为一个小笔记巩固一下自己
  • git 打包两个版本差异

    git archive o update zip 当前版本号 git diff name only 上一版本号
  • QMainWindow和QWidget

    一 QMainWindow QmainWindow主窗口为用户提供一个应用程序框架 它有自己的布局 可以在布局中添加控件 在主窗口中可以添加控件 比如将工具栏 菜单栏 状态栏等添加到布局管理器中 窗口类型介绍 QMainWindow QWi
  • 人工智能技术发展历史

    人工智能 Artificial Intelligence 简称 AI 的历史可以追溯到上世纪50年代 以下是其中的关键点 1956年 达特茅斯会议 1956年 美国达特茅斯学院举办了一次会议 邀请了一些研究者共同探讨人工智能的概念 目标和方
  • 【NLP入门教程】三、词性标注

    词性标注 Part of Speech Tagging POS Tagging 是自然语言处理中的另一个基本任务 它涉及将文本中的每个词元 Token 标注为其对应的词性 如名词 动词 形容词等 词性标注有助于我们理解文本的语法结构 进而支
  • win10 家庭版系统安装docker desktop遇到那些坑

    最近开发中需要用到docker来打包镜像 由于我的电脑系统是win10 家庭版 而docker desktop针对win10系统只支持64 位的 Windows 10 专业版 企业版和教育版 我又不想重装系统 因为要重装一堆工具 太麻烦了
  • FILCO Majestouch Convertible 2 键盘连接电脑说明

    键盘连接新电脑频次比较低 每次都忘记了怎么操作 要去翻说明书 上网找方法 在此记录下圣手2代键盘连接新电脑或者切换电脑的连接方式
  • Python数据可视化matplotlib.pyplot的使用

    1 生成数据 安装matplotlib windows cmd中 pip install matplotlib 在Python环境下 使用import matplotlib检测是否安装成功 不报错就是安装成功 重启写py的工具就可以进行使用
  • 2020东京奥运会奖牌排行--数据可视化

    爬取数据1 1 数据来源 https 2020 cctv com medal list index shtml 数据为下面图片的表格数据 2 具体代码 2 1需要提前下载好的pip install 库名 from selenium impo
  • Windows 下 VSCode 使用 SSH 连接报 Bad owner or permissions on C:\\Users\\Administrator/.ssh/config 错误问题解决

    Windows 下 VSCode 使用 SSH 连接报 Bad owner or permissions on C Users Administrator ssh config 错误问题解决 vscode ssh 链接报错情况 解决方法 v
  • JAVA环境变量配置方法(Windows)

    编写一个JAVA程序后 如果想让自己编写的代码可以正常运行 我们便需要对它进行编译和运行 而Java环境变量的配置就显得尤为重要 本篇文章 我们来谈一谈关于Java环境变量配置的一些方法 目录 方法一 方法二 方法三 方法一 1 右击 我的
  • ARP协议

    什么是ARP 地址解析协议 即ARP Address Resolution Protocol 是根据IP地址获取物理地址的一个TCP IP协议 主机发送信息时将包含目标IP地址的ARP请求广播到局域网络上的所有主机 并接收返回消息 以此确定
  • vue 字符串、数组之间的相互转换

    1 字符串转数组 str split 以分号拆分字符串 2 数组转字符串 arr join 把数组项拼接成字符串 并以分号隔开 默认情况下是以逗号隔开
  • Linux系统迁移(同一台电脑),重建UEFI启动文件

    电脑型号 hp 暗影精灵5 Air 显卡 RTX 2060 CPU i7 9750H 硬盘 500G固态 1T固态 启动方式 UEFI 操作系统 Ubuntu16 04 之前安装Ubuntu的时候给Ubuntu系统分配的空间太小了 安装新硬
  • 函数调用时的堆栈变化(实例)

    函数调用时的堆栈变化 关于函数调用是的堆栈变化 在网上找到的资料大都是一些配图文字等 理解起来尚有些困难 不过建议大家还是先了解一下基本的原理 下面我主要通过一个调用函数的实例来讲解一下函数调用时的堆栈变化 Ps 图片有点糊 大家最好自己跟
  • 一、时间序列分析---滞后算子(lag operator)

    1 基本概念 时间序列是以观测值发生的时期作为标记的数据集合 一般情况下 我们是从某个特定的时间开始采集数据 直到另一个固定的时间为止 我们可以将获得的数据表示为 y 1 y
  • 【hadoop——HDFS操作常用的Shell命令】

    1 Hadoop分布式文件系统 Hadoop Distributed File System HDFS 是Hadoop核心组件之一 我们已经安装好了Hadoop 2 7 1 其中已经包含了HDFS组件 不需要另外安装 最基本的shell命令