2_2-分布式文件系统HDFS

该文详细介绍了如何使用Hadoop命令行工具进行HDFS操作,包括创建目录、编辑文本文件、上传文件、删除目录以及从HDFS复制文件到本地系统。

编程要求
在右侧命令行中启动Hadoop,进行如下操作。

在HDFS中创建/usr/output/文件夹;
在本地创建hello.txt文件并添加内容:“HDFS的块比磁盘的块大,其目的是为了最小化寻址开销。”;
将hello.txt上传至HDFS的/usr/output/目录下;
删除HDFS的/user/hadoop目录;
将Hadoop上的文件hello.txt从HDFS复制到本地/usr/local目录。

start-dfs.sh
hadoop fs -mkdir /usr
hadoop fs -mkdir /usr/output
touch hello.txt
vim hello.txt
#进入到hello.txt中写
HDFS的块比磁盘的块大,其目的是为了最小化寻址开销。
#然后esc , shift+: wq  退出来
hadoop fs -put hello.txt /usr/output
hadoop fs -rm -r /user/hadoop
hadoop fs -copyToLocal /usr/output/hello.txt /usr/local

最后运行记得把hello.txt中的内容复制到代码文件里面

### 关于分布式文件系统 HDFS 的相关内容 #### HDFS 的定义与背景 HDFS 是一种用于大规模数据处理的分布式文件系统,设计目标是为了支持运行在廉价硬件上的超大文件存储。它通过提供高吞吐量的数据访问能力,非常适合需要大量数据集的应用程序[^2]。 #### HDFS 的体系结构 HDFS 的核心组成部分包括名称节点(NameNode)和数据节点(DataNode)。 - **名称节点**负责维护文件系统的元数据信息,例如文件树结构、块位置等。它是整个文件系统的管理中心[^3]。 - **数据节点**则负责实际的数据存储工作,并定期向名称节点发送心跳信号以报告其状态[^1]。 #### HDFS 的存储机制 HDFS 将文件分割成固定大小的块(默认为 128MB),并将这些块分布到集群中的不同数据节点上进行存储。为了提高可靠性和可用性,HDFS 还会对每个块进行多副本备份,默认情况下会保存三个副本[^4]。 #### HDFS 的读写过程 - **读取流程**: 客户端请求从 HDFS 中读取文件时,首先联系名称节点获取该文件所在的数据节点地址列表;随后直接连接至对应的数据节点下载所需数据[^5]。 - **写入流程**: 当客户端上传新文件到 HDFS 上时,同样先通知名称节点分配合适的存储位置给各个分片后再执行具体的写操作。 以下是基于 Java API 实现的一个简单例子展示如何创建目录并复制本地文件到 HDFS: ```java import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.fs.FileSystem; import org.apache.hadoop.fs.Path; public class HDFSDemo { public static void main(String[] args) throws Exception{ Configuration conf = new Configuration(); FileSystem fs = FileSystem.get(conf); Path srcPath = new Path("/path/to/local/file"); Path dstPath = new Path("/path/in/hdfs"); // 创建目录 boolean mkdirsResult = fs.mkdirs(new Path("/test")); System.out.println("Mkdir result:" + mkdirsResult); // 复制文件到HDFS fs.copyFromLocalFile(srcPath, dstPath); fs.close(); } } ``` 上述代码片段展示了怎样利用 Apache Hadoop 提供的标准库函数完成一些基础任务如建立远程路径下的子目录以及把主机内的文档迁移到指定的目标位置下。 #### 命令行工具的操作方法 除了编程接口之外,还可以借助 Shell 命令轻松实现对 HDFS 文件系统的增删改查等功能。比如下面这条语句就是用来将某个特定地方的档案转移到虚拟环境里去: ```bash hadoop fs -put /local/path/to/source /destination/on/HDFS ``` 此命令的作用是从用户的个人电脑硬盘驱动器里面选取某份资料传送到云端服务器之中加以保管起来以便后续调用分析等等用途。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

问问问你的心

一起学习一起努力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值