接着上一篇文章继续,当我终于解决了namenode -format的问题之后,本以为可以顺利的启动Hadoop了,但是却继而遇到了另外一个问题。
在执行bin/start-all.sh命令执行过程中,报告一下错误:
MyHostName: Unrecognized option: -jvm MyHostName: 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继而在网上找到其他的解决方案就继续尝试,在bin/hadoop 脚本中有以下一段代码:
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
其中的
if [[ $EUID -eq 0 ]]; then
HADOOP_OPTS="$HADOOP_OPTS -jvm server $HADOOP_DATANODE_OPTS"
可以在命令行中输入echo $EUID 可以看到其为0, 因为我是在root用户下跑的该程序,所以用户标识码EUID为0,
所以我就把这段代码的if else语句给去掉了,就只剩下,else语句中的那句话:
1
HADOOP_OPTS="$HADOOP_OPTS -server $HADOOP_DATANODE_OPTS",
然后再运行start-all.sh发现运行成功了
执行jps可以得到namenode datanode tasktrack jobtrack等进程信息。
然后根据官网上的命令执行了mapreduce操作,至此伪分布式的hadoop程序就跑起来了。
至此结束了一天的工作,甚是开心,java的东西就是需要耐心的配置,所以这里给出记录以备后续之用。