单元4 任务4.5 HDFS的Java API操作_第1页
单元4 任务4.5 HDFS的Java API操作_第2页
单元4 任务4.5 HDFS的Java API操作_第3页
单元4 任务4.5 HDFS的Java API操作_第4页
单元4 任务4.5 HDFS的Java API操作_第5页
已阅读5页,还剩15页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

《大数据平台部署与运维》单元4HDFS分布式存储任务4.5HDFS的JavaAPI操作01掌握HDFS操作常用的JavaAPI02能够应用JavaAPI操作HDFS学习目标任务4.5HDFS的JavaAPI操作【任务场景】经理:现在我们已经把环境搭建好了,接下来创建一个项目,熟悉一下HDFSJavaAPI操作吧。小张:嗯,那我写个demo吧,那我们数据怎么办呢?经理:可以模拟一下咱们电商网站的数据。小张:好的,经理。任务4.5HDFS的JavaAPI操作任务布置:本任务目的在于学习HDFS的JavaAPI操作,在安装Hadoop基础环境之上使用IDEA工具,熟悉并掌握目录与文件的创建和删除操作,掌握文件上传与下载操作、掌握数据流与文件读写操作,掌握目录与文件的重命名操作。知识点1HDFS的常用JavaAPIHadoop是由Java语言编写的,其中Hadoop3.1.0系列是JDK1.8编写,我们可以通过JavaAPI调用HDFS的所有交互操作接口。Hadoop3.1.0javaAPI官方地址:/docs/r3.1.0/api/index.html知识点1HDFS的常用JavaAPI通过FileSystem访问远程集群一般情况下需要给定配置信息,Hadoop通过自定义的Configuration类来给定hadoop相关的连接信息。Configuration采用延迟加载的模式来加载配置信息,加载顺序是按照代码顺序加载,但是如果在代码中强制指定的话,那么会覆盖文件中的加载。//创建配置器Configurationconf=

new

Configuration();conf.set("",

"hdfs://localhost:9000");conf.set("mapred.jop.tracker",

"localhost:9001");Configurationconf=

new

Configuration();

conf.addResource("core-default.xml");

conf.addResource("core-site.xml");Configuration类方法说明voidset(Stringname,Stringvalue)设置属性,name是属性名称,value是属性值voidaddResource(Stringname)添加一个配置资源知识点1HDFS的常用JavaAPIJavaAPI调用HDFS的所有交互操作接口中最常用的类是FileSystem类,包含了hdfsdfs相关操作的实现。如下是FlieSystem类的声明:

FileSystem类位于org.apache.hadoop.fs包中,从声明中我们能看到,它是一个抽象类,其次父类是Configured,实现了Closeable接口。Closeable接口是可以关闭的数据源或目标。需要实现close方法,可释放对象保存的资源(如打开文件)。知识点1HDFS的常用JavaAPIHadoop提供的操作HDFS的api接口是以FileSystem为基础的,在该类中提供一系列操作文件的方法,比如:文件上传copyFromLocalFile方法,创建文件create方法,删除文件delete方法等。该类的包名为org.apache.hadoop.fs.FileSystem。该类主要的子类有:DistributedFileSystem,WebHdfsFileSystem等。方法说明staticFileSystemget(Configutationconf)获取FileSystem实例,静态方法staticFileSystemget(URIuri,Configutationconf)获取FileSystem实例,静态方法staticFileSystemget(URIuri,Configutationconf,Stringuser)获取FileSystem实例,静态方法,多个用户参数FSDataInputStreamopen(Pathf)在Path位置打开一个文件输入流voidcopyFromLocalFile(Pathsrc,Pathdst)将本地文件拷贝到文件系统voidcopyToLocalFile(Pathsrc,Pathdst)讲文件系统上的文件复制到本地booleanexists(Pathf)检查文件或目录是否存在booleanmkdirs(Pathf)新建所有目录(包括父目录),f是完整路径abstractbooleanmkdirs(Pathf,FsPermissionp)在文件系统上创建指定文件,包括上级目录FSOutputStreamcreate(Pathf)创建指定路径的文件,返回一个输出流booleandelete(Pathf,Booleanrecursive)永久删除指定的文件或目录,如果是空目录,recursive直可以忽略任务4.5HDFS的JavaAPI操作【工作流程】HDFS的JavaAPI操作相关流程包括:1.基础环境准备2.目录与文件的创建、删除操作3.文件上传与下载操作任务4.5HDFS的JavaAPI操作【操作步骤】1.基础环境准备HDFS的JavaAPI相关操作依赖的基础环境,包括需要安装好Hadoop以及开发工具等,具体软件环境如下所示:前面我们已经介绍了Windows的IDEA的安装操作,该任务我们介绍一下Linux的IDEA操作,Linux版本的IDEA解压即用非常方便,要求我们的Linux系统是桌面版。编号软件基础版本号1操作系统CentOS7桌面版,主机名node12Java编译器JDK1.83HadoopHadoop3.1.04IDEA推荐新版本任务4.5HDFS的JavaAPI操作(1)IDEA的Linux环境安装首先我们登陆IDEA官网下载入口:/idea/download/,选择Linux版本下载最新安装包。

将下载的安装包上传到服务器,然后解压,相关命令如下:[root@master01Downloads]#lsideaIC-2021.2.3.tar.gz[root@master01Downloads]#tarzxvfideaIC-2021.2.3.tar.gz-C/usr/local/

启动IDEA[root@master01Downloads]#cd/usr/local/[root@master01local]#mvidea-IC-212.5457.46idea[root@master01local]#cdidea/bin/[root@master01bin]#./idea.sh任务4.5HDFS的JavaAPI操作(2)导入Maven依赖 首先我们创建一个Maven项目,项目名称我们可以命名为HDFSDemo,然后打开pom.xml文件,导入Maven依赖项:<dependencies><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>RELEASE</version></dependency><dependency><groupId>org.apache.hadoop</groupId><artifactId>hadoop-hdfs</artifactId><version>3.1.1</version></dependency><dependency><groupId>org.apache.hadoop</groupId><artifactId>hadoop-client</artifactId><version>3.1.1</version></dependency><dependency><groupId>org.apache.hadoop</groupId><artifactId>hadoop-common</artifactId><version>3.1.1</version></dependency><dependency><groupId>org.apache.logging.log4j</groupId><artifactId>log4j-core</artifactId><version>2.8.2</version></dependency></dependencies>任务4.5HDFS的JavaAPI操作2.目录与文件的创建、删除操作//创建方法getFielSystem,实现获取文件系统对象

publicstaticFileSystemgetFileSystem()throwsIOException,URISyntaxException{Configurationconf=newConfiguration();//创建conf对象

URIuri=newURI("hdfs://11:9000");//创建uri对象

finalFileSystemfileSystem=FileSystem.get(uri,conf);//创建fileSystem对象

returnfileSystem;}

//此方法实现目录遍历

publicstaticvoidlist(Stringdir)throwsException{FileSystemfileSystem=getFileSystem();FileStatus[]listStatus=fileSystem.listStatus(newPath(dir));for(FileStatusfileStatus:listStatus){booleanisDir=fileStatus.isDirectory();Stringname=fileStatus.getPath().toString();System.out.println(isDir+""+name);}}

publicstaticvoidmkdir(Stringpath)throwsException{finalFileSystemfileSystem=getFileSystem();fileSystem.mkdirs(newPath(path));//创建文件夹

//遍历文件夹下的内容

list("/");}任务4.5HDFS的JavaAPI操作

publicstaticvoidcreate(Stringpath)throwsException{finalFileSystemfileSystem=getFileSystem();fileSystem.create(newPath(path));//创建文件夹

//遍历文件夹下的内容

list("/");}/*删除文件夹*/publicstaticvoiddelete(Stringpath)throwsException{finalFileSystemfileSystem=getFileSystem();fileSystem.delete(newPath(path),true);//创建文件夹

//遍历文件夹下的内容

list("/");}

publicstaticvoidmain(Stringargs[])throwsException{//创建目录

//mkdir("/bigdata");//删除目录

//delete("/bigdata");//创建文件

create("/demo.txt");}任务4.5HDFS的JavaAPI操作3.文件上传与下载操作(1)数据流与文件读写实现上传和下载//创建方法getFileSystem,实现获取文件系统对象publicstaticFileSystemgetFileSystem()throwsIOException,URISyntaxException{Configurationconf=newConfiguration();//创建conf对象URIuri=newURI("hdfs://11:9000");//创建uri对象finalFileSystemfileSystem=FileSystem.get(uri,conf);//创建fileSystem对象returnfileSystem;}

//创建方法uploadFile,实现文件上传publicstaticvoiduploadFile(Stringsource,Stringdest)throwsIOException,FileNotFoundException,URISyntaxException{FileSystemfileSystem=getFileSystem();FSDataOutputStreamout=fileSystem.create(newPath(dest));//创建文件,返回输出流对象FileInputStreamin=newFileInputStream(source);//定义文件输入流IOUtils.copyBytes(in,out,1024,true);//文件上传到HDFS的指定目录下}

任务4.5HDFS的JavaAPI操作//创建方法downloadFile,实现文件下载到本地publicstaticvoiddownloadFile(Stringsource,Stringdest)throwsIOException,URISyntaxException{FileSystemfileSystem=getFileSystem();FSDataInputStreamin=fileSystem.open(newPath(source));FileOutputStreamout=newFileOutputStream(dest);IOUtils.copyBytes(in,out,1024,true);//将文件内容下载到本地}

publicstaticvoidmain(Stringargs[])throwsException{//将本地"/opt/hello.txt"文件上传到HDFS的"/"目录下uploadFile("/opt/hello.txt","/hello.txt");//将HDFS的"/hello.txt"文件下载到本地"/opt"目录下,并命名为"hello1.txt"downloadFile("/hello.txt","/opt/hello1.txt");}任务4.5HDFS的JavaAPI操作(2)copyFromLocalFile和copyToLocalFile实现文件上传和下载//创建方法getFileSystem,实现获取文件系统对象publicstaticFileSystemgetFileSystem()throwsIOException,URISyntaxException{Configurationconf=newConfiguration();//创建conf对象URIuri=newURI("hdfs://11:9000");//创建uri对象fina

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论