hadoop学习记(3)--HDFS(java_demo)
来源:互联网 发布:多台nginx 做负载均衡 编辑:程序博客网 时间:2024/06/05 08:01
这篇我就直接开始java代码编写啦,其实就是调用hadoop的api,对HDFS进行增删改查操作,HDFS本身对外提供服务是没有什么密码验证的,只认用户名,所以我们是需要对它进行一步封装,然后再提供我们封装好后的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;@Beforepublic 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用户,我设置的就只有这个用户有访问权限}//创建目录@Testpublic 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(); }//查看文件@Testpublic 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()); } }}
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我就不一一测试了,基本没问题。
阅读全文
0 0
- hadoop学习记(3)--HDFS(java_demo)
- webSocket简单聊天室(Java_Demo)
- java操作HDFS------Hadoop学习(3)
- hadoop学习笔记(HDFS)
- Hadoop HDFS源码学习笔记(一)
- Hadoop HDFS源码学习笔记(二)
- Hadoop HDFS源码学习笔记(三)
- Hadoop HDFS源码学习笔记(四)
- Hadoop HDFS源码学习笔记(五)
- Hadoop分布式文件系统(HDFS)学习笔记
- Hadoop学习笔记(四)---HDFS概述
- Hadoop学习(1)----HDFS详解
- 【Hadoop源码学习】之hdfs(一)
- Hadoop HDFS 学习(1)理论
- Hadoop HDFS 学习(2)理论
- Hadoop学习(2):HDFS基础
- hadoop学习记录(一)HDFS
- Hadoop学习笔记(二)HDFS
- chap9 虚拟内存
- PyTorch GPU安装指南 (Ubuntu 16.04 anaconda cuda8.0 cuDNN6.0)
- SqlServer--用代码创建和删除数据库和表
- SharedProvider一个SharedPreferences 多进程解决方案
- JavaScript更新日志(4)
- hadoop学习记(3)--HDFS(java_demo)
- java 代码调用memcached服务
- Cocos2dx编译Android包出现的小问题汇总
- php获取ajax的headers方法与内容详解
- scala入门学习(1)基础篇
- unity 2017.2.2 minimap 迷你地图制作(多摄像机分屏)
- 软考之网络工程师准备
- LeetCode-5-Longest Palindromic Substring(C语言实现)
- Python连接Mysql 连接池