MapReduce程序自動化執行

MapReduce程序自動化執行

前言:

上篇博文開發了第一個MapReduce程序,但是,我們可以發現,MapReduce程序的執行,非常麻煩,首先需要Package,然後再通過Xftp工具將jar包上傳到unix服務器,再在服務器上通過Shell命名執行如下命令

yarn jar hadoop-wordcount-1.0-SNAPSHOT.jar com.sun.wordcount.WordCountJob

才能完成一次MapReduce程序的執行!可以想象這個執行是多麼的麻煩。那麼本次博文就是介紹如何自動化的執行的Job工作。

一、配置Main-Class(不必再指定job類的包名)

每次Shell命令執行MapReduce程序的時候,不但要指定jar包的位置,而且要指定Job類的包名

yarn jar hadoop-wordcount-1.0-SNAPSHOT.jar com.sun.wordcount.WordCountJob

那麼能否不用指定包名呢?答案是可以的,只需要在pom中進行如下配置即可

<build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-jar-plugin</artifactId>
                 <configuration>
                 <outputDirectory>${basedir}/target</outputDirectory>
                  <archive>
                     <manifest>
                        <mainClass>com.sun.wordcount.WordCountJob</mainClass>
                     </manifest>
                 </archive>
                </configuration>
            </plugin>
        </plugins>
</build>

然後,在Shell中只需要執行如下命令就可以執行Job工作了

yarn jar hadoop-wordcount-1.0-SNAPSHOT.jar 

二、自動上傳Jar包

在上一步的基礎上,只需要在pom中進行如下配置即可

<build>
        <!--擴展maven的插件(wagon ssh插件)-->

        <extensions>
            <extension>
                <groupId>org.apache.maven.wagon</groupId>
                <artifactId>wagon-ssh</artifactId>
                <version>2.8</version>
            </extension>
        </extensions>

        <plugins>
            <plugin>
              <groupId>org.apache.maven.plugins</groupId>
              <artifactId>maven-jar-plugin</artifactId>
              <configuration>
                  <outputDirectory>${basedir}/target</outputDirectory>
                  <archive>
                    <manifest>
                        <mainClass>com.sun.wordcount.WordCountJob</mainClass>
                    </manifest>
                  </archive>
              </configuration>
            </plugin>

            <!--使用wagon ssh插件-->
            <plugin>
                <groupId>org.codehaus.mojo</groupId>
                <artifactId>wagon-maven-plugin</artifactId>
                <version>1.0</version>
                <!--將文件上傳到指定的服務器-->
                <configuration>
                    <fromFile>target/${project.build.finalName}.jar</fromFile>
                    <!--url格式:scp://用戶名:密碼:服務器IP地址:文件上傳目錄位置-->
                    <url>scp://root:[email protected]:/root/hadoop/wordcount/code</url>
                </configuration>
            </plugin>
        </plugins>
    </build>

然後再執行Job工作,只需要先點擊Package,再點擊wagon:upload-single即可完成jar的自動上傳
在這裏插入圖片描述
再在Shell中執行如下命令即可完成一次Job作業

yarn jar hadoop-wordcount-1.0-SNAPSHOT.jar 

三、自動執行Shell命令

上面的兩步操作完成了Jar的自動上傳,但我們還是需要去Shell命令窗口執行命令,再加上下面的配置就可以完成Shell命令的自動執行

<build>
        <!--擴展maven的插件(wagon ssh插件)-->

        <extensions>
            <extension>
                <groupId>org.apache.maven.wagon</groupId>
                <artifactId>wagon-ssh</artifactId>
                <version>2.8</version>
            </extension>
        </extensions>

        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-jar-plugin</artifactId>
            <configuration>
                <outputDirectory>${basedir}/target</outputDirectory>
                <archive>
                    <manifest>
                        <mainClass>com.sun.wordcount.WordCountJob</mainClass>
                    </manifest>
                </archive>
            </configuration>
        </plugin>

            <!--使用wagon ssh插件-->
            <plugin>
                <groupId>org.codehaus.mojo</groupId>
                <artifactId>wagon-maven-plugin</artifactId>
                <version>1.0</version>
                <!--將文件上傳到指定的服務器-->
                <configuration>
                    <fromFile>target/${project.build.finalName}.jar</fromFile>
                    <!--url格式:scp://用戶名:密碼:服務器IP地址:文件上傳目錄位置-->
                    <url>scp://root:[email protected]:/root/hadoop/wordcount/code</url>
                    <!--自動執行對應腳本-->
                    <commands>
                        <!--通過ssh執行shell腳本文件(執行yarn命令,且在/root/hadoop/wordcount/code目錄下生成執行日誌)-->
                        <command>nohup /root/hadoop/hadoop-2.9.2/bin/yarn jar /root/hadoop/wordcount/code/${project.build.finalName}.jar > /root/hadoop/wordcount/code/mapreduce.out 2>&amp;1 &amp;</command>
                    </commands>
                </configuration>
            </plugin>
        </plugins>
    </build>

上面配置完成後,我們如果執行Job作業,只需要以下三步即可
在這裏插入圖片描述

四、一鍵執行MapReduce程序

上面步驟配置完成,我們還需要每次都分別點擊三個按鈕才能執行一次Job作業,那麼能一鍵Run呢?答案是可以的,我們安裝Maven helper插件,這個插件可以一次性執行多個操作
在這裏插入圖片描述
右鍵Job作業代碼,
在這裏插入圖片描述
添加需要執行的操作(以空格分開),這樣就可以批量執行多個操作了
在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章