2 weekend110的HDFS的JAVA客户端编写 + filesystem设计思想总结

简介:

HDFS的JAVA客户端编写 

 

现在,我们来玩玩,在linux系统里,玩eclipse

或者,

 

 

即,更改图标,成功

 

这个,别慌。重新换个版本就好,有错误出错是好事。

http://www.eclipse.org/downloads/download.php?file=/technology/epp/downloads/release/luna/SR2/eclipse-jee-luna-SR2-linux-gtk-x86_64.tar.gz

具体如何下载,我就省略了。直接继续

这个,肯定是与之前,有重复的,没关系,它会自行覆盖,

就是说,home/hadoop/app/hadoop-2.4.1/share/hadoop/common/lib

和,home/hadoop/app/hadoop-2.4.1/share/hadoop/hdfs/lib

有重复的,没关系,它会自行覆盖。

 

到此,hdfslib下的相关依赖jar包加载完毕。

 

 

 

New是无法new的,只能get和set方法

 

 

 

 

本地,java里的那个fileoutputstream。

它不认识hdfs://

希望得到,这样的一个解析,file:///

 

玩windows下的eclipse去。

 

总结:其实,创建User Library,如hdfslib,mapreducelib,yarnlib。

 

如创建hdfs lib,则需要

    /home/hadoop/app/hadoop-2.4.1/share/hadoop/hdfs/*

    /home/hadoop/app/hadoop-2.4.1/share/hadoop/hdfs/lib/*

    /home/hadoop/app/hadoop-2.4.1/share/hadoop/common/*

    home/hadoop/app/hadoop-2.4.1/share/hadoop/common/lib/*

 

如创建mapreduce lib,则需要

    /home/hadoop/app/hadoop-2.4.1/share/hadoop/mapreduce/*

     /home/hadoop/app/hadoop-2.4.1/share/hadoop/mapreduce/lib/*

    /home/hadoop/app/hadoop-2.4.1/share/hadoop/common/*

    home/hadoop/app/hadoop-2.4.1/share/hadoop/common/lib/*

 

如创建yarn lib,则需要

    /home/hadoop/app/hadoop-2.4.1/share/hadoop/yarn/*

    /home/hadoop/app/hadoop-2.4.1/share/hadoop/yarn/lib/*

    /home/hadoop/app/hadoop-2.4.1/share/hadoop/common/*

    home/hadoop/app/hadoop-2.4.1/share/hadoop/common/lib/*

 

如创建httpfslib,则需要

    /home/hadoop/app/hadoop-2.4.1/share/hadoop/httpfs/tomcat/lib*

    /home/hadoop/app/hadoop-2.4.1/share/hadoop/common/*

    home/hadoop/app/hadoop-2.4.1/share/hadoop/common/lib/*

 

如创建toolslib,则需要

    /home/hadoop/app/hadoop-2.4.1/share/hadoop/tools/lib*

    /home/hadoop/app/hadoop-2.4.1/share/hadoop/common/*

    home/hadoop/app/hadoop-2.4.1/share/hadoop/common/lib/*

 

 

 

  会有重复的,但是,没关系,自己会覆盖。!!!

  当然,这只是为了具体分析,在生产中,都是直接导入总包。

 

 

 

如创建hdfslib,则需要

    /home/hadoop/app/hadoop-2.4.1/share/hadoop/hdfs/*

    /home/hadoop/app/hadoop-2.4.1/share/hadoop/hdfs/lib/*

    /home/hadoop/app/hadoop-2.4.1/share/hadoop/common/*

    home/hadoop/app/hadoop-2.4.1/share/hadoop/common/lib/*

 

如创建mapreducelib,则需要

    /home/hadoop/app/hadoop-2.4.1/share/hadoop/mapreduce/*

     /home/hadoop/app/hadoop-2.4.1/share/hadoop/mapreduce/lib/*

    /home/hadoop/app/hadoop-2.4.1/share/hadoop/common/*

    /home/hadoop/app/hadoop-2.4.1/share/hadoop/common/lib/*

 

如创建yarnlib,则需要

    /home/hadoop/app/hadoop-2.4.1/share/hadoop/yarn/*

    /home/hadoop/app/hadoop-2.4.1/share/hadoop/yarn/lib/*

    /home/hadoop/app/hadoop-2.4.1/share/hadoop/common/*

    home/hadoop/app/hadoop-2.4.1/share/hadoop/common/lib/*

 

如创建httpfslib,则需要

    /home/hadoop/app/hadoop-2.4.1/share/hadoop/httpfs/tomcat/lib*

    /home/hadoop/app/hadoop-2.4.1/share/hadoop/common/*

    home/hadoop/app/hadoop-2.4.1/share/hadoop/common/lib/*

 

如创建toolslib,则需要

    /home/hadoop/app/hadoop-2.4.1/share/hadoop/tools/lib*

    /home/hadoop/app/hadoop-2.4.1/share/hadoop/common/*

    /home/hadoop/app/hadoop-2.4.1/share/hadoop/common/lib/*

 

 

 

会有重复的,但是,没关系,自己会覆盖。

当然,这只是为了具体分析,在生产中,都是直接导入总包。

 

FileSystem是一个抽象类,New是无法new的,只能get和set方法

这里,有个非常实用的快捷键,

在C盘,新建qingshu.txt

出现错误是好事,

原来是这里,

后经查找资料,是少了个 winutils.exe

这只是个WARN警告而已,不影响运行。

错误是:

java.lang.IllegalArgumentException:Wrong FS:hdfs://weekend110:9000/aa,expected:file:///

解决方案一:就不再写了,是上面的在Linux里解决的那种方法。

将/home/hadoop/app/hadoop-2.4.1/etc/hadoop/core-site.xml

和/home/hadoop/app/hadoop-2.4.1/etc/hadoop/hdfs-site.xml

放到,

 

 

解决方案二:

 

身份报错,windows是administrator,hadoop集群那边是hadoop ,supergroup。

 

-DHADOOP_USER_NAME=Hadoop

问题在:d:\test.txt这个文件。此文件没有扩展名

解决方法:电脑工具栏-文件夹选项-查看-高级设置:-隐藏已知文件类型的扩展名(勾选去掉-应用-确定)

 

解决方案:

解决方案:

比较底层的写法,适合懂原理。

封装好的写法,适合开发。

 

解决方案:

 

 

快捷键是什么?

我的只能这样

默认是path,养成业务习惯。

 

等价于,下面

 

 

 

总结,本地文件系统操作很简单,new file即可,

  具体的实现是不一样的。但是,上层有一个抽象的文件系统,是Filesystem,为什么这么弄?

  是因为Hadoop的文件系统伴随其他的框架结耦合的,我在编程时,只需面向父即抽象,filesystem就可以了,filesystem具体去拿哪个文件系统,我上层不需去管,

  你具体是本地文件系统RawLocalFileSystem,那我就可以拿本地文件系统去读啊

  你的数据是放在hdfs里面,那我就可以拿DistributedFileSystem去读啊

  你的数据是放在S3里面,那我就可以拿S3FileSystem去读啊

  你的数据是放在htp服务器里面,,,,,,,都可以。

 

  总而言之,降低耦合度。

 

 

 

 

Filesystem设计思想总结

也可以这样来,

 


本文转自大数据躺过的坑博客园博客,原文链接:http://www.cnblogs.com/zlslch/p/5893541.html,如需转载请自行联系原作者

相关文章
|
6月前
|
人工智能 Java API
MCP客户端调用看这一篇就够了(Java版)
本文详细介绍了MCP(Model Context Protocol)客户端的开发方法,包括在没有MCP时的痛点、MCP的作用以及如何通过Spring-AI框架和原生SDK调用MCP服务。文章首先分析了MCP协议的必要性,接着分别讲解了Spring-AI框架和自研SDK的使用方式,涵盖配置LLM接口、工具注入、动态封装工具等步骤,并提供了代码示例。此外,还记录了开发过程中遇到的问题及解决办法,如版本冲突、服务连接超时等。最后,文章探讨了框架与原生SDK的选择,认为框架适合快速构建应用,而原生SDK更适合平台级开发,强调了两者结合使用的价值。
9626 33
MCP客户端调用看这一篇就够了(Java版)
|
6月前
|
存储 网络协议 Java
Java获取客户端IP问题:返回127.0.0.1
总结:要解决Java获取客户端IP返回127.0.0.1的问题,首先要找出原因,再采取合适的解决方案。请参考上述方案来改进代码,确保在各种网络环境下都能正确获取客户端IP地址。希望本文对您有所帮助。
485 25
|
11月前
|
Java
java实现从HDFS上下载文件及文件夹的功能,以流形式输出,便于用户自定义保存任何路径下
java实现从HDFS上下载文件及文件夹的功能,以流形式输出,便于用户自定义保存任何路径下
365 34
|
存储 Java API
Java实现导出多个excel表打包到zip文件中,供客户端另存为窗口下载
Java实现导出多个excel表打包到zip文件中,供客户端另存为窗口下载
895 4
|
分布式计算 Java Hadoop
Hadoop-30 ZooKeeper集群 JavaAPI 客户端 POM Java操作ZK 监听节点 监听数据变化 创建节点 删除节点
Hadoop-30 ZooKeeper集群 JavaAPI 客户端 POM Java操作ZK 监听节点 监听数据变化 创建节点 删除节点
242 1
|
分布式计算 资源调度 Hadoop
Hadoop-10-HDFS集群 Java实现MapReduce WordCount计算 Hadoop序列化 编写Mapper和Reducer和Driver 附带POM 详细代码 图文等内容
Hadoop-10-HDFS集群 Java实现MapReduce WordCount计算 Hadoop序列化 编写Mapper和Reducer和Driver 附带POM 详细代码 图文等内容
306 3
|
分布式计算 资源调度 Hadoop
大数据-01-基础环境搭建 超详细 Hadoop Java 环境变量 3节点云服务器 2C4G XML 集群配置 HDFS Yarn MapRedece
大数据-01-基础环境搭建 超详细 Hadoop Java 环境变量 3节点云服务器 2C4G XML 集群配置 HDFS Yarn MapRedece
345 4
|
Java
java实现从HDFS上下载文件及文件夹的功能,以流形式输出,便于用户自定义保存任何路径下
java实现从HDFS上下载文件及文件夹的功能,以流形式输出,便于用户自定义保存任何路径下
181 2
java实现从HDFS上下载文件及文件夹的功能,以流形式输出,便于用户自定义保存任何路径下
|
1月前
|
JSON 网络协议 安全
【Java】(10)进程与线程的关系、Tread类;讲解基本线程安全、网络编程内容;JSON序列化与反序列化
几乎所有的操作系统都支持进程的概念,进程是处于运行过程中的程序,并且具有一定的独立功能,进程是系统进行资源分配和调度的一个独立单位一般而言,进程包含如下三个特征。独立性动态性并发性。
156 1
|
1月前
|
JSON 网络协议 安全
【Java基础】(1)进程与线程的关系、Tread类;讲解基本线程安全、网络编程内容;JSON序列化与反序列化
几乎所有的操作系统都支持进程的概念,进程是处于运行过程中的程序,并且具有一定的独立功能,进程是系统进行资源分配和调度的一个独立单位一般而言,进程包含如下三个特征。独立性动态性并发性。
172 1