工程所依赖的jar包, hadoop-1.1.2/*.jar、hadoop-1.1.2/lib/*.jar
编写Java程序通过URL访问HDFS
public class HDFSTest {
public static final String HDFSPATH ="hdfs://centos:9000/hello.txt";
@Test
public void testAcceHDFSForURL() throws IOException{
URL url = new URL(HDFSPATH);
InputStream inputStream = url.openStream();
IOUtils.copyBytes(inputStream, System.out, 1024, true);
}
}
java.net.MalformedURLException: unknown protocol: hdfs
只是这样访问,程序会有异常,畸形的URL,就是不能解析HDFS这种协议,使用setURLStreamHandlerFactory()让URL能够识别hdfs协议
public class HDFSTest {
//URL如果不是用IP地址,使用主机名,需要在hosts文件中配置主机名到IPd地址的映射
public static final String HDFSPATH ="hdfs://192.168.56.101:9000/hello.txt";
@Test
public void testAcceHDFSForURL() throws IOException{
URL.setURLStreamHandlerFactory(new FsUrlStreamHandlerFactory());
URL url = new URL(HDFSPATH);
InputStream inputStream = url.openStream();
/**
InputStream:输入流 OutputStream:输出流 int:缓冲区大小 boolean:传输结束后是否关闭流
**/
IOUtils.copyBytes(inputStream, System.out, 1024, true);
}
}
使用HDFS提供的接口访问HDFS,功能更加强大,操作类FileSystem
删除HDFS中的所有文件、目录
[root@centos Downloads]# hadoop fs -rmr hdfs://centos:9000/*
Warning: $HADOOP_HOME is deprecated.
Deleted hdfs://centos:9000/file1
Deleted hdfs://centos:9000/hello.txt
Deleted hdfs://centos:9000/usr
[root@centos Downloads]# hadoop fs -lsr /
Warning: $HADOOP_HOME is deprecated.
[root@centos Downloads]# hadoop fs -lsr /
Warning: $HADOOP_HOME is deprecated.
创建一个名为file1的目录
public static final String HDFSURIPATH ="hdfs://192.168.56.101:9000/";
@Test
public void testFileSystemForUploadFile() throws IOException, URISyntaxException{
FileSystem fileSystem = getFileSystem();
fileSystem.mkdirs(new Path("/file1"));
}
private FileSystem getFileSystem() throws IOException, URISyntaxException {
//Configuration对象加载配置文件
FileSystem fileSystem = FileSystem.get(new URI(HDFSURIPATH), new Configuration());
return fileSystem;
}
通过命令查看文件创建成功
[root@centos Downloads]# hadoop fs -lsr /
Warning: $HADOOP_HOME is deprecated.
drwxr-xr-x - Administrator supergroup 0 2015-05-22 03:49 /file1
删除目录
@Test
public void testFileSystemForDelete() throws IOException, URISyntaxException{
FileSystem fileSystem = getFileSystem();
fileSystem.delete(new Path("/file1"),true);
}
命令查看
[root@centos Downloads]# hadoop fs -lsr /
Warning: $HADOOP_HOME is deprecated.
上传文件
@Test
public void testFileSystemForCreate() throws IOException, URISyntaxException{
//创建一个名称为file1的目录
testFileSystemForMkdir();
//创建一个文件
FSDataOutputStream fsOutputStream = getFileSystem().create(new Path("/file1/hello.txt"));
//获取本地文件
FileInputStream fInputStrea = new FileInputStream("E:/Linux/Linux.txt");
//把本地文件E:/Linux/Linux.txt中的内容拷贝到hdfs中/file/hello.txt文件中
IOUtils.copyBytes(fInputStrea, fsOutputStream, 1024, true);
}
另一种上传文件的方式
FileSystem fs = HDFSUtils.getFileSystem();
Path s = new Path("E:/Linux/201207141451233056.png");
Path d = new Path("/file1/");
fs.copyFromLocalFile(s, d);
命令查看
[root@centos Downloads]# hadoop fs -lsr /
Warning: $HADOOP_HOME is deprecated.
drwxr-xr-x - Administrator supergroup 0 2015-05-22 04:14 /file1
-rw-r--r-- 3 Administrator supergroup 4617 2015-05-22 04:14 /file1/hello.txt
读取文件,中文内容会有乱码
@Test
public void testFileSystemForOpen() throws IOException, URISyntaxException{
FSDataInputStream fsInputStream = getFileSystem().open(new Path("/file1/hello.txt"));
IOUtils.copyBytes(fsInputStream, System.out, 1024, true);
}
查看目录及文件
@Test
public void testFileSystemForListStatus() throws IOException, URISyntaxException{
FileStatus[] listStatus = getFileSystem().listStatus(new Path("/file1"));
for (FileStatus fs : listStatus) {
System.out.println(fs.getLen());
System.out.println(fs.isDir());
System.out.println(fs.getPath());
System.out.println(fs.getPermission());
System.out.println(fs.getReplication());
}
}
分享到:
相关推荐
【IT十八掌徐培成】Hadoop第03天-03.hdfs FileSystem API.zip
【IT十八掌徐培成】Hadoop第03天-04.hdfs FileSystem API-write.zip
【IT十八掌徐培成】Hadoop第03天-05.hdfs FileSystem API-read-filestatus.zip
A.2实验二:熟悉常用的HDFS操作 本实验对应第4章的内容。 A.2.1 实验目的 (1)理解 HDFS在Hadoop体系结构中的角色。(2)熟练使用HDFS操作常用的 Shell命令。(3)熟悉HDFS操作常用的Java API。 A.2.2 实验平台 (1)操作...
大数据技术基础实验报告-HDFS常用操作命令
熟悉常用的HDFS操作 (1) 理解HDFS在Hadoop体系结构中的角色; (2) 熟练使用HDFS操作常用的Shell命令; (3) 熟悉HDFS操作常用的Java API。
HDFS_HBaseShell的常用命令.docx
实验目的 (1)理解HDFS在Hadoop体系结构中的角色; (2)熟练使用HDFS操作常用的Shell命令; (3)熟悉HDFS操作常用的Java API。
数据科学导论 实验2:熟悉常用的HDFS操作 1. 编程实现以下指定功能,并利用 Hadoop 提供的 Shell 命令完成相同任务: 2. 编程实现一个类“MyFSDataInputStream”,该类继承“org.apache.hadoop.fs.FSDataInputStream...
分布式文件管理系统(HDFS)介绍,Hadoop 项目的核心子项目,是分布式计算中数 据存储管理的基础,是基于流数据模式访问和 处理超大文件的需求而开发的,可以运行于廉 价的商用服务器上
HDFS常用Shell命令,基础篇
windows平台下的HDFS文件浏览器,就像windows管理器一样管理你的hdfs文件系统。现在官网已经停止更新这款软件。具体配置如下: HDFS配置页面及端口http://master:50070 配置HDFS服务器 配置WebHDFS HDFS Explorer...
1)使用HDFS文件操作的常用Shell命令; 2)利用Hadoop提供的Java API进行基本的文件操作。 二.实验目的 1、理解HDFS在Hadoop体系结构中的角色。 2、熟练使用HDFS操作常用的Shell命令。 3、熟悉HDFS操作常用的Java...
Shell命令和java两种方式完成了常用的HDFS操作,有源代码及运行结果截图 (1)向HDFS中上传任意文本文件,如果指定的文件在HDFS中已经存在,则由用户来指定是追加到原有文件末尾还是覆盖原有的文件 (2)从HDFS中...
第1章 HDFS 1 1.1 HDFS概述 1 1.1.1 HDFS体系结构 1 1.1.2 HDFS基本概念 2 1.2 HDFS通信协议 4 1.2.1 Hadoop RPC接口 4 ...5.5 HDFS常用工具 549 5.5.1 FsShell实现 550 5.5.2 DFSAdmin实现 552
HDFS是Hadoop分布式计算的存储基础。HDFS具有高容错性,可以部署在通用硬件设备上,适合数据密集型应用,并且提供对数据读写的高吞 吐量。HDFS能 够提供对数据的可扩展访问,通过简单地往集群里添加节点就可以解决...
数据存储实验2-熟悉常用的HDFS操作.doc(实验报告)
hdfs
Hadoop是一个能够对大量数据进行分布式处理的软件框架,具有可靠、高效、可伸缩的,其核心是:HDFS(分布式文件系统)、Mapreduce(分布式计算框架)。HDFS分布式文件系统常用指令文档