"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[8911],{3905:(e,o,n)=>{n.d(o,{Zo:()=>p,kt:()=>m});var t=n(67294);function a(e,o,n){return o in e?Object.defineProperty(e,o,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[o]=n,e}function r(e,o){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var t=Object.getOwnPropertySymbols(e);o&&(t=t.filter((function(o){return Object.getOwnPropertyDescriptor(e,o).enumerable}))),n.push.apply(n,t)}return n}function i(e){for(var o=1;o<arguments.length;o++){var n=null!=arguments[o]?arguments[o]:{};o%2?r(Object(n),!0).forEach((function(o){a(e,o,n[o])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):r(Object(n)).forEach((function(o){Object.defineProperty(e,o,Object.getOwnPropertyDescriptor(n,o))}))}return e}function s(e,o){if(null==e)return{};var n,t,a=function(e,o){if(null==e)return{};var n,t,a={},r=Object.keys(e);for(t=0;t<r.length;t++)n=r[t],o.indexOf(n)>=0||(a[n]=e[n]);return a}(e,o);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);for(t=0;t<r.length;t++)n=r[t],o.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(a[n]=e[n])}return a}var d=t.createContext({}),l=function(e){var o=t.useContext(d),n=o;return e&&(n="function"==typeof e?e(o):i(i({},o),e)),n},p=function(e){var o=l(e.components);return t.createElement(d.Provider,{value:o},e.children)},c="mdxType",u={inlineCode:"code",wrapper:function(e){var o=e.children;return t.createElement(t.Fragment,{},o)}},h=t.forwardRef((function(e,o){var n=e.components,a=e.mdxType,r=e.originalType,d=e.parentName,p=s(e,["components","mdxType","originalType","parentName"]),c=l(n),h=a,m=c["".concat(d,".").concat(h)]||c[h]||u[h]||r;return n?t.createElement(m,i(i({ref:o},p),{},{components:n})):t.createElement(m,i({ref:o},p))}));function m(e,o){var n=arguments,a=o&&o.mdxType;if("string"==typeof e||a){var r=n.length,i=new Array(r);i[0]=h;var s={};for(var d in o)hasOwnProperty.call(o,d)&&(s[d]=o[d]);s.originalType=e,s[c]="string"==typeof e?e:a,i[1]=s;for(var l=2;l<r;l++)i[l]=n[l];return t.createElement.apply(null,i)}return t.createElement.apply(null,n)}h.displayName="MDXCreateElement"},38073:(e,o,n)=>{n.r(o),n.d(o,{assets:()=>p,contentTitle:()=>d,default:()=>m,frontMatter:()=>s,metadata:()=>l,toc:()=>c});var t=n(87462),a=n(63366),r=(n(67294),n(3905)),i=["components"],s={id:"other-hadoop",title:"Working with different versions of Apache Hadoop"},d=void 0,l={unversionedId:"operations/other-hadoop",id:"operations/other-hadoop",title:"Working with different versions of Apache Hadoop",description:"\x3c!--",source:"@site/docs/latest/operations/other-hadoop.md",sourceDirName:"operations",slug:"/operations/other-hadoop",permalink:"/docs/latest/operations/other-hadoop",draft:!1,tags:[],version:"current",frontMatter:{id:"other-hadoop",title:"Working with different versions of Apache Hadoop"},sidebar:"docs",previous:{title:"Migrate from firehose",permalink:"/docs/latest/operations/migrate-from-firehose"},next:{title:"dump-segment tool",permalink:"/docs/latest/operations/dump-segment"}},p={},c=[{value:"Tip #1: Place Hadoop XMLs on Druid classpath",id:"tip-1-place-hadoop-xmls-on-druid-classpath",level:2},{value:"Tip #2: Classloader modification on Hadoop (Map/Reduce jobs only)",id:"tip-2-classloader-modification-on-hadoop-mapreduce-jobs-only",level:2},{value:"Overriding specific classes",id:"overriding-specific-classes",level:3},{value:"Tip #3: Use specific versions of Hadoop libraries",id:"tip-3-use-specific-versions-of-hadoop-libraries",level:2},{value:"Preferred: Load using Druid&#39;s standard mechanism",id:"preferred-load-using-druids-standard-mechanism",level:3},{value:"Alternative: Append your Hadoop jars to the Druid classpath",id:"alternative-append-your-hadoop-jars-to-the-druid-classpath",level:3},{value:"Notes on specific Hadoop distributions",id:"notes-on-specific-hadoop-distributions",level:2},{value:"CDH",id:"cdh",level:3}],u={toc:c},h="wrapper";function m(e){var o=e.components,n=(0,a.Z)(e,i);return(0,r.kt)(h,(0,t.Z)({},u,n,{components:o,mdxType:"MDXLayout"}),(0,r.kt)("p",null,"Apache Druid can interact with Hadoop in two ways:"),(0,r.kt)("ol",null,(0,r.kt)("li",{parentName:"ol"},(0,r.kt)("a",{parentName:"li",href:"/docs/latest/development/extensions-core/hdfs"},"Use HDFS for deep storage")," using the druid-hdfs-storage extension."),(0,r.kt)("li",{parentName:"ol"},(0,r.kt)("a",{parentName:"li",href:"/docs/latest/ingestion/hadoop"},"Batch-load data from Hadoop")," using Map/Reduce jobs.")),(0,r.kt)("p",null,"These are not necessarily linked together; you can load data with Hadoop jobs into a non-HDFS deep storage (like S3),\nand you can use HDFS for deep storage even if you're loading data from streams rather than using Hadoop jobs."),(0,r.kt)("p",null,"For best results, use these tips when configuring Druid to interact with your favorite Hadoop distribution."),(0,r.kt)("h2",{id:"tip-1-place-hadoop-xmls-on-druid-classpath"},"Tip #1: Place Hadoop XMLs on Druid classpath"),(0,r.kt)("p",null,"Place your Hadoop configuration XMLs (core-site.xml, hdfs-site.xml, yarn-site.xml, mapred-site.xml) on the classpath\nof your Druid processes. You can do this by copying them into ",(0,r.kt)("inlineCode",{parentName:"p"},"conf/druid/_common/core-site.xml"),",\n",(0,r.kt)("inlineCode",{parentName:"p"},"conf/druid/_common/hdfs-site.xml"),", and so on. This allows Druid to find your Hadoop cluster and properly submit jobs."),(0,r.kt)("h2",{id:"tip-2-classloader-modification-on-hadoop-mapreduce-jobs-only"},"Tip #2: Classloader modification on Hadoop (Map/Reduce jobs only)"),(0,r.kt)("p",null,"Druid uses a number of libraries that are also likely present on your Hadoop cluster, and if these libraries conflict,\nyour Map/Reduce jobs can fail. This problem can be avoided by enabling classloader isolation using the Hadoop job\nproperty ",(0,r.kt)("inlineCode",{parentName:"p"},"mapreduce.job.classloader = true"),". This instructs Hadoop to use a separate classloader for Druid dependencies\nand for Hadoop's own dependencies."),(0,r.kt)("p",null,"If your version of Hadoop does not support this functionality, you can also try setting the property\n",(0,r.kt)("inlineCode",{parentName:"p"},"mapreduce.job.user.classpath.first = true"),". This instructs Hadoop to prefer loading Druid's version of a library when\nthere is a conflict."),(0,r.kt)("p",null,"Generally, you should only set one of these parameters, not both."),(0,r.kt)("p",null,"These properties can be set in either one of the following ways:"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"Using the task definition, e.g. add ",(0,r.kt)("inlineCode",{parentName:"li"},'"mapreduce.job.classloader": "true"')," to the ",(0,r.kt)("inlineCode",{parentName:"li"},"jobProperties")," of the ",(0,r.kt)("inlineCode",{parentName:"li"},"tuningConfig")," of your indexing task (see the ",(0,r.kt)("a",{parentName:"li",href:"/docs/latest/ingestion/hadoop"},"Hadoop batch ingestion documentation"),")."),(0,r.kt)("li",{parentName:"ul"},"Using system properties, e.g. on the MiddleManager set ",(0,r.kt)("inlineCode",{parentName:"li"},"druid.indexer.runner.javaOpts=... -Dhadoop.mapreduce.job.classloader=true")," in ",(0,r.kt)("a",{parentName:"li",href:"/docs/latest/configuration/#middlemanager-configuration"},"Middle Manager configuration"),".")),(0,r.kt)("h3",{id:"overriding-specific-classes"},"Overriding specific classes"),(0,r.kt)("p",null,"When ",(0,r.kt)("inlineCode",{parentName:"p"},"mapreduce.job.classloader = true"),", it is also possible to specifically define which classes should be loaded from the hadoop system classpath and which should be loaded from job-supplied JARs."),(0,r.kt)("p",null,"This is controlled by defining class inclusion/exclusion patterns in the ",(0,r.kt)("inlineCode",{parentName:"p"},"mapreduce.job.classloader.system.classes")," property in the ",(0,r.kt)("inlineCode",{parentName:"p"},"jobProperties")," of ",(0,r.kt)("inlineCode",{parentName:"p"},"tuningConfig"),"."),(0,r.kt)("p",null,"For example, some community members have reported version incompatibility errors with the Validator class:"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre"},"Error: java.lang.ClassNotFoundException: javax.validation.Validator\n")),(0,r.kt)("p",null,"The following ",(0,r.kt)("inlineCode",{parentName:"p"},"jobProperties")," excludes ",(0,r.kt)("inlineCode",{parentName:"p"},"javax.validation.")," classes from being loaded from the system classpath, while including those from ",(0,r.kt)("inlineCode",{parentName:"p"},"java.,javax.,org.apache.commons.logging.,org.apache.log4j.,org.apache.hadoop."),"."),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre"},'"jobProperties": {\n  "mapreduce.job.classloader": "true",\n  "mapreduce.job.classloader.system.classes": "-javax.validation.,java.,javax.,org.apache.commons.logging.,org.apache.log4j.,org.apache.hadoop."\n}\n')),(0,r.kt)("p",null,(0,r.kt)("a",{parentName:"p",href:"https://hadoop.apache.org/docs/stable/hadoop-mapreduce-client/hadoop-mapreduce-client-core/mapred-default.xml"},"mapred-default.xml")," documentation contains more information about this property."),(0,r.kt)("h2",{id:"tip-3-use-specific-versions-of-hadoop-libraries"},"Tip #3: Use specific versions of Hadoop libraries"),(0,r.kt)("p",null,"Druid loads Hadoop client libraries from two different locations. Each set of libraries is loaded in an isolated\nclassloader."),(0,r.kt)("ol",null,(0,r.kt)("li",{parentName:"ol"},"HDFS deep storage uses jars from ",(0,r.kt)("inlineCode",{parentName:"li"},"extensions/druid-hdfs-storage/")," to read and write Druid data on HDFS."),(0,r.kt)("li",{parentName:"ol"},"Batch ingestion uses jars from ",(0,r.kt)("inlineCode",{parentName:"li"},"hadoop-dependencies/")," to submit Map/Reduce jobs (location customizable via the\n",(0,r.kt)("inlineCode",{parentName:"li"},"druid.extensions.hadoopDependenciesDir")," runtime property; see ",(0,r.kt)("a",{parentName:"li",href:"/docs/latest/configuration/#extensions"},"Configuration"),").")),(0,r.kt)("p",null,"The default version of the Hadoop client bundled with Druid is ",(0,r.kt)("inlineCode",{parentName:"p"},"3.3.6"),". This works with\nmany Hadoop distributions (the version does not necessarily need to match), but if you run into issues, you can instead\nhave Druid load libraries that exactly match your distribution. To do this, either copy the jars from your Hadoop\ncluster, or use the ",(0,r.kt)("inlineCode",{parentName:"p"},"pull-deps")," tool to download the jars from a Maven repository."),(0,r.kt)("h3",{id:"preferred-load-using-druids-standard-mechanism"},"Preferred: Load using Druid's standard mechanism"),(0,r.kt)("p",null,"If you have issues with HDFS deep storage, you can switch your Hadoop client libraries by recompiling the\ndruid-hdfs-storage extension using an alternate version of the Hadoop client libraries. You can do this by editing\nthe main Druid pom.xml and rebuilding the distribution by running ",(0,r.kt)("inlineCode",{parentName:"p"},"mvn package"),"."),(0,r.kt)("p",null,"If you have issues with Map/Reduce jobs, you can switch your Hadoop client libraries without rebuilding Druid. You can\ndo this by adding a new set of libraries to the ",(0,r.kt)("inlineCode",{parentName:"p"},"hadoop-dependencies/")," directory (or another directory specified by\ndruid.extensions.hadoopDependenciesDir) and then using ",(0,r.kt)("inlineCode",{parentName:"p"},"hadoopDependencyCoordinates")," in the\n",(0,r.kt)("a",{parentName:"p",href:"/docs/latest/ingestion/hadoop"},"Hadoop Index Task")," to specify the Hadoop dependencies you want Druid to load."),(0,r.kt)("p",null,"Example:"),(0,r.kt)("p",null,"Suppose you specify ",(0,r.kt)("inlineCode",{parentName:"p"},"druid.extensions.hadoopDependenciesDir=/usr/local/druid_tarball/hadoop-dependencies"),", and you have downloaded\n",(0,r.kt)("inlineCode",{parentName:"p"},"hadoop-client")," 2.3.0 and 2.4.0, either by copying them from your Hadoop cluster or by using ",(0,r.kt)("inlineCode",{parentName:"p"},"pull-deps")," to download\nthe jars from a Maven repository. Then underneath ",(0,r.kt)("inlineCode",{parentName:"p"},"hadoop-dependencies"),", your jars should look like this:"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre"},"hadoop-dependencies/\n\u2514\u2500\u2500 hadoop-client\n    \u251c\u2500\u2500 2.3.0\n    \u2502\xa0\xa0 \u251c\u2500\u2500 activation-1.1.jar\n    \u2502\xa0\xa0 \u251c\u2500\u2500 avro-1.7.4.jar\n    \u2502\xa0\xa0 \u251c\u2500\u2500 commons-beanutils-1.7.0.jar\n    \u2502\xa0\xa0 \u251c\u2500\u2500 commons-beanutils-core-1.8.0.jar\n    \u2502\xa0\xa0 \u251c\u2500\u2500 commons-cli-1.2.jar\n    \u2502\xa0\xa0 \u251c\u2500\u2500 commons-codec-1.4.jar\n    ..... lots of jars\n    \u2514\u2500\u2500 2.4.0\n        \u251c\u2500\u2500 activation-1.1.jar\n        \u251c\u2500\u2500 avro-1.7.4.jar\n        \u251c\u2500\u2500 commons-beanutils-1.7.0.jar\n        \u251c\u2500\u2500 commons-beanutils-core-1.8.0.jar\n        \u251c\u2500\u2500 commons-cli-1.2.jar\n        \u251c\u2500\u2500 commons-codec-1.4.jar\n    ..... lots of jars\n")),(0,r.kt)("p",null,"As you can see, under ",(0,r.kt)("inlineCode",{parentName:"p"},"hadoop-client"),", there are two sub-directories, each denotes a version of ",(0,r.kt)("inlineCode",{parentName:"p"},"hadoop-client"),"."),(0,r.kt)("p",null,"Next, use ",(0,r.kt)("inlineCode",{parentName:"p"},"hadoopDependencyCoordinates")," in ",(0,r.kt)("a",{parentName:"p",href:"/docs/latest/ingestion/hadoop"},"Hadoop Index Task")," to specify the Hadoop dependencies you want Druid to load."),(0,r.kt)("p",null,"For example, in your Hadoop Index Task spec file, you can write:"),(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},'"hadoopDependencyCoordinates": ["org.apache.hadoop:hadoop-client:2.4.0"]')),(0,r.kt)("p",null,"This instructs Druid to load hadoop-client 2.4.0 when processing the task. What happens behind the scene is that Druid first looks for a folder\ncalled ",(0,r.kt)("inlineCode",{parentName:"p"},"hadoop-client")," underneath ",(0,r.kt)("inlineCode",{parentName:"p"},"druid.extensions.hadoopDependenciesDir"),", then looks for a folder called ",(0,r.kt)("inlineCode",{parentName:"p"},"2.4.0"),"\nunderneath ",(0,r.kt)("inlineCode",{parentName:"p"},"hadoop-client"),", and upon successfully locating these folders, hadoop-client 2.4.0 is loaded."),(0,r.kt)("h3",{id:"alternative-append-your-hadoop-jars-to-the-druid-classpath"},"Alternative: Append your Hadoop jars to the Druid classpath"),(0,r.kt)("p",null,"You can also load Hadoop client libraries in Druid's main classloader, rather than an isolated classloader. This\nmechanism is relatively easy to reason about, but it also means that you have to ensure that all dependency jars on the\nclasspath are compatible. That is, Druid makes no provisions while using this method to maintain class loader isolation\nso you must make sure that the jars on your classpath are mutually compatible."),(0,r.kt)("ol",null,(0,r.kt)("li",{parentName:"ol"},"Set ",(0,r.kt)("inlineCode",{parentName:"li"},"druid.indexer.task.defaultHadoopCoordinates=[]"),". By setting this to an empty list, Druid will not load any other Hadoop dependencies except the ones specified in the classpath."),(0,r.kt)("li",{parentName:"ol"},"Append your Hadoop jars to Druid's classpath. Druid will load them into the system.")),(0,r.kt)("h2",{id:"notes-on-specific-hadoop-distributions"},"Notes on specific Hadoop distributions"),(0,r.kt)("p",null,"If the tips above do not solve any issues you are having with HDFS deep storage or Hadoop batch indexing, you may\nhave luck with one of the following suggestions contributed by the Druid community."),(0,r.kt)("h3",{id:"cdh"},"CDH"),(0,r.kt)("p",null,"Members of the community have reported dependency conflicts between the version of Jackson used in CDH and Druid when running a Mapreduce job like:"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre"},"java.lang.VerifyError: class com.fasterxml.jackson.datatype.guava.deser.HostAndPortDeserializer overrides final method deserialize.(Lcom/fasterxml/jackson/core/JsonParser;Lcom/fasterxml/jackson/databind/DeserializationContext;)Ljava/lang/Object;\n")),(0,r.kt)("p",null,(0,r.kt)("strong",{parentName:"p"},"Preferred workaround")),(0,r.kt)("p",null,'First, try the tip under "Classloader modification on Hadoop" above. More recent versions of CDH have been reported to\nwork with the classloader isolation option (',(0,r.kt)("inlineCode",{parentName:"p"},"mapreduce.job.classloader = true"),")."),(0,r.kt)("p",null,(0,r.kt)("strong",{parentName:"p"},"Alternate workaround - 1")),(0,r.kt)("p",null,"You can try editing Druid's pom.xml dependencies to match the version of Jackson in your Hadoop version and recompile Druid."),(0,r.kt)("p",null,"For more about building Druid, please see ",(0,r.kt)("a",{parentName:"p",href:"/docs/latest/development/build"},"Building Druid"),"."),(0,r.kt)("p",null,(0,r.kt)("strong",{parentName:"p"},"Alternate workaround - 2")),(0,r.kt)("p",null,"Another workaround solution is to build a custom fat jar of Druid using ",(0,r.kt)("a",{parentName:"p",href:"http://www.scala-sbt.org/"},"sbt"),", which manually excludes all the conflicting Jackson dependencies, and then put this fat jar in the classpath of the command that starts Overlord indexing service. To do this, please follow the following steps."),(0,r.kt)("p",null,"(1) Download and install sbt."),(0,r.kt)("p",null,"(2) Make a new directory named 'druid_build'."),(0,r.kt)("p",null,"(3) Cd to 'druid_build' and create the build.sbt file with the content ",(0,r.kt)("a",{parentName:"p",href:"/docs/latest/operations/use_sbt_to_build_fat_jar"},"here"),"."),(0,r.kt)("p",null,"You can always add more building targets or remove the ones you don't need."),(0,r.kt)("p",null,"(4) In the same directory create a new directory named 'project'."),(0,r.kt)("p",null,"(5) Put the druid source code into 'druid_build/project'."),(0,r.kt)("p",null,"(6) Create a file 'druid_build/project/assembly.sbt' with content as follows."),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre"},'addSbtPlugin("com.eed3si9n" % "sbt-assembly" % "0.13.0")\n')),(0,r.kt)("p",null,"(7) In the 'druid_build' directory, run 'sbt assembly'."),(0,r.kt)("p",null,"(8) In the 'druid_build/target/scala-2.10' folder, you will find the fat jar you just build."),(0,r.kt)("p",null,"(9) Make sure the jars you've uploaded has been completely removed. The HDFS directory is by default '/tmp/druid-indexing/classpath'."),(0,r.kt)("p",null,"(10) Include the fat jar in the classpath when you start the indexing service. Make sure you've removed 'lib/*' from your classpath because now the fat jar includes all you need."),(0,r.kt)("p",null,(0,r.kt)("strong",{parentName:"p"},"Alternate workaround - 3")),(0,r.kt)("p",null,"If sbt is not your choice, you can also use ",(0,r.kt)("inlineCode",{parentName:"p"},"maven-shade-plugin")," to make a fat jar: relocation all Jackson packages will resolve it too. In this way, druid will not be affected by Jackson library embedded in hadoop. Please follow the steps below:"),(0,r.kt)("p",null,"(1) Add all extensions you needed to ",(0,r.kt)("inlineCode",{parentName:"p"},"services/pom.xml")," like"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-xml"},"<dependency>\n     <groupId>org.apache.druid.extensions</groupId>\n     <artifactId>druid-avro-extensions</artifactId>\n     <version>${project.parent.version}</version>\n </dependency>\n\n <dependency>\n     <groupId>org.apache.druid.extensions</groupId>\n     <artifactId>druid-parquet-extensions</artifactId>\n     <version>${project.parent.version}</version>\n </dependency>\n\n <dependency>\n     <groupId>org.apache.druid.extensions</groupId>\n     <artifactId>druid-hdfs-storage</artifactId>\n     <version>${project.parent.version}</version>\n </dependency>\n\n <dependency>\n     <groupId>org.apache.druid.extensions</groupId>\n     <artifactId>mysql-metadata-storage</artifactId>\n     <version>${project.parent.version}</version>\n </dependency>\n")),(0,r.kt)("p",null,"(2) Shade Jackson packages and assemble a fat jar."),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-xml"},'<plugin>\n     <groupId>org.apache.maven.plugins</groupId>\n     <artifactId>maven-shade-plugin</artifactId>\n     <executions>\n         <execution>\n             <phase>package</phase>\n             <goals>\n                 <goal>shade</goal>\n             </goals>\n             <configuration>\n                 <outputFile>\n                     ${project.build.directory}/${project.artifactId}-${project.version}-selfcontained.jar\n                 </outputFile>\n                 <relocations>\n                     <relocation>\n                         <pattern>com.fasterxml.jackson</pattern>\n                         <shadedPattern>shade.com.fasterxml.jackson</shadedPattern>\n                     </relocation>\n                 </relocations>\n                 <artifactSet>\n                     <includes>\n                         <include>*:*</include>\n                     </includes>\n                 </artifactSet>\n                 <filters>\n                     <filter>\n                         <artifact>*:*</artifact>\n                         <excludes>\n                             <exclude>META-INF/*.SF</exclude>\n                             <exclude>META-INF/*.DSA</exclude>\n                             <exclude>META-INF/*.RSA</exclude>\n                         </excludes>\n                     </filter>\n                 </filters>\n                 <transformers>\n                     <transformer implementation="org.apache.maven.plugins.shade.resource.ServicesResourceTransformer"/>\n                 </transformers>\n             </configuration>\n         </execution>\n     </executions>\n </plugin>\n')),(0,r.kt)("p",null,"Copy out ",(0,r.kt)("inlineCode",{parentName:"p"},"services/target/xxxxx-selfcontained.jar")," after ",(0,r.kt)("inlineCode",{parentName:"p"},"mvn install")," in project root for further usage."),(0,r.kt)("p",null,"(3) run hadoop indexer (post an indexing task is not possible now) as below. ",(0,r.kt)("inlineCode",{parentName:"p"},"lib")," is not needed anymore. As hadoop indexer is a standalone tool, you don't have to replace the jars of your running services:"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-bash"},"java -Xmx32m \\\n  -Dfile.encoding=UTF-8 -Duser.timezone=UTC \\\n  -classpath config/hadoop:config/overlord:config/_common:$SELF_CONTAINED_JAR:$HADOOP_DISTRIBUTION/etc/hadoop \\\n  -Djava.security.krb5.conf=$KRB5 \\\n  org.apache.druid.cli.Main index hadoop \\\n  $config_path\n")))}m.isMDXComponent=!0}}]);