hadoop-(3)hadoop问题汇总
2016-01-26 15:03
344 查看
问题1、虚拟机安装hadoop,windows通过主机名打不开hadoop的web页面http://master:50070/无法访问。windows ping master也ping不通方法:windows本机C:\Windows\System32\drivers\etc\hosts文件下面加上linux hosts配置hadoop机器的主机名和ip地址加进去。 |
问题2、windows下eclipse运行hadoop程序,报用户不一致,没有权限org.apache.hadoop.security.AccessControlException: org.apache.hadoop.security .AccessControlException: Permission denied: user=sunzhaohua, access=WRITE, inode="szh": 方法: // 1、这种获取fs的方法可以指定访问hdfs的客户端身份 fs = FileSystem.get(new URI("hdfs:master:9000/"), conf, "szh");2、参考:http://www.huqiwen.com/2013/07/18/hdfs-permission-denied/windows在系统的环境变量里面添加HADOOP_USER_NAME=szh,重启eclipse,即可。 |
问题3、运行hadoop
fs -put命令报no root to host方法:发现是从节点的防火墙没有关闭,关闭防火墙即可service
iptables stop
![]() |
问题4、运行./stop-all.sh命令,jps发现进程仍然存在,报错no tasktracker to stop ,no datanode to stop。方法:1)kill -9 把这些进程杀死也可netstat -nltp2)问题的原因是hadoop在stop的时候依据的是datanode上的mapred和dfs进程号。而默认的进程号保存在/tmp下,linux默认会每隔一段时间(一般是一个月或者7天左右)去删除这个目录下的文件。因此删掉hadoop-hadoop-jobtracker.pid和hadoop-hadoop-namenode.pid两个文件后,namenode自然就找不到datanode上的这两个进程了。 在配置文件中$HADOOP_HOME/conf/hadoop-env.sh中export HADOOP_PID_DIR=${HADOOP_HOME}/pids可以解决这个问题 |
问题5、hadoop2.6.3 编写mapreduce程序,打jar包运行,报错java.io.IOException: Type mismatch方法:1)kill -9 把这些进程杀死也可netstat -nltp2) // wordcount.setMapOutputKeyClass(Text.class); // wordcount.setMapOutputKeyClass(LongWritable.class);map的输出类型注释掉即可 |
问题6、本地模式运行mapreduce,Eclipse报错:ERROR [main] util.Shell (Shell.java:getWinUtilsPath(373)) - Failed to locate the winutils binary in the hadoop binary path java.io.IOException: Could not locate executable null\bin\winutils.exe in the Hadoop binaries.方法: javamain方法中代码设置: System.setProperty("hadoop.home.dir", "E:/study/Hadoop/hadoop-2.6.3"); |
问题7、本地模式运行mapreduce,Eclipse报错:Exceptionin thread "main" java.lang.UnsatisfiedLinkError:org.apache.hadoop.util.NativeCrc32.nativeComputeChunkedSumsByteArray(II[BI[BIILjava/lang/String;JZ)V 这是由于hadoop.dll 版本问题,2.4之前的和之后的需要的不一样 需要选择正确的版本并且在 Hadoop/bin和 C:\windows\system32 上将其替换下载windows64位平台的hadoop2.6插件包(hadoop.dll,winutils.exe)在hadoop2.6.0源码的hadoop-common-project\hadoop-common\src\main\winutils下,有一个vs.net工程,编译这个工程可以得到这一堆文件,输出的文件中,hadoop.dll、winutils.exe 这二个最有用,将winutils.exe复制到HADOOP\bin目录,将hadoop.dll复制到C:\Windows\System32目录 (主要是防止插件报各种莫名错误,比如空对象引用啥的)注:如果不想编译,可直接下载编译好的文件 hadoop2.6(x64)V0.2.zip |
相关文章推荐
- docker nodejs 基本应用
- Makefile中的-C和M=解析
- CentOS 7 多网卡绑定 bond
- Openlayers中不同投影间的转换
- Linux grep命令
- Linux netstat命令详解
- hadoop配置文件参数详解
- 用Linux命令行获取本机外网IP地址
- CentOS:Error: Nothing to do
- Tomcat Service
- Topshelf 学习 跨平台
- Linux第二天03
- Docker入门教程
- Docker学习笔记(1) — docker 常用命令
- Windows server 2003高可用NLB和服务器群集配置
- opendaylight实验远程调试
- nginx 配置其他路径
- Centos5.x/Linux下升级python到python2.7版本教程
- Hadoop Pipeline详解[摘抄]
- precopy copy split解释