
# 在Linux环境中调测MapReduce应用
#### 操作场景
在程序代码完成开发后，可以在Linux环境中运行应用。
MapReduce应用程序运行完成后，可通过如下方式查看应用程序的运行情况。
- 通过运行结果查看程序运行情况。
- 登录MapReduce WebUI查看应用程序运行情况。
- 登录Yarn WebUI查看应用程序运行情况
- 通过MapReduce日志获取应用程序运行情况。
 
#### 运行程序
1. 进入样例工程本地根目录，在Windows命令提示符窗口中执行下面命令进行打包。 
   **mvn -s "** *{maven_setting_path}* **" clean package**
   ![](https://support.huaweicloud.com/devg-lts-mrs/public_sys-resources/note_3.0-zh-cn.png)
   - 上述打包命令中的{maven_setting_path}为本地Maven的setting.xml文件路径。
   
   - 打包成功之后，在工程根目录的target子目录下获取打好的jar包，例如"MRTest-XXX.jar"，jar包名称以实际打包结果为准。
    
   
   
2. 上传生成的应用包"MRTest-XXX.jar"到Linux客户端上，例如**/opt/client/conf**，与配置文件位于同一目录下。
3. 在Linux环境下运行样例工程。 
   - 对于MapReduce统计样例程序，执行如下命令。 yarn jar MRTest-XXX.jar com.huawei.bigdata.mapreduce.examples.FemaleInfoCollector *\<inputPath\> \<outputPath\>*
     此命令包含了设置参数和提交job的操作，其中*\<inputPath\>* 指HDFS文件系统中input的路径，*\<outputPath\>*指HDFS文件系统中output的路径。
     ![](https://support.huaweicloud.com/devg-lts-mrs/public_sys-resources/note_3.0-zh-cn.png)
     - 在执行以上命令之前，需要把log1.txt和log2.txt这两个文件上传到HDFS的\<inputPath\>目录下。参考[MapReduce统计样例程序开发思路](https://support.huaweicloud.com/devg-lts-mrs/mrs_07_360011.html)。
     
     - 在执行以上命令之前，\<outputPath\>目录必须不存在，否则会报错。
     
     - 在MapReduce任务运行过程中禁止重启HDFS服务，否则可能会导致任务失败。
       
   
   - 对于MapReduce访问多组件样例程序，操作步骤如下。
     1. 获取"hbase-site.xml"、"hiveclient.properties"和"hive-site.xml"这三个配置文件，并在Linux环境上创建文件夹保存这三个配置文件，例如"/opt/client/conf"。
        ![](https://support.huaweicloud.com/devg-lts-mrs/public_sys-resources/note_3.0-zh-cn.png)
        "hbase-site.xml"从HBase客户端获取，"hiveclient.properties"和"hive-site.xml"从Hive客户端获取。
        
     
     2. 在Linux环境中添加样例工程运行所需的classpath，例如 **export YARN_USER_CLASSPATH=** **/opt/client** **/conf:** **/opt/client** **/HBase/hbase/lib/\*:** **/opt/client/HBase/hbase/lib/client-facing-thirdparty/\*:/opt/client** **/Hive/Beeline/lib/\***
        
     
     3. 提交MapReduce任务，执行如下命令，运行样例工程。 **yarn jar MRTest-XXX.jar com.huawei.bigdata.mapreduce.examples.MultiComponentExample**
        ![](https://support.huaweicloud.com/devg-lts-mrs/public_sys-resources/note_3.0-zh-cn.png)
        如果集群开启了ZooKeeper SSL，则运行该样例前，需要检查配置文件mapred-site.xml（[准备运行环境](https://support.huaweicloud.com/devg-lts-mrs/mrs_07_360006.html#mrs_07_360006__section114783616307)中与准备放置编译出的jar包同目录的"conf"目录下获取）的配置项"mapreduce.admin.map.child.java.opts"和"mapreduce.admin.reduce.child.java.opts"是否包含如下内容：
        ```
        -Dzookeeper.client.secure=true -Dzookeeper.clientCnxnSocket=org.apache.zookeeper.ClientCnxnSocketNetty
        ```
        如果不包含，将上述内容添加到配置项末尾处。
        
      
   
   
   
   
 
#### 查看调测结果
- **通过MapReduce服务的WebUI进行查看**
  使用具有任务查看权限的用户登录FusionInsight Manager，选择"集群 \>*待操作集群的名称* \> 服务 \> Mapreduce ＞ JobHistoryServer"进入Web界面后查看任务执行状态。
  图1JobHistory Web UI界面   
  ![](https://support.huaweicloud.com/devg-lts-mrs/zh-cn_image_0000001909524786.png "点击放大") 
- **通过YARN服务的WebUI进行查看**
  使用具有任务查看权限的用户登录FusionInsight Manager，选择"集群 \>*待操作集群的名称* \> 服务 \> Yarn \> ResourceManager(主)"进入Web界面后查看任务执行状态。
  图2ResourceManager Web UI页面   
  ![](https://support.huaweicloud.com/devg-lts-mrs/zh-cn_image_0000001909404794.png "点击放大") 

- **查看MapReduce应用运行结果数据。**
  - 当用户在Linux环境下执行**yarn jar MRTest-** *XXX* **.jar** 命令后，可以通过执行结果显示正在执行的应用的运行情况。例如：
    ```
    yarn jar MRTest-XXX.jar /tmp/mapred/example/input/ /tmp/root/output/1
    16/07/12 17:07:16 INFO hdfs.PeerCache: SocketCache disabled.
    16/07/12 17:07:17 INFO input.FileInputFormat: Total input files to process : 2
    16/07/12 17:07:18 INFO mapreduce.JobSubmitter: number of splits:2
    16/07/12 17:07:18 INFO mapreduce.JobSubmitter: Submitting tokens for job: job_1468241424339_0006
    16/07/12 17:07:18 INFO impl.YarnClientImpl: Submitted application application_1468241424339_0006
    16/07/12 17:07:18 INFO mapreduce.Job: The url to track the job: http://10-120-180-170:8088/proxy/application_1468241424339_0006/
    16/07/12 17:07:18 INFO mapreduce.Job: Running job: job_1468241424339_0006
    16/07/12 17:07:31 INFO mapreduce.Job: Job job_1468241424339_0006 running in uber mode : false
    16/07/12 17:07:31 INFO mapreduce.Job:  map 0% reduce 0%
    16/07/12 17:07:41 INFO mapreduce.Job:  map 50% reduce 0%
    16/07/12 17:07:43 INFO mapreduce.Job:  map 100% reduce 0%
    16/07/12 17:07:51 INFO mapreduce.Job:  map 100% reduce 100%
    16/07/12 17:07:51 INFO mapreduce.Job: Job job_1468241424339_0006 completed successfully
    16/07/12 17:07:51 INFO mapreduce.Job: Counters: 49
            File System Counters
                    FILE: Number of bytes read=75
                    FILE: Number of bytes written=435659
                    FILE: Number of read operations=0
                    FILE: Number of large read operations=0
                    FILE: Number of write operations=0
                    HDFS: Number of bytes read=674
                    HDFS: Number of bytes written=23
                    HDFS: Number of read operations=9
                    HDFS: Number of large read operations=0
                    HDFS: Number of write operations=2
            Job Counters 
                    Launched map tasks=2
                    Launched reduce tasks=1
                    Data-local map tasks=2
                    Total time spent by all maps in occupied slots (ms)=144984
                    Total time spent by all reduces in occupied slots (ms)=56280
                    Total time spent by all map tasks (ms)=18123
                    Total time spent by all reduce tasks (ms)=7035
                    Total vcore-milliseconds taken by all map tasks=18123
                    Total vcore-milliseconds taken by all reduce tasks=7035
                    Total megabyte-milliseconds taken by all map tasks=74231808
                    Total megabyte-milliseconds taken by all reduce tasks=28815360
            Map-Reduce Framework
                    Map input records=26
                    Map output records=16
                    Map output bytes=186
                    Map output materialized bytes=114
                    Input split bytes=230
                    Combine input records=16
                    Combine output records=6
                    Reduce input groups=3
                    Reduce shuffle bytes=114
                    Reduce input records=6
                    Reduce output records=2
                    Spilled Records=12
                    Shuffled Maps =2
                    Failed Shuffles=0
                    Merged Map outputs=2
                    GC time elapsed (ms)=202
                    CPU time spent (ms)=2720
                    Physical memory (bytes) snapshot=1595645952
                    Virtual memory (bytes) snapshot=12967759872
                    Total committed heap usage (bytes)=2403860480
            Shuffle Errors
                    BAD_ID=0
                    CONNECTION=0
                    IO_ERROR=0
                    WRONG_LENGTH=0
                    WRONG_MAP=0
                    WRONG_REDUCE=0
            File Input Format Counters 
                    Bytes Read=444
            File Output Format Counters 
                    Bytes Written=23
    ```
    
  
  - 在Linux环境下执行*yarn application -status <ApplicationID>* ，可以通过执行结果显示正在执行的应用的运行情况。例如：
    ```
    yarn application -status application_1468241424339_0006
    Application Report : 
            Application-Id : application_1468241424339_0006
            Application-Name : Collect Female Info
            Application-Type : MAPREDUCE
            User : root
            Queue : default
            Start-Time : 1468314438442
            Finish-Time : 1468314470080
            Progress : 100%
            State : FINISHED
            Final-State : SUCCEEDED
            Tracking-URL : http://10-120-180-170:19888/jobhistory/job/job_1468241424339_0006
            RPC Port : 27100
            AM Host : 10-120-169-46
            Aggregate Resource Allocation : 172153 MB-seconds, 64 vcore-seconds
            Log Aggregation Status : SUCCEEDED
            Diagnostics : Application finished execution. 
            Application Node Label Expression : <Not set>
            AM container Node Label Expression : <DEFAULT_PARTITION>
    ```
    
   
- **查看MapReduce日志获取应用运行情况。**
  您可以查看MapReduce日志了解应用运行情况，并根据日志信息调整应用程序。
  
 
