Hi Luoc, I have already given the host name. Below is the complete file for your reference. Not sure where to give the hostname.
# Licensed to the Apache Software Foundation (ASF) under one # or more contributor license agreements. See the NOTICE file # distributed with this work for additional information # regarding copyright ownership. The ASF licenses this file # to you under the Apache License, Version 2.0 (the # "License"); you may not use this file except in compliance # with the License. You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. # # This file tells Drill to consider this module when class path scanning. # This file can also include any supplementary configuration information. # This file is in HOCON format, see https://github.com/typesafehub/config/blob/master/HOCON.md for more information. drill.logical.function.packages += "org.apache.drill.exec.expr.fn.impl" drill.exec: { cluster-id: "drillcluster" rpc: { user: { server: { port: 31010 threads: 1 } client: { threads: 1 } }, bit: { server: { port : 31011, retry:{ count: 7200, delay: 500 }, threads: 1 } }, use.ip : false }, operator: { packages += "org.apache.drill.exec.physical.config" }, optimizer: { implementation: "org.apache.drill.exec.opt.IdentityOptimizer" }, functions: ["org.apache.drill.expr.fn.impl"], storage: { packages += "org.apache.drill.exec.store", file: { text: { buffer.size: 262144, batch.size: 4000 }, partition.column.label: "dir" }, # The action on the storage-plugins-override.conf after it's use. # Possible values are "none" (default), "rename", "remove" action_on_plugins_override_file: "none" }, zk: { connect: "10.81.68.6:2181,10.81.68.110:2181,10.81.70.139:2181", root: "user/pstore", refresh: 500, timeout: 5000, retry: { count: 7200, delay: 500 } # This option controls whether Drill specifies ACLs when it creates znodes. # If this is 'false', then anyone has all privileges for all Drill znodes. # This corresponds to ZOO_OPEN_ACL_UNSAFE. # Setting this flag to 'true' enables the provider specified in "acl_provider" apply_secure_acl: false, # This option specified the ACL provider to be used by Drill. # Custom ACL providers can be provided in the Drillbit classpath and Drill can be made to pick them # by changing this option. # Note: This option has no effect if "apply_secure_acl" is 'false' # # The default "creator-all" will setup ACLs such that # - Only the Drillbit user will have all privileges(create, delete, read, write, admin). Same as ZOO_CREATOR_ALL_ACL # - Other users will only be able to read the cluster-discovery(list of Drillbits in the cluster) znodes. # acl_provider: "creator-all" }, http: { enabled: true, ssl_enabled: false, port: 8047 session_max_idle_secs: 3600, # Default value 1hr cors: { enabled: false, allowedOrigins: ["null"], allowedMethods: ["GET", "POST", "HEAD", "OPTIONS"], allowedHeaders: ["X-Requested-With", "Content-Type", "Accept", "Origin"], credentials: true }, auth: { # Http Auth mechanisms to configure. If not provided but user.auth is enabled # then default value is ["FORM"]. mechanisms: ["BASIC", "FORM", "SPNEGO"], # Spnego principal to be used by WebServer when Spnego authentication is enabled. spnego.principal: "HTTP://<localhost>" # Location to keytab file for above spnego principal spnego.keytab: "<keytab_file_location>"; }, jetty: { server: { # development option which allows to log Jetty server state after start dumpAfterStart: false, # Optional params to set on Jetty's org.eclipse.jetty.util.ssl.SslContextFactory when drill.exec.http.ssl_enabled sslContextFactory: { # allows to specify cert to use when multiple non-SNI certificates are available. certAlias: "certAlias", # path to file that contains Certificate Revocation List crlPath: "/etc/file.crl", # enable Certificate Revocation List Distribution Points Support enableCRLDP: false, # enable On-Line Certificate Status Protocol support enableOCSP: false, # when set to "HTTPS" hostname verification will be enabled endpointIdentificationAlgorithm: "HTTPS", # accepts exact cipher suite names and/or regular expressions. excludeCipherSuites: ["SSL_DHE_DSS_WITH_DES_CBC_SHA"], # list of TLS/SSL protocols to exclude excludeProtocols: ["TLSv1.1"], # accepts exact cipher suite names and/or regular expressions. includeCipherSuites: ["SSL_DHE_RSA_EXPORT_WITH_DES40_CBC_SHA", "SSL_DHE_DSS_EXPORT_WITH_DES40_CBC_SHA"], # list of TLS/SSL protocols to include includeProtocols: ["TLSv1.2", "TLSv1.3"], # the algorithm name (default "SunX509") used by the javax.net.ssl.KeyManagerFactory keyManagerFactoryAlgorithm: "SunX509", # classname of custom java.security.Provider implementation keyStoreProvider: null, # type of key store (default "JKS") keyStoreType: "JKS", # max number of intermediate certificates in sertificate chain maxCertPathLength: -1, # set true if ssl needs client authentication needClientAuth: false, # location of the OCSP Responder ocspResponderURL: "", # javax.net.ssl.SSLContext provider provider: null, # whether TLS renegotiation is allowed renegotiationAllowed: false, # number of renegotions allowed for this connection (-1 for unlimited, default 5) . renegotiationLimit: 5, # algorithm name for java.security.SecurityRandom instances. # https://docs.oracle.com/javase/8/docs/technotes/guides/security/StandardNames.html#SecureRandom secureRandomAlgorithm: "NativePRNG", # set the flag to enable SSL Session caching sessionCachingEnabled: false, # set if you want to bound session cache size sslSessionCacheSize: -1, # session timeout in seconds. sslSessionTimeout: -1, # the algorithm name (default "SunX509") used by the javax.net.ssl.TrustManagerFactory trustManagerFactoryAlgorithm: "SunX509", # provider of the trust store trustStoreProvider: null, # type of the trust store (default "JKS") trustStoreType: "JKS", # sets whether the local cipher suites preference should be honored. useCipherSuiteOrder: false, # true if SSL certificates have to be validated validateCerts: false, # true if SSL certificates of the peer have to be validated validatePeerCerts: false, # true if SSL wants client authentication. wantClientAuth: false }, response: { # any response headers with constant values may be configured like this headers: { "X-XSS-Protection": "1; mode=block", "X-Content-Type-Options": "nosniff", "Strict-Transport-Security": "max-age=31536000;includeSubDomains", # NOTE: 'unsafe-inline' is required until DRILL-7642 is resolved "Content-Security-Policy": "default-src https:; script-src 'unsafe-inline' https:; style-src 'unsafe-inline' https:; font-src data: https:; img-src data: https:" } } } } }, # Below SSL parameters need to be set for custom transport layer settings. ssl: { #If not provided then the default value is java system property javax.net.ssl.keyStore value keyStorePath: "/keystore.file", #If not provided then the default value is java system property javax.net.ssl.keyStorePassword value keyStorePassword: "ks_passwd", #If not provided then the default value is java system property javax.net.ssl.trustStore value trustStorePath: "/truststore.file", #If not provided then the default value is java system property javax.net.ssl.trustStorePassword value trustStorePassword: "ts_passwd" }, functions: ["org.apache.drill.expr.fn.impl"], network: { start: 35000 }, work: { max.width.per.endpoint: 5, global.max.width: 100, affinity.factor: 1.2, executor.threads: 4 }, sys.store.provider: { class: "org.apache.drill.exec.store.sys.store.provider.ZookeeperPersistentStoreProvider", # The following section is used by ZkPStoreProvider zk: { blobroot: "file:///var/log/drill" }, # The following section is only required by LocalPStoreProvider local: { path: "/tmp/drill", write: true } }, impersonation: { enabled: false, max_chained_user_hops: 3 }, security.user.auth { enabled: false, packages += "org.apache.drill.exec.rpc.user.security", # There are 2 implementations available out of the box with annotation UserAuthenticatorTemplate # Annotation type "pam" is providing implementation using JPAM # Annotation type "pam4j" is providing implementation using libpam4j # Based on annotation type configured below corresponding authenticator is used. impl: "pam", pam_profiles: [ "sudo", "login" ] }, trace: { directory: "/tmp/drill-trace", filesystem: "file:///" }, tmp: { directories: ["/tmp/drill"], filesystem: "drill-local:///" }, buffer:{ impl: "org.apache.drill.exec.work.batch.UnlimitedRawBatchBuffer", size: "100", spooling: { delete: false, size: 100000000 } }, cache.hazel.subnets: ["*.*.*.*"], spill: { # These options are common to all spilling operators. # They can be overriden, per operator (but this is just for # backward compatibility, and may be deprecated in the future) directories : [ "/tmp/drill/spill" ], fs : "file:///" } sort: { purge.threshold : 100, external: { batch.size : 4000, spill: { batch.size : 4000, group.size : 100, threshold : 200, # The 2 options below override the common ones # they should be deprecated in the future directories : [ "/tmp/drill/spill" ], fs : "file:///" } } }, hashagg: { # The partitions divide the work inside the hashagg, to ease # handling spilling. This initial figure is tuned down when # memory is limited. # Setting this option to 1 disables spilling ! num_partitions: 32, spill: { # The 2 options below override the common ones # they should be deprecated in the future directories : [ "/tmp/drill/spill" ], fs : "file:///" } }, memory: { top.max: 1000000000000, operator: { max: 20000000000, initial: 10000000 }, fragment: { max: 20000000000, initial: 20000000 } }, scan: { threadpool_size: 8, decode_threadpool_size: 1 }, debug.error_on_leak: true, # Settings for Dynamic UDFs (see https://issues.apache.org/jira/browse/DRILL-4726 for details). udf: { # number of retry attempts to update remote function registry # if registry version was changed during update retry-attempts: 10, directory: { # Override this property if custom file system should be used to create remote directories # instead of default taken from Hadoop configuration fs: "hdfs:///", # Set this property if custom absolute root should be used for remote directories root: "user/udf" } }, # Settings for Temporary Tables (see https://issues.apache.org/jira/browse/DRILL-4956 for details). # Temporary table can be created ONLY in default temporary workspace. # Full workspace name should be indicated (including schema and workspace separated by dot). # Workspace MUST be file-based and writable. Workspace name is case-sensitive. default_temporary_workspace: "dfs.tmp" # Enable and provide additional parameters for Client-Server communication over SSL # see also the javax.net.ssl parameters below security.user.encryption.ssl: { #Set this to true to enable all client server communication to occur over SSL. enabled: false, #key password is optional if it is the same as the keystore password keyPassword: "key_passwd", #Optional handshakeTimeout in milliseconds. Default is 10000 ms (10 seconds) handshakeTimeout: 10000, #protocol is optional. Drill will default to TLSv1.2. Valid values depend on protocol versions # enabled for tje underlying securrity provider. For JSSE these are : SSL, SSLV2, SSLV3, # TLS, TLSV1, TLSv1.1, TLSv1.2 protocol: "TLSv1.2", #ssl provider. May be "JDK" or "OPENSSL". Default is "JDK" provider: "JDK" } # HTTP client proxy configuration net_proxy: { # HTTP URL. Omit if from a Linux env var # See https://www.shellhacks.com/linux-proxy-server-settings-set-proxy-command-line/ http_url: "", # Explicit HTTP setup, used if URL is not set http: { type: "none", # none, http, socks. Blank same as none. host: "", port: 80, user_name: "", password: "" }, # HTTPS URL. Omit if from a Linux env var https_url: "", # Explicit HTTPS setup, used if URL is not set https: { type: "none", # none, http, socks. Blank same as none. host: "", port: 80, user_name: "", password: "" } } }, drill.metrics : { context: "drillbit", jmx: { enabled : true }, log: { enabled : false, interval : 60 } } On Fri, Oct 1, 2021 at 3:12 PM luoc <l...@apache.org> wrote: > Hi Prabhakar, > Check your config. The following error message shows that a valid host > name is missing : > > "Caused by: java.io.IOException: Incomplete HDFS URI, no host: hdfs:///" > > > 2021年10月1日 下午5:26,Prabhakar Bhosaale <bhosale....@gmail.com> 写道: > > > > Hi Team, > > I have installed drill in distributed mode on hadoop 3 node cluster. > > > > I get following error in the drillbit.out file when try to start the > > drillbit > > > > ----- ERROR---- > > 12:34:46.984 [main-EventThread] ERROR > o.a.c.framework.imps.EnsembleTracker > > - Invalid config event received: > > {server.1=machinename1:2888:3888:participant, version=0, server.3= > > machinename2:2888:3888:participant, server.2= > > machinename3:2888:3888:participant} > > Exception in thread "main" > > org.apache.drill.exec.exception.DrillbitStartupException: Failure during > > initial startup of Drillbit. > > at org.apache.drill.exec.server.Drillbit.start(Drillbit.java:588) > > at org.apache.drill.exec.server.Drillbit.start(Drillbit.java:554) > > at org.apache.drill.exec.server.Drillbit.main(Drillbit.java:550) > > Caused by: org.apache.drill.common.exceptions.DrillRuntimeException: > Error > > during file system hdfs:/// setup > > at > > > org.apache.drill.common.exceptions.DrillRuntimeException.create(DrillRuntimeException.java:48) > > at > > > org.apache.drill.exec.expr.fn.registry.RemoteFunctionRegistry.prepareAreas(RemoteFunctionRegistry.java:231) > > at > > > org.apache.drill.exec.expr.fn.registry.RemoteFunctionRegistry.init(RemoteFunctionRegistry.java:109) > > at org.apache.drill.exec.server.Drillbit.run(Drillbit.java:233) > > at org.apache.drill.exec.server.Drillbit.start(Drillbit.java:584) > > ... 2 more > > Caused by: java.io.IOException: Incomplete HDFS URI, no host: hdfs:/// > > at > > > org.apache.hadoop.hdfs.DistributedFileSystem.initialize(DistributedFileSystem.java:170) > > at org.apache.hadoop.fs.FileSystem.createFileSystem(FileSystem.java:3375) > > at org.apache.hadoop.fs.FileSystem.access$200(FileSystem.java:125) > > at > org.apache.hadoop.fs.FileSystem$Cache.getInternal(FileSystem.java:3424) > > at org.apache.hadoop.fs.FileSystem$Cache.get(FileSystem.java:3392) > > at org.apache.hadoop.fs.FileSystem.get(FileSystem.java:485) > > at org.apache.hadoop.fs.FileSystem.get(FileSystem.java:233) > > at > > > org.apache.drill.exec.expr.fn.registry.RemoteFunctionRegistry.prepareAreas(RemoteFunctionRegistry.java:229) > > ... 5 more > > ----ERROR END---- > > > > THe drill version is - 1.19 > > Haddop version is - 3.3.1 > > Zookeeper version is - 3.71 > > > > I have following settings done > > > > zoo.cfg file > > server.1=machine1:2888:3888 > > server.2= machine2:2888:3888 > > server.3= machine3:2888:3888 > > > > drill-override.conf > > zk: { > > connect: "machine1:2181, machine2:2181, machine3:2181", > > root: "user/pstore", > > refresh: 500, > > timeout: 5000, > > retry: { > > count: 7200, > > delay: 500 > > } > > > > udf: { > > # number of retry attempts to update remote function registry > > # if registry version was changed during update > > retry-attempts: 10, > > directory: { > > # Override this property if custom file system should be used to > > create remote directories > > # instead of default taken from Hadoop configuration > > fs: "hdfs:///", > > # Set this property if custom absolute root should be used for > remote > > directories > > root: "user/udf" > > } > > > > Any help and pointer is appreciated. thx > > > > Regards > > Prabhakar > >