hadoop学习记(3)--HDFS(java_demo)
2017-12-22 16:43
253 查看
这篇我就直接开始java代码编写啦,其实就是调用hadoop的api,对HDFS进行增删改查操作,HDFS本身对外提供服务是没有什么密码验证的,只认用户名,所以我们是需要对它进行一步封装,然后再提供我们封装好后的api。
这里我就只是简单的写个demo,很简单,我直接贴代码
pom.xml文件:
HdfsTest.java:
ok!这样我们先来调用下
1.调用mkdir来创建一个目录
通过hadoop客户端我们可以看到创建了一个目录:
注意:这里客户端默认用的权限用户是dr.who,进行操作的时候会报错,所以需要进行修改,打开 core-site.xml进行修改,然后需要重启
添加如下内容即可:
2.调用upload来上传一个文件到hdfsTest目录下
查看客户端:
点击name可以查看详细信息:
可以看到它上传到了两台DataNode上,因为我就只集群了两台,默认会是3台。
3.调用view查看文本信息
4.调用viewPath可以查看目录结构
大概就这么多了,其他api我就不一一测试了,基本没问题。
这里我就只是简单的写个demo,很简单,我直接贴代码
pom.xml文件:
<dependencies> <dependency> <groupId>org.apache.hadoop</groupId> <artifactId>hadoop-common</artifactId> <version>2.5.1</version> </dependency> <dependency> <groupId>org.apache.hadoop</groupId> <artifactId>hadoop-hdfs</artifactId> <version>2.5.1</version> </dependency> <dependency> <groupId>org.apache.hadoop</groupId> <artifactId>hadoop-client</artifactId> <version>2.5.1</version> </dependency> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.12</version> </dependency> </dependencies>
HdfsTest.java:
package com.cwh.hdfs; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.net.URI; import java.net.URISyntaxException; import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.fs.FSDataInputStream; import org.apache.hadoop.fs.FileStatus; import org.apache.hadoop.fs.FileSystem; import org.apache.hadoop.fs.Path; import org.apache.hadoop.io.IOUtils; import org.junit.Before; import org.junit.Test; public class HdfsTest { FileSystem fileSystem; @Before public void connect() throws IOException, URISyntaxException, InterruptedException{ URI uri = new URI("hdfs://192.168.27.131:9000"); Configuration conf = new Configuration(); fileSystem = FileSystem.get(uri, conf,"root");//root是linux用户,我设置的就只有这个用户有访问权限 } //创建目录 @Test public void mkdir() throws IOException{ fileSystem.mkdirs(new Path("/hdfsTest")); fileSystem.close(); } //上传文件 @Test public void upload() throws Exception{ Path srcPath = new Path("D://text.txt"); Path dstPath = new Path("/hdfsTest"); fileSystem.copyFromLocalFile(false, srcPath, dstPath); fileSystem.close(); } //下载文件 @Test public void download() throws Exception{ InputStream in = fileSystem.open(new Path("/hdfsTest/text.txt")); OutputStream out = new FileOutputStream("E://text.txt"); IOUtils.copyBytes(in, out, 4096, true); fileSystem.close(); } //删除文件 @Test public void delete() throws Exception{ Path path = new Path("/hdfsTest/text.txt"); fileSystem.delete(path,true); fileSystem.close(); } //查看文件 @Test public void view() throws Exception{ Path path = new Path("/hdfsTest/text.txt"); FSDataInputStream fsDataInputStream = fileSystem.open(path); System.out.println("打印信息:"); int c; while((c = fsDataInputStream.read()) != -1){ System.out.print((char)c); } fsDataInputStream.close(); } //查看目录 @Test public void viewPath() throws Exception{ Path path = new Path("/hdfsTest"); FileStatus fileStatus = fileSystem.getFileStatus(path); System.out.println("文件根目录: "+fileStatus.getPath()); System.out.println("这文件目录为:"); for(FileStatus fs : fileSystem.listStatus(path)){ System.out.println(fs.getPath()); } } }
ok!这样我们先来调用下
1.调用mkdir来创建一个目录
通过hadoop客户端我们可以看到创建了一个目录:
注意:这里客户端默认用的权限用户是dr.who,进行操作的时候会报错,所以需要进行修改,打开 core-site.xml进行修改,然后需要重启
添加如下内容即可:
<property> <name>hadoop.http.staticuser.user</name> <value>root</value> </property>
2.调用upload来上传一个文件到hdfsTest目录下
查看客户端:
点击name可以查看详细信息:
可以看到它上传到了两台DataNode上,因为我就只集群了两台,默认会是3台。
3.调用view查看文本信息
4.调用viewPath可以查看目录结构
大概就这么多了,其他api我就不一一测试了,基本没问题。
相关文章推荐
- hadoop学习之HDFS(2.4):hadoop数据类型与java数据类型的对比与转换
- Hadoop学习二(java api调用操作HDFS)
- hadoop学习笔记4:java实现hdfs -ls/-lsr
- 一脸懵逼学习hadoop之HDFS的java客户端编写
- Hadoop学习笔记:HDFS的java API使用
- java操作hadoop hdfs,实现文件上传下载demo
- hadoop学习之HDFS(2.8):hdfs的javaAPI使用及示例
- hadoop生态系统学习之路(三)java实现上传文件(本地或ftp)至hdfs
- hadoop学习(五)----HDFS的java操作
- 云计算学习笔记---异常处理---hadoop问题处理ERROR org.apache.hadoop.hdfs.server.datanode.DataNode: java.lang.NullPoin
- Hadoop学习之java连接HDFS文件系统
- 学习hadoop的hdfs开发(java)
- Hadoop学习(3):利用Java操作HDFS
- Hadoop学习笔记——1.java读取Oracle中表的数据,创建新文件写入Hdfs
- hadoop学习1 java操作HDFS
- hadoop学习笔记--5.HDFS的java api接口访问
- hadoop 学习(四)之java操作hdfs
- hadoop学习:Java对HDFS的基本操作
- Hadoop学习笔记(3)-java操作hdfs的API接口
- hadoop学习之HDFS(2.1):linux下eclipse中配置hadoop-mapreduce开发环境并运行WordCount.java程序