草庐IT

java - 包 org.apache.hadoop.conf 不存在

coder 2023-06-19 原文

我是编译 Hadoop 代码的新手,并且知道这个问题已被多次回答。但是,我仍然发现很难找出正确的类路径来编译 WordCount.java 代码。我正在运行 CentOS 版本 7。

我的 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

当我回显 $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

我运行的 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)

我确实在 vi .bashrc 中设置了 Java 和 Hadoop 的所有环境变量,如下所示,并且 jps 通过了。 Java 也可以与其他代码一起编译,但我认为我弄错了 Hadoop 的类路径。

Java 变量

export JAVA_HOME=/usr/lib/jvm/jre-1.7.0-openjdk/
export PATH=$PATH:$JAVA_HOME

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

当我尝试在工作目录中编译 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

有人能指出我正确的方向吗?谢谢。

最佳答案

你可以像下面这样运行它:

javac WordCount.java -cp $(hadoop classpath)

如果您为此遇到以下错误:

zsh: command not found: hadoop

javac: -cp requires an argument

您可以尝试找到 hadoop 的确切位置,如下对我有用,因为我使用 brew 在 Mac 中安装(在 Linux 中会有所不同):

javac WordCount.java -cp $(/usr/local/Cellar/hadoop/2.8.0/bin/hadoop classpath)

hadoop 类路径为编译器提供了正确编译所需的所有路径,您应该会在目录中看到生成的 WordCount.class

关于java - 包 org.apache.hadoop.conf 不存在,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33949589/

有关java - 包 org.apache.hadoop.conf 不存在的更多相关文章

  1. ruby - 解析 RDFa、微数据等的最佳方式是什么,使用统一的模式/词汇(例如 schema.org)存储和显示信息 - 2

    我主要使用Ruby来执行此操作,但到目前为止我的攻击计划如下:使用gemsrdf、rdf-rdfa和rdf-microdata或mida来解析给定任何URI的数据。我认为最好映射到像schema.org这样的统一模式,例如使用这个yaml文件,它试图描述数据词汇表和opengraph到schema.org之间的转换:#SchemaXtoschema.orgconversion#data-vocabularyDV:name:namestreet-address:streetAddressregion:addressRegionlocality:addressLocalityphoto:i

  2. java - 等价于 Java 中的 Ruby Hash - 2

    我真的很习惯使用Ruby编写以下代码:my_hash={}my_hash['test']=1Java中对应的数据结构是什么? 最佳答案 HashMapmap=newHashMap();map.put("test",1);我假设? 关于java-等价于Java中的RubyHash,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/22737685/

  3. java - 从 JRuby 调用 Java 类的问题 - 2

    我正在尝试使用boilerpipe来自JRuby。我看过guide从JRuby调用Java,并成功地将它与另一个Java包一起使用,但无法弄清楚为什么同样的东西不能用于boilerpipe。我正在尝试基本上从JRuby中执行与此Java等效的操作:URLurl=newURL("http://www.example.com/some-location/index.html");Stringtext=ArticleExtractor.INSTANCE.getText(url);在JRuby中试过这个:require'java'url=java.net.URL.new("http://www

  4. java - 我的模型类或其他类中应该有逻辑吗 - 2

    我只想对我一直在思考的这个问题有其他意见,例如我有classuser_controller和classuserclassUserattr_accessor:name,:usernameendclassUserController//dosomethingaboutanythingaboutusersend问题是我的User类中是否应该有逻辑user=User.newuser.do_something(user1)oritshouldbeuser_controller=UserController.newuser_controller.do_something(user1,user2)我

  5. ruby-on-rails - rspec - 如何检查方法是否存在? - 2

    我的模型有defself.empty_building//stuffend我怎样才能对这个现有的进行rspec?,已经尝试过:describe"empty_building"dosubject{Building.new}it{shouldrespond_to:empty_building}endbutgetting:Failure/Error:it{shouldrespond_to:empty_building}expected#torespondto:empty_building 最佳答案 你有一个类方法self.empty_bu

  6. java - 什么相当于 ruby​​ 的 rack 或 python 的 Java wsgi? - 2

    什么是ruby​​的rack或python的Java的wsgi?还有一个路由库。 最佳答案 来自Python标准PEP333:Bycontrast,althoughJavahasjustasmanywebapplicationframeworksavailable,Java's"servlet"APImakesitpossibleforapplicationswrittenwithanyJavawebapplicationframeworktoruninanywebserverthatsupportstheservletAPI.ht

  7. 叮咚买菜基于 Apache Doris 统一 OLAP 引擎的应用实践 - 2

    导读:随着叮咚买菜业务的发展,不同的业务场景对数据分析提出了不同的需求,他们希望引入一款实时OLAP数据库,构建一个灵活的多维实时查询和分析的平台,统一数据的接入和查询方案,解决各业务线对数据高效实时查询和精细化运营的需求。经过调研选型,最终引入ApacheDoris作为最终的OLAP分析引擎,Doris作为核心的OLAP引擎支持复杂地分析操作、提供多维的数据视图,在叮咚买菜数十个业务场景中广泛应用。作者|叮咚买菜资深数据工程师韩青叮咚买菜创立于2017年5月,是一家专注美好食物的创业公司。叮咚买菜专注吃的事业,为满足更多人“想吃什么”而努力,通过美好食材的供应、美好滋味的开发以及美食品牌的孵

  8. Observability:从零开始创建 Java 微服务并监控它 (二) - 2

    这篇文章是继上一篇文章“Observability:从零开始创建Java微服务并监控它(一)”的续篇。在上一篇文章中,我们讲述了如何创建一个Javaweb应用,并使用Filebeat来收集应用所生成的日志。在今天的文章中,我来详述如何收集应用的指标,使用APM来监控应用并监督web服务的在线情况。源码可以在地址 https://github.com/liu-xiao-guo/java_observability 进行下载。摄入指标指标被视为可以随时更改的时间点值。当前请求的数量可以改变任何毫秒。你可能有1000个请求的峰值,然后一切都回到一个请求。这也意味着这些指标可能不准确,你还想提取最小/

  9. 【Java 面试合集】HashMap中为什么引入红黑树,而不是AVL树呢 - 2

    HashMap中为什么引入红黑树,而不是AVL树呢1.概述开始学习这个知识点之前我们需要知道,在JDK1.8以及之前,针对HashMap有什么不同。JDK1.7的时候,HashMap的底层实现是数组+链表JDK1.8的时候,HashMap的底层实现是数组+链表+红黑树我们要思考一个问题,为什么要从链表转为红黑树呢。首先先让我们了解下链表有什么不好???2.链表上述的截图其实就是链表的结构,我们来看下链表的增删改查的时间复杂度增:因为链表不是线性结构,所以每次添加的时候,只需要移动一个节点,所以可以理解为复杂度是N(1)删:算法时间复杂度跟增保持一致查:既然是非线性结构,所以查询某一个节点的时候

  10. 【Java入门】使用Java实现文件夹的遍历 - 2

    遍历文件夹我们通常是使用递归进行操作,这种方式比较简单,也比较容易理解。本文为大家介绍另一种不使用递归的方式,由于没有使用递归,只用到了循环和集合,所以效率更高一些!一、使用递归遍历文件夹整体思路1、使用File封装初始目录,2、打印这个目录3、获取这个目录下所有的子文件和子目录的数组。4、遍历这个数组,取出每个File对象4-1、如果File是否是一个文件,打印4-2、否则就是一个目录,递归调用代码实现publicclassSearchFile{publicstaticvoidmain(String[]args){//初始目录Filedir=newFile("d:/Dev");Datebeg

随机推荐