git 包 org.apache.hadoop.conf 不存在
声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow
原文地址: http://stackoverflow.com/questions/33949589/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me):
StackOverFlow
Package org.apache.hadoop.conf does not exist
提问by g_hat
I am new to compiling Hadoop code and know this question has been answered multiple times. But, I still find it hard figuring out the correct classpath to make the WordCount.java code to compile. I am running a CentOS version 7.
我是编译 Hadoop 代码的新手,并且知道这个问题已被多次回答。但是,我仍然发现很难找出正确的类路径来编译 WordCount.java 代码。我正在运行 CentOS 版本 7。
My Hadoop Version is:
我的 Hadoop 版本是:
Hadoop 2.7.1 Subversion
https://git-wip-us.apache.org/repos/asf/hadoop.git -r 15ecc87ccf4a0228f35af08fc56de536e6ce657a
Compiled by jenkins on 2015-06-29T06:04Z
Compiled with protoc 2.5.0
From source with checksum fc0a1a23fc1868e4d5ee7fa2b28a58a
This command was run using /usr/local/hadoop/share/hadoop/common/hadoop-common-2.7.1.jar
When I did echo $PATH, I got the following:
当我 echo $PATH 时,我得到以下信息:
/usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin:/bin:/sbin:/usr/lib/jvm/jre-1.7.0-openjdk/:/usr/local/hadoop/bin:/usr/local/hadoop/sbin:/home/hduser/.local/bin:/home/hduser/bin:/usr/lib/jvm/jre-1.7.0-openjdk/:/usr/local/hadoop/bin:/usr/local/hadoop/sbin
/usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin:/bin:/sbin:/usr/lib/jvm/jre-1.7.0-openjdk/:/usr/local /hadoop/bin:/usr/local/hadoop/sbin:/home/hduser/.local/bin:/home/hduser/bin:/usr/lib/jvm/jre-1.7.0-openjdk/:/usr/本地/hadoop/bin:/usr/local/hadoop/sbin
The Java Version I am running is:
我正在运行的 Java 版本是:
java version "1.7.0_91"
OpenJDK Runtime Environment (rhel-2.6.2.1.el7_1-x86_64 u91-b00)
OpenJDK 64-Bit Server VM (build 24.91-b01, mixed mode)
I did set all the environmental variables for Java and Hadoop in the vi .bashrc as shown below and jps passes. Java also compiles with other codes, but I think I am getting the classpath for Hadoop wrong.
我确实在 vi .bashrc 中为 Java 和 Hadoop 设置了所有环境变量,如下所示,jps 通过。Java 也可以与其他代码一起编译,但我认为 Hadoop 的类路径是错误的。
Java Variables
Java 变量
export JAVA_HOME=/usr/lib/jvm/jre-1.7.0-openjdk/
export PATH=$PATH:$JAVA_HOME
Hadoop variables
Hadoop 变量
export HADOOP_INSTALL=/usr/local/hadoop
export PATH=$PATH:$HADOOP_INSTALL/bin
export PATH=$PATH:$HADOOP_INSTALL/sbin
export HADOOP_MAPRED_HOME=$HADOOP_INSTALL
export HADOOP_COMMON_HOME=$HADOOP_INSTALL
export HADOOP_HDFS_HOME=$HADOOP_INSTALL
export YARN_HOME=$HADOOP_INSTALL
export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_INSTALL/lib/native
I get these errors when i try to compile the WordCount.java in the working directory:
当我尝试在工作目录中编译 WordCount.java 时出现这些错误:
WordCount.java:5: error: package org.apache.hadoop.conf does not exist
import org.apache.hadoop.conf.*;
^
WordCount.java:6: error: package org.apache.hadoop.fs does not exist
import org.apache.hadoop.fs.*;
^
WordCount.java:7: error: package org.apache.hadoop.conf does not exist
import org.apache.hadoop.conf.*;
^
WordCount.java:8: error: package org.apache.hadoop.io does not exist
import org.apache.hadoop.io.*;
^
WordCount.java:9: error: package org.apache.hadoop.mapreduce does not exist
import org.apache.hadoop.mapreduce.*;
^
WordCount.java:10: error: package org.apache.hadoop.mapreduce.lib.input does not exist
import org.apache.hadoop.mapreduce.lib.input.*;
^
WordCount.java:11: error: package org.apache.hadoop.mapreduce.lib.output does not exist
import org.apache.hadoop.mapreduce.lib.output.*;
^
WordCount.java:12: error: package org.apache.hadoop.util does not exist
import org.apache.hadoop.util.*;
^
WordCount.java:14: error: cannot find symbol
public class WordCount extends Configured implements Tool {
^
symbol: class Configured
WordCount.java:14: error: cannot find symbol
public class WordCount extends Configured implements Tool {
^
symbol: class Tool
WordCount.java:47: error: cannot find symbol
public static class Map extends Mapper<LongWritable, Text, Text, IntWritable> {
^
symbol: class Mapper
location: class WordCount
WordCount.java:47: error: cannot find symbol
public static class Map extends Mapper<LongWritable, Text, Text, IntWritable> {
^
symbol: class LongWritable
location: class WordCount
WordCount.java:47: error: cannot find symbol
public static class Map extends Mapper<LongWritable, Text, Text, IntWritable> {
^
symbol: class Text
location: class WordCount
WordCount.java:47: error: cannot find symbol
public static class Map extends Mapper<LongWritable, Text, Text, IntWritable> {
^
symbol: class Text
location: class WordCount
WordCount.java:47: error: cannot find symbol
public static class Map extends Mapper<LongWritable, Text, Text, IntWritable> {
^
symbol: class IntWritable
location: class WordCount
WordCount.java:48: error: cannot find symbol
private final static IntWritable one = new IntWritable(1);
^
symbol: class IntWritable
location: class Map
WordCount.java:49: error: cannot find symbol
private Text word = new Text();
^
symbol: class Text
location: class Map
WordCount.java:52: error: cannot find symbol
public void map(LongWritable key, Text value,
^
symbol: class LongWritable
location: class Map
WordCount.java:52: error: cannot find symbol
public void map(LongWritable key, Text value,
^
symbol: class Text
location: class Map
WordCount.java:53: error: package Mapper does not exist
Mapper.Context context) throws IOException, InterruptedException {
^
WordCount.java:63: error: cannot find symbol
public static class Reduce extends Reducer<Text, IntWritable, Text, IntWritable> {
^
symbol: class Reducer
location: class WordCount
WordCount.java:63: error: cannot find symbol
public static class Reduce extends Reducer<Text, IntWritable, Text, IntWritable> {
^
symbol: class Text
location: class WordCount
WordCount.java:63: error: cannot find symbol
public static class Reduce extends Reducer<Text, IntWritable, Text, IntWritable> {
^
symbol: class IntWritable
location: class WordCount
WordCount.java:63: error: cannot find symbol
public static class Reduce extends Reducer<Text, IntWritable, Text, IntWritable> {
^
symbol: class Text
location: class WordCount
WordCount.java:63: error: cannot find symbol
public static class Reduce extends Reducer<Text, IntWritable, Text, IntWritable> {
^
symbol: class IntWritable
location: class WordCount
WordCount.java:66: error: cannot find symbol
public void reduce(Text key, Iterable<IntWritable> values, Context context) throws IOException, InterruptedException {
^
symbol: class Text
location: class Reduce
WordCount.java:66: error: cannot find symbol
public void reduce(Text key, Iterable<IntWritable> values, Context context) throws IOException, InterruptedException {
^
symbol: class IntWritable
location: class Reduce
WordCount.java:66: error: cannot find symbol
public void reduce(Text key, Iterable<IntWritable> values, Context context) throws IOException, InterruptedException {
^
symbol: class Context
location: class Reduce
WordCount.java:17: error: cannot find symbol
int res = ToolRunner.run(new WordCount(), args);
^
symbol: variable ToolRunner
location: class WordCount
WordCount.java:22: error: cannot find symbol
Path inputPath = new Path(args[0]);
^
symbol: class Path
location: class WordCount
WordCount.java:22: error: cannot find symbol
Path inputPath = new Path(args[0]);
^
symbol: class Path
location: class WordCount
WordCount.java:23: error: cannot find symbol
Path outputPath = new Path(args[1]);
^
symbol: class Path
location: class WordCount
WordCount.java:23: error: cannot find symbol
Path outputPath = new Path(args[1]);
^
symbol: class Path
location: class WordCount
WordCount.java:25: error: cannot find symbol
Configuration conf = getConf();
^
symbol: class Configuration
location: class WordCount
WordCount.java:25: error: cannot find symbol
Configuration conf = getConf();
^
symbol: method getConf()
location: class WordCount
WordCount.java:26: error: cannot find symbol
Job job = new Job(conf, this.getClass().toString());
^
symbol: class Job
location: class WordCount
WordCount.java:26: error: cannot find symbol
Job job = new Job(conf, this.getClass().toString());
^
symbol: class Job
location: class WordCount
WordCount.java:26: error: cannot find symbol
Job job = new Job(conf, this.getClass().toString());
^
symbol: method getClass()
WordCount.java:28: error: cannot find symbol
FileInputFormat.setInputPaths(job, inputPath);
^
symbol: variable FileInputFormat
location: class WordCount
WordCount.java:29: error: cannot find symbol
FileOutputFormat.setOutputPath(job, outputPath);
^
symbol: variable FileOutputFormat
location: class WordCount
WordCount.java:33: error: cannot find symbol
job.setInputFormatClass(TextInputFormat.class);
^
symbol: class TextInputFormat
location: class WordCount
WordCount.java:34: error: cannot find symbol
job.setOutputFormatClass(TextOutputFormat.class);
^
symbol: class TextOutputFormat
location: class WordCount
WordCount.java:35: error: cannot find symbol
job.setMapOutputKeyClass(Text.class);
^
symbol: class Text
location: class WordCount
WordCount.java:36: error: cannot find symbol
job.setMapOutputValueClass(IntWritable.class);
^
symbol: class IntWritable
location: class WordCount
WordCount.java:37: error: cannot find symbol
job.setOutputKeyClass(Text.class);
^
symbol: class Text
location: class WordCount
WordCount.java:38: error: cannot find symbol
job.setOutputValueClass(IntWritable.class);
^
symbol: class IntWritable
location: class WordCount
WordCount.java:48: error: cannot find symbol
private final static IntWritable one = new IntWritable(1);
^
symbol: class IntWritable
location: class Map
WordCount.java:49: error: cannot find symbol
private Text word = new Text();
^
symbol: class Text
location: class Map
WordCount.java:51: error: method does not override or implement a method from a supertype
@Override
^
WordCount.java:68: error: cannot find symbol
for (IntWritable value : values) {
^
symbol: class IntWritable
location: class Reduce
WordCount.java:72: error: cannot find symbol
context.write(key, new IntWritable(sum));
^
symbol: class IntWritable
location: class Reduce
WordCount.java:65: error: method does not override or implement a method from a supertype
@Override
^
52 errors
Can someone point me in the right direction? Thank you.
有人可以指出我正确的方向吗?谢谢你。
回答by Saurabh
You can run it like following:
你可以像下面这样运行它:
javac WordCount.java -cp $(hadoop classpath)
If you get following error for this:
如果您为此收到以下错误:
zsh: command not found: hadoop
javac: -cp requires an argument
zsh:找不到命令:hadoop
javac: -cp 需要一个参数
You can try to find exact location of hadoop
, as following worked for me, as I had installed in Mac using brew
(It will be different in Linux):
您可以尝试找到 的确切位置hadoop
,如下对我有用,因为我在 Mac 中使用安装brew
(在 Linux 中会有所不同):
javac WordCount.java -cp $(/usr/local/Cellar/hadoop/2.8.0/bin/hadoop classpath)
The hadoop classpath provides the compiler with all the paths it needs to compile correctly and you should see a resulting WordCount.class
appear in the directory.
hadoop 类路径为编译器提供了正确编译所需的所有路径,您应该WordCount.class
会在目录中看到结果。
回答by Manjunath Ballur
I too have Hadoop 2.7.1 and I am able to compile WordCount.
我也有 Hadoop 2.7.1,我可以编译 WordCount。
All your missing packages are from hadoop-common
and hadoop-core
jars.
所有丢失的包都来自hadoop-common
和hadoop-core
jars。
You need to have following Maven dependencies included in your pom.xml (I just have following dependencies and it compiles for me):
您需要在 pom.xml 中包含以下 Maven 依赖项(我只有以下依赖项并且它为我编译):
<dependencies>
<dependency>
<groupId>org.apache.hadoop</groupId>
<artifactId>hadoop-hdfs</artifactId>
<version>2.7.1</version>
</dependency>
<dependency>
<groupId>org.apache.hadoop</groupId>
<artifactId>hadoop-common</artifactId>
<version>2.7.1</version>
</dependency>
<dependency>
<groupId>org.apache.hadoop</groupId>
<artifactId>hadoop-core</artifactId>
<version>1.2.1</version>
</dependency>
</dependencies>