设为首页 加入收藏

TOP

如何配置win10环境下操作hadoop的hdfs eclipse环境
2019-01-20 12:19:10 】 浏览:198
Tags:如何 配置 win10 环境 操作 hadoop hdfs eclipse

自己的电脑上的环境为win10 ,在配置eclipse的环境下遇到了一点小问题,为遇到的问题总结下。

我是在vmware上安装了hadoop集群,一共三台机,一台master,两台slave,其中的linux为centos 6.6 hadoop版本为2.6.4。

具体的环境搭建如下:

1、将hadoop 2.6.1的安装包进行解压,在win10的任意的目录下,相当于配置eclipse的基本的环境,我放在E:\下。

2、需要编译出win10环境下的编译出的hadoop.dll 和winutils等文件放入E:\hadoop-2.6.1\bin(之前觉得E:\hadoop-2.6.1\lib可能也需要更换,后来测试了不更换也没有问题的,由于自己电脑上没有编译环境,于是在网上找了个。链接如下:https://download.csdn.net/download/sinat_32110305/9703571

3、将下载好的hadoop.dll 和winutils等文件放入E:\hadoop-2.6.1\bin中,会发现增加了好多的文件,另外特别注意:hadoop.dll文件也同时放到C:\Windows\System32下一份,之前也网上找了不少,都没有说到这个问题,一直没运行成功。后来改了下就可以了。

4、接下来开始修改环境变量,分别修改如下:

HADOOP_HOME=E:\hadoop-2.6.1

在path下增加一个 %HADOOP_HOME%\bin%HADOOP_HOME%\sbin

注意:hadoop是基于java环境的,之前安装过java ,不过java_home是安装在Program Files这个文件下的,而hadoop是识别空格的,所以可能会报错,关于这个网上一般有两种解决办法,我是直接重新安装了一个jdk使得路径下没有空格(主要是之前用的jdk1.7,刚好也打算换个1.8,体验下新特性)

5、至此需要配置的环境已经完成了,打开我们久违的eclipse,需要导入操作hdfs的jar包,分别是hadoop-2.6.4\share\hadoop\hdfs的hadoop-hdfs-2.6.4.jar,不过该jar又依赖于hadoop-2.6.4\share\hadoop\hdfs\lib包,为了方便就全部导入了,还需要hadoop-2.6.4\share\hadoop\common下的hadoop-common-2.6.4.jar同时该包也需要导入hadoop-2.6.4\share\hadoop\common\lib下的jar一样全部导入。由于jar比较多,我把这些全部打成了一个hdfsjar库,以此来和其它的类进行区分。

6、然后编写一个测试用例HdfsClientDemo。

import java.net.URI;
import java.net.URISyntaxException;

import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path;
import org.junit.Before;
import org.junit.Test;

public class HdfsClientDemo {
	FileSystem fs =null;
	@Before
	public void init() throws IOException, InterruptedException, URISyntaxException{
		Configuration conf = new  Configuration();
		
		//拿到一个文件操作客户端实例
		fs =FileSystem.get(new URI("hdfs://master:9000"),conf,"root");
	}

	@Test 把win10上的文件上传到linux上的hadoop上
	public void testUpload() throws IllegalArgumentException, IOException{
		fs.copyFromLocalFile(new Path("E:/abc.log"), new Path("/abc.log.copy"));
		fs.close();
	    
	}
	@Test 从hadoop上进行下载
	public void testDownload() throws IllegalArgumentException, IOException{
		fs.copyToLocalFile(new Path("/abc.log.copy"), new Path("D:/"));
		fs.close();
	}
}

有几个需要注意的地方:

1、需要在E盘下创建一个abc.log的文件

2、fs =FileSystem.get(new URI("hdfs://master:9000"),conf,"root");

这行代码最为重要,第一个参数会让你的文件是上传到hadoop上的hdfs中的,而不是上传在本地的

(我的namenode的主机名叫master ,地址是192.168.153.11所以这样配置的,另外还要在 win10的hosts文件中增加一个配置 192.168.153.11 master 不然会报不能识别master的问题。

第二个参数没什么要说的,第三个参数会让你以root用户去操作namenode,我是用root安装的,所 以给的root 没有该参数eclipse会拿到win10上的用户,这样会报没有权限,因为linux上根本没有这 个用户。

后记:这就是我在运行过程中遇到的一些问题和解决的办法,虽然没有什么技术含量,不过也让我走了不 少弯路,不过只有搭建好了环境才能进行下一步的操作,努力总不会白费。













】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇Hdfs系统文件上传的机制 下一篇本地上传文件到hdfs

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目