下面是小编为大家整理的大数据实践-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编程 实践 编程 精选