在本次操作中所用到的命令

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 对文件的操作的更多相关文章

  1. Hadoop之HDFS(三)HDFS的JAVA API操作

    HDFS的JAVA API操作 HDFS 在生产应用中主要是客户端的开发,其核心步骤是从 HDFS 提供的 api中构造一个 HDFS 的访问客户端对象,然后通过该客户端对象操作(增删改查)HDFS ...

  2. HDFS中JAVA API的使用

    HDFS中JAVA API的使用   HDFS是一个分布式文件系统,既然是文件系统,就可以对其文件进行操作,比如说新建文件.删除文件.读取文件内容等操作.下面记录一下使用JAVA API对HDFS中的 ...

  3. HDFS的Java API

    HDFS Java API 可以用于任何Java程序与HDFS交互,该API使我们能够从其他Java程序中利用到存储在HDFS中的数据,也能够使用其他非Hadoop的计算框架处理该数据 为了以编程方式 ...

  4. Hadoop(五):HDFS的JAVA API基本操作

    HDFS的JAVA API操作 HDFS在生产应用中主要是客户端的开发,其核心步骤是从HDFS提供的api中构造一个HDFS的访问客户端对象,然后通过该客户端对象操作(增删改查)HDFS上的文件. 主 ...

  5. 更新java对xml文件的操作

    //更新java在xml文件中操作的内容 public static void upda(Document doc) throws Exception{ //创建一个TransformerFactor ...

  6. Java 字节流实现文件读写操作(InputStream-OutputStream)

    Java 字节流实现文件读写操作(InputStream-OutputStream) 备注:字节流比字符流底层,但是效率底下. 字符流地址:http://pengyan5945.iteye.com/b ...

  7. HDFS的java api操作

    hdfs在生产应用中主要是针对客户端的开发,从hdfs提供的api中构造一个HDFS的访问客户端对象,然后通过该客户端对象操作(增删改查)HDFS上的文件. 搭建开发环境 方式一(windows环境下 ...

  8. [转]HDFS中JAVA API的使用

    HDFS是一个分布式文件系统,既然是文件系统,就可以对其文件进行操作,比如说新建文件.删除文件.读取文件内容等操作.下面记录一下使用JAVA API对HDFS中的文件进行操作的过程. 对分HDFS中的 ...

  9. 熟练掌握HDFS的Java API接口访问

    HDFS设计的主要目的是对海量数据进行存储,也就是说在其上能够存储很大量文件(可以存储TB级的文件).HDFS将这些文件分割之后,存储在不同的DataNode上, HDFS 提供了两种访问接口:She ...

随机推荐

  1. 关于XAMPP Apache无法启动问题解决方案

    安装好XAMPP后,启动Apache服务启动失败,然后从xampp安装目录下执行apache_start.bat文件,如下图 显示443端口被占用. 解决方法: 启动cmd,输入netstat -a  ...

  2. Ubuntu 环境变量及 ADB 配置 (转载)

    转自:http://blog.csdn.net/ithomer/article/details/7307449 同Windows一样,Ubuntu Linux系统包含两类环境变量:系统环境变量和用户环 ...

  3. 浅谈扩展欧几里得[exgcd] By cellur925

    关于扩展欧几里得从寒假时就很迷,抄题解过了同余方程,但是原理并不理解. 今天终于把坑填上了qwq. 由于本人太菜,不会用markdown,所以这篇总结是手写的(什么).(字丑不要嫌弃嘛) ****** ...

  4. mqtt遇到的问题锦集

    1.无效客户机标识 (2) Connect指令中的KeepAlive有效范围[60秒,300秒],否则会拒绝连接. 2.消息回调出现频繁的断开连接 待解决 3.长时间消息回调出现 已断开连接 (321 ...

  5. Python添加自己的模块路径

    进入Python编辑环境后可以,通过Python的sys.path属性获得当前搜索路径的配置,可以看到之前我们设置的路径已经在当前搜索路径中了. 然后通过sys.path.append('F:\Pyt ...

  6. 使用HttpClient携带证书报错_Certificate for <IP> doesn't match any of the subject alternative names:[域名]

    使用HttpClient携带pfx证书通过Https协议发送SOUP报文调用WebService接口时报如下错误: Exception in thread "main" javax ...

  7. 【小程序】基于.NET CORE2.1 的 微信开放平台 第三方平台开发 教程一 准备工作

    微信第三方平台概述 公众平台第三方平台是为了让公众号或小程序运营者,在面向垂直行业需求时,可以一键授权给第三方平台(并且可以同时授权给多家第三方),通过第三方平台来完成业务,开放给所有通过开发者资质认 ...

  8. 445 Add Two Numbers II 两数相加 II

    给定两个非空链表来代表两个非负整数.数字最高位位于链表开始位置.它们的每个节点只存储单个数字.将这两数相加会返回一个新的链表.你可以假设除了数字 0 之外,这两个数字都不会以零开头.进阶:如果输入链表 ...

  9. sdut1283Five in a Row, Again

    一简单的状压题 比赛时跑偏了 ,脑子最近乱的跟浆糊似得呢.. #include <iostream> #include<cstdio> #include<cstring& ...

  10. IIS7.0中Process打开cmd程序出现问题

    本人在VS中用Process打开cmd程序,并传入参数,转换图片,运行成功! 但是放入IIS7.0中,Process打不开cmd程序,程序直接运行过去,无结果,无报错! 解决方案: 将IIS里面你程序 ...