在Linux环境中调测MapReduce应用
操作场景
在程序代码完成开发后,您可以在Linux环境中运行应用。
MapReduce应用程序运行完成后,可通过如下方式查看应用程序的运行情况。
- 通过运行结果查看程序运行情况。
- 登录MapReduce WebUI查看应用程序运行情况。
- 登录Yarn WebUI查看应用程序运行情况。
- 通过MapReduce日志获取应用程序运行情况。
前提条件
- 已将准备连接MapReduce集群配置文件获取的配置文件放置到“conf”目录下(例如“/opt/client/conf”,该目录需要与2上传的“MRTest-XXX.jar”包所在目录相同)。
- 已参考规划MapReduce访问多组件样例程序数据准备好待处理的数据。
运行程序
- 进入样例工程本地根目录,在Windows命令提示符窗口中执行下面命令进行打包。
mvn -s "{maven_setting_path}" clean package
- 上述打包命令中的{maven_setting_path}为本地Maven的settings.xml文件路径。
- 打包成功之后,在工程根目录的“target”子目录下获取打好的jar包,例如“MRTest-XXX.jar”,jar包名称以实际打包结果为准。
- 上传生成的应用包“MRTest-XXX.jar”到Linux客户端上,例如“/opt/client/conf”,与配置文件位于同一目录下。
- 在Linux环境下运行样例工程。
- 对于MapReduce统计样例程序,执行如下命令。
yarn jar MRTest-XXX.jar com.huawei.bigdata.mapreduce.examples.FemaleInfoCollector <inputPath> <outputPath>
此命令包含了设置参数和提交job的操作,其中<inputPath>指HDFS文件系统中input的路径,<outputPath>指HDFS文件系统中output的路径。
- 在执行以上命令之前,<outputPath>目录必须不存在,否则会报错。
- 在MapReduce任务运行过程中禁止重启HDFS服务,否则可能会导致任务失败。
- 对于MapReduce访问多组件样例程序,操作步骤如下。
- 在“/opt/client/conf”文件夹中创建文件“jaas_mr.conf”,文件内容如下:
Client { com.sun.security.auth.module.Krb5LoginModule required useKeyTab=true keyTab="user.keytab" principal="test@<系统域名>" useTicketCache=false storeKey=true debug=true; };
- test:为准备集群认证用户信息创建的用户名称,例如developuser。
- 系统域名:登录FusionInsight Manager后,选择“系统 > 权限 > 域和互信”,查看“本端域”参数,即为当前系统域名。
- 在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/*
- 提交MapReduce任务,执行如下命令,运行样例工程。
yarn jar MRTest-XXX.jar com.huawei.bigdata.mapreduce.examples.MultiComponentExample
如果集群开启了ZooKeeper SSL,则运行该样例前,需要检查配置文件mapred-site.xml(准备运行环境配置文件中与准备放置编译出的jar包同目录的“conf”目录下获取)的配置项“mapreduce.admin.map.child.java.opts”和“mapreduce.admin.reduce.child.java.opts”是否包含如下内容:
-Dzookeeper.client.secure=true -Dzookeeper.clientCnxnSocket=org.apache.zookeeper.ClientCnxnSocketNetty
如果不包含,将上述内容添加到配置项末尾处。
- 在“/opt/client/conf”文件夹中创建文件“jaas_mr.conf”,文件内容如下:
- 对于MapReduce统计样例程序,执行如下命令。
查看调测结果
- 通过MapReduce服务的WebUI进行查看
使用具有任务查看权限的用户登录FusionInsight Manager,选择“集群 >服务 > Mapreduce > JobHistoryServer”进入Web界面后查看任务执行状态。
图1 JobHistory Web UI界面
- 通过YARN服务的WebUI进行查看
使用具有任务查看权限的用户登录FusionInsight Manager,选择“集群 > 服务 > Yarn > ResourceManager(主)”进入Web界面后查看任务执行状态。图2 ResourceManager Web UI页面
- 查看MapReduce应用运行结果数据。
- 当用户在Linux环境下执行yarn jar MRTest-XXX.jar命令后,可以通过执行结果显示正在执行的应用的运行情况。例如:
linux1:/opt # yarn jar MRTest-XXX.jar /user/mapred/example/input/ /output6 16/02/24 15:45:40 INFO security.UserGroupInformation: Login successful for user admin@<系统域名> using keytab file user.keytab Login success!!!!!!!!!!!!!! 16/02/24 15:45:40 INFO hdfs.PeerCache: SocketCache disabled. 16/02/24 15:45:41 INFO hdfs.DFSClient: Created HDFS_DELEGATION_TOKEN token 28 for admin on ha-hdfs:hacluster 16/02/24 15:45:41 INFO security.TokenCache: Got dt for hdfs://hacluster; Kind: HDFS_DELEGATION_TOKEN, Service: ha-hdfs:hacluster, Ident: (HDFS_DELEGATION_TOKEN token 28 for admin) 16/02/24 15:45:41 INFO input.FileInputFormat: Total input files to process : 2 16/02/24 15:45:41 INFO mapreduce.JobSubmitter: number of splits:2 16/02/24 15:45:42 INFO mapreduce.JobSubmitter: Submitting tokens for job: job_1455853029114_0027 16/02/24 15:45:42 INFO mapreduce.JobSubmitter: Kind: HDFS_DELEGATION_TOKEN, Service: ha-hdfs:hacluster, Ident: (HDFS_DELEGATION_TOKEN token 28 for admin) 16/02/24 15:45:42 INFO impl.YarnClientImpl: Submitted application application_1455853029114_0027 16/02/24 15:45:42 INFO mapreduce.Job: The url to track the job: https://linux1:8090/proxy/application_1455853029114_0027/ 16/02/24 15:45:42 INFO mapreduce.Job: Running job: job_1455853029114_0027 16/02/24 15:45:50 INFO mapreduce.Job: Job job_1455853029114_0027 running in uber mode : false 16/02/24 15:45:50 INFO mapreduce.Job: map 0% reduce 0% 16/02/24 15:45:56 INFO mapreduce.Job: map 100% reduce 0% 16/02/24 15:46:03 INFO mapreduce.Job: map 100% reduce 100% 16/02/24 15:46:03 INFO mapreduce.Job: Job job_1455853029114_0027 completed successfully 16/02/24 15:46:03 INFO mapreduce.Job: Counters: 49
- 在Linux环境下执行yarn application -status <ApplicationID>,可以通过执行结果显示正在执行的应用的运行情况。例如:
linux1:/opt # yarn application -status application_1455853029114_0027 Application Report : Application-Id : application_1455853029114_0027 Application-Name : Collect Female Info Application-Type : MAPREDUCE User : admin Queue : default Start-Time : 1456299942302 Finish-Time : 1456299962343 Progress : 100% State : FINISHED Final-State : SUCCEEDED Tracking-URL : https://linux1:26014/jobhistory/job/job_1455853029114_0027 RPC Port : 27100 AM Host : SZV1000044726 Aggregate Resource Allocation : 114106 MB-seconds, 42 vcore-seconds Log Aggregation Status : SUCCEEDED Diagnostics : Application finished execution. Application Node Label Expression : <Not set> AM container Node Label Expression : <DEFAULT_PARTITION>
- 当用户在Linux环境下执行yarn jar MRTest-XXX.jar命令后,可以通过执行结果显示正在执行的应用的运行情况。例如:
- 查看MapReduce日志获取应用运行情况。
您可以查看MapReduce日志了解应用运行情况,并根据日志信息调整应用程序。