"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[4102],{3905:(e,o,n)=>{n.d(o,{Zo:()=>p,kt:()=>m});var a=n(67294);function t(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 a=Object.getOwnPropertySymbols(e);o&&(a=a.filter((function(o){return Object.getOwnPropertyDescriptor(e,o).enumerable}))),n.push.apply(n,a)}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){t(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,a,t=function(e,o){if(null==e)return{};var n,a,t={},r=Object.keys(e);for(a=0;a<r.length;a++)n=r[a],o.indexOf(n)>=0||(t[n]=e[n]);return t}(e,o);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);for(a=0;a<r.length;a++)n=r[a],o.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(t[n]=e[n])}return t}var d=a.createContext({}),l=function(e){var o=a.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 a.createElement(d.Provider,{value:o},e.children)},c="mdxType",u={inlineCode:"code",wrapper:function(e){var o=e.children;return a.createElement(a.Fragment,{},o)}},h=a.forwardRef((function(e,o){var n=e.components,t=e.mdxType,r=e.originalType,d=e.parentName,p=s(e,["components","mdxType","originalType","parentName"]),c=l(n),h=t,m=c["".concat(d,".").concat(h)]||c[h]||u[h]||r;return n?a.createElement(m,i(i({ref:o},p),{},{components:n})):a.createElement(m,i({ref:o},p))}));function m(e,o){var n=arguments,t=o&&o.mdxType;if("string"==typeof e||t){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:t,i[1]=s;for(var l=2;l<r;l++)i[l]=n[l];return a.createElement.apply(null,i)}return a.createElement.apply(null,n)}h.displayName="MDXCreateElement"},60199:(e,o,n)=>{n.r(o),n.d(o,{assets:()=>p,contentTitle:()=>d,default:()=>m,frontMatter:()=>s,metadata:()=>l,toc:()=>c});var a=n(87462),t=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/27.0.0/operations/other-hadoop.md",sourceDirName:"operations",slug:"/operations/other-hadoop",permalink:"/docs/27.0.0/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/27.0.0/operations/migrate-from-firehose"},next:{title:"dump-segment tool",permalink:"/docs/27.0.0/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,t.Z)(e,i);return(0,r.kt)(h,(0,a.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/27.0.0/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/27.0.0/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/27.0.0/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/27.0.0/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/27.0.0/configuration/#extensions"},"Configuration"),").")),(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"hadoop-client:2.8.5")," is the default version of the\xa0Hadoop client bundled with Druid for both purposes. 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/27.0.0/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/27.0.0/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/27.0.0/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/27.0.0/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}}]);