我们在工作中写完的各种代码是在服务器中运行的,HDFS 的操作代码也不例外。在开发阶段,我们使用windows 下的eclipse 作为开发环境,访问运行在虚拟机中的HDFS。也就是通过在本地的eclipse 中的java 代码访问远程linux 中的hdfs。
要使用宿主机中的java 代码访问客户机中的hdfs,需要保证以下几点:
(1)确保宿主机与客户机的网络是互通的
(2)确保宿主机和客户机的防火墙都关闭,因为很多端口需要通过,为了减少防火墙配置,直接关闭.
(3)确保宿主机与客户机使用的jdk 版本一致。如果客户机为jdk6,宿主机为jdk7,那么代码运行时会报不支持的版本的错误。
(4)宿主机的登录用户名必须与客户机的用户名一直。比如我们linux 使用的是root 用户,那么windows 也要使用root 用户,否则会报权限异常
 在eclipse 项目中覆盖hadoop 的org.apache.hadoop.fs.FileUtil 类checkReturnValue 方法,如图1.1,目的是为了避免权限错误

Hadoop日记Day9---HDFS的java访问接口

图1.1

  如果读者在开发过程中出现权限等问题,请按照本节的提示检查自己的环境。

二、使用FileSystem api 读写数据

  在hadoop 的HDFS 操作中,有个非常重要的api,是org.apache.hadoop.fs.FileSystem,这是我们用户代码操作HDFS 的直接入口,该类含有操作HDFS 的各种方法,类似于jdbc 中操作数据库的直接入口是Connection 类

那我们怎么获得一个FileSystem 对象

1   String uri = "hdfs://10.1.14.24:9000/";
2             Configuration conf = new Configuration();
3             FileSystem fs = FileSystem.get(URI.create(uri), conf);
View Code

相关文章: