在win10的Eclipse开发环境下,访问VM虚拟机上docker镜像下的hadoop的 HDFS系统

1.首先确定在VM虚拟机上的CentOS下能ping 通 docker下的hadoop所在的主机的IP
例如: VM 192.168.10.161 ping docker下的hadoop主机的IP 172.18.0.2
2. 在WIN10系统上"管理员"进入cmd
执行 route -p add add 172.18.0.2 mask 255.255.255.0 192.168.10.161
这样就可以在 Window10 上ping 通 docker下hadoop所在机器的IP 172.18.0.2了
3. 首先下载hadoop-2.x.x 版本的Windows 10编译过的hadoop (https://download.csdn.net/download/shuimofengyang/10481994) ,解压到任意盘符。
设置环境变量 HADOOP_HOME 指向解压的目录,将hadoop.dll 文件也同时放到
C:\Windows\System32下一份,
添加环境变 量%HADOOP_HOME%\bin; %HADOOP_HOME%\sbin;
4.在eclipse开发工具创建一个工程,需要导入操作hdfs的jar包,分别是hadoop- 2.7.2\share\hadoop\hdfs 的hadoop-hdfs-2.7.2.jar,不过该jar又依赖于hadoop-2.7.2\share\hadoop\hdfs\lib包,为了方便就全部导入了,还需要hadoop-2.7.2\share\hadoop\common下的hadoop-common-2.7.2.jar 同时该包也需要导入hadoop-2.7.2\share\hadoop\common\lib下的jar 一样全部导入。


JAVA API 访问hadoop的hdfs系统文件
try {

		  System.setProperty("hadoop.home.dir", "D:\\java\\hadoop-2.7.2");
		  String localSrc = "D://docker.docx";
		  String dst = "hdfs://172.18.0.2:9000/home/";
		  InputStream in = new BufferedInputStream(new FileInputStream(localSrc));
		  Configuration conf = new Configuration();
		 
		  FileSystem fs = FileSystem.get(URI.create(dst), conf,"root");
		  OutputStream out = fs.create(new Path(dst), new Progressable() {
		   public void progress() {
		    System.out.print(".");
		   }
		  });
		  IOUtils.copyBytes(in, out, 4096, true);
		  System.out.println("上传文件成功!!!");
		
	} catch (Exception e) {
		// TODO Auto-generated catch block
		logger.info("文件上传失败!!!");
		e.printStackTrace();
	}

5.解决BUG:could only be replicated to 0 nodes instead of minReplication (=1)
将虚拟机种的CentOS系统的防火墙关闭systemctl disable firewalld 永久关闭
systemctl stop firewalld 本次关闭,重启生效。

猜你喜欢

转载自blog.csdn.net/qq_28358461/article/details/88743332
今日推荐