Starting Druid Overlord Service...
Feb 10 18:37:26 server01 java[2474]: Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/hadoop/conf/Configuration
Feb 10 18:37:26
server01
java[2474]: at io.druid.storage.hdfs.HdfsStorageDruidModule.configure(HdfsStorageDruidModule.java:93)
Feb 10 18:37:26
server01
java[2474]: at com.google.inject.spi.Elements$RecordingBinder.install(Elements.java:230)
Feb 10 18:37:26
server01
java[2474]: at com.google.inject.spi.Elements.getElements(Elements.java:103)
Feb 10 18:37:26
server01
java[2474]: at com.google.inject.spi.Elements.getElements(Elements.java:94)
Feb 10 18:37:26
server01
java[2474]: at com.google.inject.util.Modules$RealOverriddenModuleBuilder$1.configure(Modules.java:173)
Feb 10 18:37:26
server01
java[2474]: at com.google.inject.AbstractModule.configure(AbstractModule.java:62)
Feb 10 18:37:26
server01
java[2474]: at com.google.inject.spi.Elements$RecordingBinder.install(Elements.java:230)
Feb 10 18:37:26
server01
java[2474]: at com.google.inject.spi.Elements.getElements(Elements.java:103)
Feb 10 18:37:26
server01
java[2474]: at com.google.inject.internal.InjectorShell$Builder.build(InjectorShell.java:136)
Feb 10 18:37:26
server01
java[2474]: at com.google.inject.internal.InternalInjectorCreator.build(InternalInjectorCreator.java:104)
Feb 10 18:37:26
server01
java[2474]: at com.google.inject.Guice.createInjector(Guice.java:96)
Feb 10 18:37:26
server01
java[2474]: at com.google.inject.Guice.createInjector(Guice.java:73)
Feb 10 18:37:26
server01
java[2474]: at com.google.inject.Guice.createInjector(Guice.java:62)
Feb 10 18:37:26
server01
java[2474]: at io.druid.initialization.Initialization.makeInjectorWithModules(Initialization.java:415)
Feb 10 18:37:26
server01
java[2474]: at io.druid.cli.GuiceRunnable.makeInjector(GuiceRunnable.java:55)
Feb 10 18:37:26
server01
java[2474]: at io.druid.cli.ServerRunnable.run(ServerRunnable.java:37)
Feb 10 18:37:26
server01
java[2474]: at io.druid.cli.Main.main(Main.java:99)
Feb 10 18:37:26
server01
java[2474]: Caused by: java.lang.ClassNotFoundException: org.apache.hadoop.conf.Configuration
Feb 10 18:37:26
server01
java[2474]: at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
Feb 10 18:37:26
server01
java[2474]: at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
Feb 10 18:37:26
server01
java[2474]: at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
Feb 10 18:37:26
server01
java[2474]: ... 17 more
druid.extensions.coordinates=["io.druid.extensions:postgresql-metadata-storage","io.druid.extensions:druid-kafka-eight","io.druid.extensions:druid-hdfs-storage","io.druid.extensions:druid-histogram"]
druid.extensions.localRepository=extensions-repo
druid.indexer.task.defaultHadoopCoordinates=["org.apache.hadoop:hadoop-client:2.7.1","org.apache.hadoop:hadoop-hdfs:2.7.1"]
[druid]$ cd druid-0.8.3
[druid]$ java -classpath "config\_common;lib\*" io.druid.cli.Main tools pull-deps
[druid]$ Error: Could not find or load main class io.druid.cli.Main
[Unit]
Description=Druid Historical Node Service
Before=druid-broker.service
After=syslog.target network.target nss-lookup.target druid-overlord.service druid-middlemanager.service druid-coordinator.service
[Service]
Type=simple
WorkingDirectory=/opt/druid
ExecStart=/usr/bin/sh -c "/usr/bin/java -Xms4g -Xmx4g \
-XX:NewSize=2g -XX:MaxNewSize=2g -XX:MaxDirectMemorySize=8g -XX:+UseConcMarkSweepGC -XX:+PrintGCDetails -XX:+PrintGCTimeStamps \
-Duser.timezone=UTC -Dfile.encoding=UTF-8 -Djava.io.tmpdir=/opt/druid/druid-tmp -Djava.util.logging.manager=org.apache.logging.log4j.jul.LogManager \
-classpath config/_common:config/historical:lib/*:$(/usr/hdp/current/hadoop-client/bin/hadoop classpath) io.druid.cli.Main server historical"
Restart=on-failure
LimitNOFILE=10000
User=druid
[Install]
WantedBy=multi-user.target
I ran some quick tests that included using the Druid Indexer for some
re-segmenting,using Tranquility for adding new values and running some Druid
queries, then looking at the logs for exceptions. Hopefully this continues to work.
Just
to restate, I added the hadoop-client and hadoop-hdfs libraries on the
path (As
druid.indexer.task.defaultHadoopCoordinates=["org.apache.hadoop:hadoop-client:2.7.1","org.apache.hadoop:hadoop-hdfs:2.7.1"])
as I am worried Druid doesn't include them at runtime.
My updated Druid Historical Node Service for systemd:
/etc/systemd/system/druid-historical.service
[Unit]
Description=Druid Historical Service
Before=druid-broker.service
After=syslog.target network.target nss-lookup.target druid-overlord.service druid-middlemanager.service druid-coordinator.service
[Service]
Type=simple
WorkingDirectory=/opt/druid
ExecStart=/usr/bin/sh -c
"/usr/bin/java -Xms4g -Xmx4g \
-XX:NewSize=2g -XX:MaxNewSize=2g -XX:MaxDirectMemorySize=8g
-XX:+UseConcMarkSweepGC -XX:+PrintGCDetails -XX:+PrintGCTimeStamps \
-Duser.timezone=UTC -Dfile.encoding=UTF-8
-Djava.io.tmpdir=/opt/druid/druid-tmp
-Djava.util.logging.manager=org.apache.logging.log4j.jul.LogManager \
-classpath config/_common:config/historical:lib/*:$(/opt/druid/druid-classpath.sh) io.druid.cli.Main server historical"
Restart=on-failure
LimitNOFILE=10000
User=druid
[Install]
WantedBy=multi-user.target
My external Druid Classpath configuration file:
/opt/druid/druid-classpath.sh
echo \
"/opt/druid/extensions-repo/org/apache/hadoop/hadoop-client/2.7.1/hadoop-client-2.7.1.jar\
:/opt/druid/extensions-repo/org/apache/hadoop/hadoop-hdfs/2.7.1/hadoop-hdfs-2.7.1.jar\
:/usr/hdp/current/hadoop-client/*\
:/usr/hdp/current/hadoop-client/lib/*\
"
Files extensions-repo.bad/com/sun/jersey/jersey-project/1.9/jersey-project-1.9.pom and extensions-repo.good/com/sun/jersey/jersey-project/1.9/jersey-project-1.9.pom differFiles extensions-repo.bad/commons-beanutils/commons-beanutils-core/1.8.0/commons-beanutils-core-1.8.0.jar and extensions-repo.good/commons-beanutils/commons-beanutils-core/1.8.0/commons-beanutils-core-1.8.0.jar differFiles extensions-repo.bad/commons-collections/commons-collections/3.2.1/commons-collections-3.2.1.jar and extensions-repo.good/commons-collections/commons-collections/3.2.1/commons-collections-3.2.1.jar differFiles extensions-repo.bad/commons-collections/commons-collections/3.2.1/commons-collections-3.2.1.pom and extensions-repo.good/commons-collections/commons-collections/3.2.1/commons-collections-3.2.1.pom differFiles extensions-repo.bad/commons-collections/commons-collections/3.2.1/commons-collections-3.2.1.pom.sha1 and extensions-repo.good/commons-collections/commons-collections/3.2.1/commons-collections-3.2.1.pom.sha1 differFiles extensions-repo.bad/commons-configuration/commons-configuration/1.6/commons-configuration-1.6.jar and extensions-repo.good/commons-configuration/commons-configuration/1.6/commons-configuration-1.6.jar differFiles extensions-repo.bad/commons-httpclient/commons-httpclient/3.1/commons-httpclient-3.1.pom and extensions-repo.good/commons-httpclient/commons-httpclient/3.1/commons-httpclient-3.1.pom differFiles extensions-repo.bad/javax/xml/bind/jaxb-api/2.2.2/jaxb-api-2.2.2.pom and extensions-repo.good/javax/xml/bind/jaxb-api/2.2.2/jaxb-api-2.2.2.pom differFiles extensions-repo.bad/junit/junit/4.11/junit-4.11.pom and extensions-repo.good/junit/junit/4.11/junit-4.11.pom differFiles extensions-repo.bad/log4j/log4j/1.2.14/log4j-1.2.14.pom.sha1 and extensions-repo.good/log4j/log4j/1.2.14/log4j-1.2.14.pom.sha1 differFiles extensions-repo.bad/org/apache/commons/commons-math3/3.1.1/commons-math3-3.1.1.jar and extensions-repo.good/org/apache/commons/commons-math3/3.1.1/commons-math3-3.1.1.jar differFiles extensions-repo.bad/org/apache/commons/commons-parent/9/commons-parent-9.pom and extensions-repo.good/org/apache/commons/commons-parent/9/commons-parent-9.pom differFiles extensions-repo.bad/org/apache/hadoop/hadoop-client/2.3.0/hadoop-client-2.3.0.pom and extensions-repo.good/org/apache/hadoop/hadoop-client/2.3.0/hadoop-client-2.3.0.pom differFiles extensions-repo.bad/org/apache/hadoop/hadoop-common/2.3.0/hadoop-common-2.3.0.jar and extensions-repo.good/org/apache/hadoop/hadoop-common/2.3.0/hadoop-common-2.3.0.jar differFiles extensions-repo.bad/org/apache/zookeeper/zookeeper/3.4.5/zookeeper-3.4.5.jar and extensions-repo.good/org/apache/zookeeper/zookeeper/3.4.5/zookeeper-3.4.5.jar differFiles extensions-repo.bad/org/codehaus/jackson/jackson-core-asl/1.8.8/jackson-core-asl-1.8.8.pom and extensions-repo.good/org/codehaus/jackson/jackson-core-asl/1.8.8/jackson-core-asl-1.8.8.pom differFiles extensions-repo.bad/org/slf4j/slf4j-api/1.7.2/slf4j-api-1.7.2.pom and extensions-repo.good/org/slf4j/slf4j-api/1.7.2/slf4j-api-1.7.2.pom differFiles extensions-repo.bad/org/slf4j/slf4j-parent/1.7.2/slf4j-parent-1.7.2.pom and extensions-repo.good/org/slf4j/slf4j-parent/1.7.2/slf4j-parent-1.7.2.pom differ
$ lltotal 260-rw-r--r--. 1 myapp myapp 240 Feb 10 18:00 aether-edaa6443-c34d-4ed8-a968-a1f177d52311-commons-beanutils-core-1.8.0.jar.sha1-in-progress-rw-r--r--. 1 myapp myapp 246579 Feb 10 18:00 commons-beanutils-core-1.8.0.jar-rw-r--r--. 1 myapp myapp 1639 Feb 10 17:59 commons-beanutils-core-1.8.0.pom-rw-r--r--. 1 myapp myapp 32 Feb 10 17:59 commons-beanutils-core-1.8.0.pom.md5-rw-r--r--. 1 myapp myapp 40 Feb 10 17:59 commons-beanutils-core-1.8.0.pom.sha1
##
# Step 1 : Stop Druid
##
# Step 2 - Option 1: Delete corrupted Maven artifacts
rm druid-0.8.3/extensions-repo
mkdir druid-0.8.3/extensions-repo
# Step 2 - Option 2: Delete corrupted Maven artifacts
cd druid-0.8.3/extensions-repo
find -type f -name "*-in-progress" -exec rm -rf dirname {} \;
# Step 3: Get Maven Artifacts
java -classpath "config/_common:lib/*" io.druid.cli.Main tools pull-deps
##
# Step 4: Start Druid
##