当前位置: 首页> 汽车> 车展 > 2、HDFS编程实践

2、HDFS编程实践

时间:2025/8/23 8:32:33来源:https://blog.csdn.net/2301_78696436/article/details/142254710 浏览次数: 0次

目录

  • 1、Hadoop三种Shell方式
    • (1)目录操作
      • 1、查看目录
      • 2、创建目录
      • 3、删除目录
    • (2)文件操作
      • 1、创建文件
      • 2、上传文件
      • 3、下载文件
      • 4、拷贝文件
  • 2、利用Web界面管理HDFS
  • 3、利用Java API 与 HDFS 进行交互
    • (1)安装eclipse包
    • (2)使用 Eclipse 开发试 调试 HDFS Java 程序
    • (3)编译运行程序
      • 1、启动HDFS
      • 2、创建文件
      • 3、上传文件
      • 4、回到eclipse
      • 5、在HDFS查看merge.txt的内容
    • (4)部署用户程序
      • 1、创建目录
      • 2、将程序打包成JAR包
      • 3、删除merge.txt
      • 4、运行jar包
    • (5)、关闭HDFS

目的:
熟练使用HDFS操作常用的Shell命令
熟悉HDFS操作常用的Java API
在这里插入图片描述

1、Hadoop三种Shell方式

在这里插入图片描述

(1)目录操作

1、查看目录

在这里插入图片描述

2、创建目录

在这里插入图片描述

3、删除目录

在这里插入图片描述

(2)文件操作

1、创建文件

在这里插入图片描述

2、上传文件

在这里插入图片描述

3、下载文件

在这里插入图片描述

4、拷贝文件

在这里插入图片描述

2、利用Web界面管理HDFS

启动HDF、在浏览器输入http://localhost:9870

./sbin/start-dfs.sh

在这里插入图片描述
在这里插入图片描述

3、利用Java API 与 HDFS 进行交互

在这里插入图片描述

(1)安装eclipse包

链接: link

链接:https://pan.baidu.com/s/1V_XVDTl4zGcT5gXx7Z2qDA
提取码:1vy7

在这里插入图片描述

(2)使用 Eclipse 开发试 调试 HDFS Java 程序

import java.io.IOException;
import java.io.PrintStream;
import java.net.URI;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.*;/*** 过滤掉文件名满足特定条件的文件*/
class MyPathFilter implements PathFilter {String reg = null;MyPathFilter(String reg) {this.reg = reg;}public boolean accept(Path path) {if (!(path.toString().matches(reg))) {return true;}return false;}
}/*** 利用 FSDataOutputStream 和 FSDataInputStream 合并 HDFS 中的文件*/
public class MergeFile {Path inputPath = null; // 待合并的文件所在的目录的路径Path outputPath = null; // 输出文件的路径public MergeFile(String input, String output) {this.inputPath = new Path(input);this.outputPath = new Path(output);}public void doMerge() throws IOException {Configuration conf = new Configuration();conf.set("fs.defaultFS", "hdfs://localhost:9000");conf.set("fs.hdfs.impl", "org.apache.hadoop.hdfs.DistributedFileSystem");FileSystem fsSource = FileSystem.get(URI.create(inputPath.toString()), conf);FileSystem fsDst = FileSystem.get(URI.create(outputPath.toString()), conf);// 下面过滤掉输入目录中后缀为.abc 的文件FileStatus[] sourceStatus = fsSource.listStatus(inputPath, new MyPathFilter(".*\\.abc"));FSDataOutputStream fsdos = fsDst.create(outputPath);PrintStream ps = new PrintStream(System.out);// 下面分别读取过滤之后的每个文件的内容,并输出到同一个文件中for (FileStatus sta : sourceStatus) {// 下面打印后缀不为.abc 的文件的路径、文件大小System.out.print("路径:" + sta.getPath() + " 文件大小:" + sta.getLen()+ " 权限:" + sta.getPermission() + " 内容:");FSDataInputStream fsdis = fsSource.open(sta.getPath());byte[] data = new byte[1024];int read = -1;while ((read = fsdis.read(data)) > 0) {ps.write(data, 0, read);fsdos.write(data, 0, read);}fsdis.close();}ps.close();fsdos.close();}public static void main(String[] args) throws IOException {MergeFile merge = new MergeFile("hdfs://localhost:9000/user/damon/","hdfs://localhost:9000/user/damon/merge.txt");merge.doMerge();}
}

在这里插入图片描述

(3)编译运行程序

1、启动HDFS

cd /usr/local/hadoop #进入 hadoop 安装目录
./sbin/start-dfs.sh #启动 hdfs
jps #查看进程
./bin/hdfs dfs -ls / #查看根目录下内容
./bin/hdfs dfs -ls/user #查看/user 目录下内容

2、创建文件

在这里插入图片描述

3、上传文件

在这里插入图片描述

4、回到eclipse

运行文件:
在这里插入图片描述

5、在HDFS查看merge.txt的内容

在这里插入图片描述

(4)部署用户程序

1、创建目录

在这里插入图片描述

2、将程序打包成JAR包

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

3、删除merge.txt

在这里插入图片描述

4、运行jar包

./bin/hadoop jar ./myapp/HDFSexample.jar

在这里插入图片描述
在这里插入图片描述

(5)、关闭HDFS

在这里插入图片描述

关键字:2、HDFS编程实践

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

责任编辑: