在maven中新建hadoop项目说明与mapreduce.framework.name的initialize异常

参考文档
常用maven库及导入本地jar到本地maven库
常用的maven库:

http://mvnrepository.com/
http://search.maven.org/
http://repository.sonatype.org/content/groups/public/
http://people.apache.org/repo/m2-snapshot-repository/
http://people.apache.org/repo/m2-incubating-repository/

环境

win下使用myeclipse远程连接hadoop集群(cdh5.3.0)。
对应的hadoop的三个基础组件的jar包都是2.5.0(mapreduce、common、yarn)
IDE:Myeclipse10.7
需要补充的是,我所有的jar包都有在maven的本地库中,因为之前有编译过hadoop2.5.0的源码,并且maven等已经安装好了,详细请参考(window7中)maven 查看 hadoop2.5.0源码

myeclispe新建maven项目

file =>new =>other =>Maven project,在Create a simple project 前面打钩
这里写图片描述

选择next,输入groupid和artifactid
这里写图片描述
选择finish
groupid和artifactid相当于一个数据库实例与数据库的关系,一个groupid下可以有多个artifactid,一个artifactid相当于一个项目的样子
项目建好后的结构图如下
这里写图片描述
项目中的pom.xml是空的,如下
这里写图片描述
事实上一个简单的maven项目建好了,剩下的就是依赖的问题

增加hadoop的基础依赖

在前面加入dependencies,完整的代码如下,只要复制即可

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>fengming.hadoop.mvn</groupId>
  <artifactId>mvn.mr.taobao</artifactId>
  <version>0.0.1-SNAPSHOT</version>
  <build/>

  <dependencies>
    <dependency>
      <groupId>org.apache.maven.plugins</groupId>
      <artifactId>maven-resources-plugin</artifactId>
      <version>2.4.3</version>
    </dependency>
        <dependency>
            <groupId>junit</groupId>  <!-- 单元测试  建议增加-->
            <artifactId>junit</artifactId>
            <version>4.8.2</version>
            <scope>test</scope>
        </dependency>   
        <dependency><!-- hdfs开发相关 ,必要-->
            <groupId>org.apache.hadoop</groupId>
            <artifactId>hadoop-hdfs</artifactId>
            <version>2.5.0</version>
        </dependency>       
        <dependency><!-- hadoop的常用工具集 ,必要 -->
            <groupId>org.apache.hadoop</groupId>
            <artifactId>hadoop-common</artifactId>
            <version>2.5.0</version>
        </dependency>
        <dependency> <!-- mapreduce的相关 -->
            <groupId>org.apache.hadoop</groupId>  
            <artifactId>hadoop-mapreduce-client-common</artifactId>
            <version>2.5.0</version>
        </dependency>
        <!-- 有些版本的hadoop-mapreduce-client-common可能命名为hadoop-mapreduce-client-core
            出现Cannot initialize Cluster的错误原因也是因为一开始使用的是这个配置
        <dependency>
                <groupId>org.apache.hadoop</groupId>
                <artifactId>hadoop-mapreduce-client-core</artifactId>
                <version>x。x。xx</version>
        </dependency>
         -->
    <dependency>    <!-- yarn相关 -->
            <groupId>org.apache.hadoop</groupId>
            <artifactId>hadoop-yarn-common</artifactId>
            <version>2.5.0</version>
    </dependency>
  </dependencies>

</project>

在pom.xml配置以上选项之后,所有的对应包的相关依赖包也会被导入进来

错误Cannot initialize Cluster

Exception in thread “main” java.io.IOException: Cannot initialize Cluster. Please check your configuration for mapreduce.framework.name and the correspond server addresses.
at org.apache.hadoop.mapreduce.Cluster.initialize(Cluster.java:120)
这里写图片描述
错误产生的原因是在client提交作业的时候找不到对应的类,这里有朋友写了yarn提交作业的流程与源码分析,
Hadoop2.0 客户端提交作业流程
另外根据网上的一些其他信息,我确认我的pom.xml中缺少了一些mapreduce的jar包,所以在项目的pom.xml中加入了

  <dependency>
   <groupId>org.apache.hadoop</groupId>
   <artifactId>hadoop-mapreduce-client-common</artifactId>
   <version>2.5.0</version>
   </dependency>

这个错误解决方案仅供参考,请问题相关的人结合自己的实际环境进行,导致该问题的原因可能还有其他,比如需要添加的artifactid可能未必是这个,可以参考我在本文的开头的引用文章自行搜索解决的jar包将其添加到自己的pom.xml文件中。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: 如果你想在你的项目使用`org.apache.hadoop.hbase.mapreduce.TableInputFormat`类, 你需要在你的`pom.xml`文件加入如下依赖: ``` <dependency> <groupId>org.apache.hbase</groupId> <artifactId>hbase-client</artifactId> <version>${hbase.version}</version> </dependency> ``` 其`${hbase.version}`是你所使用的HBase版本。 注意: 使用`org.apache.hadoop.hbase.mapreduce.TableInputFormat`需要你的项目已经引入了Hadoop相关的依赖。 ### 回答2: 在使用org.apache.hadoop.hbase.mapreduce.TableInputFormat时,我们需要在项目的pom.xml文件添加相应的依赖,以确保编译和运行时可以正确引用该类。 具体来说,我们需要在pom.xml文件的dependencies标签内添加以下依赖: ```xml <dependencies> ... <dependency> <groupId>org.apache.hbase</groupId> <artifactId>hbase-client</artifactId> <version>[HBASE_VERSION]</version> </dependency> <dependency> <groupId>org.apache.hadoop</groupId> <artifactId>hadoop-common</artifactId> <version>[HADOOP_VERSION]</version> </dependency> <dependency> <groupId>org.apache.hadoop</groupId> <artifactId>hadoop-hdfs</artifactId> <version>[HADOOP_VERSION]</version> </dependency> <dependency> <groupId>org.apache.hadoop</groupId> <artifactId>hadoop-mapreduce-client-core</artifactId> <version>[HADOOP_VERSION]</version> </dependency> ... </dependencies> ``` 请将[HBASE_VERSION]和[HADOOP_VERSION]替换为实际的HBase和Hadoop版本号。这些依赖将确保我们可以正确使用TableInputFormat类以及其他相关的类和接口。导入这些依赖后,我们就可以在项目使用TableInputFormat类来读取和处理HBase表的数据。 ### 回答3: 在使用Hadoop的HBase分布式数据库时,我们需要导入相应的pom文件以支持HBase MapReduce任务的TableInputFormat类。 在Maven项目,我们可以通过在pom.xml文件添加以下依赖项来导入TableInputFormat所需要的相关类和资源: ```xml <dependencies> <!-- Hadoop Core --> <dependency> <groupId>org.apache.hadoop</groupId> <artifactId>hadoop-core</artifactId> <version>${hadoop.version}</version> </dependency> <!-- HBase --> <dependency> <groupId>org.apache.hbase</groupId> <artifactId>hbase</artifactId> <version>${hbase.version}</version> </dependency> <!-- HBase MapReduce --> <dependency> <groupId>org.apache.hbase</groupId> <artifactId>hbase-mapreduce</artifactId> <version>${hbase.version}</version> </dependency> </dependencies> ``` 上述pom.xml文件的`hadoop.version`和`hbase.version`是需要根据实际情况进行配置的。 这样,通过导入上述依赖项,我们便可以在代码使用`import org.apache.hadoop.hbase.mapreduce.TableInputFormat;`语句进行TableInputFormat类的导入。TableInputFormat类是HBase用于将HBase表作为输入的MapReduce输入格式,它提供了与HBase表之间的交互操作。 总之,在使用HBase和Hadoop进行MapReduce任务时,我们需要将相应的依赖项添加到项目的pom.xml文件,以导入所需的TableInputFormat类。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值