设为首页 加入收藏

TOP

JAVA API访问HDFS遇到的一些问题
2019-01-21 00:20:14 】 浏览:54
Tags:JAVA API 访问 HDFS 遇到 一些 问题

1.缺少jar包依赖

maven依赖需要引入hadoop-common/hadoop-auth/hadoop-hdfs等,我在开发过程中还遇到以上三个jar包使用google的jar包依赖缺少/版本不对的问题,依次引入就好。

2.windows环境下使用开发工具进行远程连接测试,报could not locate executable null\bin\winutils.exe in hadoop binaries

这是本地没有安装hadoop调试环境工具,

(1)下载工具

hadoop2.2版本可以在这里下载https://github.com/srccodes/hadoop-common-2.2.0-bin

hadoop2.6版本可以在这里下载https://github.com/amihalik/hadoop-common-2.6.0-bin

(2)配置环境变量

①增加系统变量HADOOP_HOME,值是下载的zip包解压的目录,我这里解压后将其重命名为hadoop-common-2.6.0

②在系统变量path里增加%HADOOP_HOME%\bin

3.connection refused连接被拒

这个问题的原因有很多,暂且说一下我遇到的,刚开始没有搞清楚java api是通过哪种方式与hdfs建立连接,从hdfs-site.xml配置文件中可以看到,提供了两种连接方式,一种RPC、还有一种HTTP,后者是可以通过界面对hdfs进行查看。java api使用的是RPC通信。

<property>
      <name>dfs.namenode.rpc-address.mycluster.nn1</name>
      <value>ydbmaster:8020</value>
</property>
<property>
      <name>dfs.namenode.rpc-address.mycluster.nn2</name>
      <value>myslave1:8020</value>
</property>

一般namenode会配置两个节点nn1和nn2,若使用域名,则需要在服务器端的hosts文件中配置,例如10.0.9.39 ydbmaster,此处配置成域名,无需加前缀hdfs://

URI uri = null;
Configuration conf = null;
FileSystem fs = null;
try {
    uri = new URI("hdfs://10.0.9.39:8020");
    conf = new Configuration();
    fs = FileSystem.get(uri,conf);
    //TODO 
}catch (Exception e){
    //TODO
}

】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇Hadoop _ Hdfs   java.io.IO.. 下一篇HDFS文件系统中存储块为何设置为6..

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目