Не удалось опубликовать в CloudWatch: Ошибка при запуске child: java.lang.NoSuchMethodError:

Я пытаюсь отправить сообщение в Cloudwatch с моей работы EMR, но получаю сообщение об ошибке от stderr:

Ошибка: com.amazonaws.auth.DefaultAWSCredentialsProviderChain.getInstance()Lcom/amazonaws/auth/DefaultAWSCredentialsProviderChain; Контейнер убит ApplicationMaster. Контейнер убит по запросу. Код выхода 143 Контейнер завершен с ненулевым кодом выхода 143

и из системного журнала:

2017-06-20 16: 58: 23,078 FATAL [main] org.apache.hadoop.mapred.YarnChild: Ошибка при запуске дочернего объекта: java.lang.NoSuchMethodError: com.amazonaws.auth.DefaultAWSCredentialsProviderChain.getInstance()Lcom/amazonaws/ / DefaultAWSCredentialsProviderChain; по адресу com.amazonaws.client.builder.AwsClientBuilder.resolveCredentials(AwsClientBuilder.java:125) по адресу com.amazonaws.client.builder.AwsClientBuilder.access$100(AwsClientBuilder.javaswilder.wilder.wilder.wilder. SyncBuilderParams.(AwsClientBuilder.java:412) по адресу com.amazonaws.client.builder.AwsClientBuilder.getSyncClientParams(AwsClientBuilder.java:354) по адресу com.amazonaws.client.wilb. очистка (MapJoltSpec.java:186) в org.apache.hadoop.mapreduce.Mapper.run(Mapper.java:149) в org.apache.hadoop.mapred.MapTask.runNewMapper(MapTask.java:796) в org.apache.hadoop.mapred.MapTask.run(MapTask.java:342) в org.apache.hadoop.mapred.YarnChild$2.run(YarnChild.java:164) в java.security.AccessController.doPrivileged(собственный метод) в javax.security.auth.Subject.doAs(Subject.java:422) в org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1698) в org.apache.hadoop.mapred.YarnChild.main(YarnChild.java:158)

Я прикрепил роль CloudWatchFullAccess к экземплярам EC2 и добавил в pom.xml:

<!-- https://mvnrepository.com/artifact/com.amazonaws/aws-java-sdk -->
    <dependency>
        <groupId>com.amazonaws</groupId>
        <artifactId>aws-java-sdk</artifactId>
        <version>1.11.151</version>
    </dependency>

Наконец, вот мой код, который пытается опубликовать в методе очистки моей работы mapreduce:

    final AmazonCloudWatch cw =
            AmazonCloudWatchClientBuilder.defaultClient();

    Dimension dimension = new Dimension()
            .withName("POST_COUNT")
            .withValue("SUCCESFUL_POST_COUNT");

    MetricDatum datum = new MetricDatum()
            .withMetricName("SUCCESFUL_POST_COUNT")
            .withUnit(StandardUnit.None)
            .withValue(2.0)
            .withDimensions(dimension);

    PutMetricDataRequest request = new PutMetricDataRequest()
            .withNamespace("test-ElasticMapReduce")
            .withMetricData(datum);

    PutMetricDataResult response = cw.putMetricData(request);
    System.out.println(response);

0 ответов

Другие вопросы по тегам