0

我使用脚本runner.jar运行的AWS EMR猪的工作如下所述:http://docs.aws.amazon.com/ElasticMapReduce/latest/DeveloperGuide/emr-hadoop-script.html运行猪用口红在AWS EMR

现在,我想连上Netflix的唇膏来监视我的脚本。我设置服务器,并在维基这里:https://github.com/Netflix/Lipstick/wiki/Getting-Started我不能完全弄清楚如何做的最后一步:

hadoop jar lipstick-console-[version].jar -Dlipstick.server.url=http://$LIPSTICK_URL 

我应该取代脚本runner.jar这个?

此外,在维基以下的构建过程后,我结束了3个不同的控制台罐:

lipstick-console-0.6-SNAPSHOT.jar 
lipstick-console-0.6-SNAPSHOT-withHadoop.jar 
lipstick-console-0.6-SNAPSHOT-withPig.jar 

什么是后两个罐子的目的是什么?

UPDATE:

我想我正在取得进展,但它似乎仍然没有工作。

  1. 我设置pig.notification.listener参数如所描述here和口红服务器URL。在EMR中有多种方法可以实现。由于我使用的红宝石API,我必须指定一个步

    hadoop_jar_step: 
        jar: 's3://elasticmapreduce/libs/script-runner/script-runner.jar' 
        properties: 
        - pig.notification.listener.arg: com.netflix.lipstick.listeners.LipstickPPNL 
        - lipstick.server.url: http://pig_server_url 
    
  2. 接下来,我添加lipstick-console-0.6-SNAPSHOT.jar到Hadoop的类路径。对于这一点,我不得不创建一个引导作用如下:

    bootstrap_actions: 
        - name: copy_lipstick_jar 
        script_bootstrap_action: 
         path: #s3 path to bootstrap_lipstick.sh 
    

    其中bootstrap_lipstick.sh的内容是

    #!/bin/bash                                     
    hadoop fs -copyToLocal s3n://wp-data-west-2/load_code/java/lipstick-console-0.6-SNAPSHOT.jar /home/hadoop/lib/ 
    

的引导作用复制口红罐子集群节点,/home/hadoop/lib/已经在hadoop classpath中(EMR负责)。

它仍然无法正常工作,但我认为我错过了一些非常小的事情......任何想法都会被赞赏。

谢谢!

回答

2

目前口红的主类是猪的主类替代品。这是一种破解(而且远非理想),以便在优化之前和之后访问脚本的逻辑和物理计划,这些计划根本无法访问。因此,不幸的是,仅仅将LipstickPPNL类注册为猪的PPNL是不行的。你必须像口交猪一样运行口红。

我还没有尝试在EMR上运行口红,但它看起来像你将需要使用自定义jar步骤,而不是脚本步骤。请参阅文档:http://docs.aws.amazon.com/ElasticMapReduce/latest/DeveloperGuide/emr-launch-custom-jar-cli.html

罐子名称将是lipstick-console-0.6-SNAPSHOT-withHadoop.jar。它包含运行唇膏的所有必要依赖项。此外,需要设置lipstick.server.url

或者,您可以看看https://www.mortardata.com/,它在EMR上运行并且具有内置的唇膏集成功能。