大数据实践-HDFS编程(精选文档)

时间:2022-08-17 14:05:03 来源:网友投稿

下面是小编为大家整理的大数据实践-HDFS编程(精选文档),供大家参考。

大数据实践-HDFS编程(精选文档)

 

  实践项目名称:HDFS 编程

 一、实践目的 1.理解 HDFS 在 Hadoop 体系结构中角色 2.掌握 HDFS 的常用操作 二、实践内容 1.删除指定文件 2.显示指定文件内容 三、实践过程 (一)删除指定文件 1.安装 eclipse 以 hust 登录 master.

 将 eclipse 复制到/home/hust

 运行

 File->new->java project 名为 hadoopapi

 Build path->add library->user library 名为 hadoop_hdfs

  在 library 上 Add External JARs,导入 hadoop 的包,一般在 hadoop 安装目录下

 如/opt/hadoop-2.6.0-cdh5.6.0/share/hadoop/common/lib

  2.eclipse 编程 创建 package shijian,class delete package shijian; import java.io.IOException; import java.io.InputStream; import java.net.URL; import java.net.URI; import java.net.MalformedURLException; import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.fs.FSDataOutputStream; import org.apache.hadoop.fs.FileSystem; import org.apache.hadoop.fs.Path; import org.apache.hadoop.io.IOUtils; public class delete { public static void main(String [] args){ String uri="hdfs://master:9000/test";

  //定义 URI 统一资源标志符 Configuration conf=new Configuration();

 //加载配置文件

 /*Hadoop 没有使用 java.util.Properties 管理配置文件,也没有使用 Apache Jakarta Commons Configuration 管理配置文件,而是使用了一套独有的配置文件管理系统,并提供自己的 API,即使用 org.apache.hadoop.conf.Configuration 处理配置信息。这个类是作业的配置信息类,任何作用的配置信息必须通过 Configuration 传递,因为通过 Configuration 可以实现在多个 mapper

 和多个 reducer 任务之间共享信息。*/ try{ FileSystem fs=FileSystem.get(URI.create(uri),conf);

 //创建文件系统实例对象 Path delef=new Path("hdfs://master:9000/test");

  //要连接的资源位置 boolean isDeleted = fs.delete(delef,true);

 //如果删除文件夹和文件级联 System.out.println(isDeleted);

  //输出 true }catch (IOException e){

 //捕捉输入输出异常 e.printStackTrace(); } } }

 3.编译后导出 jar 文件。Export

  查看导出的 jar 包

 执行 启动 hadoop [hust@master ~]$ /opt/hadoop-2.6.0-cdh5.6.0/sbin/start-all.sh

 查看 jps

 首先利用实验课创建的创建文件的 jar 包创建 test 文件

 执行生成的 jar 包删除此文件 hadoop jar hadoop10.jar fs.filesystem.DeleteFile

 查看执行之后的文件

 (二)显示指定文件内容 1.编写 wordtest 文件,内容为:hello hadoop bye hadoop,放到 HDFS 的/input 目录下。

 2.编程 新建 package comm.hdfsclient 及 class MyCat

 package com.hdfsclient;

 import java.io.IOException;

 import java.io.InputStream;

 import java.net.MalformedURLException;

 import java.net.URL;

 import org.apache.hadoop.fs.FsUrlStreamHandlerFactory;

 import org.apache.hadoop.io.IOUtils;

 public class MyCat{

 static { //设定一个静态代码块,jvm 只会执行一次,java 中的 URL 类的 setURLStreamHandlerFactory方法 //实际上创建了一个 FsUrlStreamHandlerFactory 的对象:

 //FsUrlStreamHandlerFactory a =new FsUrlStreamHandlerFactory(); //FsUrlStreamHandlerFactory 该类的作用是:URL 流处理工厂,具体的作用要使用 Java.net.URL //setURLStreamHandlerFactory() //的方法设置 URLStreamHandlerFactory,这时需要传递一个 FsUrlStreamHandlerFactory。这个操作对一个 jvm 只能使//用一次 // 也 就 是 说 它 要 返 回 FsUrlStreamHandlerFactory 的 对 象 , 再 通 过 对 象 调 用URL.setURLStreamHandlerFactory 方法 //用 URL.setURLStreamHandlerFactory 方法将自己的 URLStreamHandlerFactory 对象注册到

 URL 类中

 URL.setURLStreamHandlerFactory(new FsUrlStreamHandlerFactory());

 }

 public static void main(String [] args) throws MalformedURLException, IOException{

 //MalformedURLException, IOException 抛出一些异常 InputStream in =null;

 //输入流 try{

 in =new URL(args[0]).openStream(); //通过 URL 对象的 openStream()方法能够得到指定资源的输入流。

 IOUtils.copyBytes(in, System.out, 4096,false); //复制输出文件内容 } finally{

 IOUtils.closeStream(in); //关闭流 }

 }

 } 3.编译 4.导出 jar 包 [hust@master ~]$ hadoop dfs –put wordtest /input

 查看文件 [hust@master ~]$ hadoop dfs -ls /input

  查看 Wordtest 内容 [hust@master ~]$ hadoop dfs -cat /input/wordtest 执行生成的 jar

 [hust@master ~]$hadoop jar hadoopapi.jar hdfs://master:9000/input/wordtest 执行结果与 hadoop 命令输出结果相同

 四、实践结果截图 1.

  2.

 五、实践遇到的问题 1.下载的 eclipse 不能用 解决:java 版本过低需要低版本的 eclipse 下载了 x32 版本的 eclipse 2.导入 jar 包不能 import 解决:导入的 jar 包不完全,全部导入即可解决 3.当使用 wget 下载 https 内容时,发生错误 解决:在 wget 后加入-no-check-certificate 参数

  六、实践总结 通过本次实践我学会了自己去导出 jar 包做出与系统自带操作相同的操作,学会了在 Linux上使用 eclipse 编程,以及 hdfs 编程和基本操作,在实验的过程中发现自己对 lunix 的基本操作还不够熟练,还需要一边看教程一边摸索着去做,感觉自己的基础水平还是不能达到自己满意程度,感觉对于很多东西都还是未知的,对于新的知识了解甚少,这个还需要在下面下很大的功夫。另外,个人对 java 的编程并不是很熟练,有些问题一知半解,不能完全理解,还需要进一步去学习和实践。

推荐访问:大数据实践-HDFS编程 实践 编程 精选