hadoop安装常见问题

Hadoop-------扫除运行障碍篇

(一)     一个较完整的命令行和SDK中执行Hadoop的两种方式的配置方法

http://www.cnblogs.com/zbw911/archive/2011/9/30.html

(二)     Cygwin运行Hadoop中处理 ssh的有效命令

1 ssh-host-config

  错误: There are still ssh processes running. Please shut them down first.
  解决: ps -ef | grep -v grep | grep ssh     

     kill -9 上条指令显示的相应进程号(空格分开)

 2 ssh localhost

  错误:connection closed by 127.0.0.1

  解决:  (1) mkpasswd -l -c > /etc/passwd

           (2) mkgroup -l -d > /etc/group

           (3) 再重新进入Cygwin,mkpasswd和mkgroup提示消失,再次配置ssh,并执行ssh localhost

Putting this here in case someone runs into this later. I had the same problem and reinstalling cygwin solved it... until I rebooted. Then I got the same error again. I now resolved the problem for the second time: instead of using the account name "cyg_server" that cygwin suggests to me when running ssh-host-config, I entered the name of my normal admin account on windows. Seems to be working so far.(意外收获可以不用让cygwin自己创建一个cyg_server用户了,可以直接用当前的管理员账户来运行服务)

(三)     出现类似如下:

…..

/cygdrive/d/dis/hadoop-0.20.2/bin/../conf/hadoop-env.sh: line 20: $'\r': command not found

/cygdrive/d/dis/hadoop-0.20.2/bin/../conf/hadoop-env.sh: line 30: $'\r': command not found

/cygdrive/d/dis/hadoop-0.20.2/bin/../conf/hadoop-env.sh: line 33: $'\r': command not found

/cygdrive/d/dis/hadoop-0.20.2/bin/../conf/hadoop-env.sh: line 36: $'\r': command not found

……

进入hadoop根目录下的conf目录,然后对hadoop-env.sh文件执行dos2unix,即

Dos2unix hadoop-env.sh

(四)     无法连接服务期错误。该类错误产生的原因很多,但是主要都和conf下的配置文件相关,例如ip 配置错误、运行时候没有设置临时文件夹等等,不一而足。根据提示和端口号(mapred还是hdfs)进行相应处理。

出现类似如下:

……………

12/03/13 15:42:43 INFO ipc.Client: Retrying connect to server: localhost/127.0.0.1:9000. Already tried 0 time(s).

12/03/13 15:42:45 INFO ipc.Client: Retrying connect to server:

12/03/13 15:42:49 INFO ipc.Client: Retrying connect to server: localhost/127.0.0.1:9000. Already tried 3 time(s)

……………………………………

如果是由于格式化之后u没有重qi重新启动hadoop,再连接,即在hadoop主目录下执行:

Bin/stop-all.sh

Bin/start-all.sh

(五)   Object  heap  和 Java virtual machine 相关处理

1.  Could not create the java virtual machine

/hadoop/conf/hadoop-env.sh中的

# The maximum amount of heap to use, in MB. Default is 1000.
# export HADOOP_HEAPSIZE=2000

2.        根本解决

(引用出自http://javoft.net/2011/06/hadoop-unrecognized-option-jvm-could-not-create-the-java-virtual-machine/)

hadoop/bin/hadoop中有如下一段shell:

?

1

2

3

4

5

6

CLASS='org.apache.hadoop.hdfs.server.datanode.DataNode'

if [[ $EUID -eq 0 ]]; then

HADOOP_OPTS="$HADOOP_OPTS -jvm server $HADOOP_DATANODE_OPTS"

else

HADOOP_OPTS="$HADOOP_OPTS -server $HADOOP_DATANODE_OPTS"

fi

其中的

?

1

2

if [[ $EUID -eq 0 ]]; then

HADOOP_OPTS="$HADOOP_OPTS -jvm server $HADOOP_DATANODE_OPTS"


如果 $EUID 为 0,什么意思呢?
有效用户标识号(EUID):该标识号负责标识以什么用户身份来给新创建的进程赋所有权、检查文件的存取权限和检查通过系统调用kill向进程发送软 中断信号的许可权限。
在root用户下echo $EUID,echo结果为 0
ok,在root下会有-jvm选项添加上去,上面说的Unrecognized option: -jvm难道就是这里产生的。

两个想法。一个想法是自己改了这shell代码,去掉里面的-jvm。另外一个想法是 既然这里要求 $EUID -eq 0,那别用$EUID不为0的(root用户)用户运行即可。果断试试,换上普通用户根据文档提示做。ok,成功。好奇的再试试第一个想法,其实暂时还是不太想动源码。但是这shell动动也没妨,果断去掉上面的-jvm,直接把上面的if else 结构直接去掉改为

?

1

HADOOP_OPTS="$HADOOP_OPTS -server $HADOOP_DATANODE_OPTS",

同样运行成功。

如上几个尝试最终证明问题就出现在与-jvm这个参数选项

 

(六)            javac could not find问题

 用户变量和系统变量都要配置PATH中的java/bin和jdk。

(七)            关于版本的问题

不是最难的、却可以是最关键和最耗时的。采用了最笨的方法,下了数个hadoop和eclipse不同版本进行交叉匹配解决这个问题,呵呵,得出,eclipse 要3.6(注意后面没有3.6.*)或以下版本,hadoop-0.20.2或以下,  终于解决了这个问题…

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值