大数据从入门到实战-HDFS基本操作

本文介绍了如何在Linux环境中使用Hadoop HDFS进行文件系统操作,包括新建目录、上传文件、查看文件内容、移动与删除文件等基本操作。通过实例展示了如`hadoopfs-mkdir`、`hadoopfs-put`、`hadoopfs-ls`、`hadoopfs-mv`和`hadoopfs-rm`等常用命令的使用方法。
摘要由CSDN通过智能技术生成

HDFS的常用命令

接下来我们来了解一下一些常用的文件系统操作,例如:读取文件,新建目录,移动文件,删除数据,列出目录,等等。你可以在命令行中输入hadoop fs -help 命令读取每个命令的详细帮助文件。

现在请跟着我一起,在Linux环境下对Hadoop进行文件系统操作,来体验一下Hadoop的使用。

新建目录:

在本地和hadoop中分别创建文件夹:

本地创建目录:

root@evassh-12039904:~# mkdir /develop
root@evassh-12039904:~# mkdir /develop/input
root@evassh-12039904:~# mkdir /develop/output

hadoop创建目录:

root@evassh-12039904:~# start-dfs.sh

Starting namenodes on [localhost]
localhost: Warning: Permanently added 'localhost' (ECDSA) to the list of known hosts.
localhost: starting namenode, logging to /usr/local/hadoop/logs/hadoop-root-namenode-evassh-12039904.out
localhost: Warning: Permanently added 'localhost' (ECDSA) to the list of known hosts.
localhost: starting datanode, logging to /usr/local/hadoop/logs/hadoop-root-datanode-evassh-12039904.out
Starting secondary namenodes [0.0.0.0]
0.0.0.0: Warning: Permanently added '0.0.0.0' (ECDSA) to the list of known hosts.
0.0.0.0: starting secondarynamenode, logging to /usr/local/hadoop/logs/hadoop-root-secondarynamenode-evassh-12039904.out


root@evassh-12039904:~# hadoop fs -mkdir /usr
root@evassh-12039904:~# hadoop fs -mkdir /usr/input
root@evassh-12039904:~# hadoop fs -mkdir /usr/output

上传文件至dfs:

切换到本地input目录下,创建文件并添加数据:hello hadoop

root@evassh-12039904:~# cd /develop/input/
root@evassh-12039904:/develop/input# touch helloworld.txt
root@evassh-12039904:/develop/input# vi helloworld.txt

将该文件上传至hadoop:使用hadoop fs -put <要上传的文件> <hdfs目录> 命令。

root@evassh-12039904:/develop/input# hadoop fs -put helloworld.txt /usr/output

查看上传到HDFS的文件:

hadoop fs -cat /usr/output/helloworld.txt

移动与删除

列出HDFS中的目录和文件:

root@evassh-12039904:/develop/input# hadoop fs -ls /usr/hadoop
ls: `/usr/hadoop': No such file or directory
root@evassh-12039904:/develop/input# hadoop fs -ls /user/hadoop
root@evassh-12039904:/develop/input# hadoop fs -ls  /
Found 2 items
drwxr-xr-x   - root supergroup          0 2017-10-17 07:21 /user
drwxr-xr-x   - root supergroup          0 2022-07-26 07:00 /usr

root@evassh-12039904:/develop/input# hadoop fs -ls /usr        
Found 2 items
drwxr-xr-x   - root supergroup          0 2022-07-26 07:00 /usr/input
drwxr-xr-x   - root supergroup          0 2022-07-26 07:04 /usr/output
root@evassh-12039904:/develop/input# hadoop fs -ls /usr/output 
Found 1 items
-rw-r--r--   1 root supergroup         15 2022-07-26 07:04 /usr/output/helloworld.txt

helloworld.txt移动到根目录;

root@evassh-12039904:/develop/input# hadoop fs -mv /usr/output/helloworld.txt /
root@evassh-12039904:/develop/input# hadoop fs -ls /           
Found 3 items
-rw-r--r--   1 root supergroup         15 2022-07-26 07:04 /helloworld.txt
drwxr-xr-x   - root supergroup          0 2017-10-17 07:21 /user
drwxr-xr-x   - root supergroup          0 2022-07-26 07:00 /usr

删除helloworld.txt

root@evassh-12039904:/develop/input# hadoop fs -rm /helloworld.txt 
22/07/26 07:10:47 INFO fs.TrashPolicyDefault: Namenode trash configuration: Deletion interval = 0 minutes, Emptier interval = 0 minutes.
Deleted /helloworld.txt
root@evassh-12039904:/develop/input# hadoop fs -ls /               
Found 2 items
drwxr-xr-x   - root supergroup          0 2017-10-17 07:21 /user
drwxr-xr-x   - root supergroup          0 2022-07-26 07:00 /usr

hadoop fs -rm 命令只能删除文件或者空文件夹,如果要用这个命令去删除非空文件夹就会非常麻烦。

Linux中递归删除一致,我们在-rm之后加入一个-r即可,用-rmr也可。

下表列出了Hadoop常用的shell命令,在之后使用的时候可以作为参考。

选项名称使用格式含义
-ls-ls <路径>查看指定路径的当前目录结构
|-lsr |-lsr <路径> | 递归查看指定路径的目录结构|
|-du |-du <路径> | 统计目录下个文件大小|
|-dus |-dus <路径> | 汇总统计目录下文件(夹)大小|
|-count| -count [-q] <路径> | 统计文件(夹)数量|
|-mv |-mv <源路径> <目的路径> | 移动|
|-cp |-cp <源路径> <目的路径> | 复制|
|-rm |-rm [-skipTrash] <路径> | 删除文件/空白文件夹|
|-rmr |-rmr [-skipTrash] <路径> | 递归删除|
|-put |-put <多个 linux 上的文件> <hdfs 路径> | 上传文件|
|-copyFromLocal| -copyFromLocal <多个 linux 上的文件><hdfs 路径> | 从本地复制|
|-moveFromLocal |-moveFromLocal <多个 linux 上的文件><hdfs 路径> | 从本地移动|
|-getmerge |-getmerge <源路径> <linux 路径> | 合并到本地|
|-cat |-cat <hdfs 路径> | 查看文件内容|
|-text |-text <hdfs 路径> | 查看文件内容|
|-copyToLocal |-copyToLocal [-ignoreCrc] [-crc] [hdfs 源路径] [linux 目的路径] | 从HDFS复制到本地|
|-moveToLocal |-moveToLocal [-crc] <hdfs 源路径> <linux目的路径> | 从HDFS移动到本地|
|-mkdir |-mkdir <hdfs 路径> | 创建空白文件夹|
|-setrep | -setrep [-R] [-w] <副本数> <路径> | 修改副本数量|
|-touchz | -touchz <文件路径> | 创建空白文件|

  • HDFS中创建/usr/output/文件夹;
  • 在本地创建hello.txt文件并添加内容:“HDFS的块比磁盘的块大,其目的是为了最小化寻址开销。”;
  • hello.txt上传至HDFS/usr/output/目录下;
  • 删除HDFS/user/hadoop目录;
  • Hadoop上的文件hello.txtHDFS复制到本地/usr/local目录
root@evassh-12039904:/develop/input# touch hello.txt
root@evassh-12039904:/develop/input# vi hello.txt
root@evassh-12039904:/develop/input# hadoop fs -put hello.txt /usr/output
root@evassh-12039904:/develop/input# hadoop fs -ls /usr/output
Found 1 items
-rw-r--r--   1 root supergroup         74 2022-07-26 07:22 /usr/output/hello.txt
root@evassh-12039904:/develop/input# hadoop fs -rm -r /user/hadoop
22/07/26 07:22:52 INFO fs.TrashPolicyDefault: Namenode trash configuration: Deletion interval = 0 minutes, Emptier interval = 0 minutes.
Deleted /user/hadoop
root@evassh-12039904:/develop/input# hadoop fs -get /usr/output/hello.txt /usr/local
root@evassh-12039904:/develop/input# ls /usr/local
bin  etc  games  hadoop  hello.txt  include  lib  man  sbin  share  src
root@evassh-12039904:/develop/input# 

完整代码

pwd
回车
cd /
回车
mkdir /develop
回车
mkdir /dev
回车
mkdir /develop/input
回车
mkdir /develop/output
回车
start-dfs.sh
回车
hadoop fs -mkdir /usr
回车
hadoop fs -mkdir /usr/input
回车
hadoop fs -mkdir /usr/output
回车
hadoop fs -ls /
回车
hadoop fs -ls /usr
回车
cd /dev
回车
cd /develop/input
回车
touch helloworld.txt
回车
vim helloworld.txt
回车
hello hadoop
退出 :wq
hadoop fs -put helloworld.txt /usr/output
回车
hadoop fs -cat /usr/output/helloworld.txt
回车
hadoop fs -ls /user/hadoop
回车
hadoop fs -ls /
回车
hadoop fs -ls /usr
回车
hadoop fs -ls /user
回车
hadoop fs -mv /usr/output/helloworld.txt /
回车
hadoop fs -ls /
回车
hadoop fs -rm /helloworld.txt
回车
hadoop fs -mkdir /usr/output
回车
touch hello.txt
回车
vim hello.txt
回车
HDFS 的块比磁盘的块大,其目的是为了最小化寻址开销。
退出 wq
hadoop fs -put hello.txt /usr/output
回车
hadoop fs -ls /usr/output
回车
hadoop fs -rm -r /user/hadoop
回车
hadoop fs -get /usr/output/hello.txt /usr/local
回车
ls /usr/local

### 回答1: 头歌大数据入门实战 - 第2章 分布式文件系统hdfs 分布式文件系统HDFS是Apache Hadoop的核心组件之一,它是一个可扩展的、高可靠性的分布式文件系统,适用于大规模数据存储和处理。HDFS的设计目标是能够在廉价的硬件上运行,并且能够处理大量的数据。HDFS采用了主从架构,其中有一个NameNode负责管理文件系统的命名空间和客户端的访问,而多个DataNode负责存储实际的数据块。HDFS的数据块大小通常为128MB,这样可以减少寻道时间,提高数据读写效率。HDFS还提供了数据冗余机制,通过多个副本来保证数据的可靠性和高可用性。HDFS的应用场景非常广泛,包括数据仓库、日志分析、机器学习等领域。 ### 回答2: 分布式文件系统(hdfs)在大数据处理中扮演着非常重要的角色,本文将以“头歌大数据入门实战”的第二章为基础,分享一些本人的看法和学习体会。 首先,为什么需要分布式文件系统? 在大数据处理中,数据量很大,单机存储和处理是非常困难的,因此需要将数据存储到多个机器上,并且通过网络互相传递进行处理和计算,这就需要一种分布式文件系统来解决。分布式文件系统可以将数据分布到多个节点上,使得每个节点上处理的数据量相对较小,从而降低了单节点的存储和处理压力。 具体而言,hdfs是如何实现分布式文件系统的呢? hdfs的核心组成部分是namenode和datanode。namenode负责管理文件系统的命名空间和客户端访问数据的控制,datanode则负责实际存储数据和处理读写请求。其中,namenode具有高可靠性,因为它存储了整个文件系统的键数据,如果出现故障,将会对整个文件系统造成影响。因此,为了保证namenode的高可用性,通常会使用hadoop的另外一个子系统,即hadoop HA(High Availability)。 此外,在hdfs中,还提供了数据块(block)的概念,每个数据块的大小默认为128MB。hdfs中的大文件会自动被分为多个数据块存储在不同的datanode上,这些数据块之间的复制也可以由hdfs自动完成。在hdfs中,副本的存储策略和副本数量可以由管理员进行配置,首次存储数据时,可以指定数据块的复制因子,副本在hdfs集群中具有很好的容错性,即使某个datanode发生故障,也可以从其他datanode上获取副本,从而保证了数据的可靠性和一致性。 最后,对于初学者而言,在学习hdfs的时候,需要先了解hdfs的基本组成和特性,再通过具体的实践和案例去深入学习和了解。在hdfs的使用过程中,需要注意一些具体的细节,例如文件的存储路径、权限设置、读写方式、数据复制等,都会对hdfs的性能和可靠性产生影响,需要认真细致地进行调试和优化。 总之,分布式文件系统在大数据处理中是非常重要的一环,hdfs作为其中的代表产品,具有很好的可扩展性、高可靠性和容错性,被广泛应用于大数据领域。学习hdfs需要注重基础知识的学习和实际练习的结合,全面深入地理解hdfs的原理和实现,从而能够更好地进行大数据处理和应用。 ### 回答3: 分布式文件系统HDFS是Apache Hadoop的核心组件之一,是一种适用于存储大量数据的分布式文件系统。该系统通过横向扩展,将大量的数据分散存储在多台计算机上,旨在提高数据的可靠性和可扩展性。 HDFS是由两个核心组件组成的:NameNode和DataNode。NameNode是HDFS的主节点,主要负责管理文件系统的命名空间和权限控制。它维护着整个文件系统的元数据信息,包括文件的名称、块的位置、副本数量等。DataNode是HDFS的数据节点,主要负责存储实际的数据块。在HDFS中,文件会被划分为一个个的块,并将每个块的多个副本分散存储在多台机器上,以确保数据的可靠性和高可用性。 HDFS还提供了一些重要的特性,例如数据的自动副本备份机制、故障转移系统、数据块的迁移和压缩等。这些特性可以帮助用户轻松地管理大规模的数据,从而降低存储和维护成本。 为了更好地理解HDFS的工作原理,用户需要学习Hadoop中的文件读写操作。针对文件的读操作主要分为两个阶段:第一阶段是客户端向NameNode查询文件的元数据信息,包括所有数据块的位置和大小;第二阶段是客户端根据元数据信息向对应的DataNode获取数据块,并将数据合并还原为一个完整的文件。文件的写操作大致分为三个步骤:首先,客户端向NameNode申请创建一个新的文件,并分配空间;其次,客户端向一个或多个DataNode写入数据;最后,客户端通知NameNode文件写入完成,NameNode更新文件系统中该文件的元数据信息。 总之,分布式文件系统HDFS大数据领域扮演着至重要的角色,它能够协助用户轻松处理大规模的数据,降低存储和维护成本,提高数据的可靠性和可扩展性,具有重要的发展前景和应用价值。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值