如何打包和运行twill示例应用程序

时间:2014-09-25 10:51:07

标签: java maven hadoop yarn apache-twill

我正在尝试使用apache twill来构建YARN应用程序。从twill presentation的幻灯片中,他们讨论了使用maven-bundle-plugin打包hello world样本。

因此,为了打包示例hello world,我首先尝试使用mvn assembly:assembly -DdescriptorId=jar-with-dependencies打包jar。 然后将以下内容添加到pom.xml(并执行mvn clean install):

<build>
  <plugins>
    <plugin>
      <groupId>org.apache.felix</groupId>
      <artifactId>maven-bundle-plugin</artifactId>
      <version>2.5.3</version>
      <extensions>true</extensions>
      <configuration>
        <instructions>
          <Bundle-SymbolicName>${pom.groupId}.${pom.artifactId}</Bundle-SymbolicName>
          <Bundle-Name>${pom.artifactId}</Bundle-Name>
          <Bundle-Version>1.0.0</Bundle-Version>
          <Private-Package>org.wso2.mbp.helloworld</Private-Package>
          <Bundle-Activator>org.wso2.mbp.helloworld.Activator</Bundle-Activator>
          <Embed-Dependency>*;scope=compile|runtime</Embed-Dependency>
          <Embed-Transitive>true</Embed-Transitive>
          <Import-Package>
            org.apache.twill.*,
            org.osgi.framework,
            *;resolution:=optional
          </Import-Package>
        </instructions>
      </configuration>
    </plugin>
  </plugins>
</build>

斜纹应用程序如何打包?然后如何在hadoop上运行它们?

1 个答案:

答案 0 :(得分:2)

对于打包,您可以使用maven-bundle-plugin。我通常在pom.xml中使用它:

<build>
  <plugins>
    <plugin>
      <groupId>org.apache.felix</groupId>
      <artifactId>maven-bundle-plugin</artifactId>
      <version>2.3.7</version>
      <extensions>true</extensions>
      <configuration>
        <instructions>
          <Embed-Dependency>*;inline=false;groupId=!org.apache.hadoop</Embed-Dependency>
          <Embed-Transitive>true</Embed-Transitive>
          <Embed-Directory>lib</Embed-Directory>
        </instructions>
      </configuration>
      <executions>
        <execution>
          <phase>package</phase>
          <goals>
            <goal>bundle</goal>
          </goals>
        </execution>
      </executions>
    </plugin>
  </plugins>
</build>

然后运行MAVEN_OPTS="-Xmx512m" mvn clean package。这应该在目标目录下创建一个.jar文件。如果使用“jar -tf”来查看jar文件的内容,它应该是这样的:

my/package/HelloWorld.class
my/package/HelloWorld$HelloWorldRunnable.class
lib/twill-api-0.3.0-incubating.jar
lib/twill-core-0.3.0-incubating.jar
lib/..

要启动应用程序,请确保您所在的主机上可以访问您计划启动该应用程序的Hadoop群集。然后你可以在某个目录中scp和unjar文件,然后在扩展的jar目录中输入如下的shell命令:

$> export HADOOP_CP=`hadoop classpath`
$> java -cp .:lib/*:$HADOOP_CP my.package.HelloWorld 

HelloWorld中的main()方法应该能够与ZooKeeper和YARN交互并在集群中启动应用程序。