Skip to content

Commit 5b6a2a2

Browse files
authored
indexing-service no longer depends on indexing-hadoop (#18247)
* indexing-service no longer depends on indexing-hadoop, instead indexing-hadoop depends on indexing-service * fixes * cleanup * fix it * fix declared dependencies * suppress warning * try again * suppress check
1 parent 35e1656 commit 5b6a2a2

File tree

34 files changed

+447
-327
lines changed

34 files changed

+447
-327
lines changed

examples/quickstart/tutorial/hadoop/docker/Dockerfile

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -52,12 +52,12 @@ RUN rpm --import http://repos.azulsystems.com/RPM-GPG-KEY-azulsystems && \
5252
rpm -ivh zulu-repo-${ZULU_REPO_VER}.noarch.rpm && \
5353
yum -q -y update && \
5454
yum -q -y upgrade && \
55-
yum -q -y install zulu17-jdk && \
55+
yum -q -y install zulu11-jdk && \
5656
yum -q -y install nano net-tools telnet less unzip wget && \
5757
yum clean all && \
5858
rm -rf /var/cache/yum zulu-repo_${ZULU_REPO_VER}.noarch.rpm
5959

60-
ENV JAVA_HOME=/usr/lib/jvm/zulu17
60+
ENV JAVA_HOME=/usr/lib/jvm/zulu11
6161
ENV PATH=$PATH:$JAVA_HOME/bin
6262

6363
# hadoop
@@ -76,7 +76,7 @@ ENV YARN_CONF_DIR=$HADOOP_HOME/etc/hadoop
7676
# in hadoop 3 the example file is nearly empty so we can just append stuff
7777
RUN cat << EOT >> $HADOOP_HOME/etc/hadoop/hadoop-env.sh
7878

79-
RUN sed -i '$ a export JAVA_HOME=/usr/lib/jvm/zulu17' $HADOOP_HOME/etc/hadoop/hadoop-env.sh
79+
RUN sed -i '$ a export JAVA_HOME=/usr/lib/jvm/zulu11' $HADOOP_HOME/etc/hadoop/hadoop-env.sh
8080
RUN sed -i '$ a export HADOOP_HOME=/usr/local/hadoop' $HADOOP_HOME/etc/hadoop/hadoop-env.sh
8181
RUN sed -i '$ a export HADOOP_CONF_DIR=/usr/local/hadoop/etc/hadoop/' $HADOOP_HOME/etc/hadoop/hadoop-env.sh
8282
RUN sed -i '$ a export HDFS_NAMENODE_USER=root' $HADOOP_HOME/etc/hadoop/hadoop-env.sh

extensions-contrib/materialized-view-maintenance/src/main/java/org/apache/druid/indexing/materializedview/MaterializedViewSupervisor.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,8 +29,8 @@
2929
import com.google.common.util.concurrent.MoreExecutors;
3030
import org.apache.druid.error.DruidException;
3131
import org.apache.druid.error.EntryAlreadyExists;
32+
import org.apache.druid.indexer.HadoopIndexTask;
3233
import org.apache.druid.indexer.TaskStatus;
33-
import org.apache.druid.indexing.common.task.HadoopIndexTask;
3434
import org.apache.druid.indexing.overlord.DataSourceMetadata;
3535
import org.apache.druid.indexing.overlord.IndexerMetadataStorageCoordinator;
3636
import org.apache.druid.indexing.overlord.Segments;

extensions-contrib/materialized-view-maintenance/src/main/java/org/apache/druid/indexing/materializedview/MaterializedViewSupervisorSpec.java

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -29,11 +29,12 @@
2929
import org.apache.druid.data.input.impl.DimensionSchema;
3030
import org.apache.druid.data.input.impl.DimensionsSpec;
3131
import org.apache.druid.indexer.HadoopIOConfig;
32+
import org.apache.druid.indexer.HadoopIndexTask;
3233
import org.apache.druid.indexer.HadoopIngestionSpec;
34+
import org.apache.druid.indexer.HadoopTaskConfig;
3335
import org.apache.druid.indexer.HadoopTuningConfig;
3436
import org.apache.druid.indexer.granularity.ArbitraryGranularitySpec;
3537
import org.apache.druid.indexer.hadoop.DatasourceIngestionSpec;
36-
import org.apache.druid.indexing.common.task.HadoopIndexTask;
3738
import org.apache.druid.indexing.overlord.IndexerMetadataStorageCoordinator;
3839
import org.apache.druid.indexing.overlord.TaskMaster;
3940
import org.apache.druid.indexing.overlord.TaskStorage;
@@ -245,7 +246,8 @@ public HadoopIndexTask createTask(Interval interval, String version, List<DataSe
245246
objectMapper,
246247
context,
247248
authorizerMapper,
248-
chatHandlerProvider
249+
chatHandlerProvider,
250+
new HadoopTaskConfig(null, null)
249251
);
250252

251253
return task;

extensions-contrib/materialized-view-maintenance/src/test/java/org/apache/druid/indexing/materializedview/MaterializedViewSupervisorTest.java

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -30,10 +30,11 @@
3030
import org.apache.druid.data.input.impl.StringDimensionSchema;
3131
import org.apache.druid.error.EntryAlreadyExists;
3232
import org.apache.druid.indexer.HadoopIOConfig;
33+
import org.apache.druid.indexer.HadoopIndexTask;
3334
import org.apache.druid.indexer.HadoopIngestionSpec;
35+
import org.apache.druid.indexer.HadoopTaskConfig;
3436
import org.apache.druid.indexer.HadoopTuningConfig;
3537
import org.apache.druid.indexer.TaskStatus;
36-
import org.apache.druid.indexing.common.task.HadoopIndexTask;
3738
import org.apache.druid.indexing.overlord.IndexerMetadataStorageCoordinator;
3839
import org.apache.druid.indexing.overlord.TaskMaster;
3940
import org.apache.druid.indexing.overlord.TaskQueue;
@@ -259,7 +260,8 @@ public void testCheckSegmentsAndSubmitTasks()
259260
objectMapper,
260261
null,
261262
null,
262-
null
263+
null,
264+
new HadoopTaskConfig(null, null)
263265
);
264266
runningTasks.put(Intervals.of("2015-01-01T00Z/2015-01-02T00Z"), task1);
265267
runningVersion.put(Intervals.of("2015-01-01T00Z/2015-01-02T00Z"), "test_version1");
@@ -273,7 +275,8 @@ public void testCheckSegmentsAndSubmitTasks()
273275
objectMapper,
274276
null,
275277
null,
276-
null
278+
null,
279+
new HadoopTaskConfig(null, null)
277280
);
278281
runningTasks.put(Intervals.of("2015-01-02T00Z/2015-01-03T00Z"), task2);
279282
runningVersion.put(Intervals.of("2015-01-02T00Z/2015-01-03T00Z"), "test_version2");

indexing-hadoop/pom.xml

Lines changed: 48 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,11 @@
4848
</exclusion>
4949
</exclusions>
5050
</dependency>
51+
<dependency>
52+
<groupId>org.apache.druid</groupId>
53+
<artifactId>druid-indexing-service</artifactId>
54+
<version>${project.parent.version}</version>
55+
</dependency>
5156

5257
<dependency>
5358
<groupId>commons-io</groupId>
@@ -89,6 +94,18 @@
8994
<groupId>org.eclipse.jetty</groupId>
9095
<artifactId>jetty-client</artifactId>
9196
</dependency>
97+
<dependency>
98+
<groupId>org.apache.commons</groupId>
99+
<artifactId>commons-lang3</artifactId>
100+
</dependency>
101+
<dependency>
102+
<groupId>javax.servlet</groupId>
103+
<artifactId>javax.servlet-api</artifactId>
104+
</dependency>
105+
<dependency>
106+
<groupId>javax.ws.rs</groupId>
107+
<artifactId>jsr311-api</artifactId>
108+
</dependency>
92109

93110
<!-- Tests -->
94111
<dependency>
@@ -130,6 +147,13 @@
130147
<type>test-jar</type>
131148
<scope>test</scope>
132149
</dependency>
150+
<dependency>
151+
<groupId>org.apache.druid</groupId>
152+
<artifactId>druid-indexing-service</artifactId>
153+
<version>${project.parent.version}</version>
154+
<type>test-jar</type>
155+
<scope>test</scope>
156+
</dependency>
133157
<dependency>
134158
<groupId>org.apache.derby</groupId>
135159
<artifactId>derbyclient</artifactId>
@@ -152,7 +176,6 @@
152176
<scope>test</scope>
153177
</dependency>
154178
</dependencies>
155-
156179
<profiles>
157180
<profile>
158181
<id>hadoop3</id>
@@ -197,6 +220,11 @@
197220
<scope>test</scope>
198221
</dependency>
199222
</dependencies>
223+
<properties>
224+
<hadoop-task-libs>
225+
org.apache.hadoop:hadoop-client-api:${hadoop.compile.version},org.apache.hadoop:hadoop-client-runtime:${hadoop.compile.version}
226+
</hadoop-task-libs>
227+
</properties>
200228
</profile>
201229
</profiles>
202230
<build>
@@ -224,7 +252,25 @@
224252
</execution>
225253
</executions>
226254
</plugin>
255+
<plugin>
256+
<artifactId>maven-resources-plugin</artifactId>
257+
<groupId>org.apache.maven.plugins</groupId>
258+
</plugin>
227259
</plugins>
260+
<resources>
261+
<resource>
262+
<directory>src/main/resources</directory>
263+
<includes>
264+
<include>hadoop.indexer.libs.version</include>
265+
</includes>
266+
<filtering>true</filtering>
267+
</resource>
268+
</resources>
269+
<testResources>
270+
<testResource>
271+
<directory>src/test/resources</directory>
272+
<filtering>false</filtering>
273+
</testResource>
274+
</testResources>
228275
</build>
229-
230276
</project>

indexing-service/src/main/java/org/apache/druid/indexing/common/task/HadoopIndexTask.java renamed to indexing-hadoop/src/main/java/org/apache/druid/indexer/HadoopIndexTask.java

Lines changed: 30 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@
1717
* under the License.
1818
*/
1919

20-
package org.apache.druid.indexing.common.task;
20+
package org.apache.druid.indexer;
2121

2222
import com.fasterxml.jackson.annotation.JacksonInject;
2323
import com.fasterxml.jackson.annotation.JsonCreator;
@@ -32,16 +32,7 @@
3232
import com.google.common.collect.ImmutableMap;
3333
import com.google.common.collect.Iterables;
3434
import org.apache.commons.lang3.BooleanUtils;
35-
import org.apache.druid.indexer.DataSegmentAndIndexZipFilePath;
36-
import org.apache.druid.indexer.HadoopDruidDetermineConfigurationJob;
37-
import org.apache.druid.indexer.HadoopDruidIndexerConfig;
38-
import org.apache.druid.indexer.HadoopDruidIndexerJob;
39-
import org.apache.druid.indexer.HadoopIngestionSpec;
40-
import org.apache.druid.indexer.IngestionState;
41-
import org.apache.druid.indexer.JobHelper;
42-
import org.apache.druid.indexer.TaskMetricsGetter;
43-
import org.apache.druid.indexer.TaskMetricsUtils;
44-
import org.apache.druid.indexer.TaskStatus;
35+
import org.apache.druid.annotations.SuppressFBWarnings;
4536
import org.apache.druid.indexer.granularity.ArbitraryGranularitySpec;
4637
import org.apache.druid.indexer.granularity.GranularitySpec;
4738
import org.apache.druid.indexer.path.SegmentMetadataPublisher;
@@ -53,7 +44,8 @@
5344
import org.apache.druid.indexing.common.actions.TimeChunkLockAcquireAction;
5445
import org.apache.druid.indexing.common.actions.TimeChunkLockTryAcquireAction;
5546
import org.apache.druid.indexing.common.config.TaskConfig;
56-
import org.apache.druid.indexing.hadoop.OverlordActionBasedUsedSegmentsRetriever;
47+
import org.apache.druid.indexing.common.task.AbstractTask;
48+
import org.apache.druid.indexing.common.task.Tasks;
5749
import org.apache.druid.indexing.overlord.IndexerMetadataStorageCoordinator;
5850
import org.apache.druid.java.util.common.JodaUtils;
5951
import org.apache.druid.java.util.common.StringUtils;
@@ -90,6 +82,7 @@
9082
import java.util.Set;
9183
import java.util.stream.Collectors;
9284

85+
@SuppressFBWarnings({"NP_NONNULL_PARAM_VIOLATION", "NP_STORE_INTO_NONNULL_FIELD"})
9386
public class HadoopIndexTask extends HadoopTask implements ChatHandler
9487
{
9588
public static final String TYPE = "index_hadoop";
@@ -115,6 +108,9 @@ private static String getTheDataSource(HadoopIngestionSpec spec)
115108
@JsonIgnore
116109
private final AuthorizerMapper authorizerMapper;
117110

111+
@JsonIgnore
112+
private final HadoopTaskConfig hadoopTaskConfig;
113+
118114
@JsonIgnore
119115
private final Optional<ChatHandlerProvider> chatHandlerProvider;
120116

@@ -136,6 +132,7 @@ private static String getTheDataSource(HadoopIngestionSpec spec)
136132
@JsonIgnore
137133
private String errorMsg;
138134

135+
139136
/**
140137
* @param spec is used by the HadoopDruidIndexerJob to set up the appropriate parameters
141138
* for creating Druid index segments. It may be modified.
@@ -156,16 +153,18 @@ public HadoopIndexTask(
156153
@JacksonInject ObjectMapper jsonMapper,
157154
@JsonProperty("context") Map<String, Object> context,
158155
@JacksonInject AuthorizerMapper authorizerMapper,
159-
@JacksonInject ChatHandlerProvider chatHandlerProvider
156+
@JacksonInject ChatHandlerProvider chatHandlerProvider,
157+
@JacksonInject HadoopTaskConfig hadoopTaskConfig
160158
)
161159
{
162160
super(
163-
getOrMakeId(id, TYPE, getTheDataSource(spec)),
161+
AbstractTask.getOrMakeId(id, TYPE, getTheDataSource(spec)),
164162
getTheDataSource(spec),
165163
hadoopDependencyCoordinates == null
166164
? (hadoopCoordinates == null ? null : ImmutableList.of(hadoopCoordinates))
167165
: hadoopDependencyCoordinates,
168-
context
166+
context,
167+
hadoopTaskConfig
169168
);
170169
this.authorizerMapper = authorizerMapper;
171170
this.chatHandlerProvider = Optional.fromNullable(chatHandlerProvider);
@@ -181,6 +180,7 @@ public HadoopIndexTask(
181180
this.spec.getIOConfig().getMetadataUpdateSpec() == null,
182181
"metadataUpdateSpec must be absent"
183182
);
183+
this.hadoopTaskConfig = hadoopTaskConfig;
184184

185185
this.classpathPrefix = classpathPrefix;
186186
this.jsonMapper = Preconditions.checkNotNull(jsonMapper, "null ObjectMappper");
@@ -338,8 +338,8 @@ private TaskStatus runInternal(TaskToolbox toolbox) throws Exception
338338
try {
339339
registerResourceCloserOnAbnormalExit(config -> killHadoopJob());
340340
String hadoopJobIdFile = getHadoopJobIdFileName();
341-
logExtensionsConfig();
342-
final ClassLoader loader = buildClassLoader(toolbox);
341+
HadoopTask.logExtensionsConfig();
342+
final ClassLoader loader = buildClassLoader();
343343
boolean determineIntervals = spec.getDataSchema().getGranularitySpec().inputIntervals().isEmpty();
344344

345345
HadoopIngestionSpec.updateSegmentListIfDatasourcePathSpecIsUsed(
@@ -348,15 +348,15 @@ private TaskStatus runInternal(TaskToolbox toolbox) throws Exception
348348
new OverlordActionBasedUsedSegmentsRetriever(toolbox)
349349
);
350350

351-
Object determinePartitionsInnerProcessingRunner = getForeignClassloaderObject(
352-
"org.apache.druid.indexing.common.task.HadoopIndexTask$HadoopDetermineConfigInnerProcessingRunner",
351+
Object determinePartitionsInnerProcessingRunner = HadoopTask.getForeignClassloaderObject(
352+
"org.apache.druid.indexer.HadoopIndexTask$HadoopDetermineConfigInnerProcessingRunner",
353353
loader
354354
);
355355
determinePartitionsStatsGetter = new InnerProcessingStatsGetter(determinePartitionsInnerProcessingRunner);
356356

357357
String[] determinePartitionsInput = new String[]{
358358
toolbox.getJsonMapper().writeValueAsString(spec),
359-
toolbox.getConfig().getHadoopWorkingPath(),
359+
hadoopTaskConfig.getHadoopWorkingPath(),
360360
toolbox.getSegmentPusher().getPathForHadoop(),
361361
hadoopJobIdFile
362362
};
@@ -418,7 +418,7 @@ private TaskStatus runInternal(TaskToolbox toolbox) throws Exception
418418
lock.assertNotRevoked();
419419
version = lock.getVersion();
420420
} else {
421-
Iterable<TaskLock> locks = getTaskLocks(toolbox.getTaskActionClient());
421+
Iterable<TaskLock> locks = AbstractTask.getTaskLocks(toolbox.getTaskActionClient());
422422
final TaskLock myLock = Iterables.getOnlyElement(locks);
423423
version = myLock.getVersion();
424424
}
@@ -442,8 +442,8 @@ private TaskStatus runInternal(TaskToolbox toolbox) throws Exception
442442

443443
log.info("Setting version to: %s", version);
444444

445-
Object innerProcessingRunner = getForeignClassloaderObject(
446-
"org.apache.druid.indexing.common.task.HadoopIndexTask$HadoopIndexGeneratorInnerProcessingRunner",
445+
Object innerProcessingRunner = HadoopTask.getForeignClassloaderObject(
446+
"org.apache.druid.indexer.HadoopIndexTask$HadoopIndexGeneratorInnerProcessingRunner",
447447
loader
448448
);
449449
buildSegmentsStatsGetter = new InnerProcessingStatsGetter(innerProcessingRunner);
@@ -535,11 +535,11 @@ private void killHadoopJob()
535535
try {
536536
ClassLoader loader = HadoopTask.buildClassLoader(
537537
getHadoopDependencyCoordinates(),
538-
taskConfig.getDefaultHadoopCoordinates()
538+
hadoopTaskConfig.getDefaultHadoopCoordinates()
539539
);
540540

541-
Object killMRJobInnerProcessingRunner = getForeignClassloaderObject(
542-
"org.apache.druid.indexing.common.task.HadoopIndexTask$HadoopKillMRJobIdProcessingRunner",
541+
Object killMRJobInnerProcessingRunner = HadoopTask.getForeignClassloaderObject(
542+
"org.apache.druid.indexer.HadoopIndexTask$HadoopKillMRJobIdProcessingRunner",
543543
loader
544544
);
545545

@@ -576,7 +576,7 @@ private void renameSegmentIndexFilesJob(
576576
final ClassLoader loader = Thread.currentThread().getContextClassLoader();
577577
try {
578578
final Class<?> clazz = loader.loadClass(
579-
"org.apache.druid.indexing.common.task.HadoopIndexTask$HadoopRenameSegmentIndexFilesRunner"
579+
"org.apache.druid.indexer.HadoopIndexTask$HadoopRenameSegmentIndexFilesRunner"
580580
);
581581
Object renameSegmentIndexFilesRunner = clazz.newInstance();
582582

@@ -616,11 +616,11 @@ private void indexerGeneratorCleanupJob(
616616
try {
617617
ClassLoader loader = HadoopTask.buildClassLoader(
618618
getHadoopDependencyCoordinates(),
619-
taskConfig.getDefaultHadoopCoordinates()
619+
hadoopTaskConfig.getDefaultHadoopCoordinates()
620620
);
621621

622-
Object indexerGeneratorCleanupRunner = getForeignClassloaderObject(
623-
"org.apache.druid.indexing.common.task.HadoopIndexTask$HadoopIndexerGeneratorCleanupRunner",
622+
Object indexerGeneratorCleanupRunner = HadoopTask.getForeignClassloaderObject(
623+
"org.apache.druid.indexer.HadoopIndexTask$HadoopIndexerGeneratorCleanupRunner",
624624
loader
625625
);
626626

0 commit comments

Comments
 (0)