1. HDFS的java操作
hdfs在生产应用中主要是客户端的开发,其核心步骤是从hdfs提供的api中构造一个HDFS的访问客户端对象,然后通过该客户端对象操作(增删改查)HDFS上的文件
1.1 搭建开发环境
1.1.1创建Maven工程
快速创建一个Maven工程和目录结构的方式是执行下面的命令:
1、配置pom文件,引入下面的jar之后,其它相关的maven依赖的jar包,它会自动引入:
1.1.2创建一个非Maven工程
注:如需手动引入jar包,hdfs的jar包----hadoop的安装目录的share下,他们分别是:
如果是创建非Maven工程,步骤如下:
第一步:创建一个User Library
第二步:添加library
第三步:添加common中的所有的jar
第四步:添加hadoop-hdfs-2.8.0.jar
第五步:添加hdfs依赖的jar
最后到工程里面查看引包情况
接着上面的配置,可以进行hdfs客户端调用的代码的编写了。
2、window下开发的说明
建议在linux下进行hadoop应用的开发,不会存在兼容性问题。如在window上做客户端应用开发,需要设置以下环境:
A、用老师给的windows平台下编译的hadoop安装包解压一份到windows的任意一个目录下
B、在window系统中配置HADOOP_HOME指向你解压的安装包目录
C、在windows系统的path变量中加入HADOOP_HOME的bin目录
1.2 获取api中的客户端对象
在java中操作hdfs,首先要获得一个客户端实例
而我们的操作目标是HDFS,所以获取到的fs对象应该是DistributedFileSystem的实例;
get方法是从何处判断具体实例化那种客户端类呢?
——从conf中的一个参数 fs.defaultFS的配置值判断;
如果我们的代码中没有指定fs.defaultFS,并且工程classpath下也没有给定相应的配置,conf中的默认值就来自于hadoop的jar包中的core-default.xml,默认值为: file:///,则获取的将不是一个DistributedFileSystem的实例,而是一个本地文件系统的客户端对象
1.3 DistributedFileSystem实例对象所具备的方法
1.4 HDFS客户端操作数据代码示例:
1.4.1 文件的增删改查
1.4.2 通过流的方式访问hdfs
1.4.3 场景编程
在mapreduce 、spark等运算框架中,有一个核心思想就是将运算移往数据,或者说,就是要在并发计算中尽可能让运算本地化,这就需要获取数据所在位置的信息并进行相应范围读取以下模拟实现:获取一个文件的所有block位置信息,然后读取指定block中的内容
HDFS的API调用 创建Maven工程 创建一个非Maven工程 HDFS客户端操作数据代码示例 文件方式操作和流式操作