2013-05-15 32 views
3

我下面这个教程: http://www.cloudera.com/content/cloudera-content/cloudera-docs/HadoopTutorial/CDH4/Hadoop-Tutorial/ht_topic_5_2.htmlCloudera的CDH4字计数的Hadoop教程 - 发出

它说以下内容:

的javac -cp类路径-d wordcount_classes WordCount.java

,其中类路径:

CDH4 - /usr/lib/hadoop/*:/usr/lib/hadoop/client-0.20/* 
CDH3 - /usr/lib/hadoop-0.20/hadoop-0.20.2-cdh3u4-core.jar 

我已经下载了“cloudera-quickstart-demo-vm-4.2.0-vmware”。 以用户cloudera身份运行。

[[email protected] wordcount]$ javac -cp /usr/lib/hadoop/*:/usr/lib/hadoop/client-0.20/* -d wordcount_classes WordCount.java 
incorrect classpath: /usr/lib/hadoop/* 
incorrect classpath: /usr/lib/hadoop/client-0.20/* 
---------- 
1. ERROR in WordCount.java (at line 8) 
     import org.apache.hadoop.fs.Path; 
       ^^^^^^^^^^ 

检查cp文件夹时:。

[[email protected] wordcount]$ ls -l /usr/lib/hadoop 
total 3500 
drwxr-xr-x. 2 root root 4096 Apr 22 14:37 bin 
drwxr-xr-x. 2 root root 4096 Apr 22 14:33 client 
drwxr-xr-x. 2 root root 4096 Apr 22 14:33 client-0.20 
drwxr-xr-x. 2 root root 4096 Apr 22 14:36 cloudera 
drwxr-xr-x. 2 root root 4096 Apr 22 14:30 etc 
-rw-r--r--. 1 root root 16536 Feb 15 14:24 hadoop-annotations-2.0.0-cdh4.2.0.jar 
lrwxrwxrwx. 1 root root  37 Apr 22 14:30 hadoop-annotations.jar -> hadoop-annotations-2.0.0-cdh4.2.0.jar 
-rw-r--r--. 1 root root 46855 Feb 15 14:24 hadoop-auth-2.0.0-cdh4.2.0.jar 
lrwxrwxrwx. 1 root root  30 Apr 22 14:30 hadoop-auth.jar -> hadoop-auth-2.0.0-cdh4.2.0.jar 
-rw-r--r--. 1 root root 2266171 Feb 15 14:24 hadoop-common-2.0.0-cdh4.2.0.jar 
-rw-r--r--. 1 root root 1212163 Feb 15 14:24 hadoop-common-2.0.0-cdh4.2.0-tests.jar 
lrwxrwxrwx. 1 root root  32 Apr 22 14:30 hadoop-common.jar -> hadoop-common-2.0.0-cdh4.2.0.jar 
drwxr-xr-x. 3 root root 4096 Apr 22 14:36 lib 
drwxr-xr-x. 2 root root 4096 Apr 22 14:33 libexec 
drwxr-xr-x. 2 root root 4096 Apr 22 14:31 sbin 

我在做什么错? 这是直接来自安装了CDH4的Cloudera Quickstart VM。 继“Hadoop教程”之后。 它甚至说

**Prerequisites** 

Ensure that CDH is installed, configured, and running. The easiest way to get going quickly is to use a CDH4 QuickStart VM 

这也正是从那里我正在从本教程 - 在CDH4快速启动虚拟机。

我在做什么错?

*更新 版本信息;

[[email protected] cloudera]$ cat cdh_version.properties 

# Autogenerated build properties 
version=2.0.0-cdh4.2.0 
git.hash=8bce4bd28a464e0a92950c50ba01a9deb1d85686 
cloudera.hash=8bce4bd28a464e0a92950c50ba01a9deb1d85686 
cloudera.base-branch=cdh4-base-2.0.0 
cloudera.build-branch=cdh4-2.0.0_4.2.0 
cloudera.pkg.version=2.0.0+922 
cloudera.pkg.release=1.cdh4.2.0.p0.12 
cloudera.cdh.release=cdh4.2.0 
cloudera.build.time=2013.02.15-18:39:29GMT 

cloudera.pkg.name=hadoop 

CLASSPATH ENV:

[[email protected] bin]$ echo $CLASSPATH 
:/usr/lib/hadoop/*:/usr/lib/hadoop/client-0.20/* 

编辑! 所以我想我明白了。 这是一个可能与Cloudera CD4 VM快速启动虚拟机相关的新问题: from:This Post昨天是 另一个人遇到完全相同的问题。 看来,javac程序在导出路径上不能正确接受通配符。 我必须做到以下几点:

export CLASSPATH=/usr/lib/hadoop/client-0.20/\*:/usr/lib/hadoop/\* 

然后 javac的-d [未经-cp覆盖]

javac -d wordcount_classes/ WordCount.java 

只有警告将会出现。

我想知道Cloudera是否需要修复它们的快速启动虚拟机。

+1

确保CDH4库,在那里你觉得他们应该是,这个错误只是说,它不能找到的Hadoop库 – greedybuddha

+0

我怎么知道那里的图书馆?我做了一个'hadoop classpath'命令,甚至尝试了一切。没有。 –

+0

尝试做一个'ls/usr/lib/hadoop /'里面有什么? – greedybuddha

回答

2

如果您希望javac能够找到它们,您需要在/ usr/lib/hadoop中包含这些目录的类路径变量集。您可以如下设置此env变量:

$: export CLASSPATH=$CLASSPATH:/usr/lib/hadoop/*:/usr/lib/hadoop/client-0.20/* 

javac现在可以找到这些库。如果您对类路径变量有任何额外的抱怨,您可以使用冒号(:)作为分隔符将它们追加到上面的行中

您可以将其包含在bash脚本中,但最好的做法是设置正确的env在运行时变量,然后你得到你想要的。在这种情况下,它可能是字数或CDH4环境设置它,但最好是自己设置它。

+0

谢谢。获取相同的错误..问题是我不知道库的其他地方。我正在按照教程100%。 –

+0

编辑我原来的帖子 - 问题似乎是固定的 –

1

我花了一些时间寻找对同一问题的回应(也使用VM与CDH4),所以我会留下我的解决方案,希望它可以帮助其他人。

不幸的是,上述解决方案都不适用于我的情况。

但是,我能够通过关闭终端并打开一个新终端来成功编译示例。我的问题是之前已经用教程中提到的'sudo su cloudera'切换到'cloudera'用户。

参考:

http://community.cloudera.com/t5/Apache-Hadoop-Concepts-and/Classpath-Problem-on-WordCount-Tutorial-QuickStart-VM-4-4-0-1/td-p/3613