1.启动hadoop服务。

2.hadoop默认将数据存储带/tmp目录下,如下图:

由于/tmp是linux的临时目录,linux会不定时的对该目录进行清除,因此hadoop可能就会出现意外情况。下面对这个配置进行修改。修改core-site.xml文件vim /usr/local/hadoop/etc/hadoop/core-site.xml将这个值修改到/var/hadoop目录下

3.修改完毕后,重启hadoop服务(stop-dfs.sh、start-dfs.sh),然后重新格式化namenode

hdfs namenode -format

4.使用java来操作hdfs

5.新建java项目,导入如下几个包:

a).hadoop安装目录下share/hadoop/common下的common包

b).hadoop安装目录下share/hadoop/common/lib下的所有包

c).hadoop安装目录下share/hadoop/hdfs下的hdfs包

6.新建java类HelloHDFS.java,测试java程序读取hadoop当中存储的文件。现在我的hadoop集群根目录当中有一个Hello.java文件,下面用java程序来读取它。

1 importjava.io.InputStream;2 importjava.net.URL;3 importorg.apache.hadoop.fs.FsUrlStreamHandlerFactory;4 importorg.apache.hadoop.io.IOUtils;5

6 public classHelloHDFS {7 public static void main(String[] args) throwsException {8 //设置URL流处理器工厂,即URL按照什么协议进行处理,默认的是HTTP协议的处理工厂

9 URL.setURLStreamHandlerFactory(newFsUrlStreamHandlerFactory());10 URL url = new URL(“hdfs://192.168.17.100:9000/Hello.java”);11 InputStream is =url.openStream();12 IOUtils.copyBytes(is, System.out, 4096, true);13      //4096表示缓冲区的大小,true表示执行完毕后系统会自动关闭流

14 }15 }

7.运行上述程序,观察结果,发现已经读取到了hadoop当中存储文件。

8.上述为方式一,下面介绍一种更好用的方式。

1 //方式二:

2 Configuration conf = newConfiguration();3 conf.set(“fs.defaultFS”, “hdfs://192.168.17.100:9000”);4 FileSystem fs =FileSystem.get(conf);5 boolean success = fs.mkdirs(new Path(“/skyer”));6 System.out.println(success);

上述代码为在hadoop根目录下创建一个skyer目录(如果原来就有该目录,会覆盖),并打印创建结果,结果为true。若出现下图错误:

在core-site.xml文件中将dfs.permissions.enabled配置为false,或者输入以下命令hadoop fs -chmod 777 /修改hadoop根目录的权限(危险,不推荐),还有一个方法是在windows机器上配置一个环境变量HADOOP-USER_NAME,还有一种方法是将

FileSystem fs = FileSystem.get(conf);

替换成

FileSystem fs = FileSystem.get(new URI(“hdfs://192.168.17.100:9000”),conf,“root”);

9.其他操作hadoop的示例,直接看代码:

1 public classHelloHDFS {2 public static void main(String[] args) throwsException {3 //方式二:

4 Configuration conf = newConfiguration();5 conf.set(“fs.defaultFS”, “hdfs://192.168.17.100:9000”);6 FileSystem fs =FileSystem.get(conf);7 boolean success = fs.mkdirs(new Path(“/skyer”)); //创建目录

8 System.out.println(success);9 success = fs.exists(new Path(“/skyer”)); //判断文件或者目录是否存在

10 System.out.println(success);11

12 success = fs.delete(new Path(“/skyer”), true);13 //删除,第二个参数为true的话会真正的删除文件,为false的话是将该文件放到垃圾桶里

14 System.out.println(success);15

16 //上传文件到hadoop

17 FSDataOutputStream out = fs.create(new Path(“/upload.data”), true);18 FileInputStream fis = new FileInputStream(“E://HelloHDFS.java”);19 IOUtils.copyBytes(fis, out, 4096, true);20

21 //列取目录下所有文件和目录的信息

22 FileStatus[] statuses = fs.listStatus(new Path(“/”));23 for(FileStatus status : statuses) {24 System.out.println(status.getPath());25 System.out.println(status.getPermission());26 System.out.println(status.getReplication());27 }28 }29 }

10.在master机器上输入命令hadoop fs -text /upload.data进行查看示例中上传的文件,类似linux里的cat命令

Hadoop学习笔记(三):java操作Hadoop相关推荐

  1. 项目实例:KNN预测电影网站用户性别(Hadoop学习笔记三)

    通过学习<Hadoop大数据开发基础>这本书,整理了一下书本上的项目案例.让自己再梳理一下流程,也希望能给有需要的人提供一定的帮助,写的不好的希望大家提出来,一起进步. 1 学习目标 理解 ...

  2. Java基础学习笔记三 Java基础语法

    Scanner类 Scanner类属于引用数据类型,先了解下引用数据类型. 引用数据类型的使用 与定义基本数据类型变量不同,引用数据类型的变量定义及赋值有一个相对固定的步骤或格式. 数据类型 变量名 ...

  3. python文件是什么的集合和抽象_python学习笔记(三):文件操作和集合

    这篇博客来说一下python对文件的操作. 对文件的操作分三步: 1.打开文件获取文件的句柄,句柄就理解为这个文件 2.通过文件句柄操作文件 3.关闭文件. 现有以下文件file.txt: 1 2 3 ...

  4. Jmeter学习笔记三_操作数据库(MySQL)

    一.到入JDBC的jar包 因为jmeter本身不能直接连接mysql,所以需要导入第三方的jar包,来连接mysql 将jar包放在Jmeter安装目录/lib/mysql-connector-ja ...

  5. ibatis学习笔记(三)java实体跟表映射.xml文件详解

    在项目中使用Ibatis难免会使用到java实体跟表映射.xml. <?xml version="1.0" encoding="UTF-8" ?> ...

  6. java日期类型_Java 学习笔记 (三) Java 日期类型

    以下内容摘自:  https://www.cnblogs.com/crazylqy/p/4172324.html import java.sql.Timestamp; import java.text ...

  7. flash 怎么擦掉fpga_SPI FLASH学习笔记(三)擦除操作

    Block Erase (D8H) BLOCK ERASE(D8H)命令用于在块级别擦除.每块有64页,每页2176字节(2048 + 128字节).每个块为136 KB. BLOCK ERASE命令 ...

  8. hadoop学习笔记-目录

    以下是hadoop学习笔记的顺序: hadoop学习笔记(一):概念和组成 hadoop学习笔记(二):centos7三节点安装hadoop2.7.0 hadoop学习笔记(三):hdfs体系结构和读 ...

  9. Hadoop学习笔记(1) ——菜鸟入门

     Hadoop学习笔记(1) --菜鸟入门 Hadoop是什么?先问一下百度吧: [百度百科]一个分布式系统基础架构,由Apache基金会所开发.用户能够在不了解分布式底层细节的情况下.开发分布式 ...

  10. Hadoop学习笔记(1)

    原文:http://www.cnblogs.com/zjfstudio/p/3859704.html Hadoop学习笔记(1) --菜鸟入门 Hadoop是什么?先问一下百度吧: [百度百科]一个分 ...

最新文章

  1. list extend 和 append
  2. spring配置文件import标签中使用${}占位符获得配置文件的属性值
  3. poj2352(树状数组)
  4. python 视觉技术_python+opencv实现机器视觉基础技术(边缘提取,图像滤波,边缘检测算子,投影,车牌字符分割)...
  5. Unity按钮禁用和变灰
  6. word中 有注释标签吗_如何在Word中注释图像
  7. python源码笔记_python源码学习笔记(二)
  8. java 画笔跟swing组件_Java学习教程(基础)--Java版本历史(二)
  9. 代码太烂,可能是他离职的原因吧!
  10. LeetCode LRU Cache
  11. python的django_真正搞明白Python中Django和Flask框架的区别
  12. 将高德坐标拾取工具放入Element UI 对话框
  13. mtk刷机显示连接服务器失败,MTk线刷刷机出现的错误和解决方法
  14. 边境的悍匪—机器学习实战:第三章 分类
  15. 苹果付费app共享公众号_【苹果iOS付费游戏应用帐号分享】新增一款25元iOS游戏应用共享帐号...
  16. linux下调试thread 类_linux下GDB调试
  17. mysql开外网访问
  18. 查询选修相同课程的学生学号、课程号和成绩
  19. 如何有效地阅读文献并做笔记
  20. MySQL的COUNT语句暗藏玄机

热门文章

  1. kmeans聚类算法_机器学习/算法校招面试考点汇总(附面试题和答案)【持续更新】_笔经面经...
  2. Spring Framework --wenyu2
  3. 有哪些流量明星走红让你觉得无法理解?
  4. [Python] Pandas批量处理身份证信息,判别男性和女性
  5. @PostMapping,@GetMapping,@PutMapping是什么,有什么区别、常用注解总结
  6. nginx做反向代理时出现302错误
  7. 禅道客户端服务端部署xxd守护进程运行
  8. 安徽科技学院 信网学院网络文化节 刘庞
  9. 手机电池的快充是什么原理?
  10. 博尔特,菲尔普斯和埃蒙斯