HDFS的Java API 对文件的操作
在本次操作中所用到的命令
1.首先启动HDFS
$HADOOP_HOME/sbin/start-dfs.sh
2.关防火墙
切换到root用户,执行service iptables stop
3.拷贝文件到HDFS
bin/hadoop fs -put 本地 HDFS
4.查看HDFS根目录的文件
bin/hadoop fs -ls /
1.新建Java项目,导入Hadoop相关jar包。
在hadoop解压包中的hadoop-2.6.0\share\hadoop\common目录下红色标注的文件全部拷贝

在hadoop-2.6.0\share\hadoop\hdfs目录下红色标注的文件全部拷贝

然后在Java项目中构建配置路径
2.编写代码
FileSystem fileSystem;
/*
* 初始化
*/
@Before
public void init() throws Exception{
//读取数据由平台上的协议确定
URI uri = new URI("hdfs://192.168.*.*:9000");
Configuration conf = new Configuration();
fileSystem = FileSystem.get(uri, conf);
}
/*
* 查看目录
*/
@Test
public void Catalog() throws Exception{
Path path = new Path("/poker");
FileStatus fileStatus = fileSystem.getFileStatus(path);
System.out.println("*************************************");
System.out.println("文件根目录: "+fileStatus.getPath());
System.out.println("这文件目录为:");
for(FileStatus fs : fileSystem.listStatus(path)){
System.out.println(fs.getPath());
}
}
/*
* 浏览文件
*/
@Test
public void look() throws Exception{
Path path = new Path("/core-site.xml");
FSDataInputStream fsDataInputStream = fileSystem.open(path);
System.out.println("*************************************");
System.out.println("浏览文件:");
int c;
while((c = fsDataInputStream.read()) != -1){
System.out.print((char)c);
}
fsDataInputStream.close();
}
/*
* 上传文件
*/
@Test
public void upload() throws Exception{
Path srcPath = new Path("C:/Users/Administrator/Desktop/hadoop/hadoop.txt");
Path dstPath = new Path("/");
fileSystem.copyFromLocalFile(false, srcPath, dstPath);
fileSystem.close();
System.out.println("*************************************");
System.out.println("上传成功!");
}
/*
* 下载文件
*/
@Test
public void download() throws Exception{
InputStream in = fileSystem.open(new Path("/hadoop.txt"));
OutputStream out = new FileOutputStream("E://hadoop.txt");
IOUtils.copyBytes(in, out, 4096, true);
}
/*
* 删除文件
*/
@Test
public void delete() throws Exception{
Path path = new Path("hdfs://192.168.*.*:9000/hadoop.txt");
fileSystem.delete(path,true);
System.out.println("*************************************");
System.out.println("删除成功!");
}
3.运行时发现出现用户没有权限的错误。
解决方法:
1.修改HDFS根目录的权限
2.把Hadoop权限验证关闭,把hadoop.dll文件放到C:/windows/system32中,然后修改hdfs-site.xml文件,把验证关闭
<property>
<name>dfs.permissions</name>
<value>false</value>
</property>
3.伪造用户 -DHADOOP_USER_NAME=用户名

HDFS的Java API 对文件的操作的更多相关文章
- Hadoop之HDFS(三)HDFS的JAVA API操作
HDFS的JAVA API操作 HDFS 在生产应用中主要是客户端的开发,其核心步骤是从 HDFS 提供的 api中构造一个 HDFS 的访问客户端对象,然后通过该客户端对象操作(增删改查)HDFS ...
- HDFS中JAVA API的使用
HDFS中JAVA API的使用 HDFS是一个分布式文件系统,既然是文件系统,就可以对其文件进行操作,比如说新建文件.删除文件.读取文件内容等操作.下面记录一下使用JAVA API对HDFS中的 ...
- HDFS的Java API
HDFS Java API 可以用于任何Java程序与HDFS交互,该API使我们能够从其他Java程序中利用到存储在HDFS中的数据,也能够使用其他非Hadoop的计算框架处理该数据 为了以编程方式 ...
- Hadoop(五):HDFS的JAVA API基本操作
HDFS的JAVA API操作 HDFS在生产应用中主要是客户端的开发,其核心步骤是从HDFS提供的api中构造一个HDFS的访问客户端对象,然后通过该客户端对象操作(增删改查)HDFS上的文件. 主 ...
- 更新java对xml文件的操作
//更新java在xml文件中操作的内容 public static void upda(Document doc) throws Exception{ //创建一个TransformerFactor ...
- Java 字节流实现文件读写操作(InputStream-OutputStream)
Java 字节流实现文件读写操作(InputStream-OutputStream) 备注:字节流比字符流底层,但是效率底下. 字符流地址:http://pengyan5945.iteye.com/b ...
- HDFS的java api操作
hdfs在生产应用中主要是针对客户端的开发,从hdfs提供的api中构造一个HDFS的访问客户端对象,然后通过该客户端对象操作(增删改查)HDFS上的文件. 搭建开发环境 方式一(windows环境下 ...
- [转]HDFS中JAVA API的使用
HDFS是一个分布式文件系统,既然是文件系统,就可以对其文件进行操作,比如说新建文件.删除文件.读取文件内容等操作.下面记录一下使用JAVA API对HDFS中的文件进行操作的过程. 对分HDFS中的 ...
- 熟练掌握HDFS的Java API接口访问
HDFS设计的主要目的是对海量数据进行存储,也就是说在其上能够存储很大量文件(可以存储TB级的文件).HDFS将这些文件分割之后,存储在不同的DataNode上, HDFS 提供了两种访问接口:She ...
随机推荐
- Tinkoff Challenge - Elimination Round C. Mice problem(模拟)
传送门 题意 给出一个矩形的左下角和右上角的坐标,给出n个点的初始坐标和运动速度和方向,询问是否存在一个时间使得所有点都在矩形内,有则输出最短时间,否则输出-1 分析 对于每个点如果运动过程中都不在矩 ...
- flask框架模板系统
flask模板引擎 flask默认使用了Jinja2模板引擎,我们在使用模板的时候,需要在同级目录文件夹下 创建一个templates的文件夹,然后这个文件夹内放置我们想要的模板实例即可: 在正常普通 ...
- [SHOI2002]舞会
Descriptio 某学校要召开一个舞会,已知有N名学生,有些学生曾经互相跳过舞.当然跳过舞的一定是一个男生和一个女生,在这个舞会上,要求被邀请的学生中任一对男生和女生互相都不能跳过舞.问最多可邀请 ...
- 51nod 1024 矩阵中不重复的元素
1024 矩阵中不重复的元素 题目来源: Project Euler 基准时间限制:1 秒 空间限制:131072 KB 分值: 10 难度:2级算法题 收藏 关注 一个m*n的矩阵. 该矩阵的 ...
- 递推DP UVA 590 Always on the run
题目传送门 题意:题意难懂,就是一个小偷在m天内从城市1飞到城市n最小花费,输入的是每个城市飞到其他城市的航班. 分析:dp[i][j] 表示小偷第i天在城市j的最小花费.状态转移方程:dp[i][j ...
- 题解报告:hdu 1570 A C
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1570 Problem Description Are you excited when you see ...
- 递归查找无效的符号链接 分类: linux c/c++ 2014-06-02 00:14 345人阅读 评论(0) 收藏
本程序实现在指定目录下递归查找无效的符号链接. 1.设计思路 逐个读取给定目录中的目录项,判断类型 (1)若为目录,则读取该目录中的目录项并判断类型: (2)若为链接文件,则读取出其指向文件的名称(绝 ...
- Application,Service,Activity 三者的Context的应用场景
Application 的 context 不是万能的,所以也不能随便乱用,对于有些地方则必须使用 Activity 的 Context, 对于Application,Service,Activity ...
- Css 基本的规则写法
样式表的写法: css的语法由一些标志构成,就是一个基本的样式表由选择器,属性和属性值构成.Css有标准的写法规则标准的css写法: h1 { Font-family:黑体;} h1:表示选择符Fon ...
- solr 管理页面详解
solr 服务器管理界面可以查看系统状态.solr设置.分词检测.查询索引.增减core.查看日志等 1.Dashboard(仪表盘) 访问http://localhost:8080/solr时,出现 ...