hadoop示例中的WordCount程序,很多教程上都是推荐以下二种运行方式:

1.将生成的jar包,复制到hadoop集群中的节点,然后运行

$HADOOP_HOME/bin/hadoop xxx.jar xxx.WordCount /input/xxx.txt /output

2.或者直接在IDE环境中调试(参见eclipse/intellij idea 远程调试hadoop 2.6.0)

但是生产环境中,更多的情况是:没有ide环境,且各应用最终生成的jar包部署在应用服务器上(应用服务器并非hadoop集群中的服务器节点),所以需要jar能独立运行并能连接到hadoop环境,以下是关键点:

1. pom.xml中将WordCount所依赖的jar包依赖项,全添加进来(这样最终运行时,这些jar包就不用依赖ide或hadoop运行环境)

2. 参考maven: 打包可运行的jar包(java application)及依赖项处理 一文将依赖的jar包导出,且通过maven插件自动修改MANIFEST.MF中的Main-Class信息

3. core-site.xml要复制到maven项目的resources目录下(这样打包后,xml会复制到classpath下,运行时,根据这个配置文件,WordCount就能知道去连哪里的hadoop)

4. 部署时,将最终生成的WordCount jar包及依赖的lib包,全上传到应用服务器

然后就能直接以类似

java -jar hadoop-helloworld.jar /jimmy/input/README.txt /jimmy/output 运行

最后附几个关键文件内容:

a. pom.xml

 <?xml version="1.0" encoding="UTF-8"?>
<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>cn.cnblogs.yjmyzz</groupId>
<artifactId>hadoop-helloworld</artifactId>
<version>1.0</version> <dependencies>
<dependency>
<groupId>org.apache.hadoop</groupId>
<artifactId>hadoop-common</artifactId>
<version>2.6.0</version>
</dependency>
<dependency>
<groupId>org.apache.hadoop</groupId>
<artifactId>hadoop-hdfs</artifactId>
<version>2.6.0</version>
</dependency>
<dependency>
<groupId>org.apache.hadoop</groupId>
<artifactId>hadoop-mapreduce-client-jobclient</artifactId>
<version>2.6.0</version>
</dependency>
<dependency>
<groupId>commons-cli</groupId>
<artifactId>commons-cli</artifactId>
<version>1.2</version>
</dependency>
</dependencies> <build>
<finalName>${project.artifactId}</finalName> <plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<configuration>
<archive>
<manifest>
<mainClass>cn.cnblogs.yjmyzz.WordCount</mainClass>
<addClasspath>true</addClasspath>
<classpathPrefix>lib/</classpathPrefix>
</manifest>
</archive>
<classesDirectory>
</classesDirectory>
</configuration>
</plugin>
</plugins>
</build> <!--mvn dependency:copy-dependencies -DoutputDirectory=target/lib--> </project>

b.\META-INF\MANIFEST.MF内容

Manifest-Version: 1.0
Built-By: jimmy
Build-Jdk: 1.7.0_09
Class-Path: lib/hadoop-common-2.6.0.jar lib/hadoop-annotations-2.6.0.j
ar lib/guava-11.0.2.jar lib/commons-math3-3.1.1.jar lib/xmlenc-0.52.j
ar lib/commons-httpclient-3.1.jar lib/commons-codec-1.4.jar lib/commo
ns-io-2.4.jar lib/commons-net-3.1.jar lib/commons-collections-3.2.1.j
ar lib/servlet-api-2.5.jar lib/jetty-6.1.26.jar lib/jetty-util-6.1.26
.jar lib/jersey-core-1.9.jar lib/jersey-json-1.9.jar lib/jettison-1.1
.jar lib/jaxb-impl-2.2.3-1.jar lib/jaxb-api-2.2.2.jar lib/stax-api-1.
0-2.jar lib/activation-1.1.jar lib/jackson-jaxrs-1.8.3.jar lib/jackso
n-xc-1.8.3.jar lib/jersey-server-1.9.jar lib/asm-3.1.jar lib/jasper-c
ompiler-5.5.23.jar lib/jasper-runtime-5.5.23.jar lib/jsp-api-2.1.jar
lib/commons-el-1.0.jar lib/commons-logging-1.1.3.jar lib/log4j-1.2.17
.jar lib/jets3t-0.9.0.jar lib/httpclient-4.1.2.jar lib/httpcore-4.1.2
.jar lib/java-xmlbuilder-0.4.jar lib/commons-lang-2.6.jar lib/commons
-configuration-1.6.jar lib/commons-digester-1.8.jar lib/commons-beanu
tils-1.7.0.jar lib/commons-beanutils-core-1.8.0.jar lib/slf4j-api-1.7
.5.jar lib/slf4j-log4j12-1.7.5.jar lib/jackson-core-asl-1.9.13.jar li
b/jackson-mapper-asl-1.9.13.jar lib/avro-1.7.4.jar lib/paranamer-2.3.
jar lib/snappy-java-1.0.4.1.jar lib/protobuf-java-2.5.0.jar lib/gson-
2.2.4.jar lib/hadoop-auth-2.6.0.jar lib/apacheds-kerberos-codec-2.0.0
-M15.jar lib/apacheds-i18n-2.0.0-M15.jar lib/api-asn1-api-1.0.0-M20.j
ar lib/api-util-1.0.0-M20.jar lib/curator-framework-2.6.0.jar lib/jsc
h-0.1.42.jar lib/curator-client-2.6.0.jar lib/curator-recipes-2.6.0.j
ar lib/jsr305-1.3.9.jar lib/htrace-core-3.0.4.jar lib/zookeeper-3.4.6
.jar lib/commons-compress-1.4.1.jar lib/xz-1.0.jar lib/hadoop-hdfs-2.
6.0.jar lib/commons-daemon-1.0.13.jar lib/netty-3.6.2.Final.jar lib/x
ercesImpl-2.9.1.jar lib/xml-apis-1.3.04.jar lib/hadoop-mapreduce-clie
nt-jobclient-2.6.0.jar lib/hadoop-mapreduce-client-common-2.6.0.jar l
ib/hadoop-yarn-common-2.6.0.jar lib/hadoop-yarn-api-2.6.0.jar lib/jer
sey-client-1.9.jar lib/jersey-guice-1.9.jar lib/hadoop-yarn-client-2.
6.0.jar lib/hadoop-mapreduce-client-core-2.6.0.jar lib/hadoop-yarn-se
rver-common-2.6.0.jar lib/hadoop-mapreduce-client-shuffle-2.6.0.jar l
ib/hadoop-yarn-server-nodemanager-2.6.0.jar lib/leveldbjni-all-1.8.ja
r lib/guice-servlet-3.0.jar lib/guice-3.0.jar lib/javax.inject-1.jar
lib/aopalliance-1.0.jar lib/commons-cli-1.2.jar
Created-By: Apache Maven 3.2.3
Main-Class: cn.cnblogs.yjmyzz.WordCount
Archiver-Version: Plexus Archiver

运行截图:

hadoop:将WordCount打包成独立运行的jar包的更多相关文章

  1. 将 java 项目打包成可运行的 jar 包(main 函数带参数),并上传到 linux 服务器上运行

    一.概述 java项目有两种架构,一种是 B/S 架构的,一种是 C/S 架构的. 对于 B/S 架构来说,我们常见的 java ee 即是 B/S 架构,通常,开发人员会在本地进行开发,然后将项目打 ...

  2. 使用命令把SpringBoot项目打包成可运行的jar包(简洁,操作性强)

    前几天接到一个需求,要把原系统中一个数据处理小功能搬出原系统,拉出来单独做一个SpringBoot项目,然后打成jar包扔到Windows服务器上运行,这样数据处理的时候如果遇到堵塞就不至于整个系统都 ...

  3. java项目打包成可运行的jar,main方法带参数

    转载 原文地址:http://www.cnblogs.com/neillee/p/6063808.html#commentform 将 java 项目打包成可运行的 jar 包(main 函数带参数) ...

  4. 将Java项目打包成可以独立运行的Jar包

    因为一直也没怎么用过Java的原因,所以以前本科上课的时候,在控制台下运行Java程序都是仅仅运行单个的没有第三方库依赖的情况下运行的 那种情况特别简单,只要输入Javac 文件名.java等到编译完 ...

  5. 将SeqReader打包成可执行的jar包

    SeqReader是我定义的一个读取SequenceFile文件,并将部分(key,value)打印到控制台窗口的类,其完整代码如下: /** * Created with IntelliJ IDEA ...

  6. 将Java应用程序打包成可执行的Jar包

    可以将多个class文件打包为jar包,在指定程序入口点情况下,可以用 java –jar jar包名称 的方式调用jar包内主类的main函数. 程序源代码如下: //Math.java publi ...

  7. maven项目导入依赖jar包并打包为可运行的jar包

    1.在pom.xml文件中添加插件 <build> <finalName>LeadServer</finalName> <!-- jar包名前缀,如果没有指定 ...

  8. 构建Springboot项目、实现简单的输出功能、将项目打包成可以执行的JAR包(详细图解过程)

    1.构建SpringBoot项目 大致流程 1.新建工程 2.选择环境配置.jdk版本 3.选择 依赖(可省略.后续要手动在pom文件写) 4.项目名 1.1 图解建立过程 1.2 项目结构 友情提示 ...

  9. 在IDEA中如何将Spring boot项目打包成可执行的jar包并发布到linux服务

    这两年微服务很流行,这里简单介绍一下如何将自己使用idea写的微服务打包成一个可执行的jar包,并发布到linux服务器的步骤.因为spring boot有内置的tomcat所以一般使用内置的tomc ...

随机推荐

  1. WPF学习之路(五) 实例:写字板(续)

    WordPad 2.0 上一期实现了一虽然建议但是功能比较全面的Wordpad程序,但是程序代码略显繁琐,这一期更新改进版. MainWindows.xaml 添加 <Window.Comman ...

  2. Symantec Backup Exec备份作业服务器盘符变更

    Symantec Backup Exec的备份作业中,如果某个服务器的磁盘更改了盘符,如果不修改备份作业里面的相关配置,就会出现类似下面的错误信息,如下截图所示 因为这台服务器上我们将原先的G盘的盘符 ...

  3. Python基本语法,python入门到精通[二]

    在上一篇博客Windows搭建python开发环境,python入门到精通[一]我们已经在自己的windows电脑上搭建好了python的开发环境,这篇博客呢我就开始学习一下Python的基本语法.现 ...

  4. IP地址(IPv4)/IPv6地址的正则表达式

    原地址:http://pfeishao.blog.163.com/blog/static/18162337020112113130453/ Pv4地址正则表达式:^((25[0-5]|2[0-4]\d ...

  5. Linux下的压缩zip,解压缩unzip命令详解及实例

    实例:压缩服务器上当前目录的内容为xxx.zip文件 zip -r xxx.zip ./* 解压zip文件到当前目录 unzip filename.zip ====================== ...

  6. CentOS 6.3下配置LVM(逻辑卷管理)

    一.简介 LVM是逻辑盘卷管理(Logical Volume Manager)的简称,它是Linux环境下对磁盘分区进行管理的一种机制,LVM是建立在硬盘和分区之上的一个逻辑层,来提高磁盘分区管理的灵 ...

  7. C语言怎么将用户账号密码写入文件实现登录注册功能?

    创建储存用户账号密码的文件: void Create_File() { FILE *fp; if ((fp = fopen("users.txt","rb")) ...

  8. java 自动装箱自动拆箱

    1.Java数据类型 在介绍Java的自动装箱和拆箱之前,我们先来了解一下Java的基本数据类型. 在Java中,数据类型可以分为两大种,Primitive Type(基本类型)和Reference ...

  9. URL编码知识摘抄备忘

    网页工具 http://www.107000.com/T-UrlEncode/ 参考: 维基百科http://zh.wikipedia.org/zh/%E7%99%BE%E5%88%86%E5%8F% ...

  10. 三:shell运算符

    1:declare命令 shell默认是字符串型        如果需要加减乘除,需要定义为整型declare命令:改变默认变量的类型decalre [+/-] [选项]  变量名      -给变量 ...