管理作业

创建作业

使用hadoop镜像的集群可添加的作业类型是:java,streaming。使用spark镜像的集群可添加作业类型:spark,java,streaming。集群中添加了应用后便可添加该应用的作业,即创建集群时添加了hive应用,则可创建hive作业,添加了pig应用,则可创建pig作业。创建作业的操作步骤如下:

  1. 在“产品服务>MapReduce>百度MapReduce-作业列表”页中,点击“创建作业”,进入创建作业页。

  2. 请在创建作业页选择作业类型并配置作业类型对应的参数。以下列举了所有作业类型对应参数配置说明:

    • Streaming作业

      • 作业名称:输入作业名称,长度不可超过255个字符。
      • Mapper:Mapper是负责把您输入的作业分解成多个作业,对作业进行处理。Mapper对应的输入地址是应用程序在BOS中的地址。
      • Reducer:Reducer是负责把分解后多任务处理的结果汇总起来。Reducer对应的输入地址是应用程序在BOS中的地址。
      • bos输入地址:这个地址必须已经存在,并且您有权限读取这个地址的文件。
      • bos输出地址:写入的bucket之后的地址必须是不存在的,但您有权限对这个地址进行写操作,否则作业运行会失败。
      • 失败后操作:选择作业运行失败后的操作:继续(作业执行失败后,继续执行下一个作业)和等待(作业执行失败后,查看作业运行的状态,并且取消后续作业)。
      • 应用程序参数:除了以上五种streaming program作业必须输入的参数外,若您还有其他参数的设置,请在参数输入框中以空格为分隔符输入参数配置。用户输入参数时,只需要输入参数本身字符串即可,用空格分隔,无需参数转义和url encode。
    • Java作业

      • 作业名称:输入作业名称,长度不可超过255个字符。
      • 应用程序位置:输入JAR包在bos上的地址。
      • 失败后操作:选择作业运行失败后的操作:继续(作业执行失败后,继续执行下一个作业)和等待(作业执行失败后,查看作业运行的状态,并且取消后续作业)。
      • MainClass:写入org.apache.MyClass指定主程序的类名。
      • 应用程序参数:输入参数,且参数不做任何修改传给MainClass中的main函数。输入参数时,只需要输入参数本身字符串即可,用空格分隔,无需参数转义和url encode。
    • Spark作业

      • 作业名称:输入作业名称,长度不可超过255个字符。
      • 应用程序位置:输入JAR包在bos上的地址。
      • 失败后操作:选择作业运行失败后的操作:继续(作业执行失败后,继续执行下一个作业)和等待(作业执行失败后,查看作业运行的状态,并且取消后续作业)。
      • Spark-submit:Spark的系统参数,Spark在判定Spark-submit输入时遵循如下规则:
        • 当对以下的参数进行多次设置时,只有最后一次设置才会生效:--name、--driver-memory、--driver-java-options、--driver-library-path、--driver-class-path、--executor-memory、--executor-cores、--queue、--num-executors、--properties-file、--jars、--files、--archives。
        • 不可以指定的参数有:--master、--deploy-mode、--py-files、--driver-cores、--total-executor-cores、--supervise、--help。对于不可以指定的参数,若指定了不会生效。
        • 输入参数时,只需要输入参数本身字符串即可,用空格分隔,无需参数转义和url encode。
      • 应用程序参数:输入自定义参数。
    • Pig作业

      • 作业名称:输入作业名称,长度不可超过255个字符。
      • bos脚本地址:bos的脚本地址必须是一个有效的bos路径,并且指向Hive脚本。
      • bos输入地址:这个地址必须已经存在,并且您有权限读取这个地址的文件。可在脚本中通过${INPUT}引用这个地址。
      • bos输出地址:写入的bucket之后的地址必须是不存在的,但您有权限对这个地址进行写操作,否则作业运行会失败。可在脚本中通过${OUTPUT}引用这个地址。
      • 失败后操作:选择作业运行失败后的操作:继续(作业执行失败后,继续执行下一个作业)和等待(作业执行失败后,查看作业运行的状态,并且取消后续作业)。
      • 应用程序参数:输入以下指定的参数进行相关的配置:-D key=value指定配置,-p KEY=VALUE指定变量,也可加入自定义参数。输入参数时,只需要输入参数本身字符串即可,用空格分隔,无需参数转义和url encode。
    • Hive作业

      • 作业名称:输入作业名称,长度不可超过255个字符。
      • bos脚本地址:BOS的脚本地址必须是一个有效的BOS路径,并且指向Hive脚本。
      • bos输入地址:这个地址必须已经存在,并且您有权限读取这个地址的文件。可在脚本中通过${INPUT}引用这个地址。
      • bos输出地址:写入的bucket之后的地址必须是不存在的,但您有权限对这个地址进行写操作,否则作业运行会失败。可在脚本中通过${OUTPUT}引用这个地址。
      • 失败后操作:选择作业运行失败后的操作:继续(作业执行失败后,继续执行下一个作业)和等待(作业执行失败后,查看作业运行的状态,并且取消后续作业)。
      • 应用程序参数:只接受两种参数类型,分别是--hiveconf key=value 和 --hivevar key=value。前一种参数是用来覆盖hive执行时的配置。后一种参数是用来声明自定义的变量,可以在脚本中通过${KEY}来引用。输入参数时,只需要输入参数本身字符串即可,用空格分隔,无需参数转义和url encode。
  3. 选择适配的集群。

  4. 点击“完成”,则作业创建完成。

  5. 当作业状态会由“等待中”更新为“运行中”状态,作业运行完毕后状态更新为“已完成”。

  6. (可选)只有等待中或运行中的作业可被取消,点击“取消作业”即可。

使用远程文件

如果您的作业参数需要依赖本地文件,可以选择使用“附加文件”功能,将远程文件映射到本地路径,即可直接使用远程文件。例如hadoop中的-libjars参数只支持本地文件,通过添加附加文件参数就可以让-libjars使用BOS上的文件,您只需将文件上传至BOS,Hadoop作业即可读取到文件。

需要注意的是,在应用程序参数中使用的文件名需要和本地文件路径设置的文件名保持一致。例如,附加文件:远程文件路径bos://path/to/testA.jar,本地文件路径testB.jar,应用程序参数-libjars testB.jar。

  • 操作步骤:

在创建作业页面,填写“附加文件”中的“远程路径”和“本地路径”;“远程路径”对应的是BOS上的文件路径,“本地路径”对应的是作业参数中需要使用的文件名。

  • 查看详情:

作业详情页面的“运行参数”中显示有附加文件的远程路径和本地路径。

集群详情中的作业列表也有附加文件的信息。

  • 注意
    定时任务的作业中添加附加文件,步骤与上述一致。

查看作业

  1. 在“产品服务>MapReduce>百度MapReduce-作业列表”中,点击作业名称,可查看作业基本信息。

  2. Hadoop将job分成若干个task进行处理,共有两种类型的task,分别为map task和reduce task。点击下拉尖括号,查看各task的任务处理情形。

  3. 当task运行失败时,每个task有四次的重试机会,每次的重试信息记录在“查看Attempt”中。点击“MAP”和“REDUCE”对应的“查看Attempt”,查看attempt信息。

  4. 点击“作业日志”,可查看作业日志,其中Spark作业无作业日志。共有三种日志类型显示,分别是syslog、stderr和stdout。

    • Syslog是记录作业运行时的详细信息;

    • stderr是记录运行作业时的错误信息;

    • stdout记录作业运行完毕后的输出信息;

诊断/调优

目的

  • 诊断运行失败的作业,在日志中定位失败的原因,精确定位到您的程序中错误的位置。
  • 调优运行成功的作业,基于经验评价作业的配置和参数的合理性,给予您调优的建议。

适用范围

诊断或调优Hadoop MR作业,Hadoop Streaming作业,Spark作业。后续会增加Hive、Pig、HBase的诊断或调优。

查看失败作业的诊断信息

  1. 在集群作业页面,点击已失败作业的作业名称可查看该作业详情。

  2. 在作业详情页面,点击“诊断”,进入诊断页面。

    如上图所示,诊断的内容包含了用户的配置或者程序出错的信息,以及给出的建议。其中,如果出错的原因是在您的程序中,诊断功能还会扫描用户的代码中的异常栈或错误栈,剔除框架中可能对您定位问题无用的错误信息,直接定位到您程序中错误的代码。如果您想要了解更加具体的错误,还可以查看bos中的错误文件信息。

查看成功作业的调优信息

  1. 在集群作业页面,点击已完成作业的作业名称可查看该作业详情。

  2. 在作业详情页面,点击“调优”,进入调优页面。

    在集群中预设的参数是针对大多数作业的调优权衡的结果,不同作业的最优参数也不同,BMR调优会根据您作业的信息给予合理的作业参数调整。在BMR中内置了Map/Reduce任务数均衡性、内存溢写检查、Reduce分桶均匀度等十多项调优规则,在作业运行过程中收集集群环境数据和作业运行的信息,在作业结束时根据收集到的信息计算这十多种规则的评分情况,一旦超过阈值则给予警告,列出未通过的原因以及调优的方向。未通过的原因通常是因为作业参数设置不合理,或者套餐选择不合理,BMR的调优会自动收集您设置的配置参数和系统参数,对比不同参数对作业运行的影响并给予建议。例如在Map/Reduce任务数均衡性的检查中,BMR会权衡每个Map和Reduce任务所处理的数据量、任务处理时间,根据百度积累多年来的经验值给出合适的Map和Reduce的任务数量建议。

  3. 查看counter信息。在作业结束后可查看不同counter的信息,根据这些信息,您可以更方便地了解到作业执行时的情况,以及针对这些信息对程序做出相应的改进。