我是靠谱客的博主 魔幻老虎,最近开发中收集的这篇文章主要介绍hadoop cdh版maven依赖解决方案,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

使用cloudera hadoop开发hadoop程序,官方文档上有两种方法。第一种即把相应jar包拷贝到工程目录中去,另一种即使用maven管理依赖jar包。
直接拷贝

如果直接在构建节点上开发程序的话直接指向jar包目录即可。
默认目录
hadoop:/opt/cloudera/parcels/CDH/lib
CDH文件是指向${CDH.Version}的一个链接
lib下可用的包包含如下:
avro hadoop-httpfs impala sentry
bigtop-tomcat hadoop-kms impala-shell solr
bigtop-utils hadoop-mapreduce kite spark
crunch hadoop-yarn llama sqoop
debug hbase mahout sqoop2
flume-ng hbase-solr oozie whirr
hadoop hive parquet zookeeper
hadoop-0.20-mapreduce hive-hcatalog pig zookeeper-native
hadoop-hdfs hue search
maven 依赖

maven的默认仓库没有CDH包,所以在maven repository 上也搜不到,cloudera自己提供了个仓库供引用。当然你也可以直接输入地址下载jar包,例如https://repository.cloudera.com/artifactory/cloudera-repos/org/apache/hadoop/hadoop-common/2.6.0-cdh5.7.0/hadoop-common-2.6.0-cdh5.7.0.jar,你也可以根据仓库表直接下载或者在pom中依赖相应jar包。
1. 构建maven结构
mvn archetype:generate
-DarchetypeGroupId=org.apache.maven.archetypes
-DarchetypeArtifactId=maven-archetype-quickstart
-DgroupId=<your-group-id>
-DartifactId=<your-project-name>
group-id 和 project-name 分别是你的组织id和项目名称
2. 使用archetype:generate生成的项目文件中有个pom.xml文件
* pom文件编写 *
默认仓库找不到对应jar包,因此添加仓库:

<repositories>
      <repository>
        <id>cloudera-releases</id>
        <url>https://repository.cloudera.com/artifactory/cloudera-repos</url>
        <releases>
          <enabled>true</enabled>
        </releases>
        <snapshots>
         <enabled>false</enabled>
        </snapshots>
      </repository>
    </repositories>

允许发布版本,禁止快照版
然后添加版本属性,方便后面依赖引用

<properties>
     <cdh.version>2.6.0-cdh5.7.0</cdh.version>
  </properties>

 

添加依赖包

    <dependency>
      <groupId>org.apache.hadoop</groupId>
      <artifactId>hadoop-client</artifactId>
      <version>${cdh.version}</version>
      <scope>provided</scope>
    </dependency>

scope 指定打包项目采用provided方式,即不把依赖包打进去。因为最后生成的程序jar包都是要在linux节点运行的,防止与节点自带的classpaths包冲突。
那如果项目中的一下jar包在hadoop运行环境中找不到,那么就需要用一个插件

<plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-shade-plugin</artifactId>
        <version>1.7.1</version>
        <configuration>  
          <transformers>  
         <transformer implementation = "org.apache.maven.plugins.shade.resource.MainifestResourceTransformer">      
          <mainClass>${MainClass}</mainClass>  
         </transformer>  
      </transformers>  
        </configuration>
        <executions>
          <execution>
            <phase>package</phase>
            <goals>
              <goal>shade</goal>
            </goals>
          </execution>
        </executions>
      </plugin>
    </plugins>

 

它可以让用户配置Main-Class的值,然后在打包的时候将值填入/META-INF/MANIFEST.MF文件。关于项目的依赖,它很聪明地将依赖JAR文件全部解压后,再将得到的.class文件连同当前项目的.class文件一起合并到最终的CLI包中,这样,在执行CLI JAR文件的时候,所有需要的类就都在Classpath中了,运行java -jar 命令也不需要添加依赖包,这个插件的说明见这里.

下面一个插件方便生成可在eclipse管理的工具,可以再eclipse中直接导入用maven生成的项目:

<plugin>
      <groupId>org.apache.maven.plugins </groupId>
      <artifactId>maven-eclipse-plugin</artifactId>
      <version>2.9</version>
      <configuration>
        <projectNameTemplate>
          ${project.artifactId}
        </projectNameTemplate>
        <buildOutputDirectory>
          eclipse-classes
        </buildOutputDirectory>
        <downloadSources>true</downloadSources>
        <downloadJavadocs>false</downloadJavadocs>
      </configuration>
    </plugin>

执行:

mvn -Declipse.workspace=<eclipse-workspace-path>   eclipse:configure-workspace eclipse:eclipse

    1

当然如果eclipse整合了maven的话,可以直接不需要这个插件了,直接新建maven简单项目,然后导入pom.xml文件即可。
pom.xml
Reference

    http://www.cloudera.com/documentation/enterprise/release-notes/topics/cdh_vd_cdh5_maven_repo.html
    http://www.cloudera.com/documentation/enterprise/releasenotes/topics/cdh_vd_cdh5_maven_repo_57x.html#concept_s1z_m5f_x5
    http://maven.apache.org/plugins/index.html
    http://blog.cloudera.com/blog/2012/08/developing-cdh-applications-with-maven-and-eclipse/
---------------------
作者:楚汐
来源:CSDN
原文:https://blog.csdn.net/trucyluce/article/details/51383196
版权声明:本文为博主原创文章,转载请附上博文链接!

最后

以上就是魔幻老虎为你收集整理的hadoop cdh版maven依赖解决方案的全部内容,希望文章能够帮你解决hadoop cdh版maven依赖解决方案所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(50)

评论列表共有 0 条评论

立即
投稿
返回
顶部