实验一 HDFS的Shell操作

一、实验目的

熟悉HDFS Shell的语法格式,完成对HDFS上文件和目录的一系列操作

二、实验要求

2.1  练习dfs常用的子命令

① -ls

② -du

③ -mv

④ -cp

⑤ -rm

⑥ -put

⑦ -cat

⑧ -help

⑨ -mkdir

⑩ -get

2.2通过Shell脚本定时采集数据到HDFS

三、实验过程 

3.1 常用的子命令执行过程

1.

Hadoop2:

Hadoop3:

2.

3.

4.

5.

6.

3.2 通过Shell脚本定时采集数据到HDFS 

### HDFS Shell 命令使用教程 HDFS Shell 提供了系列命令来操作 Hadoop 文件系统 (HDFS),这些命令类似于 Linux 的 shell 命令。以下是常用的 HDFS Shell 命令及其功能: #### 1. 查看文件列表 `hdfs dfs -ls <path>` 此命令用于列出指定路径下的文件和目录[^1]。 #### 2. 创建目录 `hdfs dfs -mkdir [-p] <paths>` 创建个新目录,如果加上 `-p` 参数,则会递归创建父级目录。 #### 3. 删除文件/目录 `hdfs dfs -rm [-r] <file>` 删除文件或目录,若要强制删除非空目录需加参数 `-r` 表示递归删除[^1]。 #### 4. 上载本地文件到 HDFS `hdfs dfs -put <localsrc> ... <dst>` 将本地文件上传至 HDFS 中的目标位置[^1]。 #### 5. 下载 HDFS 文件到本地 `hdfs dfs -get <src> <localdst>` 从 HDFS 下载文件并保存到本地磁盘中[^1]。 #### 6. 显示文件内容 `hdfs dfs -cat <src>` 显示 HDFS 文件的内容[^1]。 --- ### Java API 操作示例代码 除了通过 Shell 命令操作 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(); conf.set("fs.defaultFS", "hdfs://namenode:8020"); // 设置 NameNode 地址 FileSystem fs = FileSystem.get(conf); // 获取文件系统对象 } } ``` 以上代码片段展示了如何设置 `Configuration` 对象以及获取 `FileSystem` 实例[^2]。 #### 写入文件到 HDFS ```java import java.io.OutputStream; // 继续之前的代码... Path dst = new Path("/example/output.txt"); OutputStream os = fs.create(dst, true); os.write("Hello HDFS!".getBytes()); os.close(); ``` 该部分实现了向 HDFS 写入字符串 “Hello HDFS!” 到 `/example/output.txt` 路径下。 #### 从 HDFS 读取文件 ```java import java.io.InputStream; // 继续之前的代码... Path src = new Path("/example/input.txt"); InputStream is = fs.open(src); byte[] buffer = new byte[1024]; int bytesRead = is.read(buffer); System.out.println(new String(buffer, 0, bytesRead)); is.close(); ``` 这里演示了如何从 HDFS 加载文件内容并通过标准输出打印出来[^2]。 #### 关闭资源 无论何时结束程序运行前都应记得释放所占用的所有外部资源: ```java if (fs != null) { fs.close(); // 确保关闭 FileSytem 避免内存泄漏等问题发生 } ``` --- ### 总结 无论是采用 HDFS Shell 方式还是基于 Java API 开发应用软件,都可以高效便捷地管理和维护海量数据集。前者适合快速测试验证想法;后者则更适合构建自动化流程或者集成第三方服务场景之中[^3]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

莓事哒

你的鼓励将是我创作的最大动力

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

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

打赏作者

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

抵扣说明:

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

余额充值