1、本机连接虚拟机的hdfs问题:
1)问题描述:Exception in thread "main" java.net.ConnectException: Call From WDR-20180305RKR/10.25.187.25 to ubuntu:9000 failed on connection exception: java.net.ConnectException: Connection refused: no further information; For more details see: http://wiki.apache.org/hadoop/ConnectionRefused
----问题解决:
a、到虚拟机中: telnet localhost 9000 看是否连接成功;
b、在本机,开启windows的telnet功能(控制面板-程序和功能-打开或关闭windows功能,找到telnet,选中-确定即可),然后本机 telnet utuntu 9000 看是否成功;
c、注意:本机需要配置C:\Windows\System32\drivers\etc下的hosts,管理虚拟机ip和ubuntu这个主机名,如: 192.168.80.88 ubuntu
d、虚拟机中,hadoop的core-site.xml中的fs.defaultFS的值应该是 hdfs://ubuntu:9000
e、虚拟机中,/etc/hosts中,应该有 192.168.80.88 ubuntu的配置(注意:千万不能有 127.0.0.1 ubuntu的配置,会导致不能在本机访问虚拟机的hdfs的9000端口);
f、虚拟机中,netstat -tlpn 可以查看使用了哪些端口,看有没有9000,并且前面的ip应该是192.168.80.88这样的ip;
2)问题描述:Exception in thread "main" org.apache.hadoop.security.AccessControlException: Permission denied: user=new, access=WRITE, inode="/output/test01":hadoop:supergroup:drwxr-xr-x
-----问题解决:
a(下面二选一即可)、
a1、在hdfs的配置文件中,将dfs.permissions修改为false
a2、执行这样的操作 hadoop fs -chmod 777 /user/hadoop
b、在系统的环境变量里面添加HADOOP_USER_NAME=hadoop(HDFS上的有权限的用户,具体看自己的情况),或者在当前JDK的变量参数里面添加HADOOP_USER_NAME这个Java变量即可;
System.setProperty("HADOOP_USER_NAME", "hadoop"); ---我使用这个可以
3)
2、磁盘占用问题:
1)如果是本机运行idea或者sts的代码访问虚拟机的hadoop,执行mr代码,可能会在本机配置的hadoop路径中产生大量临时文件(参考路径:D:\tmp\hadoop-new\mapred\local\localRunner\new\jobcache);
2)可以删除这些临时文件;