当前位置:   article > 正文

云计算技术 实验四 HDFS操作方法和基础编程_实验4 hdfs操作方法和基础编程(二)

实验4 hdfs操作方法和基础编程(二)

参考资料为:

教材代码-林子雨编著《大数据基础编程、实验和案例教程(第2版)》教材所有章节代码_厦大数据库实验室博客

1.实验学时

4学时

2.实验目的

  • 熟悉HDFS的基本shell命令
  • 熟悉HDFS的web管理
  • 掌握HDFS编程实践

3.实验内容

(一)参考实验指南的内容,完成相关的HDFS的基本shell命令。

启动hadoop:

 输入命令查看hdfs dfs支持的操作:

 

 

 查看具体命令的作用:

 

 先新建文件夹:

 

运行命令显示HDFS与当前用户对应目录下的内容:

创建input目录:

删除input文件:

创建一个xml文件

复制文件到生成的input文件之中:

查看HDFS中txt文件的内容:

将txt文件移动到其他文件夹下:

后面查看:

(二)查看HDFS的网页管理界面。请描述网页界面中的各个参数的名称。

查看HDFS网页管理界面:

(三)完成eclipse的安装,在eclipse中创建项目,配置所需要的jar包,编写一个可以和HDFS相交互的Java应用程序。

安装完成之后进入:

 进行对应包的调用之后,开始编写函数:下面为java代码

  1. import java.io.IOException;
  2. import java.io.PrintStream;
  3. import java.net.URI;
  4. import org.apache.hadoop.conf.Configuration;
  5. import org.apache.hadoop.fs.*;
  6. /**
  7. * 过滤掉文件名满足特定条件的文件
  8. */
  9. class MyPathFilter implements PathFilter {
  10. String reg = null;
  11. MyPathFilter(String reg) {
  12. this.reg = reg;
  13. }
  14. public boolean accept(Path path) {
  15. if (!(path.toString().matches(reg)))
  16. return true;
  17. return false;
  18. }
  19. }
  20. /***
  21. * 利用FSDataOutputStream和FSDataInputStream合并HDFS中的文件
  22. */
  23. public class MergeFile {
  24. Path inputPath = null; //待合并的文件所在的目录的路径
  25. Path outputPath = null; //输出文件的路径
  26. public MergeFile(String input, String output) {
  27. this.inputPath = new Path(input);
  28. this.outputPath = new Path(output);
  29. }
  30. public void doMerge() throws IOException {
  31. Configuration conf = new Configuration();
  32. conf.set("fs.defaultFS","hdfs://localhost:9000");
  33. conf.set("fs.hdfs.impl","org.apache.hadoop.hdfs.DistributedFileSystem");
  34. FileSystem fsSource = FileSystem.get(URI.create(inputPath.toString()), conf);
  35. FileSystem fsDst = FileSystem.get(URI.create(outputPath.toString()), conf);
  36. //下面过滤掉输入目录中后缀为.abc的文件
  37. FileStatus[] sourceStatus = fsSource.listStatus(inputPath,
  38. new MyPathFilter(".*\\.abc"));
  39. FSDataOutputStream fsdos = fsDst.create(outputPath);
  40. PrintStream ps = new PrintStream(System.out);
  41. //下面分别读取过滤之后的每个文件的内容,并输出到同一个文件中
  42. for (FileStatus sta : sourceStatus) {
  43. //下面打印后缀不为.abc的文件的路径、文件大小
  44. System.out.print("路径:" + sta.getPath() + " 文件大小:" + sta.getLen()
  45. + " 权限:" + sta.getPermission() + " 内容:");
  46. FSDataInputStream fsdis = fsSource.open(sta.getPath());
  47. byte[] data = new byte[1024];
  48. int read = -1;
  49. while ((read = fsdis.read(data)) > 0) {
  50. ps.write(data, 0, read);
  51. fsdos.write(data, 0, read);
  52. }
  53. fsdis.close();
  54. }
  55. ps.close();
  56. fsdos.close();
  57. }
  58. public static void main(String[] args) throws IOException {
  59. MergeFile merge = new MergeFile(
  60. "hdfs://localhost:9000/user/hadoop/",
  61. "hdfs://localhost:9000/user/hadoop/merge.txt");
  62. merge.doMerge();
  63. }
  64. }

 

 

 

 

(四)生成jar包,部署相关的应用程序。

先生成一个文件夹存放信息:

之后右键工作区,弹出export:

 

之后在弹出的界面中选择java包下的文件,进入后填好运行的java类和将要保存到的包中:

之后文件开始打包:

打包完成之后,在对应的文件夹下发现打包好的文件:

删除merge文件之后,运行这个打包好的文件:

之后执行命令查看文件信息:

4.思考题

(一)Hadoop中HDFS包含哪些命令,这些命令各自代表什么意思?

1.创建目录

hdfs dfs -mkdir /

2.查看目录下载文件

hdfs dfa -ls /     hdfs dfs -ls /

3. 上传本地文件

hdfs dfs -put a.txt /

4.删除文件/目录

删除文件hdfs dfs -rm /test/a.txt  删除目录hdfs dfs -rm -r /test

5. 复制文件

hdfs dfs -cp /test/a.txt /

(二)Hadoop创建的应用程序,需要导入哪些安装包,这些安装包里面有什么功能?

1. hadoop-common-2.7.1.jar     2. haoop-hdfs-2.7.1.jar
3.haoop-hdfs-nfs-2.7.1.jar;   4. haoop-nfs-2.7.1.jar

安装包的内部对应的目录有着以下的功能:

sbin目录:存放启动或停止hadoop相关服务的脚本

bin目录:存放对hadoop相关服务(HDFS,YARN)进行操作的脚本

etc目录:hadoop的配置文件目录,存放hadoop的配置文件

share目录:存放hadoop的依赖jar包和文档,文档可以被删除掉

5、lib目录:存放hadoop的本地库(对数据进行压缩解压缩功能)

5.实验结论和体会

1.运行hdfs的时候,需要注意先启动hadoop系统,如果不清楚对应的hdfs的操作,可以使用./bin/hdfs dfs,命令查看。

2.在ecplise导入jar包的时候,需要注意导入包的数量,注意不要漏导入包。

3.在运行完成主程序之后,需要在hdfs上查看是否成功运行生成对应文件。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/繁依Fanyi0/article/detail/413307
推荐阅读
相关标签
  

闽ICP备14008679号