《大数据技术与应用HADOOP之HDFS文件操作.docx》由会员分享,可在线阅读,更多相关《大数据技术与应用HADOOP之HDFS文件操作.docx(14页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、大数据技术与应用实验报告22.23.24.JavaHDFSFilelfExist.java 笈= 5 II g Task List 眼 I. .一 . . 一 . ,一 . import org.apacneTnadoopTfs.Files import orgapachehadoopfsPath; public class HDFSFilelfExist public static void main(Strinc Outline 典 try( String fileName tes 一 一 I l! Problems Javadoc 燃 Declaration 曰 Console 区、 H
2、DFSFilelfExist Java Application /usr/lib/jvm/java-8-openjdl B X 彘他图画E log4):WARN See :loggi叫卸冰30皿log4)/L2/faqMuil和)(onfig for more info. Createitest2)判断文件是否存在1.2.3.4.5.6.7.8.9.10.n.11.12.13.14.15.16.17.18.19.20.n.import org. apache, hadoop. conf. Configuration;import org. apache, hadoop. fs. FileSys
3、tem;import org.apache, hadoop. fs. Path;public class Chapter3 public static void main(String args) try String filename 二 test;Configuration conf = new Configuration();conf, set (fs. defaultFS,/, /zhdfs: /localhost: 9000/z);12. conf, set (fs hdfs. impl, org apache, hadoop. hdfs. DistributedFileSystem
4、,z);13. FileSystem fs = FileSystem. get(conf);14. if(fs. exists(new Path(filename)15. System, out. printin (文件存在);16. ) else 17. System, out. printin(文件不存在);18. )19. fs. close ();20.21.22.23.24.JavaLZ-I catch (Exception e) e.printStackTrace();臣 Outline 区1.2.3.4.5.6.7.8.9.10.11.12.13.14.public class
5、HDFSFilelfExist public static void main(Strim try(String fileName = Mtes Configuration conf = r conf.set(fs.defaultFSEi Problems Javadoc 凰 Declaration JS Console 区 HDFSFilelfExist Java Application /usr/lib/jvm/jav cermina(eainaperjjava Appucaoonj /时/UD/jvm/javMopenjoK而 om/d 叫阳3)读取文件import java. io.
6、BufferedReader;import java. io. InputStreamReader;import org. apache, hadoop. conf. Configuration;import org. apache, hadoop. fs. FileSystem;import org. apache, hadoop. fs. Path;import org. apache, hadoop. fs. FSDatalnputStream;public class Chapters public static void main(String args) try Configura
7、tion conf 二 new Configuration();conf, set (z,fs. defaultFS”, hdfs:/localhost: 9000);conf, set (fs hdfs. impl, org apache, hadoop. hdfs. DistributedFileSystem,/);15. FileSystem fs = FileSystem. get(conf);16. Path file = new Path(test);17. FSDatalnputStream getlt = fs. open(file);18. BufferedReader d
8、= new BufferedReader(newInputStreamReader(getlt);19.20.21.22.23.24.25.26.27.String content = d. readLine () ; /读取文件一行 System, out. printin(content);d. close (); 关闭文件fs. close (); 关闭 hdfs catch (Exception e) e.printStackTrace();Javalog4j:WARN Please initialize the log4j system properly.log4j:WARN See
9、 :/logging.apache.Org/log4j/l.2/faq.html#noconfig for more info. Hello world实验总结:(心得体会、遇到的问题及解决过程)成功的安装了 eclipse软件,能够运用eclipse软件,对代码进行编译操作得出运行结果,实现了 hadoop与eclipse的联合操作。实验5ECLIPSE+HADOOP 之 HDFS 文件操作实验目的:通过JAVA API和HADOOP的HDFS系统进行交互操作。实验环境:WIN7,virsual box,Ubuntu 16.04, hadoop2.7.1, eclipse.实验步骤:利用Ja
10、va API进行交互,需要利用软件Eclipse编写Java程序。1 .在 Ubuntu 中安装 Eclipse.在Eclipse创立工程第一次翻开Eclipse,需要填写workspace(工作空间),用来保存程序所在的位置,这里按照默认,不 需要改动。点击“0K”按钮,进入Eclipse软件。可以看出,由于当前是采用hadoop用户登录了 Linux系统,因此,默认的工作空间目录位于hadoop 用户目录“/home/hadoop”下。Eclipse启动以后,会呈现如下图的界面。选择File-New-Java Project”菜单,开始创立一个Java工程。在 “Project name”
11、 后面输入工程名称 在DFSExample”,选中 “Use default location”,让这个 Java工程的所有文件都保存到“/home/hadoop/workspace/HDFSExample”目录下。在JRE”这个选 项卡中,可以选择当前的Linux系统中已经安装好的JDK,比方java-8-openjdk-amd64。然后,点击 界面底部的“Next”按钮,进入下一步的设置。2 .为工程添加需要用到的JAR包进入下一步的设置以后需要在界面中加载该Java工程所需要用到的JAR包,这些JAR包中包含了可以访问HDFS的Java API。这些JAR包都位于Linux系统的Hado
12、op安装目录下,对于本教程而言,就是在a/usr/local/hadoop/share/hadoop目录下。点击界面中的“Libraries”选项卡,然后,点击界 面右侧的“Add External JARs”按钮。在该界面中,上面的一排目录按钮(即 “usr”、“local、“hadoop、“share、“hadoop”、 “mapreduce”和“lib”),当点击某个目录按钮时,就会在下面列出该目录的内容。为了编写一个能够与HDFS交互的Java应用程序,一般需要向Java工程中添加以下JAR包:(1) ” /usr/local/hadoop/share/hadoop/commonn 目
13、录下的 hadoop-common_2. 7. 1. jar 和 haoop-nfs-2. 7. 1. jar;(2) /usr/local/hadoop/share/hadoop/common/libv 目录下的所有 JAR 包;(3) u/usr/local/hadoop/share/hadoop/hdfs 目录下的 haoop-hdfs2. 7. 1. jar 和 haoop-hdfs-nfs-2. 7. 1. jar;(4) /usr/local/hadoop/share/hadoop/hdfs/1 ib” 目录下的所有 JAR 包。比方,如果要把 /usr/local/hadoop/
14、share/hadoop/commonn 目录下的 hadoop-common-2. 7. 1. jar 和haoop-nfs-2. 7. 1. jar添加到当前的Java工程中,可以在界面中点击目录按钮,进入到common 目录,然后,界面会显示出common目录下的所有内容。请在界面中用鼠标点击选中hadoop-common-2. 7. 1. jar和haoop-nfs-2. 7. 1. jar,然后点击界面右下 角的“确定”按钮,就可以把这两个JAR包增加到当前Java工程中。hadoop-common-2. 7. 1. jar和haoop-nfs-2. 7. 1. jar已经被添加到当
15、前Java工程中。然后,按照类 似的操作方法,可以再次点击“Add External JARs”按钮,把剩余的其他JAR包都添加进来。需 要注意的是,当需要选中某个目录下的所有JAR包时,可以使用“Ctrl+A”组合键进行全选操作。全 部添加完毕以后,就可以点击界面右下角的“Finish”按钮,完成Java工程HDFSExample的创立。3 .编写Java应用程序代码下面编写一个Java应用程序,用来检测HDFS中是否存在一个文件。请在Eclipse工作界面左侧的“Package Explorer”面板中(如图4-9所示),找到刚才创立好的工 程名称HDFSExample,然后在该工程名称上
16、点击鼠标右键,在弹出的菜单中选择“New-Class” 菜单。X _ E3 File Edit Source RefactorHDFSExample选择“New-Class”菜单以后会出现如下图界面。选择“New-Class”菜单以后会出现如下图界面。在该界面中,只需要在“Name”后面输入新建的Java类文件的名称,这里采用名称“HDFSFilelfExist,其他都可以采用默认设置,然后,点击界面右下角“Finish”按钮。import import import public1.2.3.4.5.6.7.8.9.10.11.12.13.14.可以看出,Eclipse自动创立了一个名为“HD
17、FSFilelfExist. java”的源代码文件,请在该文件中输 入以下代码: org. apache, hadoop. conf. Configuration;org. apache, hadoop. fs. FileSystem;org. apache, hadoop. fs. Path;class HDFSFilelfExist public static void main(String args)try String fileName 二 test;Configuration conf = new Configuration();conf, set (z/fs. defaultF
18、S, ,/hdfs: /localhost: 9000z/);conf, set (fs hdfs. impl,org apache, hadoop. hdfs. DistributedFileSystem,/);FileSystem fs = FileSystem. get(conf);if (fs. exists(new Path(fileName)System, out. printin (文件存在);else 15.16.17.18.19.20.21.22. )System, out. printin (文件不存在); catch (Exception e) e.printStackT
19、race();Java该程序用来测试HDFS中是否存在一个文件,其中有一行代码:String fileName = test这行代码给出了需要被检测的文件名称是“test,没有给出路径全称,表示是采用了相对路径,实 际上就是测试当前登录Linux系统的用户hadoop,在HDFS中对应的用户目录下是否存在test文件, 也就是测试HDFS中的“/user/hadoop/”目录下是否存在test文件。FL Problems Javadoc 凰 Declaration 且 Console 眼口e HDFSFilelfExist Java Application /usf/Ub/jvm/java-8
20、-openjdk-amd64/t 回X -昆砧画画E s- Log4j:WARN No appenders could be found for logger (org.apache.hadoop.uti log4j:WARN Please initialize the log4j system properly.Iog4j:WARN See :/logging.apache.Org/log4j/l.2/faq.html#noconfig for 文件存在.编译运行程序在开始编译运行程序之前,请一定确保Hadoop已经启动运行,如果还没有启动,需要翻开一个Linux 终端,输入以下命令启动Ha
21、doop:1. cd /usr/local/hadoop2. . /sbin/start-dfs. shShell命令现在就可以编译运行上面编写的代码。可以直接点击Eclipse工作界面上部的运行程序的快捷按钮, 当把鼠标移动到该按钮上时,在弹出的菜单中选择“Run As,继续在弹出来的菜单中选择Java Application” 需要在“Select type” 下面的文本框中输入“HDFSFilelfExist”,Eclipse 就会自 动找到相应的类“HDFSFilelfExist-(default package)(注意:这个类在后面的导出JAR包操作 中的Launch configu
22、ration中会被用到),然后,点击界面右下角的“0K”按钮,开始运行程序。 程序运行结束后,会在底部的“Console”面板中显示运行结果信息(如图4T4所示)。由于目前 HDFS的/user/hadoop”目录下还没有test文件,因此,程序运行结果是“文件不存在”。同时,Console面板中还会显示一些类似“log4j:WARN”的警告信息,可以不用理会。EL Problems Javadoc 微 Declaration 旦Console 笈X A i x 砧空J| HDFSFilelFExist Java Application /usr/lib/jvm/jdva-8-openjdk-
23、dmd64/bin/java (2017-1-3 F10:14:09) Log4j:WARN No appenders could be found for logger (org.apache.hadoop.utit.Shell).log4j:WARN Please initialize the log4j system properly.Iog4j:WARN See :.2/faq.htmlWnoconfig for more info. 文件不存在|.应用程序的部署下面介绍如何把Java应用程序生成JAR包,部署到Hadoop平台上运行。首先,在Hadoop安装目录 下新建一个名称为my
24、app的目录,用来存放我们自己编写的Hadoop应用程序,可以在Linux的终端 中执行如下命令:1. cd /usr/local/hadoop2. mkdir myappShell命令 然后,请在Eclipse工作界面左侧的Package Explorer面板中,在工程名称“HDFSExample”上 点击鼠标右键,在弹出的菜单中选择“Export,如图4-15所示。X _ File Edit Source Refactor Navigate Search Project Run Window HelpNewGo intofS Package ExpijHDFSExarr &src田(def
25、auli团 HDFSI aJRE Syste M ReferencfS Package ExpijHDFSExarr &src田(defauli团 HDFSI aJRE Syste M ReferencOpen in New WindowOpen Type HierarchyShow InCopyCopy Qualified NameFExistjava 区 F4hift+Alt+PasteDeleteBuild PathSourceRefactorCtrl+V class HDFSFilelfExist elete lie static void main(StrjShi代+Alt+S Sh
26、ift+Alt+T try(String fileName = H1 Configuration conf : conf.set(fs.defaul!Import.Export.conf.set(M匚fu 匚 G 1,RefreshClose ProjectF5 Javadoc 心 Declarationr HDFSFilelfExist Java ApplicAssign Working Sets.Run AsDebug AsAssign Working Sets.Run AsDebug AsNo appenders could be foiPlease initialize the loi
27、See 然后,会弹出如图4-16所示界面。然后,会弹出如图4-16所示界面。在该界面中,选择Runnable JAR file”,然后,点击“Next”按钮,弹出如图4-17所示界面。X 口 Runnable JAR File ExportRunnable JAR File SpecificationSelect a Java Application launch configuration to use to create a runnable JAR.Launch configuration:Library handling: Extract required libraries into
28、 generated JARO Package required libraries into generated JARO Copy required libraries into a sub-folder next to the generated JAR 在该界面中,uLaunch configurationv用于设置生成的JAR包被部署启动时运行的主类,需要在下 拉列表中选择刚才配置的类 HDFSFi 1 eIfExist-HDFSExamp 1 ev o 在 aExport destinationv 中需要 设置JAR包要输出保存到哪个目录,比方,这里设置为 Back BackCan
29、celFinish/usr/local/hadoop/myapp/HDFSExample. jar”。在“Library handling” 下面选择 uExtract required libraries into generated JAR”。然后,点击 “Finish” 按钮,会出现如图 4T8 所示界 面OX Runnable JAR File ExportThis operation repacks referenced libraries.Please review the licenses associated with libraries you wish to referen
30、ce to make sure you are able to repack them using this application. Note also that this operation does not copy signature files from originaUibraries to the generated JAR file.Do not show this message againCancel可以忽略该界面的信息,直接点击界面右下角的“0K”按钮,启动打包过程。打包过程结束后,会出 现一个警告信息界面,如图4T9所示。Runnable JAR File Export
31、JAR export finished with warnings. See details for additional information.DetailsOK可以忽略该界面的信息,直接点击界面右下角的“0K”按钮。至此,已经顺利把HDFSExample工程打 包生成了 HDFSExample. jar。可以到Linux系统中查看一下生成的HDFSExample. jar文件,可以在 Linux的终端中执行如下命令:1. cd /usr/local/hadoop/myapp2. Lsadoopdblab-VtrtualBox:/usr/local/hadoop$ cd /usr/loca
32、l/hadoop/myapp adoopdblab-VirtualBox:/usr/local/hadoop/nyapp$ IsShell命令可以看到,/usr/local/hadoop/myapp目录下已经存在一个HDFSExample. jar文件。现在,就可 以在Linux系统中,使用hadoop jar命令运行程序,命令如下:1. cd /usr/local/hadoop2. . /bin/hadoop jar . /myapp/HDFSExample. jarShell命令或者也可以使用如下命令运行程序:1. cd /usr/local/hadoop2. java -jar . /m
33、yapp/HDFSExample. jarShell命令命令执行结束后,会在屏幕上显示执行结果”文件不存在” 至此,检测HDFS文件是否存在的程序,就顺利部署完成了。1.2.3.4.5.6.7.8.9.10.11.7.自己练习用的代码文件下面给出几个代码文件,供读者自己练习。1)写入文件import org. apache, hadoop. conf. Configuration;import org. apache, hadoop. fs. FileSystem;import org. apache, hadoop. fs. FSDataOutputStream;import org. ap
34、ache, hadoop. fs. Path;public class Chapters public static void main(String args) try (Configuration conf = new Configuration();conf, set (/zfs. defaultFS”, hdfs:/localhost: 9000);conf, set (fs hdfs. impl, org, apache, hadoop. hdfs. DistributedFileSystem/z);12. FileSystem fs = FileSystem. get(conf);
35、13. byte buff =Hello world”. getBytes () ; / 要写入的内容14. String filename = test; 要写入的文件名15. FSDataOutputStream os = fs. create(newPath(filename);16. os. write (buff, 0, buff, length);17. System, out. printin (Create: z/+ filename);18. os. close ();19. fs. close ();20. catch (Exception e) 21. e. printStackTrace ();