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

qcbq4gxm  于 2021-06-02  发布在  Hadoop
关注(0)|答案(1)|浏览(386)

我正在尝试使用apachetwill构建一个yarn应用程序。从斜纹布的幻灯片上,他们在谈论 maven-bundle-plugin 打包hello world示例。
因此,为了打包示例helloworld,我首先尝试用 mvn assembly:assembly -DdescriptorId=jar-with-dependencies . 然后将以下内容添加到 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>

twill应用程序是如何打包的?然后如何在hadoop上运行它们?

5jdjgkvh

5jdjgkvh1#

对于打包,可以使用maven bundle插件。在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交互,并在集群中启动应用程序。

相关问题