Hadoop从入门到精通之 如何运行hadoop程序


Hi 大家好,我是stefan,今天给大家带来的时如何运行Hadoop程序。

大家学习所有的IT技术都是通过先运行它们的范例开始的,Hadoop也不例外。Hadoop的运行可以分为三种:

1、在bash中敲代码,对每个文件编译运行

2、在bash中敲代码,打包成jar包后执行

3、在eclipse中编译后直接执行


===>首先我们来看看第1种方法:

第一种方法首先将我们写好的.java的Hadoop文件使用javac -classpath命令进行编译,示例如下:

javac -classpath /Users/guoshenglong/Documents/Hadoop/hadoop-2.2.0/share/hadoop/common/hadoop-common-2.2.0.jar urlRead.java 
这里由于我们的程序urlRead.java使用到了Hadoop中的hadoop-common-2.2.0.jar包中的一些类,所有我们把它设置为urlRead.java编译时的classpath。

现在我们编译好了,接下来是运行了,我们通过命令:

hadoop urlRead hdfs://localhost:9000/user/guoshenglong/hdfsTest/a.txt
来运行我们的程序,这里的urlRead指的就是hadoop帮助里面的(在bash中敲入hadoop回车就可以看到帮助)

CLASSNAME            run the class named CLASSNAME

后面hdfs://...就是程序执行的参数;运行完成,得到结果:

aaa bbb

===>接下来看第二种执行方法:

我们可以通过maven来管理我们的项目,maven大家可以自己百度然后安装一下,是一个比较常见的项目管理工具。首先我们新建项目,在命令行中敲下面的命令:

mvn archetype:generate -DgroupId=com.vertra.testFs -DartifactId=URLRead -DinteractiveMode=false

archetype:generate参数是创建一个新的项目,记住,最好不要用archetype:create,这个方法已经被弃用了。-DgroupId指定了程序的包结构,-DartifactId指定了项目根目录的名字,-DinteractiveMode指定了关闭用户交互

,执行完成后生成的项目目录结构如下:

URLRead/
|-- pom.xml
`-- src
    |-- main
    |   `-- java
    |       `-- com
    |           `-- vertra
    |               `-- testFs
    |                   |-- App.java
    |                   `-- urlRead.java
    `-- test
        `-- java
            `-- com
                `-- vertra
                    `-- testFs
                        `-- AppTest.java

我们需要修改根目录下面的pom.xml文件,pom文件内容如下:

<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/maven-v4_0_0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>com.vertra.testFs</groupId>
  <artifactId>URLRead</artifactId>
  <packaging>jar</packaging>
  <version>1.0</version>
  <name>URLRead</name>
  <url>http://maven.apache.org</url>
  <dependencies>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>3.8.1</version>
      <scope>test</scope>
    </dependency>
  </dependencies>
  <dependency>
      <groupId>org.apache.hadoop</groupId>
      <artifactId>hadoop-common</artifactId>
      <version>2.2.0</version>
  </dependency>
  
  <build>
      <plugins>
          <plugin>
              <groupId>org.apache.maven.plugins</groupId>
              <artifactId>maven-jar-plugin</artifactId>
              <configuration>
                  <archive>
                      <addMavenDescriptor>false</addMavenDescriptor>
                      <manifest>
                          <mainClass>com.vertra.testFs.urlRead</mainClass>
                      </manifest>
                  </archive>
              </configuration>
          </plugin>
      </plugins>
  </build>
</project>

注意:我们需要添加依赖:
<dependency>

把hadoop-common-2.2.0.jar添加到依赖项中,还要注意我们需要指定编译对象,

<mainClass>com.vertra.testFs.urlRead</mainClass>
很多人就是由于没有指定编译对象导致打包出错。

我们可以进去到URLRead目录下打包了,执行命令:

mvn package
我们会发现根目录下多了一个target目录,里面有我们打包好的jar包。

我们运行jar包:

Hadoop jar test.jar args

args是传入的参数。


===>eclipse中运行:

我们需要编译一个eclipse的插件,安装后就可以执行hadoop程序了

这部分比较简单,这里就不累述了。

转载请注明出处:http://blog.csdn.net/guoshenglong11/article/details/23443473




相关内容