Hadoop 运行常见问题【图文】

集群搭建和启动的常见问题

Output directory file already exists

问题描述

在运行hadoop程序时,程序报错“Output directory file:XXX already exists”, XXX是之前指定的output目录。

原因分析

hadoop 运行时的output 目录必须是之前不存在的。

解决方案

删除指定的output目录,或者是指定新的目录。

 

mapreduce_shuffle does not exist

问题描述

在运行hadoop时,程序报错:org.apache.hadoop.yarn.exceptions.InvalidAuxServiceException: The auxService:mapreduce_shuffle does not exist

原因分析

是因为yarn-site.xml 里面没有相应的配置,或者是配置写错了。比如我就是把service写错了。

解决方案

添加如下property:

    <property>
        <name>yarn.nodemanager.aux-services</name>
        <value>mapreduce_shuffle</value>
    </property>

 

Re-format filesystem in Storage Directory /opt/module/hadoop-2.7.2/data/tmp/dfs/name ? (Y or N)

问题描述

在格式化 namenode 的时候,系统提示:Re-format filesystem in Storage Directory /opt/module/hadoop-2.7.2/data/tmp/dfs/name ? (Y or N)

原因分析

namenode 需要在运行以后尽量避免格式化,否则datanode就找不到相应的cluster ID。

这样会导致datanode 即便起起来了,也名存实亡(没有datanode)。

解决方案

删掉data,重新导入:rm -rf data/tmp/dfs/data

 

Input path does not exist: file:/opt/module/hadoop-2.7.2/grep-temp-903886112

问题描述

在运行本地模式时,跑了 bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-3.2.1.jar grep input output 'dfs[a-z.]+' 之后报错:Input path does not exist: file:/opt/module/hadoop-2.7.2/grep-temp-903886112

原因分析

首先这个缺失的文件名字叫“grep-temp-903886112”,不是正常 input 该有的文件。因为如果是input 该有的文件,path 一定是在 input 下面的。那么系统说“找不到”的原因就很有可能是 没有权限去写,以至于后来去读的时候发现文件不存在。这个想法和文件路径里的“temp”能对应上,猜测可能是运行时候的临时文件写不了。

进一步检查发现是当时用root 权限安装的hadoop,但是跑example 的时候用的是我自己的ID。

解决方案

1. 可以卸载后再用自己的ID 装一遍hadoop;

2. 也可以把整个项目权限扩大到777 (如果是你自己用的话),然后就可以成功运行了。

 

Windows系统下运行的常见问题

AccessControlException: Permission denied

问题描述

在Windows中运行Hadoop程序,并尝试上传文件时,程序报错:org.apache.hadoop.security.AccessControlException: Permission denied

原因分析

因为windows下的用户名没有对Hadoop dfs文件的修改权限。

解决方案

在IDE的 Run Configuration 上把用户名配置成可以操作dfs的用户。比如root,或是其他你自己定义的用户名。

-DHADOOP_USER_NAME=root

然后就可以成功运行了。

 

Failed to locate the winutils binary in the hadoop binary path

问题描述

在Windows系统下运行MapReduce时,显示 ERROR  [org.apache.hadoop.util.Shell] - Failed to locate the winutils binary in the hadoop binary path

原因分析

因为HADOOP_HOME/bin 下没有winutils 文件。

解决方案

下载winutils:https://github.com/srccodes/hadoop-common-2.2.0-bin 

 

Exception in thread "main" java.lang.UnsatisfiedLinkError

问题描述

在Windows系统下运行MapReduce时,显示 Exception in thread "main" java.lang.UnsatisfiedLinkError: org.apache.hadoop.io.nativeio.NativeIO$Windows.createDirectoryWithMode0(Ljava/lang/String;I)V

原因分析

因为Windows上面的hadoop不是经过windows编译的jar包

解决方案

自行编译hadoop,这篇文章写得比较详细。

 

 

WordCount 等程序Output输出为进制数或者乱码

问题描述

在运行WordCount等实例时,一般输出应该如下:

但是有时候输出却是这样的:

原因分析

这是因为源文件有乱码或者程序不能解析的字符:

解决方案

自己手动写input来避免乱码问题。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值