配置java项目在不同的(虚拟)机器上使用hadoop

q8l4jmvw  于 2021-06-04  发布在  Hadoop
关注(0)|答案(4)|浏览(315)

我在intellijidea本地有一个maven项目,我想将它设置为使用我安装在虚拟机上的hadoop。有什么建议吗?
我在本地安装了windows8.1,在虚拟机上安装了ubuntu12.0.4。我已经在那里安装了hadoop,它正在工作。
编辑:vm:core-site.xml上的hadoop安装程序

<configuration>
<property>
  <name>hadoop.tmp.dir</name>
  <value>/app/hadoop/tmp</value>
  <description>A base for other temporary directories.</description>
</property>

<property>
  <name>fs.default.name</name>
  <value>hdfs://localhost:54310</value>
  <description>The name of the default file system.  A URI whose
  scheme and authority determine the FileSystem implementation.  The
  uri's scheme determines the config property (fs.SCHEME.impl) naming
  the FileSystem implementation class.  The uri's authority is used to
  determine the host, port, etc. for a filesystem.</description>
</property>

</configuration>

和mapred-site.xml

<configuration>
<property>
  <name>mapred.job.tracker</name>
  <value>localhost:54311</value>
  <description>The host and port that the MapReduce job tracker runs
  at.  If "local", then jobs are run in-process as a single map
  and reduce task.
  </description>
</property>

</configuration>

和hdfs-site.xml

<configuration>
<property>
  <name>dfs.replication</name>
  <value>1</value>
  <description>Default block replication.
  The actual number of replications can be specified when the file is created.
  The default is used if replication is not specified in create time.
  </description>
</property>

</configuration>

我的vm(vmwareplayer)上的网络是nat,ip地址是192.168.35.128。
然后,我在intellij idea中有一个简单的java项目(dint认为这很重要,但无论如何……),下面是我的配置:

String hdfsUrl = "hdfs://192.168.36.128:54310";
FileSystem hdfs;
final Configuration config = new Configuration();
config.set(FS_DEFAULT_NAME, hdfsUrl);
 try {
            hdfs = FileSystem.get(config);
            if (hdfs != null) {
                hdfsAvailable = true;
            } else {
                throw new IOException("Unable to get hdfs, is NULL");
            }
        } catch (IOException e) {
            logger.warn(e.toString());
        }

当我启动它时,我得到了以下错误:
java.io.ioexception:scheme:hdfs没有文件系统
所以很明显我遗漏了什么。我的操作系统是windows8,虚拟机上是ubuntu。
重要编辑2:
电话192.168.36.128 54310
已成功,但应用程序中仍然没有任何内容。。。

fhity93d

fhity93d1#

添加带有配置对象的配置文件

Configuration conf = new Configuration();
     conf.addResource(new Path("/path of file /core-site.xml"));
     conf.addResource(new Path("/path of file /hdfs-site.xml"));
4ktjp1zp

4ktjp1zp2#

发生此错误的原因是类路径中缺少库hadoop hdfs-.jar。对于访问hdfs文件系统,如果您单独添加hadoop hdfs-.jar并不能解决这个问题,需要了解以下依赖关系。

hadoop-hdfs-*.jar
hadoop-common-*.jar
dependecy jars inside common/lib directory.
ryhaxcpt

ryhaxcpt3#

我以前见过这个错误。我在客户端的类路径中丢失了hadoop hdfs jar。在您的案例中,idea项目是hdfs客户机。”hdfs”方案在hdfsconstants.java中定义,hdfsconstants.java打包在hadoop-hdfs.jar中。由于hdfs在项目外部是可访问的,因此最可能的问题是缺少类。尝试将hadoophdfs和hadoopcommon添加到构建路径。
我假设您使用的是Hadoop2.x

d8tt03nd

d8tt03nd4#

这是我的eclipse(没有任何插件)提供的。

Configuration configuration = new Configuration();
    configuration.set("fs.defaultFS", "hdfs://name-node:8020");
    FileSystem fs = FileSystem.get(configuration);

    Path filePath = new Path(
            "hdfs://name-node:8020/user/test/000000_0");

相关问题