Java 无法连接hadoop
连接到hadoop时,出现以下错误 线程“main”java.lang.AbstractMethodError中出现异常:org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider.getProxy()Lorg/apache/hadoop/io/retry/FailoverProxyProvider$ProxyInfo; 位于org.apache.hadoop.io.retry.RetryInvocationHandler。(RetryInvocationHandler.java:73) 位于org.apache.hadoop.io.retry.RetryInvocationHandler。(RetryInvocationHandler.java:64) 位于org.apache.hadoop.io.retry.RetryProxy.create(RetryProxy.java:58) 在org.apache.hadoop.hdfs.NameNodeProxies.createProxy(NameNodeProxies.java:147)上 位于org.apache.hadoop.hdfs.DFSClient.(DFSClient.java:510) 位于org.apache.hadoop.hdfs.DFSClient.(DFSClient.java:453) 在org.apache.hadoop.hdfs.DistributedFileSystem.initialize(DistributedFileSystem.java:136)上 位于org.apache.hadoop.fs.FileSystem.createFileSystem(FileSystem.java:2653) 在org.apache.hadoop.fs.FileSystem.access$200(FileSystem.java:92) 位于org.apache.hadoop.fs.FileSystem$Cache.getInternal(FileSystem.java:2687) 位于org.apache.hadoop.fs.FileSystem$Cache.get(FileSystem.java:2669) 位于org.apache.hadoop.fs.FileSystem.get(FileSystem.java:371) 位于org.apache.hadoop.fs.FileSystem.get(FileSystem.java:170) 位于hrumen.HTest.main(HTest.java:26) 下面是我的代码:Java 无法连接hadoop,java,hadoop,hdfs,Java,Hadoop,Hdfs,连接到hadoop时,出现以下错误 线程“main”java.lang.AbstractMethodError中出现异常:org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider.getProxy()Lorg/apache/hadoop/io/retry/FailoverProxyProvider$ProxyInfo; 位于org.apache.hadoop.io.retry.RetryInvocation
***Path corepath = new Path("/var/tmp/hactive/core-site.xml");
Path sitepath = new Path("/var/tmp/hactive/hdfs-site.xml");
Path yarnpath = new Path("/var/tmp/hactive/yarn-site.xml");
Path mapredpath = new Path("/var/tmp/hactive/mapred-site.xml");
Configuration hconf = new Configuration();
hconf.addResource(corepath);
hconf.addResource(sitepath);
hconf.addResource(yarnpath);
hconf.addResource(mapredpath);
try{
DFSAdmin dfadmin = new DFSAdmin(hconf);
dfadmin.report();
}
catch(Exception e){
//System.out.println("[Exception]: "+e);
e.printStackTrace();
}***
这里是hdfs-site.xml的一部分
...
<property>
<name>dfs.nameservices</name>
<value>mycluster</value>
<final>true</final>
</property>
....
<property>
<name>dfs.client.failover.proxy.provider.mycluster</name>
<value>org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider</value>
</property>
。。。
dfs.nameservices
mycluster
真的
....
dfs.client.failover.proxy.provider.mycluster
org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider
在core-site.xml中
<property>
<name>fs.defaultFS</name>
<value>hdfs://mycluster</value>
</property>
fs.defaultFS
hdfs://mycluster
..我在尝试运行我的应用程序(在Hortonworks中)时遇到了相同的问题。在被卡住后-这需要一段时间,因此在这里添加供将来参考-以下修复了问题 添加到pom.xml(注意:版本可能会有所不同,请相应设置):
org.apache.hadoop
hadoop hdfs
2.8.1
或加上:
/path/to/hadoop-hdfs-client-<version_number>.jar
/path/to/hadoop hdfs client-.jar
到您的类路径,以便在运行时包含hadoop hdfs客户端jar。可能与您的配置文件有关。否。集群表现良好,但仅尝试从该代码连接时,面临问题。相同的代码和单个namenode(独立)集群运行良好,对于ha namenode,我们必须启用任何其他东西吗?这就是我所需要的,你正在运行HA配置?谢谢@Saifhamad的关注,问题已经解决。集群在hadoop用户上运行,我从根用户运行的代码就是问题所在,一旦我换成hadoop,我就可以从代码连接集群了
/path/to/hadoop-hdfs-client-<version_number>.jar