trompa opened a new issue, #16717:
URL: https://github.com/apache/druid/issues/16717

   Please provide a detailed title (e.g. "Broker crashes when using TopN query 
with Bound filter" instead of just "Broker crashes").
   
   ### Affected Version
   
   30.0.0
   
   ### Description
   
   Dev environment with k8s, mm-less cluster.
   coordinator as Overlord
   
   indexer settings:
   
   ```
           druid.indexer.runner.capacity: {{ .Values.nodes.coordinators.runners 
 }}
           druid.indexer.runner.namespace: {{ .Release.Namespace }}
           druid.indexer.runner.type: k8s
           druid.indexer.task.encapsulatedTask: true
           druid.indexer.storage.type: metadata
   ``` 
   
   
   S3 and kafka ingestion work fine, they spin a k8s job and ingest properly.
   
   now testing the hadoop ingestion with EMR 7.0.0 
   java 17 bod on pods ( default druid image ) and EMR nodes
   
   After setting some jobProperties:
   ```
           "yarn.resourcemanager.address": 
"ip-X-X-X-X.eu-west-1.compute.internal:8032",
           "yarn.resourcemanager.hostname": 
"ip-X-X-X-X..eu-west-1.compute.internal",
           "yarn.nodemanager.hostname": "ip-X-X-X-X.eu-west-1.compute.internal",
           "yarn.nodemanager.amrmproxy.address": 
"ip-X-X-X-X..eu-west-1.compute.internal:8049",
           "fs.defaultFS": "hdfs://ip-X-X-X-X..eu-west-1.compute.internal:8020",
           "mapreduce.job.classloader":"true",
           
"mapreduce.job.classloader.system.classes":"-javax.validation.,-javax.el.,java.,javax.,org.apache.commons.logging.,org.apache.log4j.,org.apache.hadoop.",
            "fs.s3.aws.credentials.provider": 
"com.amazonaws.auth.WebIdentityTokenCredentialsProvider",
           "fs.s3a.aws.credentials.provider": 
"com.amazonaws.auth.WebIdentityTokenCredentialsProvider",
   mapreduce.framework.name": "yarn",
           "yarn.application.classpath": 
"$HADOOP_CONF_DIR,$HADOOP_COMMON_HOME/*,$HADOOP_COMMON_HOME/lib/*,$HADOOP_HDFS_HOME/*,$HADOOP_HDFS_HOME/lib/*,$HADOOP_MAPRED_HOME/*,$HADOOP_MAPRED_HOME/lib/*,$HADOOP_YARN_HOME/*,$HADOOP_YARN_HOME/lib/*,/usr/lib/hadoop-lzo/lib/*,/usr/share/aws/emr/emrfs/conf,/usr/share/aws/emr/emrfs/lib/*,/usr/share/aws/emr/emrfs/auxlib/*,/usr/share/aws/emr/lib/*,/usr/share/aws/emr/ddb/lib/emr-ddb-hadoop.jar,/usr/share/aws/emr/goodies/lib/emr-hadoop-goodies.jar,/usr/share/aws/emr/kinesis/lib/emr-kinesis-hadoop.jar,/usr/share/aws/emr/cloudwatch-sink/lib/*,/usr/lib/hudi/cli/lib/*",
           "yarn.app.mapreduce.am.command-opts": 
"--add-opens=java.base/java.lang=ALL-UNNAMED",
           "hadoop.rpc.protection":"privacy"
   
   ```
   
   
   I managed to make it to:
       
   * scan the input data on S3
   * send the job to EMR
   * fix `javax.security.sasl.SaslException: DIGEST-MD5: No common protection 
layer between client and server` Error
   
   
   But now i am stuck on:
   
   ```
   2024-07-10T12:34:54,783 INFO [task-runner-0-priority-0] 
org.apache.hadoop.mapreduce.Job - Running job: job_1720614656962_0001
   2024-07-10T12:35:03,871 INFO [task-runner-0-priority-0] 
org.apache.hadoop.mapreduce.Job - Job job_1720614656962_0001 running in uber 
mode : false
   2024-07-10T12:35:03,872 INFO [task-runner-0-priority-0] 
org.apache.hadoop.mapreduce.Job -  map 0% reduce 0%
   2024-07-10T12:35:18,003 INFO [task-runner-0-priority-0] 
org.apache.hadoop.mapreduce.Job - Task Id : 
attempt_1720614656962_0001_m_000007_0, Status : FAILED
   Error: com.google.inject.CreationException: Unable to create injector, see 
the following errors:
   
   1) Problem parsing object at prefix[druid.discovery.k8s]: Cannot construct 
instance of `org.apache.druid.k8s.discovery.K8sDiscoveryConfig`, problem: 
null/empty clusterIdentifier
    at [Source: UNKNOWN; line: -1, column: -1].
     at 
org.apache.druid.guice.JsonConfigProvider.bind(JsonConfigProvider.java:151) 
(via modules: com.google.inject.util.Modules$OverrideModule -> 
org.apache.druid.k8s.discovery.K8sDiscoveryModule)
     at 
org.apache.druid.guice.JsonConfigProvider.bind(JsonConfigProvider.java:151) 
(via modules: com.google.inject.util.Modules$OverrideModule -> 
org.apache.druid.k8s.discovery.K8sDiscoveryModule)
     while locating org.apache.druid.k8s.discovery.K8sDiscoveryConfig
       for the 1st parameter of 
org.apache.druid.k8s.discovery.PodInfo.<init>(PodInfo.java:35)
     at org.apache.druid.k8s.discovery.PodInfo.class(PodInfo.java:35)
     while locating org.apache.druid.k8s.discovery.PodInfo
       for field at 
org.apache.druid.k8s.discovery.K8sDiscoveryModule$DruidLeaderSelectorProvider.podInfo(K8sDiscoveryModule.java:103)
     at 
org.apache.druid.k8s.discovery.K8sDiscoveryModule.configure(K8sDiscoveryModule.java:89)
 (via modules: com.google.inject.util.Modules$OverrideModule -> 
org.apache.druid.k8s.discovery.K8sDiscoveryModule)
   Caused by: java.lang.IllegalArgumentException: Cannot construct instance of 
`org.apache.druid.k8s.discovery.K8sDiscoveryConfig`, problem: null/empty 
clusterIdentifier
    at [Source: UNKNOWN; line: -1, column: -1]
        at 
com.fasterxml.jackson.databind.ObjectMapper._convert(ObjectMapper.java:4314)
        at 
com.fasterxml.jackson.databind.ObjectMapper.convertValue(ObjectMapper.java:4245)
        at 
org.apache.druid.guice.JsonConfigurator.configurate(JsonConfigurator.java:131)
        at 
org.apache.druid.guice.JsonConfigProvider.get(JsonConfigProvider.java:241)
        at 
com.google.inject.internal.ProviderInternalFactory.provision(ProviderInternalFactory.java:81)
        at 
com.google.inject.internal.InternalFactoryToInitializableAdapter.provision(InternalFactoryToInitializableAdapter.java:53)
        at 
com.google.inject.internal.ProviderInternalFactory.circularGet(ProviderInternalFactory.java:61)
        at 
com.google.inject.internal.InternalFactoryToInitializableAdapter.get(InternalFactoryToInitializableAdapter.java:45)
        at 
com.google.inject.internal.ProviderToInternalFactoryAdapter$1.call(ProviderToInternalFactoryAdapter.java:46)
        at 
com.google.inject.internal.InjectorImpl.callInContext(InjectorImpl.java:1092)
        at 
com.google.inject.internal.ProviderToInternalFactoryAdapter.get(ProviderToInternalFactoryAdapter.java:40)
        at 
com.google.inject.internal.SingletonScope$1.get(SingletonScope.java:194)
        at 
com.google.inject.internal.InternalFactoryToProviderAdapter.get(InternalFactoryToProviderAdapter.java:41)
        at 
com.google.inject.internal.SingleParameterInjector.inject(SingleParameterInjector.java:38)
        at 
com.google.inject.internal.SingleParameterInjector.getAll(SingleParameterInjector.java:62)
        at 
com.google.inject.internal.ConstructorInjector.provision(ConstructorInjector.java:110)
        at 
com.google.inject.internal.ConstructorInjector.construct(ConstructorInjector.java:90)
        at 
com.google.inject.internal.ConstructorBindingImpl$Factory.get(ConstructorBindingImpl.java:268)
        at 
com.google.inject.internal.ProviderToInternalFactoryAdapter$1.call(ProviderToInternalFactoryAdapter.java:46)
        at 
com.google.inject.internal.InjectorImpl.callInContext(InjectorImpl.java:1092)
        at 
com.google.inject.internal.ProviderToInternalFactoryAdapter.get(ProviderToInternalFactoryAdapter.java:40)
        at 
com.google.inject.internal.SingletonScope$1.get(SingletonScope.java:194)
        at 
com.google.inject.internal.InternalFactoryToProviderAdapter.get(InternalFactoryToProviderAdapter.java:41)
        at 
com.google.inject.internal.SingleFieldInjector.inject(SingleFieldInjector.java:54)
        at 
com.google.inject.internal.MembersInjectorImpl.injectMembers(MembersInjectorImpl.java:132)
        at 
com.google.inject.internal.MembersInjectorImpl$1.call(MembersInjectorImpl.java:93)
        at 
com.google.inject.internal.MembersInjectorImpl$1.call(MembersInjectorImpl.java:80)
        at 
com.google.inject.internal.InjectorImpl.callInContext(InjectorImpl.java:1085)
        at 
com.google.inject.internal.MembersInjectorImpl.injectAndNotify(MembersInjectorImpl.java:80)
        at 
com.google.inject.internal.Initializer$InjectableReference.get(Initializer.java:223)
        at 
com.google.inject.internal.Initializer.injectAll(Initializer.java:132)
        at 
com.google.inject.internal.InternalInjectorCreator.injectDynamically(InternalInjectorCreator.java:174)
        at 
com.google.inject.internal.InternalInjectorCreator.build(InternalInjectorCreator.java:110)
        at com.google.inject.Guice.createInjector(Guice.java:99)
        at com.google.inject.Guice.createInjector(Guice.java:73)
        at com.google.inject.Guice.createInjector(Guice.java:62)
        at 
org.apache.druid.initialization.ExtensionInjectorBuilder.build(ExtensionInjectorBuilder.java:49)
        at 
org.apache.druid.initialization.ServerInjectorBuilder.build(ServerInjectorBuilder.java:118)
        at 
org.apache.druid.initialization.ServerInjectorBuilder.makeServerInjector(ServerInjectorBuilder.java:73)
        at 
org.apache.druid.initialization.Initialization.makeInjectorWithModules(Initialization.java:63)
        at 
org.apache.druid.indexer.HadoopDruidIndexerConfig.<clinit>(HadoopDruidIndexerConfig.java:109)
        at 
org.apache.druid.indexer.DetermineHashedPartitionsJob$DetermineHashedPartitionsPartitioner.setConf(DetermineHashedPartitionsJob.java:481)
        at 
org.apache.hadoop.util.ReflectionUtils.setConf(ReflectionUtils.java:80)
        at 
org.apache.hadoop.util.ReflectionUtils.newInstance(ReflectionUtils.java:141)
        at 
org.apache.hadoop.mapred.MapTask$NewOutputCollector.<init>(MapTask.java:725)
        at org.apache.hadoop.mapred.MapTask.runNewMapper(MapTask.java:793)
        at org.apache.hadoop.mapred.MapTask.run(MapTask.java:349)
        at org.apache.hadoop.mapred.YarnChild$2.run(YarnChild.java:178)
        at 
java.base/java.security.AccessController.doPrivileged(AccessController.java:712)
        at java.base/javax.security.auth.Subject.doAs(Subject.java:439)
        at 
org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1899)
        at org.apache.hadoop.mapred.YarnChild.main(YarnChild.java:172)
   Caused by: com.fasterxml.jackson.databind.exc.ValueInstantiationException: 
Cannot construct instance of 
`org.apache.druid.k8s.discovery.K8sDiscoveryConfig`, problem: null/empty 
clusterIdentifier
    at [Source: UNKNOWN; line: -1, column: -1]
        at 
com.fasterxml.jackson.databind.exc.ValueInstantiationException.from(ValueInstantiationException.java:47)
        at 
com.fasterxml.jackson.databind.DeserializationContext.instantiationException(DeserializationContext.java:1907)
        at 
com.fasterxml.jackson.databind.deser.std.StdValueInstantiator.wrapAsJsonMappingException(StdValueInstantiator.java:587)
        at 
com.fasterxml.jackson.databind.deser.std.StdValueInstantiator.rewrapCtorProblem(StdValueInstantiator.java:610)
        at 
com.fasterxml.jackson.databind.deser.std.StdValueInstantiator.createFromObjectWith(StdValueInstantiator.java:293)
        at 
com.fasterxml.jackson.databind.deser.ValueInstantiator.createFromObjectWith(ValueInstantiator.java:288)
        at 
com.fasterxml.jackson.databind.deser.impl.PropertyBasedCreator.build(PropertyBasedCreator.java:202)
        at 
com.fasterxml.jackson.databind.deser.BeanDeserializer._deserializeUsingPropertyBased(BeanDeserializer.java:521)
        at 
com.fasterxml.jackson.databind.deser.BeanDeserializerBase.deserializeFromObjectUsingNonDefault(BeanDeserializerBase.java:1405)
        at 
com.fasterxml.jackson.databind.deser.BeanDeserializer.deserializeFromObject(BeanDeserializer.java:363)
        at 
com.fasterxml.jackson.databind.deser.BeanDeserializer.deserialize(BeanDeserializer.java:196)
        at 
com.fasterxml.jackson.databind.ObjectMapper._convert(ObjectMapper.java:4309)
        ... 51 more
   Caused by: java.lang.IllegalArgumentException: null/empty clusterIdentifier
        at 
com.google.common.base.Preconditions.checkArgument(Preconditions.java:143)
        at 
org.apache.druid.k8s.discovery.K8sDiscoveryConfig.<init>(K8sDiscoveryConfig.java:75)
        at 
java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native
 Method)
        at 
java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:77)
        at 
java.base/jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
        at 
java.base/java.lang.reflect.Constructor.newInstanceWithCaller(Constructor.java:499)
        at 
java.base/java.lang.reflect.Constructor.newInstance(Constructor.java:480)
        at 
com.fasterxml.jackson.databind.introspect.AnnotatedConstructor.call(AnnotatedConstructor.java:124)
        at 
com.fasterxml.jackson.databind.deser.std.StdValueInstantiator.createFromObjectWith(StdValueInstantiator.java:291)
        ... 58 more
   
   ``` 
   
   From what i understand, the job on Yarn should not need this config, but 
still tries to inject it.
   Cannot find a way to inject fake values or skip this.
   
   
   I know MMless and K8s are still experimental, so might be something not yet 
really tested. Is there any way to fix this?
   


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to