在OS X上使用eclipse遠程連接Hadoop遇到的問題總結

一、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();
		}
	}

}



發佈了53 篇原創文章 · 獲贊 5 · 訪問量 20萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章