所以我正在尝试按照本说明中的步骤在MAC OS X Leopard上安装hadoop:Running Hadoop on a OS X Single Node Cluster。
我到达了第4步:格式化并运行Hadoop,我输入了以下内容:
hadoop-*/bin/hadoop namenode -format
这产生了以下不愉快的输出:
Macbook009:~ Hadoop$ hadoop-*/bin/hadoop namenode -format Exception in thread "main" java.lang.UnsupportedClassVersionError: Bad version number in .class file at java.lang.ClassLoader.defineClass1(Native Method) at java.lang.ClassLoader.defineClass(ClassLoader.java:676) at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:124) at java.net.URLClassLoader.defineClass(URLClassLoader.java:260) at java.net.URLClassLoader.access$100(URLClassLoader.java:56) at java.net.URLClassLoader$1.run(URLClassLoader.java:195) at java.security.AccessController.doPrivileged(Native Method) at java.net.URLClassLoader.findClass(URLClassLoader.java:188) at java.lang.ClassLoader.loadClass(ClassLoader.java:317) at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:280) at java.lang.ClassLoader.loadClass(ClassLoader.java:252) at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:375) Exception in thread "main" java.lang.UnsupportedClassVersionError: Bad version number in .class file at java.lang.ClassLoader.defineClass1(Native Method) at java.lang.ClassLoader.defineClass(ClassLoader.java:676) at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:124) at java.net.URLClassLoader.defineClass(URLClassLoader.java:260) at java.net.URLClassLoader.access$100(URLClassLoader.java:56) at java.net.URLClassLoader$1.run(URLClassLoader.java:195) at java.security.AccessController.doPrivileged(Native Method) at java.net.URLClassLoader.findClass(URLClassLoader.java:188) at java.lang.ClassLoader.loadClass(ClassLoader.java:317) at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:280) at java.lang.ClassLoader.loadClass(ClassLoader.java:252) at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:375)
我做了一些谷歌搜索,并了解到JAVA_HOME
可能设置不正确。我创建了一个.bash_profile文件,如下所示:
export JAVA_HOME=/system/Library/Frameworks/JavaVM.framework/Versions/1.6/Home
export HADOOP_HOME=~/Users/Hadoop/hadoop-0.20.203.0
export PATH=$HADOOP_HOME/bin:$PATH
不行。同样的怪异错误。 我做错了什么?
答案 0 :(得分:2)
我怀疑实际运行Hadoop的JVM不是预期的,而是较旧的(Java 5)。通过运行ps
(或任何等效的Mac)并检查命令行来验证这一点。
尝试将JAVA_HOME
中的$HADOOP_HOME/conf/hadoop-env.sh
设置为与.bash_profile
中相同的路径。
答案 1 :(得分:1)
这是因为您运行的jre比编译类文件的jre更旧。例如,使用1.5 jre运行1.6编译的java。如果该类仅为1.6编译,则不适用于1.5。
做一个
java -version
看看你有哪个jre。很可能你有一个旧的,需要升级它。
答案 2 :(得分:1)
尝试输入jps并查看实际运行的节点数。 应该有6个。你不应该有问题。
答案 3 :(得分:1)
设置JAVA_HOME可能仍然存在问题,因为它可能与网络上的示例不同。在终端中使用此命令查找JAVA_HOME目录/ usr / libexec / java_home
答案 4 :(得分:0)
以下步骤为我无缝工作:
http://ragrawal.wordpress.com/2012/04/28/installing-hadoop-on-mac-osx-lion
对于wordcount示例,您需要将文件复制到hdfs,您可以在此处找到命令:(这是我在执行上述页面后遇到的唯一一步)。
答案 5 :(得分:0)
然而,对于较新版本的OS X,如10.9设置上述PATH不起作用。
找到一种方法,可以在文件/ etc / paths中为MAC添加默认PATH环境。
在SUDO模式下使用终端打开此文件。
$ sudo nano / etc / paths(在提示时输入密码)。
以下列格式附加路径。
/users/hadoop/hadoop-1.2.1/bin
/users/hadoop/hadoop-1.2.1/sbin
保存文件并重新启动计算机。下次不需要输入整个命令来从脚本运行Hadoop脚本命令。