在OS X上使用eclipse远程连接Hadoop遇到的问题总结

3 篇文章 0 订阅

一、Eclipse配置时的问题

这里使用的是Hadoop 2.7.0版本

具体配置问题不再赘述。这里主要记录一下配置端口时候遇到的问题。

如下图所示,M/R Master host 默认的端口是50040,但是这样配置会导致Connection Refuse问题。


通过以下这个命令可以查看打开的tcp端口,发现并没有端口50040。

netstat -ntpl
使用jps命令查看JAVA进程,可看到NameNode进程的pid,然后对比上一条命令得到的端口信息,可知NameNode的端口并不是50040。


因此,我们要修改core-site.xml文件,我这里因为将core-site.xml文件中的fs.defaultFS设置成了hdfs://localhost:9000,因此造成了无法通过远程连接上NameNode,只需将以下这个文件修改为如下所示,即可。其中,在/etc/hosts文件夹中设置好namenode的IP,我这里设置的是192.168.2.160。


这样,就可以在你的PC上远程连接服务器做一些工作了,不再受到噪音的干扰。。大笑


二、使用Java API上传文件的问题

使用Java代码进行向HDFS文件操作的例子网上有很多就不详述了,这里提几个自己遇到的问题,因为我是进行远程的Hadoop程序开发,因此在代码中需要添加这行代码:

conf.set("fs.defaultFS", "hdfs://namenode:50040");

否则会出现如下的错误:

java.lang.IllegalArgumentException: Wrong FS: hdfs://namenode:50040/home/storage/xx.pdf, expected: file:///

还有一点,如果要将Hadoop应用程序打成jar包的话,则需要添加如下两行代码:

conf.set("fs.hdfs.impl", org.apache.hadoop.hdfs.DistributedFileSystem.class.getName());
conf.set("fs.file.impl", org.apache.hadoop.fs.LocalFileSystem.class.getName());
否则会出现如下的错误:

java.io.IOException: No FileSystem for scheme: file


一个简单的HDFS文件上传代码示例如下:

package com.cyber_space.hdfs;

import org.apache.hadoop.fs.Path;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FileSystem;

public class HDFSManager {
	static Configuration conf = new Configuration();
	static {
		conf.set("fs.defaultFS", "hdfs://namenode:50040");
		conf.set("fs.hdfs.impl",
				org.apache.hadoop.hdfs.DistributedFileSystem.class.getName());
		conf.set("fs.file.impl",
				org.apache.hadoop.fs.LocalFileSystem.class.getName());
	}

	public static void uploadFiles() throws Exception {
		FileSystem fsFileSystem = FileSystem.get(conf);
		Path srcPath = new Path("/Users/justyoung/Desktop/RoadMapiOS.pdf");
		Path desPath = new Path("hdfs://namenode:50040/home/storage/xx.pdf");

		fsFileSystem.copyFromLocalFile(srcPath, desPath);
		System.out.println("success");
		fsFileSystem.close();
	}

	public static void main(String args[]) {
		try {
			uploadFiles();
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}

}



  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值