{
  "configurations" : [
    {
      "hdfs-logsearch-conf" : {
        "properties_attributes" : { },
        "properties" : {
          "component_mappings" : "NAMENODE:hdfs_namenode;DATANODE:hdfs_datanode;SECONDARY_NAMENODE:hdfs_secondarynamenode;JOURNALNODE:hdfs_journalnode;ZKFC:hdfs_zkfc;NFS_GATEWAY:hdfs_nfs3",
          "content" : "\n{\n  \"input\":[\n    {\n      \"type\":\"hdfs_datanode\",\n      \"rowtype\":\"service\",\n      \"path\":\"{{default('/configurations/hadoop-env/hdfs_log_dir_prefix', '/var/log/hadoop')}}/{{default('configurations/hadoop-env/hdfs_user', 'hdfs')}}/hadoop-{{default('configurations/hadoop-env/hdfs_user', 'hdfs')}}-datanode-*.log\"\n    },\n    {\n      \"type\":\"hdfs_namenode\",\n      \"rowtype\":\"service\",\n      \"path\":\"{{default('/configurations/hadoop-env/hdfs_log_dir_prefix', '/var/log/hadoop')}}/{{default('configurations/hadoop-env/hdfs_user', 'hdfs')}}/hadoop-{{default('configurations/hadoop-env/hdfs_user', 'hdfs')}}-namenode-*.log\"\n    },\n    {\n      \"type\":\"hdfs_journalnode\",\n      \"rowtype\":\"service\",\n      \"path\":\"{{default('/configurations/hadoop-env/hdfs_log_dir_prefix', '/var/log/hadoop')}}/{{default('configurations/hadoop-env/hdfs_user', 'hdfs')}}/hadoop-{{default('configurations/hadoop-env/hdfs_user', 'hdfs')}}-journalnode-*.log\"\n    },\n    {\n      \"type\":\"hdfs_secondarynamenode\",\n      \"rowtype\":\"service\",\n      \"path\":\"{{default('/configurations/hadoop-env/hdfs_log_dir_prefix', '/var/log/hadoop')}}/{{default('configurations/hadoop-env/hdfs_user', 'hdfs')}}/hadoop-{{default('configurations/hadoop-env/hdfs_user', 'hdfs')}}-secondarynamenode-*.log\"\n    },\n    {\n      \"type\":\"hdfs_zkfc\",\n      \"rowtype\":\"service\",\n      \"path\":\"{{default('/configurations/hadoop-env/hdfs_log_dir_prefix', '/var/log/hadoop')}}/{{default('configurations/hadoop-env/hdfs_user', 'hdfs')}}/hadoop-{{default('configurations/hadoop-env/hdfs_user', 'hdfs')}}-zkfc-*.log\"\n    },\n    {\n      \"type\":\"hdfs_nfs3\",\n      \"rowtype\":\"service\",\n      \"path\":\"{{default('/configurations/hadoop-env/hdfs_log_dir_prefix', '/var/log/hadoop')}}/{{default('configurations/hadoop-env/hdfs_user', 'hdfs')}}/hadoop-{{default('configurations/hadoop-env/hdfs_user', 'hdfs')}}-nfs3-*.log\"\n    },\n    {\n      \"type\":\"hdfs_audit\",\n      \"rowtype\":\"audit\",\n      \"is_enabled\":\"true\",\n      \"add_fields\":{\n        \"logType\":\"HDFSAudit\",\n        \"enforcer\":\"hadoop-acl\",\n        \"repoType\":\"1\",\n        \"repo\":\"hdfs\"\n      },\n      \"path\":\"{{default('/configurations/hadoop-env/hdfs_log_dir_prefix', '/var/log/hadoop')}}/{{default('configurations/hadoop-env/hdfs_user', 'hdfs')}}/hdfs-audit.log\"\n    }\n   ],\n  \"filter\":[\n    {\n      \"filter\":\"grok\",\n      \"conditions\":{\n        \"fields\":{\n          \"type\":[\n            \"hdfs_datanode\",\n            \"hdfs_journalnode\",\n            \"hdfs_secondarynamenode\",\n            \"hdfs_namenode\",\n            \"hdfs_zkfc\",\n            \"hdfs_nfs3\"\n          ]\n         }\n       },\n      \"log4j_format\":\"%d{ISO8601} %-5p %c{2} (%F:%M(%L)) - %m%n\",\n      \"multiline_pattern\":\"^(%{TIMESTAMP_ISO8601:logtime})\",\n      \"message_pattern\":\"(?m)^%{TIMESTAMP_ISO8601:logtime}%{SPACE}%{LOGLEVEL:level}%{SPACE}%{JAVACLASS:logger_name}%{SPACE}\\\\(%{JAVAFILE:file}:%{JAVAMETHOD:method}\\\\(%{INT:line_number}\\\\)\\\\)%{SPACE}-%{SPACE}%{GREEDYDATA:log_message}\",\n      \"post_map_values\":{\n        \"logtime\":{\n          \"map_date\":{\n            \"target_date_pattern\":\"yyyy-MM-dd HH:mm:ss,SSS\"\n          }\n        }\n       }\n     },\n    {\n      \"filter\":\"grok\",\n      \"conditions\":{\n        \"fields\":{\n          \"type\":[\n            \"hdfs_audit\"\n          ]\n         }\n       },\n      \"log4j_format\":\"%d{ISO8601} %-5p %c{2} (%F:%M(%L)) - %m%n\",\n      \"multiline_pattern\":\"^(%{TIMESTAMP_ISO8601:evtTime})\",\n      \"message_pattern\":\"(?m)^%{TIMESTAMP_ISO8601:evtTime}%{SPACE}%{LOGLEVEL:level}%{SPACE}%{JAVACLASS:logger_name}:%{SPACE}%{GREEDYDATA:log_message}\",\n      \"post_map_values\":{\n        \"evtTime\":{\n          \"map_date\":{\n            \"target_date_pattern\":\"yyyy-MM-dd HH:mm:ss,SSS\"\n          }\n         }\n       }\n     },\n    {\n      \"filter\":\"keyvalue\",\n      \"sort_order\":1,\n      \"conditions\":{\n        \"fields\":{\n          \"type\":[\n            \"hdfs_audit\"\n          ]\n         }\n       },\n      \"source_field\":\"log_message\",\n      \"value_split\":\"=\",\n      \"field_split\":\"\\t\",\n      \"post_map_values\":{\n        \"src\":{\n          \"map_fieldname\":{\n            \"new_fieldname\":\"resource\"\n          }\n         },\n        \"ip\":{\n          \"map_fieldname\":{\n            \"new_fieldname\":\"cliIP\"\n          }\n         },\n        \"allowed\":[\n          {\n            \"map_fieldvalue\":{\n              \"pre_value\":\"true\",\n              \"post_value\":\"1\"\n            }\n           },\n          {\n            \"map_fieldvalue\":{\n              \"pre_value\":\"false\",\n              \"post_value\":\"0\"\n            }\n           },\n          {\n            \"map_fieldname\":{\n              \"new_fieldname\":\"result\"\n            }\n           }\n         ],\n        \"cmd\":{\n          \"map_fieldname\":{\n            \"new_fieldname\":\"action\"\n          }\n         },\n        \"proto\":{\n          \"map_fieldname\":{\n            \"new_fieldname\":\"cliType\"\n          }\n         },\n        \"callerContext\":{\n          \"map_fieldname\":{\n            \"new_fieldname\":\"req_caller_id\"\n          }\n         }\n       }\n     },\n    {\n      \"filter\":\"grok\",\n      \"sort_order\":2,\n      \"source_field\":\"ugi\",\n      \"remove_source_field\":\"false\",\n      \"conditions\":{\n        \"fields\":{\n          \"type\":[\n            \"hdfs_audit\"\n          ]\n         }\n       },\n      \"message_pattern\":\"%{USERNAME:p_user}.+auth:%{USERNAME:p_authType}.+via %{USERNAME:k_user}.+auth:%{USERNAME:k_authType}|%{USERNAME:user}.+auth:%{USERNAME:authType}|%{USERNAME:x_user}\",\n      \"post_map_values\":{\n        \"user\":{\n          \"map_fieldname\":{\n            \"new_fieldname\":\"reqUser\"\n          }\n         },\n        \"x_user\":{\n          \"map_fieldname\":{\n            \"new_fieldname\":\"reqUser\"\n          }\n         },\n        \"p_user\":{\n          \"map_fieldname\":{\n            \"new_fieldname\":\"reqUser\"\n          }\n         },\n        \"k_user\":{\n          \"map_fieldname\":{\n            \"new_fieldname\":\"proxyUsers\"\n          }\n         },\n        \"p_authType\":{\n          \"map_fieldname\":{\n            \"new_fieldname\":\"authType\"\n          }\n         },\n        \"k_authType\":{\n          \"map_fieldname\":{\n            \"new_fieldname\":\"proxyAuthType\"\n          }\n         }\n       }\n     }\n   ]\n }",
          "service_name" : "HDFS"
        }
      }
    },
    {
      "nifi-properties-env" : {
        "properties_attributes" : { },
        "properties" : {
          "content" : "      \n# Core Properties #\nnifi.version={{nifi_dirname}}\nnifi.flow.configuration.file=./conf/flow.xml.gz\nnifi.flow.configuration.archive.enabled=true\nnifi.flow.configuration.archive.dir=./conf/archive/\nnifi.flow.configuration.archive.max.time=30 days\nnifi.flow.configuration.archive.max.storage=500 MB\nnifi.flowcontroller.autoResumeState=true\nnifi.flowcontroller.graceful.shutdown.period=10 sec\nnifi.flowservice.writedelay.interval=500 ms\nnifi.administrative.yield.duration=30 sec\n# If a component has no work to do (is \"bored\"), how long should we wait before checking again for work?\nnifi.bored.yield.duration=10 millis\n\nnifi.authority.provider.configuration.file=./conf/authorizers.xml\nnifi.login.identity.provider.configuration.file=./conf/login-identity-providers.xml\nnifi.templates.directory=./conf/templates\nnifi.ui.banner.text=\nnifi.ui.autorefresh.interval=30 sec\nnifi.nar.library.directory=./lib\nnifi.nar.working.directory=/var/lib/nifi/work/nar/\nnifi.documentation.working.directory=/var/lib/nifi/work/docs/components\n\n####################\n# State Management #\n####################\nnifi.state.management.configuration.file=./conf/state-management.xml\n# The ID of the local state provider\nnifi.state.management.provider.local=local-provider\n# The ID of the cluster-wide state provider. This will be ignored if NiFi is not clustered but must be populated if running in a cluster.\nnifi.state.management.provider.cluster=zk-provider\n# Specifies whether or not this instance of NiFi should run an embedded ZooKeeper server\nnifi.state.management.embedded.zookeeper.start=false\n# Properties file that provides the ZooKeeper properties to use if nifi.state.management.embedded.zookeeper.start is set to true\nnifi.state.management.embedded.zookeeper.properties=./conf/zookeeper.properties\n\n\n# H2 Settings\nnifi.database.directory=/var/lib/nifi/database_repository\nnifi.h2.url.append=;LOCK_TIMEOUT=25000;WRITE_DELAY=0;AUTO_SERVER=FALSE\n\n# FlowFile Repository\nnifi.flowfile.repository.implementation=org.apache.nifi.controller.repository.WriteAheadFlowFileRepository\nnifi.flowfile.repository.directory=/var/lib/nifi/flowfile_repository\nnifi.flowfile.repository.partitions=256\nnifi.flowfile.repository.checkpoint.interval=2 mins\nnifi.flowfile.repository.always.sync=false\n\nnifi.swap.manager.implementation=org.apache.nifi.controller.FileSystemSwapManager\nnifi.queue.swap.threshold=20000\nnifi.swap.in.period=5 sec\nnifi.swap.in.threads=1\nnifi.swap.out.period=5 sec\nnifi.swap.out.threads=4\n\n# Content Repository\nnifi.content.repository.implementation=org.apache.nifi.controller.repository.FileSystemRepository\nnifi.content.claim.max.appendable.size=10 MB\nnifi.content.claim.max.flow.files=100\nnifi.content.repository.directory.default=/var/lib/nifi/content_repository\nnifi.content.repository.archive.max.retention.period=12 hours\nnifi.content.repository.archive.max.usage.percentage=50%\nnifi.content.repository.archive.enabled=true\nnifi.content.repository.always.sync=false\nnifi.content.viewer.url=/nifi-content-viewer/\n\n# Provenance Repository Properties\nnifi.provenance.repository.implementation=org.apache.nifi.provenance.PersistentProvenanceRepository\n\n# Persistent Provenance Repository Properties\nnifi.provenance.repository.directory.default=/var/lib/nifi/provenance_repository\nnifi.provenance.repository.max.storage.time=24 hours\nnifi.provenance.repository.max.storage.size=1 GB\nnifi.provenance.repository.rollover.time=30 secs\nnifi.provenance.repository.rollover.size=100 MB\nnifi.provenance.repository.query.threads=2\nnifi.provenance.repository.index.threads=1\nnifi.provenance.repository.compress.on.rollover=true\nnifi.provenance.repository.always.sync=false\nnifi.provenance.repository.journal.count=16\n# Comma-separated list of fields. Fields that are not indexed will not be searchable. Valid fields are: \n# EventType, FlowFileUUID, Filename, TransitURI, ProcessorID, AlternateIdentifierURI, Relationship, Details\nnifi.provenance.repository.indexed.fields=EventType, FlowFileUUID, Filename, ProcessorID, Relationship\n# FlowFile Attributes that should be indexed and made searchable.  Some examples to consider are filename, uuid, mime.type\nnifi.provenance.repository.indexed.attributes=\n# Large values for the shard size will result in more Java heap usage when searching the Provenance Repository\n# but should provide better performance\nnifi.provenance.repository.index.shard.size=500 MB\n# Indicates the maximum length that a FlowFile attribute can be when retrieving a Provenance Event from\n# the repository. If the length of any attribute exceeds this value, it will be truncated when the event is retrieved.\nnifi.provenance.repository.max.attribute.length=65536\n\n# Volatile Provenance Respository Properties\nnifi.provenance.repository.buffer.size=100000\n\n# Component Status Repository\nnifi.components.status.repository.implementation=org.apache.nifi.controller.status.history.VolatileComponentStatusRepository\nnifi.components.status.repository.buffer.size=1440\nnifi.components.status.snapshot.frequency=1 min\n\n# Site to Site properties\nnifi.remote.input.host=\nnifi.remote.input.secure=false\nnifi.remote.input.socket.port=\nnifi.remote.input.http.enabled=true\nnifi.remote.input.http.transaction.ttl=30 sec\n\n# web properties #\nnifi.web.war.directory=./lib\nnifi.web.http.host={{nifi_node_host}}\nnifi.web.http.port={{nifi_port}}\nnifi.web.https.host=\nnifi.web.https.port=\nnifi.web.jetty.working.directory=/var/lib/nifi/work/jetty\nnifi.web.jetty.threads=200\n\n# security properties #\nnifi.sensitive.props.key=\nnifi.sensitive.props.key.protected=\nnifi.sensitive.props.algorithm=PBEWITHMD5AND256BITAES-CBC-OPENSSL\nnifi.sensitive.props.provider=BC\nnifi.sensitive.props.additional.keys=\n\nnifi.security.keystore=\nnifi.security.keystoreType=\nnifi.security.keystorePasswd=\nnifi.security.keyPasswd=\nnifi.security.truststore=\nnifi.security.truststoreType=\nnifi.security.truststorePasswd=\nnifi.security.needClientAuth=\nnifi.security.user.authorizer=file-provider\nnifi.security.user.login.identity.provider=\nnifi.security.ocsp.responder.url=\nnifi.security.ocsp.responder.certificate=\n\n# Identity Mapping Properties #\n# These properties allow normalizing user identities such that identities coming from different identity providers\n# (certificates, LDAP, Kerberos) can be treated the same internally in NiFi. The following example demonstrates normalizing\n# DNs from certificates and principals from Kerberos into a common identity string:\n#\n# nifi.security.identity.mapping.pattern.dn=^CN=(.*?), OU=(.*?), O=(.*?), L=(.*?), ST=(.*?), C=(.*?)$\n# nifi.security.identity.mapping.value.dn=$1@$2\n# nifi.security.identity.mapping.pattern.kerb=^(.*?)/instance@(.*?)$\n# nifi.security.identity.mapping.value.kerb=$1@$2\n\n# cluster common properties (all nodes must have same values) #\nnifi.cluster.protocol.heartbeat.interval=5 sec\nnifi.cluster.protocol.is.secure=false\n\n# cluster node properties (only configure for cluster nodes) #\nnifi.cluster.is.node={{nifi_is_node}}\nnifi.cluster.node.address={{nifi_node_host}}\nnifi.cluster.node.protocol.port={{nifi_node_protocol_port}}\nnifi.cluster.node.protocol.threads=10\nnifi.cluster.node.event.history.size=25\nnifi.cluster.node.connection.timeout=5 sec\nnifi.cluster.node.read.timeout=5 sec\nnifi.cluster.firewall.file=\nnifi.cluster.flow.election.max.wait.time=5 mins\nnifi.cluster.flow.election.max.candidates={{nifi_num_nodes}}\n\n# zookeeper properties, used for cluster management #\nnifi.zookeeper.connect.string={{zookeeper_quorum}}\nnifi.zookeeper.connect.timeout=3 secs\nnifi.zookeeper.session.timeout=3 secs\nnifi.zookeeper.root.node=/nifi\n\n# kerberos #\nnifi.kerberos.krb5.file=\n\n# kerberos service principle #\nnifi.kerberos.service.principal=\nnifi.kerberos.service.keytab.location=\n\n# kerberos spnego principle #\nnifi.kerberos.spnego.principal=\nnifi.kerberos.spnego.keytab.location=\nnifi.kerberos.spnego.authentication.expiration=12 hours\n\n# external properties files for variable registry\n# supports a comma delimited list of file locations\nnifi.variable.registry.properties="
        }
      }
    },
    {
      "hive-logsearch-conf" : {
        "properties_attributes" : { },
        "properties" : {
          "component_mappings" : "HIVE_METASTORE:hive_metastore;HIVE_SERVER:hive_hiveserver2;WEBHCAT_SERVER:webhcat_server",
          "content" : "\n{\n  \"input\":[\n    {\n      \"type\":\"hive_hiveserver2\",\n      \"rowtype\":\"service\",\n      \"path\":\"{{default('/configurations/hive-env/hive_log_dir', '/var/log/hive')}}/hiveserver2.log\"\n    },\n    {\n      \"type\":\"hive_metastore\",\n      \"rowtype\":\"service\",\n      \"path\":\"{{default('/configurations/hive-env/hive_log_dir', '/var/log/hive')}}/hivemetastore.log\"\n    },\n    {\n      \"type\": \"webhcat_server\",\n      \"rowntype\":\"service\",\n      \"path\":\"{{default('configurations/hive-env/hcat_log_dir', '/var/log/webhcat')}}/webhcat.log\"\n    }\n  ],\n  \"filter\":[\n    {\n      \"filter\":\"grok\",\n      \"conditions\":{\n        \"fields\":{\n          \"type\":[\n            \"hive_hiveserver2\",\n            \"hive_metastore\"\n          ]\n         }\n       },\n      \"log4j_format\":\"%d{ISO8601} %-5p [%t]: %c{2} (%F:%M(%L)) - %m%n\",\n      \"multiline_pattern\":\"^(%{TIMESTAMP_ISO8601:logtime})\",\n      \"message_pattern\":\"(?m)^%{TIMESTAMP_ISO8601:logtime}%{SPACE}%{LOGLEVEL:level}%{SPACE}\\\\[%{DATA:thread_name}\\\\]:%{SPACE}%{JAVACLASS:logger_name}%{SPACE}\\\\(%{JAVAFILE:file}:%{JAVAMETHOD:method}\\\\(%{INT:line_number}\\\\)\\\\)%{SPACE}-%{SPACE}%{GREEDYDATA:log_message}\",\n      \"post_map_values\":{\n        \"logtime\":{\n          \"map_date\":{\n            \"target_date_pattern\":\"yyyy-MM-dd HH:mm:ss,SSS\"\n          }\n         }\n       }\n     },\n    {\n      \"filter\":\"grok\",\n      \"conditions\":{\n        \"fields\":{\n          \"type\":[\n            \"webhcat_server\"\n          ]\n         }\n       },\n      \"log4j_format\":\" %-5p | %d{DATE} | %c | %m%n\",\n      \"multiline_pattern\":\"^(%{SPACE}%{LOGLEVEL:level}%{CUSTOM_SEPARATOR}%{CUSTOM_DATESTAMP:logtime})\",\n      \"message_pattern\":\"(?m)^%{SPACE}%{LOGLEVEL:level}%{CUSTOM_SEPARATOR}%{CUSTOM_DATESTAMP:logtime}%{CUSTOM_SEPARATOR}%{JAVACLASS:file}%{CUSTOM_SEPARATOR}%{GREEDYDATA:log_message}\",\n      \"post_map_values\":{\n        \"logtime\":{\n          \"map_date\":{\n            \"target_date_pattern\":\"dd MMM yyyy HH:mm:ss,SSS\"\n          }\n         },\n        \"level\":{\n           \"map_fieldvalue\":{\n             \"pre_value\":\"WARNING\",\n             \"post_value\":\"WARN\"\n            }\n        }\n       }\n     }\n   ]\n }",
          "service_name" : "Hive"
        }
      }
    },
    {
      "zeppelin-log4j-properties" : {
        "properties_attributes" : { },
        "properties" : {
          "log4j_properties_content" : "\nlog4j.rootLogger = INFO, dailyfile\nlog4j.appender.stdout = org.apache.log4j.ConsoleAppender\nlog4j.appender.stdout.layout = org.apache.log4j.PatternLayout\nlog4j.appender.stdout.layout.ConversionPattern=%5p [%d] ({%t} %F[%M]:%L) - %m%n\nlog4j.appender.dailyfile.DatePattern=.yyyy-MM-dd\nlog4j.appender.dailyfile.Threshold = INFO\nlog4j.appender.dailyfile = org.apache.log4j.DailyRollingFileAppender\nlog4j.appender.dailyfile.File = ${zeppelin.log.file}\nlog4j.appender.dailyfile.layout = org.apache.log4j.PatternLayout\nlog4j.appender.dailyfile.layout.ConversionPattern=%5p [%d] ({%t} %F[%M]:%L) - %m%n"
        }
      }
    },
    {
      "zoo.cfg" : {
        "properties_attributes" : { },
        "properties" : {
          "autopurge.purgeInterval" : "24",
          "dataDir" : "/hadoop/zookeeper",
          "autopurge.snapRetainCount" : "30",
          "clientPort" : "2181",
          "initLimit" : "10",
          "tickTime" : "3000",
          "syncLimit" : "5"
        }
      }
    },
    {
      "zeppelin-config" : {
        "properties_attributes" : { },
        "properties" : {
          "zeppelin.notebook.dir" : "notebook",
          "zeppelin.ssl.keystore.type" : "JKS",
          "zeppelin.ssl.truststore.path" : "conf/truststore",
          "zeppelin.websocket.max.text.message.size" : "1024000",
          "zeppelin.notebook.homescreen.hide" : "false",
          "zeppelin.interpreters" : "org.apache.zeppelin.spark.SparkInterpreter,org.apache.zeppelin.spark.PySparkInterpreter,org.apache.zeppelin.spark.SparkSqlInterpreter,org.apache.zeppelin.spark.DepInterpreter,org.apache.zeppelin.markdown.Markdown,org.apache.zeppelin.angular.AngularInterpreter,org.apache.zeppelin.shell.ShellInterpreter,org.apache.zeppelin.jdbc.JDBCInterpreter,org.apache.zeppelin.phoenix.PhoenixInterpreter,org.apache.zeppelin.livy.LivySparkInterpreter,org.apache.zeppelin.livy.LivyPySparkInterpreter,org.apache.zeppelin.livy.LivySparkRInterpreter,org.apache.zeppelin.livy.LivySparkSQLInterpreter",
          "zeppelin.notebook.s3.user" : "user",
          "zeppelin.server.port" : "9995",
          "zeppelin.ssl" : "false",
          "zeppelin.notebook.homescreen" : " ",
          "zeppelin.notebook.storage" : "org.apache.zeppelin.notebook.repo.VFSNotebookRepo",
          "zeppelin.interpreter.connect.timeout" : "30000",
          "zeppelin.anonymous.allowed" : "true",
          "zeppelin.interpreter.dir" : "interpreter",
          "zeppelin.ssl.truststore.type" : "JKS",
          "zeppelin.ssl.keystore.path" : "conf/keystore",
          "zeppelin.notebook.s3.bucket" : "zeppelin",
          "zeppelin.server.allowed.origins" : "*",
          "zeppelin.interpreter.group.order" : "spark,angular,jdbc,livy,md,sh",
          "zeppelin.server.addr" : "0.0.0.0",
          "zeppelin.ssl.client.auth" : "false"
        }
      }
    },
    {
      "zookeeper-log4j" : {
        "properties_attributes" : { },
        "properties" : {
          "zookeeper_log_max_backup_size" : "10",
          "zookeeper_log_number_of_backup_files" : "10",
          "content" : "\n#\n#\n# Licensed to the Apache Software Foundation (ASF) under one\n# or more contributor license agreements.  See the NOTICE file\n# distributed with this work for additional information\n# regarding copyright ownership.  The ASF licenses this file\n# to you under the Apache License, Version 2.0 (the\n# \"License\"); you may not use this file except in compliance\n# with the License.  You may obtain a copy of the License at\n#\n#   http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing,\n# software distributed under the License is distributed on an\n# \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n# KIND, either express or implied.  See the License for the\n# specific language governing permissions and limitations\n# under the License.\n#\n#\n#\n\n#\n# ZooKeeper Logging Configuration\n#\n\n# DEFAULT: console appender only\nlog4j.rootLogger=INFO, CONSOLE, ROLLINGFILE\n\n# Example with rolling log file\n#log4j.rootLogger=DEBUG, CONSOLE, ROLLINGFILE\n\n# Example with rolling log file and tracing\n#log4j.rootLogger=TRACE, CONSOLE, ROLLINGFILE, TRACEFILE\n\n#\n# Log INFO level and above messages to the console\n#\nlog4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender\nlog4j.appender.CONSOLE.Threshold=INFO\nlog4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout\nlog4j.appender.CONSOLE.layout.ConversionPattern=%d{ISO8601} - %-5p [%t:%C{1}@%L] - %m%n\n\n#\n# Add ROLLINGFILE to rootLogger to get log file output\n#    Log DEBUG level and above messages to a log file\nlog4j.appender.ROLLINGFILE=org.apache.log4j.RollingFileAppender\nlog4j.appender.ROLLINGFILE.Threshold=DEBUG\nlog4j.appender.ROLLINGFILE.File={{zk_log_dir}}/zookeeper.log\n\n# Max log file size of 10MB\nlog4j.appender.ROLLINGFILE.MaxFileSize={{zookeeper_log_max_backup_size}}MB\n# uncomment the next line to limit number of backup files\n#log4j.appender.ROLLINGFILE.MaxBackupIndex={{zookeeper_log_number_of_backup_files}}\n\nlog4j.appender.ROLLINGFILE.layout=org.apache.log4j.PatternLayout\nlog4j.appender.ROLLINGFILE.layout.ConversionPattern=%d{ISO8601} - %-5p [%t:%C{1}@%L] - %m%n\n\n\n#\n# Add TRACEFILE to rootLogger to get log file output\n#    Log DEBUG level and above messages to a log file\nlog4j.appender.TRACEFILE=org.apache.log4j.FileAppender\nlog4j.appender.TRACEFILE.Threshold=TRACE\nlog4j.appender.TRACEFILE.File=zookeeper_trace.log\n\nlog4j.appender.TRACEFILE.layout=org.apache.log4j.PatternLayout\n### Notice we are including log4j's NDC here (%x)\nlog4j.appender.TRACEFILE.layout.ConversionPattern=%d{ISO8601} - %-5p [%t:%C{1}@%L][%x] - %m%n"
        }
      }
    },
    {
      "nifi-bootstrap-notification-services-env" : {
        "properties_attributes" : { },
        "properties" : {
          "content" : "\n            <!--\n            Licensed to the Apache Software Foundation (ASF) under one or more\n            contributor license agreements.  See the NOTICE file distributed with\n            this work for additional information regarding copyright ownership.\n            The ASF licenses this file to You under the Apache License, Version 2.0\n            (the \"License\"); you may not use this file except in compliance with\n            the License.  You may obtain a copy of the License at\n            http://www.apache.org/licenses/LICENSE-2.0\n            Unless required by applicable law or agreed to in writing, software\n            distributed under the License is distributed on an \"AS IS\" BASIS,\n            WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n            See the License for the specific language governing permissions and\n            limitations under the License.\n            -->\n            <services>\n            <!-- This file is used to define how interested parties are notified when events in NiFi's lifecycle occur. -->\n            <!-- The format of this file is:\n            <services>\n            <service>\n            <id>service-identifier</id>\n            <class>org.apache.nifi.notifications.DesiredNotificationService</class>\n            <property name=\"property name\">property value</property>\n            <property name=\"another property\">another property value</property>\n            </service>\n            </services>\n\n            This file can contain 0 to many different service definitions.\n            The id can then be referenced from the bootstrap.conf file in order to configure the notification service\n            to be used when particular lifecycle events occur.\n            -->\n\n            <!--\n            <service>\n            <id>email-notification</id>\n            <class>org.apache.nifi.bootstrap.notification.email.EmailNotificationService</class>\n            <property name=\"SMTP Hostname\"></property>\n            <property name=\"SMTP Port\"></property>\n            <property name=\"SMTP Username\"></property>\n            <property name=\"SMTP Password\"></property>\n            <property name=\"SMTP TLS\"></property>\n            <property name=\"From\"></property>\n            <property name=\"To\"></property>\n            </service>\n            -->\n\n            <!--\n            <service>\n            <id>http-notification</id>\n            <class>org.apache.nifi.bootstrap.notification.http.HttpNotificationService</class>\n            <property name=\"URL\"></property>\n            </service>\n            -->\n\n            </services>"
        }
      }
    },
    {
      "hive-log4j2" : {
        "properties_attributes" : { },
        "properties" : {
          "hive2_log_maxfilesize" : "256",
          "hive2_log_maxbackupindex" : "30",
          "content" : "\n# Licensed to the Apache Software Foundation (ASF) under one\n# or more contributor license agreements.  See the NOTICE file\n# distributed with this work for additional information\n# regarding copyright ownership.  The ASF licenses this file\n# to you under the Apache License, Version 2.0 (the\n# \"License\"); you may not use this file except in compliance\n# with the License.  You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\nstatus = INFO\nname = HiveLog4j2\npackages = org.apache.hadoop.hive.ql.log\n\n# list of properties\nproperty.hive.log.level = {{hive_log_level}}\nproperty.hive.root.logger = DRFA\nproperty.hive.log.dir = ${sys:java.io.tmpdir}/${sys:user.name}\nproperty.hive.log.file = hive.log\n\n# list of all appenders\nappenders = console, DRFA\n\n# console appender\nappender.console.type = Console\nappender.console.name = console\nappender.console.target = SYSTEM_ERR\nappender.console.layout.type = PatternLayout\nappender.console.layout.pattern = %d{yy/MM/dd HH:mm:ss} [%t]: %p %c{2}: %m%n\n\n# daily rolling file appender\nappender.DRFA.type = RollingFile\nappender.DRFA.name = DRFA\nappender.DRFA.fileName = ${sys:hive.log.dir}/${sys:hive.log.file}\n# Use %pid in the filePattern to append process-id@host-name to the filename if you want separate log files for different CLI session\nappender.DRFA.filePattern = ${sys:hive.log.dir}/${sys:hive.log.file}.%d{yyyy-MM-dd}_%i.gz\nappender.DRFA.layout.type = PatternLayout\nappender.DRFA.layout.pattern = %d{ISO8601} %-5p [%t]: %c{2} (%F:%M(%L)) - %m%n\nappender.DRFA.policies.type = Policies\nappender.DRFA.policies.time.type = TimeBasedTriggeringPolicy\nappender.DRFA.policies.time.interval = 1\nappender.DRFA.policies.time.modulate = true\nappender.DRFA.strategy.type = DefaultRolloverStrategy\nappender.DRFA.strategy.max = {{hive2_log_maxbackupindex}}\nappender.DRFA.policies.fsize.type = SizeBasedTriggeringPolicy\nappender.DRFA.policies.fsize.size = {{hive2_log_maxfilesize}}MB\n\n# list of all loggers\nloggers = NIOServerCnxn, ClientCnxnSocketNIO, DataNucleus, Datastore, JPOX\n\nlogger.NIOServerCnxn.name = org.apache.zookeeper.server.NIOServerCnxn\nlogger.NIOServerCnxn.level = WARN\n\nlogger.ClientCnxnSocketNIO.name = org.apache.zookeeper.ClientCnxnSocketNIO\nlogger.ClientCnxnSocketNIO.level = WARN\n\nlogger.DataNucleus.name = DataNucleus\nlogger.DataNucleus.level = ERROR\n\nlogger.Datastore.name = Datastore\nlogger.Datastore.level = ERROR\n\nlogger.JPOX.name = JPOX\nlogger.JPOX.level = ERROR\n\n# root logger\nrootLogger.level = ${sys:hive.log.level}\nrootLogger.appenderRefs = root\nrootLogger.appenderRef.root.ref = ${sys:hive.root.logger}"
        }
      }
    },
    {
      "mapred-logsearch-conf" : {
        "properties_attributes" : { },
        "properties" : {
          "component_mappings" : "HISTORYSERVER:mapred_historyserver",
          "content" : "\n{\n  \"input\":[\n    {\n      \"type\":\"mapred_historyserver\",\n      \"rowtype\":\"service\",\n      \"path\":\"{{default('/configurations/mapred-env/mapred_log_dir_prefix', '/var/log/hadoop')}}/{{default('configurations/mapred-env/mapred_user', 'mapred')}}/mapred-{{default('configurations/mapred-env/mapred_user', 'mapred')}}-historyserver*.log\"\n    }\n   ],\n  \"filter\":[\n    {\n      \"filter\":\"grok\",\n      \"conditions\":{\n        \"fields\":{\n          \"type\":[\n            \"mapred_historyserver\"\n          ]\n         }\n       },\n      \"log4j_format\":\"%d{ISO8601} %-5p %c{2} (%F:%M(%L)) - %m%n\",\n      \"multiline_pattern\":\"^(%{TIMESTAMP_ISO8601:logtime})\",\n      \"message_pattern\":\"(?m)^%{TIMESTAMP_ISO8601:logtime}%{SPACE}%{LOGLEVEL:level}%{SPACE}%{JAVACLASS:logger_name}%{SPACE}\\\\(%{JAVAFILE:file}:%{JAVAMETHOD:method}\\\\(%{INT:line_number}\\\\)\\\\)%{SPACE}-%{SPACE}%{GREEDYDATA:log_message}\",\n      \"post_map_values\":{\n        \"logtime\":{\n          \"map_date\":{\n            \"target_date_pattern\":\"yyyy-MM-dd HH:mm:ss,SSS\"\n          }\n         }\n       }\n     }\n   ]\n }",
          "service_name" : "MapReduce"
        }
      }
    },
    {
      "nifi-ambari-ssl-config" : {
        "properties_attributes" : { },
        "properties" : {
          "nifi.toolkit.dn.prefix" : "CN=",
          "nifi.toolkit.tls.helper.days" : "1095",
          "nifi.security.keystoreType" : "",
          "nifi.security.keystore" : "{{nifi_config_dir}}/keystore.jks",
          "nifi.node.ssl.isenabled" : "false",
          "content" : "\n<!-- Provide the identity (typically a DN) of each node when clustered (see tool tip for detailed description of Node Identity). Must be specified when Ranger Nifi plugin will not be used for authorization. -->\n\n<!--\n<property name=\"Node Identity 1\"></property>\n<property name=\"Node Identity 2\"></property>\n<property name=\"Node Identity 3\"></property>\n<property name=\"Node Identity 4\"></property>\n-->",
          "nifi.toolkit.tls.regenerate" : "false",
          "nifi.toolkit.dn.suffix" : ", OU=NIFI",
          "nifi.initial.admin.identity" : "",
          "nifi.security.truststore" : "{{nifi_config_dir}}/truststore.jks",
          "nifi.security.needClientAuth" : "false",
          "nifi.security.truststoreType" : "",
          "nifi.toolkit.tls.port" : "10443"
        }
      }
    },
    {
      "oozie-env" : {
        "properties_attributes" : { },
        "properties" : {
          "oozie_user_nproc_limit" : "16000",
          "oozie_pid_dir" : "/var/run/oozie",
          "oozie_user_nofile_limit" : "32000",
          "oozie_log_dir" : "/var/log/oozie",
          "content" : "\n#!/bin/bash\n\nif [ -d \"/usr/lib/bigtop-tomcat\" ]; then\n  export OOZIE_CONFIG=${OOZIE_CONFIG:-{{conf_dir}}}\n  export CATALINA_BASE=${CATALINA_BASE:-{{oozie_server_dir}}}\n  export CATALINA_TMPDIR=${CATALINA_TMPDIR:-/var/tmp/oozie}\n  export OOZIE_CATALINA_HOME=/usr/lib/bigtop-tomcat\nfi\n\n#Set JAVA HOME\nexport JAVA_HOME={{java_home}}\n\nexport JRE_HOME=${JAVA_HOME}\n\n# Set Oozie specific environment variables here.\n\n# Settings for the Embedded Tomcat that runs Oozie\n# Java System properties for Oozie should be specified in this variable\n#\n{% if java_version < 8 %}\nexport CATALINA_OPTS=\"$CATALINA_OPTS -Xmx{{oozie_heapsize}} -XX:MaxPermSize={{oozie_permsize}}\"\n{% else %}\nexport CATALINA_OPTS=\"$CATALINA_OPTS -Xmx{{oozie_heapsize}}\"\n{% endif %}\n# Oozie configuration file to load from Oozie configuration directory\n#\n# export OOZIE_CONFIG_FILE=oozie-site.xml\n\n# Oozie logs directory\n#\nexport OOZIE_LOG={{oozie_log_dir}}\n\n# Oozie pid directory\n#\nexport CATALINA_PID={{pid_file}}\n\n#Location of the data for oozie\nexport OOZIE_DATA={{oozie_data_dir}}\n\n# Oozie Log4J configuration file to load from Oozie configuration directory\n#\n# export OOZIE_LOG4J_FILE=oozie-log4j.properties\n\n# Reload interval of the Log4J configuration file, in seconds\n#\n# export OOZIE_LOG4J_RELOAD=10\n\n# The port Oozie server runs\n#\nexport OOZIE_HTTP_PORT={{oozie_server_port}}\n\n# The admin port Oozie server runs\n#\nexport OOZIE_ADMIN_PORT={{oozie_server_admin_port}}\n\n# The host name Oozie server runs on\n#\n# export OOZIE_HTTP_HOSTNAME=`hostname -f`\n\n# The base URL for callback URLs to Oozie\n#\n# export OOZIE_BASE_URL=\"http://${OOZIE_HTTP_HOSTNAME}:${OOZIE_HTTP_PORT}/oozie\"\nexport JAVA_LIBRARY_PATH={{hadoop_lib_home}}/native/Linux-{{architecture}}-64\n\n# At least 1 minute of retry time to account for server downtime during\n# upgrade/downgrade\nexport OOZIE_CLIENT_OPTS=\"${OOZIE_CLIENT_OPTS} -Doozie.connection.retry.count=5 \"\n\n{% if sqla_db_used or lib_dir_available %}\nexport LD_LIBRARY_PATH=\"$LD_LIBRARY_PATH:{{jdbc_libs_dir}}\"\nexport JAVA_LIBRARY_PATH=\"$JAVA_LIBRARY_PATH:{{jdbc_libs_dir}}\"\n{% endif %}\n\n# Set Hadoop-related properties\nexport HADOOP_OPTS=\"-Dhdp.version=${HDP_VERSION} ${HADOOP_OPTS}\"",
          "oozie_tmp_dir" : "/var/tmp/oozie",
          "oozie_admin_port" : "11001",
          "oozie_heapsize" : "2048m",
          "service_check_job_name" : "no-op",
          "oozie_data_dir" : "/hadoop/oozie/data",
          "oozie_user" : "oozie",
          "oozie_admin_users" : "{oozie_user}, oozie-admin",
          "oozie_database" : "New Derby Database",
          "oozie_permsize" : "256m"
        }
      }
    },
    {
      "ssl-server" : {
        "properties_attributes" : { },
        "properties" : {
          "ssl.server.truststore.location" : "/etc/security/serverKeys/all.jks",
          "ssl.server.truststore.reload.interval" : "10000",
          "ssl.server.truststore.type" : "jks",
          "ssl.server.keystore.location" : "/etc/security/serverKeys/keystore.jks",
          "ssl.server.keystore.type" : "jks"
        }
      }
    },
    {
      "nifi-ambari-config" : {
        "properties_attributes" : { },
        "properties" : {
          "nifi.node.ssl.port" : "9091",
          "nifi.ambari_reporting_frequency" : "1 mins",
          "nifi.internal.dir" : "/var/lib/nifi",
          "nifi.max_mem" : "512m",
          "nifi.content.repository.dir.default" : "/var/lib/nifi/content_repository",
          "nifi.node.protocol.port" : "9088",
          "nifi.state.dir" : "{nifi_internal_dir}/state/local",
          "nifi.install.dir" : "/usr/lib/nifi-server",
          "nifi.flow.config.dir" : "{nifi_internal_dir}/conf",
          "nifi.ambari_reporting_enabled" : "true",
          "nifi.config.dir" : "{nifi_install_dir}/conf",
          "nifi.initial_mem" : "512m",
          "nifi.node.port" : "9090",
          "nifi.flowfile.repository.dir" : "/var/lib/nifi/flowfile_repository",
          "nifi.nifi_znode" : "/nifi",
          "nifi.provenance.repository.dir.default" : "/var/lib/nifi/provenance_repository",
          "nifi.database.dir" : "/var/lib/nifi/database_repository"
        }
      }
    },
    {
      "livy2-spark-blacklist" : {
        "properties_attributes" : { },
        "properties" : {
          "content" : "\n            #\n            # Configuration override / blacklist. Defines a list of properties that users are not allowed\n            # to override when starting Spark sessions.\n            #\n            # This file takes a list of property names (one per line). Empty lines and lines starting with \"#\"\n            # are ignored.\n            #\n\n            # Disallow overriding the master and the deploy mode.\n            spark.master\n            spark.submit.deployMode\n\n            # Disallow overriding the location of Spark cached jars.\n            spark.yarn.jar\n            spark.yarn.jars\n            spark.yarn.archive\n\n            # Don't allow users to override the RSC timeout.\n            livy.rsc.server.idle_timeout"
        }
      }
    },
    {
      "logsearch-service_logs-solrconfig" : {
        "properties_attributes" : { },
        "properties" : {
          "logsearch_service_logs_max_retention" : "7",
          "logsearch_service_logs_merge_factor" : "5",
          "content" : "<?xml version=\"1.0\" encoding=\"UTF-8\" ?>\n<!--\nLicensed to the Apache Software Foundation (ASF) under one or more\ncontributor license agreements.  See the NOTICE file distributed with\nthis work for additional information regarding copyright ownership.\nThe ASF licenses this file to You under the Apache License, Version 2.0\n(the \"License\"); you may not use this file except in compliance with\nthe License.  You may obtain a copy of the License at\n\nhttp://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n-->\n\n<!--\nFor more details about configurations options that may appear in\nthis file, see http://wiki.apache.org/solr/SolrConfigXml.\n-->\n<config>\n  <!-- In all configuration below, a prefix of \"solr.\" for class names\n  is an alias that causes solr to search appropriate packages,\n  including org.apache.solr.(search|update|request|core|analysis)\n\n  You may also specify a fully qualified Java classname if you\n  have your own custom plugins.\n  -->\n\n  <!-- Controls what version of Lucene various components of Solr\n  adhere to.  Generally, you want to use the latest version to\n  get all bug fixes and improvements. It is highly recommended\n  that you fully re-index after changing this setting as it can\n  affect both how text is indexed and queried.\n  -->\n  <luceneMatchVersion>5.0.0</luceneMatchVersion>\n\n  <!-- <lib/> directives can be used to instruct Solr to load any Jars\n  identified and use them to resolve any \"plugins\" specified in\n  your solrconfig.xml or schema.xml (ie: Analyzers, Request\n  Handlers, etc...).\n\n  All directories and paths are resolved relative to the\n  instanceDir.\n\n  Please note that <lib/> directives are processed in the order\n  that they appear in your solrconfig.xml file, and are \"stacked\"\n  on top of each other when building a ClassLoader - so if you have\n  plugin jars with dependencies on other jars, the \"lower level\"\n  dependency jars should be loaded first.\n\n  If a \"./lib\" directory exists in your instanceDir, all files\n  found in it are included as if you had used the following\n  syntax...\n\n  <lib dir=\"./lib\" />\n  -->\n\n  <!-- A 'dir' option by itself adds any files found in the directory\n  to the classpath, this is useful for including all jars in a\n  directory.\n\n  When a 'regex' is specified in addition to a 'dir', only the\n  files in that directory which completely match the regex\n  (anchored on both ends) will be included.\n\n  If a 'dir' option (with or without a regex) is used and nothing\n  is found that matches, a warning will be logged.\n\n  The examples below can be used to load some solr-contribs along\n  with their external dependencies.\n  -->\n  <lib dir=\"${solr.install.dir:../../../..}/dist/\" regex=\"solr-dataimporthandler-.*\\.jar\"/>\n\n  <lib dir=\"${solr.install.dir:../../../..}/contrib/extraction/lib\" regex=\".*\\.jar\"/>\n  <lib dir=\"${solr.install.dir:../../../..}/dist/\" regex=\"solr-cell-\\d.*\\.jar\"/>\n\n  <lib dir=\"${solr.install.dir:../../../..}/contrib/clustering/lib/\" regex=\".*\\.jar\"/>\n  <lib dir=\"${solr.install.dir:../../../..}/dist/\" regex=\"solr-clustering-\\d.*\\.jar\"/>\n\n  <lib dir=\"${solr.install.dir:../../../..}/contrib/langid/lib/\" regex=\".*\\.jar\"/>\n  <lib dir=\"${solr.install.dir:../../../..}/dist/\" regex=\"solr-langid-\\d.*\\.jar\"/>\n\n  <lib dir=\"${solr.install.dir:../../../..}/contrib/velocity/lib\" regex=\".*\\.jar\"/>\n  <lib dir=\"${solr.install.dir:../../../..}/dist/\" regex=\"solr-velocity-\\d.*\\.jar\"/>\n\n  <!-- an exact 'path' can be used instead of a 'dir' to specify a\n  specific jar file.  This will cause a serious error to be logged\n  if it can't be loaded.\n  -->\n  <!--\n  <lib path=\"../a-jar-that-does-not-exist.jar\" />\n  -->\n\n  <!-- Data Directory\n\n  Used to specify an alternate directory to hold all index data\n  other than the default ./data under the Solr home.  If\n  replication is in use, this should match the replication\n  configuration.\n  -->\n  <dataDir>${solr.data.dir:}</dataDir>\n\n\n  <!-- The DirectoryFactory to use for indexes.\n\n  solr.StandardDirectoryFactory is filesystem\n  based and tries to pick the best implementation for the current\n  JVM and platform.  solr.NRTCachingDirectoryFactory, the default,\n  wraps solr.StandardDirectoryFactory and caches small files in memory\n  for better NRT performance.\n\n  One can force a particular implementation via solr.MMapDirectoryFactory,\n  solr.NIOFSDirectoryFactory, or solr.SimpleFSDirectoryFactory.\n\n  solr.RAMDirectoryFactory is memory based, not\n  persistent, and doesn't work with replication.\n  -->\n  <directoryFactory name=\"DirectoryFactory\"\n                    class=\"${solr.directoryFactory:solr.NRTCachingDirectoryFactory}\">\n\n\n    <!-- These will be used if you are using the solr.HdfsDirectoryFactory,\n    otherwise they will be ignored. If you don't plan on using hdfs,\n    you can safely remove this section. -->\n    <!-- The root directory that collection data should be written to. -->\n    <str name=\"solr.hdfs.home\">${solr.hdfs.home:}</str>\n    <!-- The hadoop configuration files to use for the hdfs client. -->\n    <str name=\"solr.hdfs.confdir\">${solr.hdfs.confdir:}</str>\n    <!-- Enable/Disable the hdfs cache. -->\n    <str name=\"solr.hdfs.blockcache.enabled\">${solr.hdfs.blockcache.enabled:true}</str>\n    <!-- Enable/Disable using one global cache for all SolrCores.\n    The settings used will be from the first HdfsDirectoryFactory created. -->\n    <str name=\"solr.hdfs.blockcache.global\">${solr.hdfs.blockcache.global:true}</str>\n\n  </directoryFactory>\n\n  <!-- The CodecFactory for defining the format of the inverted index.\n  The default implementation is SchemaCodecFactory, which is the official Lucene\n  index format, but hooks into the schema to provide per-field customization of\n  the postings lists and per-document values in the fieldType element\n  (postingsFormat/docValuesFormat). Note that most of the alternative implementations\n  are experimental, so if you choose to customize the index format, it's a good\n  idea to convert back to the official format e.g. via IndexWriter.addIndexes(IndexReader)\n  before upgrading to a newer version to avoid unnecessary reindexing.\n  -->\n  <codecFactory class=\"solr.SchemaCodecFactory\"/>\n\n  <!-- To enable dynamic schema REST APIs, use the following for <schemaFactory>: -->\n\n  <schemaFactory class=\"ManagedIndexSchemaFactory\">\n    <bool name=\"mutable\">true</bool>\n    <str name=\"managedSchemaResourceName\">managed-schema</str>\n  </schemaFactory>\n  <!--\n  When ManagedIndexSchemaFactory is specified, Solr will load the schema from\n  the resource named in 'managedSchemaResourceName', rather than from schema.xml.\n  Note that the managed schema resource CANNOT be named schema.xml.  If the managed\n  schema does not exist, Solr will create it after reading schema.xml, then rename\n  'schema.xml' to 'schema.xml.bak'.\n\n  Do NOT hand edit the managed schema - external modifications will be ignored and\n  overwritten as a result of schema modification REST API calls.\n\n  When ManagedIndexSchemaFactory is specified with mutable = true, schema\n  modification REST API calls will be allowed; otherwise, error responses will be\n  sent back for these requests.\n\n  <schemaFactory class=\"ClassicIndexSchemaFactory\"/>\n  -->\n\n  <!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n  Index Config - These settings control low-level behavior of indexing\n  Most example settings here show the default value, but are commented\n  out, to more easily see where customizations have been made.\n\n  Note: This replaces <indexDefaults> and <mainIndex> from older versions\n  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->\n  <indexConfig>\n    <!-- maxFieldLength was removed in 4.0. To get similar behavior, include a\n    LimitTokenCountFilterFactory in your fieldType definition. E.g.\n    <filter class=\"solr.LimitTokenCountFilterFactory\" maxTokenCount=\"10000\"/>\n    -->\n    <!-- Maximum time to wait for a write lock (ms) for an IndexWriter. Default: 1000 -->\n    <!-- <writeLockTimeout>1000</writeLockTimeout>  -->\n    <!-- LogSearch customization to avoid timeouts -->\n    <writeLockTimeout>10000</writeLockTimeout>\n\n    <!-- The maximum number of simultaneous threads that may be\n    indexing documents at once in IndexWriter; if more than this\n    many threads arrive they will wait for others to finish.\n    Default in Solr/Lucene is 8. -->\n    <!-- <maxIndexingThreads>8</maxIndexingThreads>  -->\n    <!-- LogSearch customization of increase performance -->\n    <maxIndexingThreads>50</maxIndexingThreads>\n\n    <!-- Expert: Enabling compound file will use less files for the index,\n    using fewer file descriptors on the expense of performance decrease.\n    Default in Lucene is \"true\". Default in Solr is \"false\" (since 3.6) -->\n    <!-- <useCompoundFile>false</useCompoundFile> -->\n\n    <!-- ramBufferSizeMB sets the amount of RAM that may be used by Lucene\n    indexing for buffering added documents and deletions before they are\n    flushed to the Directory.\n    maxBufferedDocs sets a limit on the number of documents buffered\n    before flushing.\n    If both ramBufferSizeMB and maxBufferedDocs is set, then\n    Lucene will flush based on whichever limit is hit first.\n    The default is 100 MB.  -->\n    <!-- <ramBufferSizeMB>100</ramBufferSizeMB> -->\n    <!-- <maxBufferedDocs>1000</maxBufferedDocs> -->\n\n    <!-- Expert: Merge Policy\n    The Merge Policy in Lucene controls how merging of segments is done.\n    The default since Solr/Lucene 3.3 is TieredMergePolicy.\n    The default since Lucene 2.3 was the LogByteSizeMergePolicy,\n    Even older versions of Lucene used LogDocMergePolicy.\n    -->\n    <!--\n    <mergePolicy class=\"org.apache.lucene.index.TieredMergePolicy\">\n    <int name=\"maxMergeAtOnce\">10</int>\n    <int name=\"segmentsPerTier\">10</int>\n    </mergePolicy>\n    -->\n\n    <!-- Merge Factor\n    The merge factor controls how many segments will get merged at a time.\n    For TieredMergePolicy, mergeFactor is a convenience parameter which\n    will set both MaxMergeAtOnce and SegmentsPerTier at once.\n    For LogByteSizeMergePolicy, mergeFactor decides how many new segments\n    will be allowed before they are merged into one.\n    Default is 10 for both merge policies.\n    -->\n    <!--\n    <mergeFactor>10</mergeFactor>\n    -->\n    <!-- LogSearch customization. Set to 5 to trigger purging of deleted documents more often -->\n    <mergeFactor>{{logsearch_service_logs_merge_factor}}</mergeFactor>\n\n    <!-- Expert: Merge Scheduler\n    The Merge Scheduler in Lucene controls how merges are\n    performed.  The ConcurrentMergeScheduler (Lucene 2.3 default)\n    can perform merges in the background using separate threads.\n    The SerialMergeScheduler (Lucene 2.2 default) does not.\n    -->\n    <!--\n    <mergeScheduler class=\"org.apache.lucene.index.ConcurrentMergeScheduler\"/>\n    -->\n\n    <!-- LockFactory\n\n    This option specifies which Lucene LockFactory implementation\n    to use.\n\n    single = SingleInstanceLockFactory - suggested for a\n    read-only index or when there is no possibility of\n    another process trying to modify the index.\n    native = NativeFSLockFactory - uses OS native file locking.\n    Do not use when multiple solr webapps in the same\n    JVM are attempting to share a single index.\n    simple = SimpleFSLockFactory  - uses a plain file for locking\n\n    Defaults: 'native' is default for Solr3.6 and later, otherwise\n    'simple' is the default\n\n    More details on the nuances of each LockFactory...\n    http://wiki.apache.org/lucene-java/AvailableLockFactories\n    -->\n    <lockType>${solr.lock.type:native}</lockType>\n\n    <!-- Unlock On Startup\n\n    If true, unlock any held write or commit locks on startup.\n    This defeats the locking mechanism that allows multiple\n    processes to safely access a lucene index, and should be used\n    with care. Default is \"false\".\n\n    This is not needed if lock type is 'single'\n    -->\n    <!--\n    <unlockOnStartup>false</unlockOnStartup>\n    -->\n\n    <!-- Commit Deletion Policy\n    Custom deletion policies can be specified here. The class must\n    implement org.apache.lucene.index.IndexDeletionPolicy.\n\n    The default Solr IndexDeletionPolicy implementation supports\n    deleting index commit points on number of commits, age of\n    commit point and optimized status.\n\n    The latest commit point should always be preserved regardless\n    of the criteria.\n    -->\n    <!--\n    <deletionPolicy class=\"solr.SolrDeletionPolicy\">\n    -->\n    <!-- The number of commit points to be kept -->\n    <!-- <str name=\"maxCommitsToKeep\">1</str> -->\n    <!-- The number of optimized commit points to be kept -->\n    <!-- <str name=\"maxOptimizedCommitsToKeep\">0</str> -->\n    <!--\n    Delete all commit points once they have reached the given age.\n    Supports DateMathParser syntax e.g.\n    -->\n    <!--\n    <str name=\"maxCommitAge\">30MINUTES</str>\n    <str name=\"maxCommitAge\">1DAY</str>\n    -->\n    <!--\n    </deletionPolicy>\n    -->\n\n    <!-- Lucene Infostream\n\n    To aid in advanced debugging, Lucene provides an \"InfoStream\"\n    of detailed information when indexing.\n\n    Setting the value to true will instruct the underlying Lucene\n    IndexWriter to write its info stream to solr's log. By default,\n    this is enabled here, and controlled through log4j.properties.\n    -->\n    <infoStream>true</infoStream>\n  </indexConfig>\n\n\n  <!-- JMX\n\n  This example enables JMX if and only if an existing MBeanServer\n  is found, use this if you want to configure JMX through JVM\n  parameters. Remove this to disable exposing Solr configuration\n  and statistics to JMX.\n\n  For more details see http://wiki.apache.org/solr/SolrJmx\n  -->\n  <jmx/>\n  <!-- If you want to connect to a particular server, specify the\n  agentId\n  -->\n  <!-- <jmx agentId=\"myAgent\" /> -->\n  <!-- If you want to start a new MBeanServer, specify the serviceUrl -->\n  <!-- <jmx serviceUrl=\"service:jmx:rmi:///jndi/rmi://localhost:9999/solr\"/>\n  -->\n\n  <!-- The default high-performance update handler -->\n  <updateHandler class=\"solr.DirectUpdateHandler2\">\n\n    <!-- Enables a transaction log, used for real-time get, durability, and\n    and solr cloud replica recovery.  The log can grow as big as\n    uncommitted changes to the index, so use of a hard autoCommit\n    is recommended (see below).\n    \"dir\" - the target directory for transaction logs, defaults to the\n    solr data directory.  -->\n    <updateLog>\n      <str name=\"dir\">${solr.ulog.dir:}</str>\n    </updateLog>\n\n    <!-- AutoCommit\n\n    Perform a hard commit automatically under certain conditions.\n    Instead of enabling autoCommit, consider using \"commitWithin\"\n    when adding documents.\n\n    http://wiki.apache.org/solr/UpdateXmlMessages\n\n    maxDocs - Maximum number of documents to add since the last\n    commit before automatically triggering a new commit.\n\n    maxTime - Maximum amount of time in ms that is allowed to pass\n    since a document was added before automatically\n    triggering a new commit.\n    openSearcher - if false, the commit causes recent index changes\n    to be flushed to stable storage, but does not cause a new\n    searcher to be opened to make those changes visible.\n\n    If the updateLog is enabled, then it's highly recommended to\n    have some sort of hard autoCommit to limit the log size.\n    -->\n    <autoCommit>\n      <maxTime>${solr.autoCommit.maxTime:15000}</maxTime>\n      <openSearcher>false</openSearcher>\n    </autoCommit>\n\n    <!-- softAutoCommit is like autoCommit except it causes a\n    'soft' commit which only ensures that changes are visible\n    but does not ensure that data is synced to disk.  This is\n    faster and more near-realtime friendly than a hard commit.\n    -->\n\n    <autoSoftCommit>\n      <maxTime>${solr.autoSoftCommit.maxTime:5000}</maxTime>\n    </autoSoftCommit>\n\n    <!-- Update Related Event Listeners\n\n    Various IndexWriter related events can trigger Listeners to\n    take actions.\n\n    postCommit - fired after every commit or optimize command\n    postOptimize - fired after every optimize command\n    -->\n    <!-- The RunExecutableListener executes an external command from a\n    hook such as postCommit or postOptimize.\n\n    exe - the name of the executable to run\n    dir - dir to use as the current working directory. (default=\".\")\n    wait - the calling thread waits until the executable returns.\n    (default=\"true\")\n    args - the arguments to pass to the program.  (default is none)\n    env - environment variables to set.  (default is none)\n    -->\n    <!-- This example shows how RunExecutableListener could be used\n    with the script based replication...\n    http://wiki.apache.org/solr/CollectionDistribution\n    -->\n    <!--\n    <listener event=\"postCommit\" class=\"solr.RunExecutableListener\">\n    <str name=\"exe\">solr/bin/snapshooter</str>\n    <str name=\"dir\">.</str>\n    <bool name=\"wait\">true</bool>\n    <arr name=\"args\"> <str>arg1</str> <str>arg2</str> </arr>\n    <arr name=\"env\"> <str>MYVAR=val1</str> </arr>\n    </listener>\n    -->\n\n  </updateHandler>\n\n  <!-- IndexReaderFactory\n\n  Use the following format to specify a custom IndexReaderFactory,\n  which allows for alternate IndexReader implementations.\n\n  ** Experimental Feature **\n\n  Please note - Using a custom IndexReaderFactory may prevent\n  certain other features from working. The API to\n  IndexReaderFactory may change without warning or may even be\n  removed from future releases if the problems cannot be\n  resolved.\n\n\n  ** Features that may not work with custom IndexReaderFactory **\n\n  The ReplicationHandler assumes a disk-resident index. Using a\n  custom IndexReader implementation may cause incompatibility\n  with ReplicationHandler and may cause replication to not work\n  correctly. See SOLR-1366 for details.\n\n  -->\n  <!--\n  <indexReaderFactory name=\"IndexReaderFactory\" class=\"package.class\">\n  <str name=\"someArg\">Some Value</str>\n  </indexReaderFactory >\n  -->\n\n  <!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n  Query section - these settings control query time things like caches\n  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->\n  <query>\n    <!-- Max Boolean Clauses\n\n    Maximum number of clauses in each BooleanQuery,  an exception\n    is thrown if exceeded.\n\n    ** WARNING **\n\n    This option actually modifies a global Lucene property that\n    will affect all SolrCores.  If multiple solrconfig.xml files\n    disagree on this property, the value at any given moment will\n    be based on the last SolrCore to be initialized.\n\n    -->\n    <maxBooleanClauses>1024</maxBooleanClauses>\n\n\n    <!-- Solr Internal Query Caches\n\n    There are two implementations of cache available for Solr,\n    LRUCache, based on a synchronized LinkedHashMap, and\n    FastLRUCache, based on a ConcurrentHashMap.\n\n    FastLRUCache has faster gets and slower puts in single\n    threaded operation and thus is generally faster than LRUCache\n    when the hit ratio of the cache is high (> 75%), and may be\n    faster under other scenarios on multi-cpu systems.\n    -->\n\n    <!-- Filter Cache\n\n    Cache used by SolrIndexSearcher for filters (DocSets),\n    unordered sets of *all* documents that match a query.  When a\n    new searcher is opened, its caches may be prepopulated or\n    \"autowarmed\" using data from caches in the old searcher.\n    autowarmCount is the number of items to prepopulate.  For\n    LRUCache, the autowarmed items will be the most recently\n    accessed items.\n\n    Parameters:\n    class - the SolrCache implementation LRUCache or\n    (LRUCache or FastLRUCache)\n    size - the maximum number of entries in the cache\n    initialSize - the initial capacity (number of entries) of\n    the cache.  (see java.util.HashMap)\n    autowarmCount - the number of entries to prepopulate from\n    and old cache.\n    -->\n    <filterCache class=\"solr.FastLRUCache\"\n                 size=\"512\"\n                 initialSize=\"512\"\n                 autowarmCount=\"0\"/>\n\n    <!-- Query Result Cache\n\n    Caches results of searches - ordered lists of document ids\n    (DocList) based on a query, a sort, and the range of documents requested.\n    -->\n    <queryResultCache class=\"solr.LRUCache\"\n                      size=\"512\"\n                      initialSize=\"512\"\n                      autowarmCount=\"0\"/>\n\n    <!-- Document Cache\n\n    Caches Lucene Document objects (the stored fields for each\n    document).  Since Lucene internal document ids are transient,\n    this cache will not be autowarmed.\n    -->\n    <documentCache class=\"solr.LRUCache\"\n                   size=\"512\"\n                   initialSize=\"512\"\n                   autowarmCount=\"0\"/>\n\n    <!-- custom cache currently used by block join -->\n    <cache name=\"perSegFilter\"\n           class=\"solr.search.LRUCache\"\n           size=\"10\"\n           initialSize=\"0\"\n           autowarmCount=\"10\"\n           regenerator=\"solr.NoOpRegenerator\"/>\n\n    <!-- Field Value Cache\n\n    Cache used to hold field values that are quickly accessible\n    by document id.  The fieldValueCache is created by default\n    even if not configured here.\n    -->\n    <!--\n    <fieldValueCache class=\"solr.FastLRUCache\"\n    size=\"512\"\n    autowarmCount=\"128\"\n    showItems=\"32\" />\n    -->\n\n    <!-- Custom Cache\n\n    Example of a generic cache.  These caches may be accessed by\n    name through SolrIndexSearcher.getCache(),cacheLookup(), and\n    cacheInsert().  The purpose is to enable easy caching of\n    user/application level data.  The regenerator argument should\n    be specified as an implementation of solr.CacheRegenerator\n    if autowarming is desired.\n    -->\n    <!--\n    <cache name=\"myUserCache\"\n    class=\"solr.LRUCache\"\n    size=\"4096\"\n    initialSize=\"1024\"\n    autowarmCount=\"1024\"\n    regenerator=\"com.mycompany.MyRegenerator\"\n    />\n    -->\n\n\n    <!-- Lazy Field Loading\n\n    If true, stored fields that are not requested will be loaded\n    lazily.  This can result in a significant speed improvement\n    if the usual case is to not load all stored fields,\n    especially if the skipped fields are large compressed text\n    fields.\n    -->\n    <enableLazyFieldLoading>true</enableLazyFieldLoading>\n\n    <!-- Use Filter For Sorted Query\n\n    A possible optimization that attempts to use a filter to\n    satisfy a search.  If the requested sort does not include\n    score, then the filterCache will be checked for a filter\n    matching the query. If found, the filter will be used as the\n    source of document ids, and then the sort will be applied to\n    that.\n\n    For most situations, this will not be useful unless you\n    frequently get the same search repeatedly with different sort\n    options, and none of them ever use \"score\"\n    -->\n    <!--\n    <useFilterForSortedQuery>true</useFilterForSortedQuery>\n    -->\n\n    <!-- Result Window Size\n\n    An optimization for use with the queryResultCache.  When a search\n    is requested, a superset of the requested number of document ids\n    are collected.  For example, if a search for a particular query\n    requests matching documents 10 through 19, and queryWindowSize is 50,\n    then documents 0 through 49 will be collected and cached.  Any further\n    requests in that range can be satisfied via the cache.\n    -->\n    <queryResultWindowSize>20</queryResultWindowSize>\n\n    <!-- Maximum number of documents to cache for any entry in the\n    queryResultCache.\n    -->\n    <queryResultMaxDocsCached>200</queryResultMaxDocsCached>\n\n    <!-- Query Related Event Listeners\n\n    Various IndexSearcher related events can trigger Listeners to\n    take actions.\n\n    newSearcher - fired whenever a new searcher is being prepared\n    and there is a current searcher handling requests (aka\n    registered).  It can be used to prime certain caches to\n    prevent long request times for certain requests.\n\n    firstSearcher - fired whenever a new searcher is being\n    prepared but there is no current registered searcher to handle\n    requests or to gain autowarming data from.\n\n\n    -->\n    <!-- QuerySenderListener takes an array of NamedList and executes a\n    local query request for each NamedList in sequence.\n    -->\n    <listener event=\"newSearcher\" class=\"solr.QuerySenderListener\">\n      <arr name=\"queries\">\n        <!--\n        <lst><str name=\"q\">solr</str><str name=\"sort\">price asc</str></lst>\n        <lst><str name=\"q\">rocks</str><str name=\"sort\">weight asc</str></lst>\n        -->\n      </arr>\n    </listener>\n    <listener event=\"firstSearcher\" class=\"solr.QuerySenderListener\">\n      <arr name=\"queries\">\n        <lst>\n          <str name=\"q\">static firstSearcher warming in solrconfig.xml</str>\n        </lst>\n      </arr>\n    </listener>\n\n    <!-- Use Cold Searcher\n\n    If a search request comes in and there is no current\n    registered searcher, then immediately register the still\n    warming searcher and use it.  If \"false\" then all requests\n    will block until the first searcher is done warming.\n    -->\n    <useColdSearcher>true</useColdSearcher>\n\n    <!-- Max Warming Searchers\n\n    Maximum number of searchers that may be warming in the\n    background concurrently.  An error is returned if this limit\n    is exceeded.\n\n    Recommend values of 1-2 for read-only slaves, higher for\n    masters w/o cache warming.\n    -->\n    <maxWarmingSearchers>2</maxWarmingSearchers>\n\n  </query>\n\n\n  <!-- Request Dispatcher\n\n  This section contains instructions for how the SolrDispatchFilter\n  should behave when processing requests for this SolrCore.\n\n  handleSelect is a legacy option that affects the behavior of requests\n  such as /select?qt=XXX\n\n  handleSelect=\"true\" will cause the SolrDispatchFilter to process\n  the request and dispatch the query to a handler specified by the\n  \"qt\" param, assuming \"/select\" isn't already registered.\n\n  handleSelect=\"false\" will cause the SolrDispatchFilter to\n  ignore \"/select\" requests, resulting in a 404 unless a handler\n  is explicitly registered with the name \"/select\"\n\n  handleSelect=\"true\" is not recommended for new users, but is the default\n  for backwards compatibility\n  -->\n  <requestDispatcher handleSelect=\"false\">\n    <!-- Request Parsing\n\n    These settings indicate how Solr Requests may be parsed, and\n    what restrictions may be placed on the ContentStreams from\n    those requests\n\n    enableRemoteStreaming - enables use of the stream.file\n    and stream.url parameters for specifying remote streams.\n\n    multipartUploadLimitInKB - specifies the max size (in KiB) of\n    Multipart File Uploads that Solr will allow in a Request.\n\n    formdataUploadLimitInKB - specifies the max size (in KiB) of\n    form data (application/x-www-form-urlencoded) sent via\n    POST. You can use POST to pass request parameters not\n    fitting into the URL.\n\n    addHttpRequestToContext - if set to true, it will instruct\n    the requestParsers to include the original HttpServletRequest\n    object in the context map of the SolrQueryRequest under the\n    key \"httpRequest\". It will not be used by any of the existing\n    Solr components, but may be useful when developing custom\n    plugins.\n\n    *** WARNING ***\n    The settings below authorize Solr to fetch remote files, You\n    should make sure your system has some authentication before\n    using enableRemoteStreaming=\"true\"\n\n    -->\n    <requestParsers enableRemoteStreaming=\"true\"\n                    multipartUploadLimitInKB=\"2048000\"\n                    formdataUploadLimitInKB=\"2048\"\n                    addHttpRequestToContext=\"false\"/>\n\n    <!-- HTTP Caching\n\n    Set HTTP caching related parameters (for proxy caches and clients).\n\n    The options below instruct Solr not to output any HTTP Caching\n    related headers\n    -->\n    <httpCaching never304=\"true\"/>\n    <!-- If you include a <cacheControl> directive, it will be used to\n    generate a Cache-Control header (as well as an Expires header\n    if the value contains \"max-age=\")\n\n    By default, no Cache-Control header is generated.\n\n    You can use the <cacheControl> option even if you have set\n    never304=\"true\"\n    -->\n    <!--\n    <httpCaching never304=\"true\" >\n    <cacheControl>max-age=30, public</cacheControl>\n    </httpCaching>\n    -->\n    <!-- To enable Solr to respond with automatically generated HTTP\n    Caching headers, and to response to Cache Validation requests\n    correctly, set the value of never304=\"false\"\n\n    This will cause Solr to generate Last-Modified and ETag\n    headers based on the properties of the Index.\n\n    The following options can also be specified to affect the\n    values of these headers...\n\n    lastModFrom - the default value is \"openTime\" which means the\n    Last-Modified value (and validation against If-Modified-Since\n    requests) will all be relative to when the current Searcher\n    was opened.  You can change it to lastModFrom=\"dirLastMod\" if\n    you want the value to exactly correspond to when the physical\n    index was last modified.\n\n    etagSeed=\"...\" is an option you can change to force the ETag\n    header (and validation against If-None-Match requests) to be\n    different even if the index has not changed (ie: when making\n    significant changes to your config file)\n\n    (lastModifiedFrom and etagSeed are both ignored if you use\n    the never304=\"true\" option)\n    -->\n    <!--\n    <httpCaching lastModifiedFrom=\"openTime\"\n    etagSeed=\"Solr\">\n    <cacheControl>max-age=30, public</cacheControl>\n    </httpCaching>\n    -->\n  </requestDispatcher>\n\n  <!-- Request Handlers\n\n  http://wiki.apache.org/solr/SolrRequestHandler\n\n  Incoming queries will be dispatched to a specific handler by name\n  based on the path specified in the request.\n\n  Legacy behavior: If the request path uses \"/select\" but no Request\n  Handler has that name, and if handleSelect=\"true\" has been specified in\n  the requestDispatcher, then the Request Handler is dispatched based on\n  the qt parameter.  Handlers without a leading '/' are accessed this way\n  like so: http://host/app/[core/]select?qt=name  If no qt is\n  given, then the requestHandler that declares default=\"true\" will be\n  used or the one named \"standard\".\n\n  If a Request Handler is declared with startup=\"lazy\", then it will\n  not be initialized until the first request that uses it.\n\n  -->\n\n  <requestHandler name=\"/dataimport\" class=\"solr.DataImportHandler\">\n    <lst name=\"defaults\">\n      <str name=\"config\">solr-data-config.xml</str>\n    </lst>\n  </requestHandler>\n\n  <!-- SearchHandler\n\n  http://wiki.apache.org/solr/SearchHandler\n\n  For processing Search Queries, the primary Request Handler\n  provided with Solr is \"SearchHandler\" It delegates to a sequent\n  of SearchComponents (see below) and supports distributed\n  queries across multiple shards\n  -->\n  <requestHandler name=\"/select\" class=\"solr.SearchHandler\">\n    <!-- default values for query parameters can be specified, these\n    will be overridden by parameters in the request\n    -->\n    <lst name=\"defaults\">\n      <str name=\"echoParams\">explicit</str>\n      <int name=\"rows\">10</int>\n      <str name=\"df\">text</str>\n    </lst>\n    <!-- In addition to defaults, \"appends\" params can be specified\n    to identify values which should be appended to the list of\n    multi-val params from the query (or the existing \"defaults\").\n    -->\n    <!-- In this example, the param \"fq=instock:true\" would be appended to\n    any query time fq params the user may specify, as a mechanism for\n    partitioning the index, independent of any user selected filtering\n    that may also be desired (perhaps as a result of faceted searching).\n\n    NOTE: there is *absolutely* nothing a client can do to prevent these\n    \"appends\" values from being used, so don't use this mechanism\n    unless you are sure you always want it.\n    -->\n    <!--\n    <lst name=\"appends\">\n    <str name=\"fq\">inStock:true</str>\n    </lst>\n    -->\n    <!-- \"invariants\" are a way of letting the Solr maintainer lock down\n    the options available to Solr clients.  Any params values\n    specified here are used regardless of what values may be specified\n    in either the query, the \"defaults\", or the \"appends\" params.\n\n    In this example, the facet.field and facet.query params would\n    be fixed, limiting the facets clients can use.  Faceting is\n    not turned on by default - but if the client does specify\n    facet=true in the request, these are the only facets they\n    will be able to see counts for; regardless of what other\n    facet.field or facet.query params they may specify.\n\n    NOTE: there is *absolutely* nothing a client can do to prevent these\n    \"invariants\" values from being used, so don't use this mechanism\n    unless you are sure you always want it.\n    -->\n    <!--\n    <lst name=\"invariants\">\n    <str name=\"facet.field\">cat</str>\n    <str name=\"facet.field\">manu_exact</str>\n    <str name=\"facet.query\">price:[* TO 500]</str>\n    <str name=\"facet.query\">price:[500 TO *]</str>\n    </lst>\n    -->\n    <!-- If the default list of SearchComponents is not desired, that\n    list can either be overridden completely, or components can be\n    prepended or appended to the default list.  (see below)\n    -->\n    <!--\n    <arr name=\"components\">\n    <str>nameOfCustomComponent1</str>\n    <str>nameOfCustomComponent2</str>\n    </arr>\n    -->\n  </requestHandler>\n\n  <!-- A request handler that returns indented JSON by default -->\n  <requestHandler name=\"/query\" class=\"solr.SearchHandler\">\n    <lst name=\"defaults\">\n      <str name=\"echoParams\">explicit</str>\n      <str name=\"wt\">json</str>\n      <str name=\"indent\">true</str>\n      <str name=\"df\">text</str>\n    </lst>\n  </requestHandler>\n\n\n  <!-- realtime get handler, guaranteed to return the latest stored fields of\n  any document, without the need to commit or open a new searcher.  The\n  current implementation relies on the updateLog feature being enabled.\n\n  ** WARNING **\n  Do NOT disable the realtime get handler at /get if you are using\n  SolrCloud otherwise any leader election will cause a full sync in ALL\n  replicas for the shard in question. Similarly, a replica recovery will\n  also always fetch the complete index from the leader because a partial\n  sync will not be possible in the absence of this handler.\n  -->\n  <requestHandler name=\"/get\" class=\"solr.RealTimeGetHandler\">\n    <lst name=\"defaults\">\n      <str name=\"omitHeader\">true</str>\n      <str name=\"wt\">json</str>\n      <str name=\"indent\">true</str>\n    </lst>\n  </requestHandler>\n\n\n  <!-- A Robust Example\n\n  This example SearchHandler declaration shows off usage of the\n  SearchHandler with many defaults declared\n\n  Note that multiple instances of the same Request Handler\n  (SearchHandler) can be registered multiple times with different\n  names (and different init parameters)\n  -->\n  <requestHandler name=\"/browse\" class=\"solr.SearchHandler\">\n    <lst name=\"defaults\">\n      <str name=\"echoParams\">explicit</str>\n\n      <!-- VelocityResponseWriter settings -->\n      <str name=\"wt\">velocity</str>\n      <str name=\"v.template\">browse</str>\n      <str name=\"v.layout\">layout</str>\n\n      <!-- Query settings -->\n      <str name=\"defType\">edismax</str>\n      <str name=\"q.alt\">*:*</str>\n      <str name=\"rows\">10</str>\n      <str name=\"fl\">*,score</str>\n\n      <!-- Faceting defaults -->\n      <str name=\"facet\">on</str>\n      <str name=\"facet.mincount\">1</str>\n    </lst>\n  </requestHandler>\n\n\n  <initParams path=\"/update/**,/query,/select,/tvrh,/elevate,/spell,/browse\">\n    <lst name=\"defaults\">\n      <str name=\"df\">text</str>\n      <str name=\"update.chain\">add-unknown-fields-to-the-schema</str>\n    </lst>\n  </initParams>\n\n  <!-- Update Request Handler.\n\n  http://wiki.apache.org/solr/UpdateXmlMessages\n\n  The canonical Request Handler for Modifying the Index through\n  commands specified using XML, JSON, CSV, or JAVABIN\n\n  Note: Since solr1.1 requestHandlers requires a valid content\n  type header if posted in the body. For example, curl now\n  requires: -H 'Content-type:text/xml; charset=utf-8'\n\n  To override the request content type and force a specific\n  Content-type, use the request parameter:\n  ?update.contentType=text/csv\n\n  This handler will pick a response format to match the input\n  if the 'wt' parameter is not explicit\n  -->\n  <requestHandler name=\"/update\" class=\"solr.UpdateRequestHandler\">\n    <!-- See below for information on defining\n    updateRequestProcessorChains that can be used by name\n    on each Update Request\n    -->\n    <!--\n    <lst name=\"defaults\">\n    <str name=\"update.chain\">dedupe</str>\n    </lst>\n    -->\n  </requestHandler>\n\n  <!-- Solr Cell Update Request Handler\n\n  http://wiki.apache.org/solr/ExtractingRequestHandler\n\n  -->\n  <requestHandler name=\"/update/extract\"\n                  startup=\"lazy\"\n                  class=\"solr.extraction.ExtractingRequestHandler\">\n    <lst name=\"defaults\">\n      <str name=\"lowernames\">true</str>\n      <str name=\"uprefix\">ignored_</str>\n\n      <!-- capture link hrefs but ignore div attributes -->\n      <str name=\"captureAttr\">true</str>\n      <str name=\"fmap.a\">links</str>\n      <str name=\"fmap.div\">ignored_</str>\n    </lst>\n  </requestHandler>\n\n\n  <!-- Field Analysis Request Handler\n\n  RequestHandler that provides much the same functionality as\n  analysis.jsp. Provides the ability to specify multiple field\n  types and field names in the same request and outputs\n  index-time and query-time analysis for each of them.\n\n  Request parameters are:\n  analysis.fieldname - field name whose analyzers are to be used\n\n  analysis.fieldtype - field type whose analyzers are to be used\n  analysis.fieldvalue - text for index-time analysis\n  q (or analysis.q) - text for query time analysis\n  analysis.showmatch (true|false) - When set to true and when\n  query analysis is performed, the produced tokens of the\n  field value analysis will be marked as \"matched\" for every\n  token that is produces by the query analysis\n  -->\n  <requestHandler name=\"/analysis/field\"\n                  startup=\"lazy\"\n                  class=\"solr.FieldAnalysisRequestHandler\"/>\n\n\n  <!-- Document Analysis Handler\n\n  http://wiki.apache.org/solr/AnalysisRequestHandler\n\n  An analysis handler that provides a breakdown of the analysis\n  process of provided documents. This handler expects a (single)\n  content stream with the following format:\n\n  <docs>\n  <doc>\n  <field name=\"id\">1</field>\n  <field name=\"name\">The Name</field>\n  <field name=\"text\">The Text Value</field>\n  </doc>\n  <doc>...</doc>\n  <doc>...</doc>\n  ...\n  </docs>\n\n  Note: Each document must contain a field which serves as the\n  unique key. This key is used in the returned response to associate\n  an analysis breakdown to the analyzed document.\n\n  Like the FieldAnalysisRequestHandler, this handler also supports\n  query analysis by sending either an \"analysis.query\" or \"q\"\n  request parameter that holds the query text to be analyzed. It\n  also supports the \"analysis.showmatch\" parameter which when set to\n  true, all field tokens that match the query tokens will be marked\n  as a \"match\".\n  -->\n  <requestHandler name=\"/analysis/document\"\n                  class=\"solr.DocumentAnalysisRequestHandler\"\n                  startup=\"lazy\"/>\n\n  <!-- Admin Handlers\n\n  Admin Handlers - This will register all the standard admin\n  RequestHandlers.\n  -->\n  <!-- This single handler is equivalent to the following... -->\n  <!--\n  <requestHandler name=\"/admin/luke\"       class=\"solr.admin.LukeRequestHandler\" />\n  <requestHandler name=\"/admin/system\"     class=\"solr.admin.SystemInfoHandler\" />\n  <requestHandler name=\"/admin/plugins\"    class=\"solr.admin.PluginInfoHandler\" />\n  <requestHandler name=\"/admin/threads\"    class=\"solr.admin.ThreadDumpHandler\" />\n  <requestHandler name=\"/admin/properties\" class=\"solr.admin.PropertiesRequestHandler\" />\n  <requestHandler name=\"/admin/file\"       class=\"solr.admin.ShowFileRequestHandler\" >\n  -->\n  <!-- If you wish to hide files under ${solr.home}/conf, explicitly\n  register the ShowFileRequestHandler using the definition below.\n  NOTE: The glob pattern ('*') is the only pattern supported at present, *.xml will\n  not exclude all files ending in '.xml'. Use it to exclude _all_ updates\n  -->\n  <!--\n  <requestHandler name=\"/admin/file\"\n  class=\"solr.admin.ShowFileRequestHandler\" >\n  <lst name=\"invariants\">\n  <str name=\"hidden\">synonyms.txt</str>\n  <str name=\"hidden\">anotherfile.txt</str>\n  <str name=\"hidden\">*</str>\n  </lst>\n  </requestHandler>\n  -->\n\n  <!--\n  Enabling this request handler (which is NOT a default part of the admin handler) will allow the Solr UI to edit\n  all the config files. This is intended for secure/development use ONLY! Leaving available and publically\n  accessible is a security vulnerability and should be done with extreme caution!\n  -->\n  <!--\n  <requestHandler name=\"/admin/fileedit\" class=\"solr.admin.EditFileRequestHandler\" >\n  <lst name=\"invariants\">\n  <str name=\"hidden\">synonyms.txt</str>\n  <str name=\"hidden\">anotherfile.txt</str>\n  </lst>\n  </requestHandler>\n  -->\n  <!-- ping/healthcheck -->\n  <requestHandler name=\"/admin/ping\" class=\"solr.PingRequestHandler\">\n    <lst name=\"invariants\">\n      <str name=\"q\">solrpingquery</str>\n    </lst>\n    <lst name=\"defaults\">\n      <str name=\"echoParams\">all</str>\n    </lst>\n    <!-- An optional feature of the PingRequestHandler is to configure the\n    handler with a \"healthcheckFile\" which can be used to enable/disable\n    the PingRequestHandler.\n    relative paths are resolved against the data dir\n    -->\n    <!-- <str name=\"healthcheckFile\">server-enabled.txt</str> -->\n  </requestHandler>\n\n  <!-- Echo the request contents back to the client -->\n  <requestHandler name=\"/debug/dump\" class=\"solr.DumpRequestHandler\">\n    <lst name=\"defaults\">\n      <str name=\"echoParams\">explicit</str>\n      <str name=\"echoHandler\">true</str>\n    </lst>\n  </requestHandler>\n\n  <!-- Solr Replication\n\n  The SolrReplicationHandler supports replicating indexes from a\n  \"master\" used for indexing and \"slaves\" used for queries.\n\n  http://wiki.apache.org/solr/SolrReplication\n\n  It is also necessary for SolrCloud to function (in Cloud mode, the\n  replication handler is used to bulk transfer segments when nodes\n  are added or need to recover).\n\n  https://wiki.apache.org/solr/SolrCloud/\n  -->\n  <requestHandler name=\"/replication\" class=\"solr.ReplicationHandler\">\n    <!--\n    To enable simple master/slave replication, uncomment one of the\n    sections below, depending on whether this solr instance should be\n    the \"master\" or a \"slave\".  If this instance is a \"slave\" you will\n    also need to fill in the masterUrl to point to a real machine.\n    -->\n    <!--\n    <lst name=\"master\">\n    <str name=\"replicateAfter\">commit</str>\n    <str name=\"replicateAfter\">startup</str>\n    <str name=\"confFiles\">schema.xml,stopwords.txt</str>\n    </lst>\n    -->\n    <!--\n    <lst name=\"slave\">\n    <str name=\"masterUrl\">http://your-master-hostname:8983/solr</str>\n    <str name=\"pollInterval\">00:00:60</str>\n    </lst>\n    -->\n  </requestHandler>\n\n  <!-- Search Components\n\n  Search components are registered to SolrCore and used by\n  instances of SearchHandler (which can access them by name)\n\n  By default, the following components are available:\n\n  <searchComponent name=\"query\"     class=\"solr.QueryComponent\" />\n  <searchComponent name=\"facet\"     class=\"solr.FacetComponent\" />\n  <searchComponent name=\"mlt\"       class=\"solr.MoreLikeThisComponent\" />\n  <searchComponent name=\"highlight\" class=\"solr.HighlightComponent\" />\n  <searchComponent name=\"stats\"     class=\"solr.StatsComponent\" />\n  <searchComponent name=\"debug\"     class=\"solr.DebugComponent\" />\n\n  Default configuration in a requestHandler would look like:\n\n  <arr name=\"components\">\n  <str>query</str>\n  <str>facet</str>\n  <str>mlt</str>\n  <str>highlight</str>\n  <str>stats</str>\n  <str>debug</str>\n  </arr>\n\n  If you register a searchComponent to one of the standard names,\n  that will be used instead of the default.\n\n  To insert components before or after the 'standard' components, use:\n\n  <arr name=\"first-components\">\n  <str>myFirstComponentName</str>\n  </arr>\n\n  <arr name=\"last-components\">\n  <str>myLastComponentName</str>\n  </arr>\n\n  NOTE: The component registered with the name \"debug\" will\n  always be executed after the \"last-components\"\n\n  -->\n\n  <!-- Spell Check\n\n  The spell check component can return a list of alternative spelling\n  suggestions.\n\n  http://wiki.apache.org/solr/SpellCheckComponent\n  -->\n  <searchComponent name=\"spellcheck\" class=\"solr.SpellCheckComponent\">\n\n    <str name=\"queryAnalyzerFieldType\">key_lower_case</str>\n\n    <!-- Multiple \"Spell Checkers\" can be declared and used by this\n    component\n    -->\n\n    <!-- a spellchecker built from a field of the main index -->\n    <lst name=\"spellchecker\">\n      <str name=\"name\">default</str>\n      <str name=\"field\">text</str>\n      <str name=\"classname\">solr.DirectSolrSpellChecker</str>\n      <!-- the spellcheck distance measure used, the default is the internal levenshtein -->\n      <str name=\"distanceMeasure\">internal</str>\n      <!-- minimum accuracy needed to be considered a valid spellcheck suggestion -->\n      <float name=\"accuracy\">0.5</float>\n      <!-- the maximum #edits we consider when enumerating terms: can be 1 or 2 -->\n      <int name=\"maxEdits\">2</int>\n      <!-- the minimum shared prefix when enumerating terms -->\n      <int name=\"minPrefix\">1</int>\n      <!-- maximum number of inspections per result. -->\n      <int name=\"maxInspections\">5</int>\n      <!-- minimum length of a query term to be considered for correction -->\n      <int name=\"minQueryLength\">4</int>\n      <!-- maximum threshold of documents a query term can appear to be considered for correction -->\n      <float name=\"maxQueryFrequency\">0.01</float>\n      <!-- uncomment this to require suggestions to occur in 1% of the documents\n      <float name=\"thresholdTokenFrequency\">.01</float>\n      -->\n    </lst>\n\n    <!-- a spellchecker that can break or combine words.  See \"/spell\" handler below for usage -->\n    <lst name=\"spellchecker\">\n      <str name=\"name\">wordbreak</str>\n      <str name=\"classname\">solr.WordBreakSolrSpellChecker</str>\n      <str name=\"field\">name</str>\n      <str name=\"combineWords\">true</str>\n      <str name=\"breakWords\">true</str>\n      <int name=\"maxChanges\">10</int>\n    </lst>\n\n    <!-- a spellchecker that uses a different distance measure -->\n    <!--\n    <lst name=\"spellchecker\">\n    <str name=\"name\">jarowinkler</str>\n    <str name=\"field\">spell</str>\n    <str name=\"classname\">solr.DirectSolrSpellChecker</str>\n    <str name=\"distanceMeasure\">\n    org.apache.lucene.search.spell.JaroWinklerDistance\n    </str>\n    </lst>\n    -->\n\n    <!-- a spellchecker that use an alternate comparator\n\n    comparatorClass be one of:\n    1. score (default)\n    2. freq (Frequency first, then score)\n    3. A fully qualified class name\n    -->\n    <!--\n    <lst name=\"spellchecker\">\n    <str name=\"name\">freq</str>\n    <str name=\"field\">lowerfilt</str>\n    <str name=\"classname\">solr.DirectSolrSpellChecker</str>\n    <str name=\"comparatorClass\">freq</str>\n    -->\n\n    <!-- A spellchecker that reads the list of words from a file -->\n    <!--\n    <lst name=\"spellchecker\">\n    <str name=\"classname\">solr.FileBasedSpellChecker</str>\n    <str name=\"name\">file</str>\n    <str name=\"sourceLocation\">spellings.txt</str>\n    <str name=\"characterEncoding\">UTF-8</str>\n    <str name=\"spellcheckIndexDir\">spellcheckerFile</str>\n    </lst>\n    -->\n  </searchComponent>\n\n  <!-- A request handler for demonstrating the spellcheck component.\n\n  NOTE: This is purely as an example.  The whole purpose of the\n  SpellCheckComponent is to hook it into the request handler that\n  handles your normal user queries so that a separate request is\n  not needed to get suggestions.\n\n  IN OTHER WORDS, THERE IS REALLY GOOD CHANCE THE SETUP BELOW IS\n  NOT WHAT YOU WANT FOR YOUR PRODUCTION SYSTEM!\n\n  See http://wiki.apache.org/solr/SpellCheckComponent for details\n  on the request parameters.\n  -->\n  <requestHandler name=\"/spell\" class=\"solr.SearchHandler\" startup=\"lazy\">\n    <lst name=\"defaults\">\n      <str name=\"df\">text</str>\n      <!-- Solr will use suggestions from both the 'default' spellchecker\n      and from the 'wordbreak' spellchecker and combine them.\n      collations (re-written queries) can include a combination of\n      corrections from both spellcheckers -->\n      <str name=\"spellcheck.dictionary\">default</str>\n      <str name=\"spellcheck.dictionary\">wordbreak</str>\n      <str name=\"spellcheck\">on</str>\n      <str name=\"spellcheck.extendedResults\">true</str>\n      <str name=\"spellcheck.count\">10</str>\n      <str name=\"spellcheck.alternativeTermCount\">5</str>\n      <str name=\"spellcheck.maxResultsForSuggest\">5</str>\n      <str name=\"spellcheck.collate\">true</str>\n      <str name=\"spellcheck.collateExtendedResults\">true</str>\n      <str name=\"spellcheck.maxCollationTries\">10</str>\n      <str name=\"spellcheck.maxCollations\">5</str>\n    </lst>\n    <arr name=\"last-components\">\n      <str>spellcheck</str>\n    </arr>\n  </requestHandler>\n\n  <searchComponent name=\"suggest\" class=\"solr.SuggestComponent\">\n    <lst name=\"suggester\">\n      <str name=\"name\">mySuggester</str>\n      <str name=\"lookupImpl\">FuzzyLookupFactory</str>      <!-- org.apache.solr.spelling.suggest.fst -->\n      <str name=\"dictionaryImpl\">DocumentDictionaryFactory</str>     <!-- org.apache.solr.spelling.suggest.HighFrequencyDictionaryFactory -->\n      <str name=\"field\">cat</str>\n      <str name=\"weightField\">price</str>\n      <str name=\"suggestAnalyzerFieldType\">string</str>\n    </lst>\n  </searchComponent>\n\n  <requestHandler name=\"/suggest\" class=\"solr.SearchHandler\" startup=\"lazy\">\n    <lst name=\"defaults\">\n      <str name=\"suggest\">true</str>\n      <str name=\"suggest.count\">10</str>\n    </lst>\n    <arr name=\"components\">\n      <str>suggest</str>\n    </arr>\n  </requestHandler>\n  <!-- Term Vector Component\n\n  http://wiki.apache.org/solr/TermVectorComponent\n  -->\n  <searchComponent name=\"tvComponent\" class=\"solr.TermVectorComponent\"/>\n\n  <!-- A request handler for demonstrating the term vector component\n\n  This is purely as an example.\n\n  In reality you will likely want to add the component to your\n  already specified request handlers.\n  -->\n  <requestHandler name=\"/tvrh\" class=\"solr.SearchHandler\" startup=\"lazy\">\n    <lst name=\"defaults\">\n      <str name=\"df\">text</str>\n      <bool name=\"tv\">true</bool>\n    </lst>\n    <arr name=\"last-components\">\n      <str>tvComponent</str>\n    </arr>\n  </requestHandler>\n\n  <!-- Clustering Component\n\n  You'll need to set the solr.clustering.enabled system property\n  when running solr to run with clustering enabled:\n\n  java -Dsolr.clustering.enabled=true -jar start.jar\n\n  http://wiki.apache.org/solr/ClusteringComponent\n  http://carrot2.github.io/solr-integration-strategies/\n  -->\n  <searchComponent name=\"clustering\"\n                   enable=\"${solr.clustering.enabled:false}\"\n                   class=\"solr.clustering.ClusteringComponent\">\n    <lst name=\"engine\">\n      <str name=\"name\">lingo</str>\n\n      <!-- Class name of a clustering algorithm compatible with the Carrot2 framework.\n\n      Currently available open source algorithms are:\n      * org.carrot2.clustering.lingo.LingoClusteringAlgorithm\n      * org.carrot2.clustering.stc.STCClusteringAlgorithm\n      * org.carrot2.clustering.kmeans.BisectingKMeansClusteringAlgorithm\n\n      See http://project.carrot2.org/algorithms.html for more information.\n\n      A commercial algorithm Lingo3G (needs to be installed separately) is defined as:\n      * com.carrotsearch.lingo3g.Lingo3GClusteringAlgorithm\n      -->\n      <str name=\"carrot.algorithm\">org.carrot2.clustering.lingo.LingoClusteringAlgorithm</str>\n\n      <!-- Override location of the clustering algorithm's resources\n      (attribute definitions and lexical resources).\n\n      A directory from which to load algorithm-specific stop words,\n      stop labels and attribute definition XMLs.\n\n      For an overview of Carrot2 lexical resources, see:\n      http://download.carrot2.org/head/manual/#chapter.lexical-resources\n\n      For an overview of Lingo3G lexical resources, see:\n      http://download.carrotsearch.com/lingo3g/manual/#chapter.lexical-resources\n      -->\n      <str name=\"carrot.resourcesDir\">clustering/carrot2</str>\n    </lst>\n\n    <!-- An example definition for the STC clustering algorithm. -->\n    <lst name=\"engine\">\n      <str name=\"name\">stc</str>\n      <str name=\"carrot.algorithm\">org.carrot2.clustering.stc.STCClusteringAlgorithm</str>\n    </lst>\n\n    <!-- An example definition for the bisecting kmeans clustering algorithm. -->\n    <lst name=\"engine\">\n      <str name=\"name\">kmeans</str>\n      <str name=\"carrot.algorithm\">org.carrot2.clustering.kmeans.BisectingKMeansClusteringAlgorithm</str>\n    </lst>\n  </searchComponent>\n\n  <!-- A request handler for demonstrating the clustering component\n\n  This is purely as an example.\n\n  In reality you will likely want to add the component to your\n  already specified request handlers.\n  -->\n  <requestHandler name=\"/clustering\"\n                  startup=\"lazy\"\n                  enable=\"${solr.clustering.enabled:false}\"\n                  class=\"solr.SearchHandler\">\n    <lst name=\"defaults\">\n      <bool name=\"clustering\">true</bool>\n      <bool name=\"clustering.results\">true</bool>\n      <!-- Field name with the logical \"title\" of a each document (optional) -->\n      <str name=\"carrot.title\">name</str>\n      <!-- Field name with the logical \"URL\" of a each document (optional) -->\n      <str name=\"carrot.url\">id</str>\n      <!-- Field name with the logical \"content\" of a each document (optional) -->\n      <str name=\"carrot.snippet\">features</str>\n      <!-- Apply highlighter to the title/ content and use this for clustering. -->\n      <bool name=\"carrot.produceSummary\">true</bool>\n      <!-- the maximum number of labels per cluster -->\n      <!--<int name=\"carrot.numDescriptions\">5</int>-->\n      <!-- produce sub clusters -->\n      <bool name=\"carrot.outputSubClusters\">false</bool>\n\n      <!-- Configure the remaining request handler parameters. -->\n      <str name=\"defType\">edismax</str>\n      <str name=\"qf\">\n        text^0.5 features^1.0 name^1.2 sku^1.5 id^10.0 manu^1.1 cat^1.4\n      </str>\n      <str name=\"q.alt\">*:*</str>\n      <str name=\"rows\">10</str>\n      <str name=\"fl\">*,score</str>\n    </lst>\n    <arr name=\"last-components\">\n      <str>clustering</str>\n    </arr>\n  </requestHandler>\n\n  <!-- Terms Component\n\n  http://wiki.apache.org/solr/TermsComponent\n\n  A component to return terms and document frequency of those\n  terms\n  -->\n  <searchComponent name=\"terms\" class=\"solr.TermsComponent\"/>\n\n  <!-- A request handler for demonstrating the terms component -->\n  <requestHandler name=\"/terms\" class=\"solr.SearchHandler\" startup=\"lazy\">\n    <lst name=\"defaults\">\n      <bool name=\"terms\">true</bool>\n      <bool name=\"distrib\">false</bool>\n    </lst>\n    <arr name=\"components\">\n      <str>terms</str>\n    </arr>\n  </requestHandler>\n\n\n  <!-- Query Elevation Component\n\n  http://wiki.apache.org/solr/QueryElevationComponent\n\n  a search component that enables you to configure the top\n  results for a given query regardless of the normal lucene\n  scoring.\n  -->\n  <searchComponent name=\"elevator\" class=\"solr.QueryElevationComponent\">\n    <!-- pick a fieldType to analyze queries -->\n    <str name=\"queryFieldType\">string</str>\n    <str name=\"config-file\">elevate.xml</str>\n  </searchComponent>\n\n  <!-- A request handler for demonstrating the elevator component -->\n  <requestHandler name=\"/elevate\" class=\"solr.SearchHandler\" startup=\"lazy\">\n    <lst name=\"defaults\">\n      <str name=\"echoParams\">explicit</str>\n      <str name=\"df\">text</str>\n    </lst>\n    <arr name=\"last-components\">\n      <str>elevator</str>\n    </arr>\n  </requestHandler>\n\n  <!-- Highlighting Component\n\n  http://wiki.apache.org/solr/HighlightingParameters\n  -->\n  <searchComponent class=\"solr.HighlightComponent\" name=\"highlight\">\n    <highlighting>\n      <!-- Configure the standard fragmenter -->\n      <!-- This could most likely be commented out in the \"default\" case -->\n      <fragmenter name=\"gap\"\n                  default=\"true\"\n                  class=\"solr.highlight.GapFragmenter\">\n        <lst name=\"defaults\">\n          <int name=\"hl.fragsize\">100</int>\n        </lst>\n      </fragmenter>\n\n      <!-- A regular-expression-based fragmenter\n      (for sentence extraction)\n      -->\n      <fragmenter name=\"regex\"\n                  class=\"solr.highlight.RegexFragmenter\">\n        <lst name=\"defaults\">\n          <!-- slightly smaller fragsizes work better because of slop -->\n          <int name=\"hl.fragsize\">70</int>\n          <!-- allow 50% slop on fragment sizes -->\n          <float name=\"hl.regex.slop\">0.5</float>\n          <!-- a basic sentence pattern -->\n          <str name=\"hl.regex.pattern\">[-\\w ,/\\n\\&amp;quot;&amp;apos;]{20,200}</str>\n        </lst>\n      </fragmenter>\n\n      <!-- Configure the standard formatter -->\n      <formatter name=\"html\"\n                 default=\"true\"\n                 class=\"solr.highlight.HtmlFormatter\">\n        <lst name=\"defaults\">\n          <str name=\"hl.simple.pre\"><![CDATA[<em>]]></str>\n          <str name=\"hl.simple.post\"><![CDATA[</em>]]></str>\n        </lst>\n      </formatter>\n\n      <!-- Configure the standard encoder -->\n      <encoder name=\"html\"\n               class=\"solr.highlight.HtmlEncoder\"/>\n\n      <!-- Configure the standard fragListBuilder -->\n      <fragListBuilder name=\"simple\"\n                       class=\"solr.highlight.SimpleFragListBuilder\"/>\n\n      <!-- Configure the single fragListBuilder -->\n      <fragListBuilder name=\"single\"\n                       class=\"solr.highlight.SingleFragListBuilder\"/>\n\n      <!-- Configure the weighted fragListBuilder -->\n      <fragListBuilder name=\"weighted\"\n                       default=\"true\"\n                       class=\"solr.highlight.WeightedFragListBuilder\"/>\n\n      <!-- default tag FragmentsBuilder -->\n      <fragmentsBuilder name=\"default\"\n                        default=\"true\"\n                        class=\"solr.highlight.ScoreOrderFragmentsBuilder\">\n        <!--\n        <lst name=\"defaults\">\n        <str name=\"hl.multiValuedSeparatorChar\">/</str>\n        </lst>\n        -->\n      </fragmentsBuilder>\n\n      <!-- multi-colored tag FragmentsBuilder -->\n      <fragmentsBuilder name=\"colored\"\n                        class=\"solr.highlight.ScoreOrderFragmentsBuilder\">\n        <lst name=\"defaults\">\n          <str name=\"hl.tag.pre\"><![CDATA[\n  <b style=\"background:yellow\">,<b style=\"background:lawgreen\">,\n  <b style=\"background:aquamarine\">,<b style=\"background:magenta\">,\n  <b style=\"background:palegreen\">,<b style=\"background:coral\">,\n  <b style=\"background:wheat\">,<b style=\"background:khaki\">,\n  <b style=\"background:lime\">,<b style=\"background:deepskyblue\">]]></str>\n          <str name=\"hl.tag.post\"><![CDATA[</b>]]></str>\n        </lst>\n      </fragmentsBuilder>\n\n      <boundaryScanner name=\"default\"\n                       default=\"true\"\n                       class=\"solr.highlight.SimpleBoundaryScanner\">\n        <lst name=\"defaults\">\n          <str name=\"hl.bs.maxScan\">10</str>\n          <str name=\"hl.bs.chars\">.,!? &amp;#9;&amp;#10;&amp;#13;</str>\n        </lst>\n      </boundaryScanner>\n\n      <boundaryScanner name=\"breakIterator\"\n                       class=\"solr.highlight.BreakIteratorBoundaryScanner\">\n        <lst name=\"defaults\">\n          <!-- type should be one of CHARACTER, WORD(default), LINE and SENTENCE -->\n          <str name=\"hl.bs.type\">WORD</str>\n          <!-- language and country are used when constructing Locale object.  -->\n          <!-- And the Locale object will be used when getting instance of BreakIterator -->\n          <str name=\"hl.bs.language\">en</str>\n          <str name=\"hl.bs.country\">US</str>\n        </lst>\n      </boundaryScanner>\n    </highlighting>\n  </searchComponent>\n\n  <!-- Update Processors\n\n  Chains of Update Processor Factories for dealing with Update\n  Requests can be declared, and then used by name in Update\n  Request Processors\n\n  http://wiki.apache.org/solr/UpdateRequestProcessor\n\n  -->\n\n  <!-- Add unknown fields to the schema\n\n  An example field type guessing update processor that will\n  attempt to parse string-typed field values as Booleans, Longs,\n  Doubles, or Dates, and then add schema fields with the guessed\n  field types.\n\n  This requires that the schema is both managed and mutable, by\n  declaring schemaFactory as ManagedIndexSchemaFactory, with\n  mutable specified as true.\n\n  See http://wiki.apache.org/solr/GuessingFieldTypes\n  -->\n  <updateRequestProcessorChain name=\"add-unknown-fields-to-the-schema\">\n\n    <processor class=\"solr.DefaultValueUpdateProcessorFactory\">\n      <str name=\"fieldName\">_ttl_</str>\n      <str name=\"value\">+{{logsearch_service_logs_max_retention}}DAYS</str>\n    </processor>\n    <processor class=\"solr.processor.DocExpirationUpdateProcessorFactory\">\n      <int name=\"autoDeletePeriodSeconds\">86400</int>\n      <str name=\"ttlFieldName\">_ttl_</str>\n      <str name=\"expirationFieldName\">_expire_at_</str>\n    </processor>\n    <processor class=\"solr.FirstFieldValueUpdateProcessorFactory\">\n      <str name=\"fieldName\">_expire_at_</str>\n    </processor>\n\n\n    <processor class=\"solr.RemoveBlankFieldUpdateProcessorFactory\"/>\n    <processor class=\"solr.ParseBooleanFieldUpdateProcessorFactory\"/>\n    <processor class=\"solr.ParseLongFieldUpdateProcessorFactory\"/>\n    <processor class=\"solr.ParseDoubleFieldUpdateProcessorFactory\"/>\n    <processor class=\"solr.ParseDateFieldUpdateProcessorFactory\">\n      <arr name=\"format\">\n        <str>yyyy-MM-dd'T'HH:mm:ss.SSSZ</str>\n        <str>yyyy-MM-dd'T'HH:mm:ss,SSSZ</str>\n        <str>yyyy-MM-dd'T'HH:mm:ss.SSS</str>\n        <str>yyyy-MM-dd'T'HH:mm:ss,SSS</str>\n        <str>yyyy-MM-dd'T'HH:mm:ssZ</str>\n        <str>yyyy-MM-dd'T'HH:mm:ss</str>\n        <str>yyyy-MM-dd'T'HH:mmZ</str>\n        <str>yyyy-MM-dd'T'HH:mm</str>\n        <str>yyyy-MM-dd HH:mm:ss.SSSZ</str>\n        <str>yyyy-MM-dd HH:mm:ss,SSSZ</str>\n        <str>yyyy-MM-dd HH:mm:ss.SSS</str>\n        <str>yyyy-MM-dd HH:mm:ss,SSS</str>\n        <str>yyyy-MM-dd HH:mm:ssZ</str>\n        <str>yyyy-MM-dd HH:mm:ss</str>\n        <str>yyyy-MM-dd HH:mmZ</str>\n        <str>yyyy-MM-dd HH:mm</str>\n        <str>yyyy-MM-dd</str>\n      </arr>\n    </processor>\n    <processor class=\"solr.AddSchemaFieldsUpdateProcessorFactory\">\n      <str name=\"defaultFieldType\">key_lower_case</str>\n      <lst name=\"typeMapping\">\n        <str name=\"valueClass\">java.lang.Boolean</str>\n        <str name=\"fieldType\">boolean</str>\n      </lst>\n      <lst name=\"typeMapping\">\n        <str name=\"valueClass\">java.util.Date</str>\n        <str name=\"fieldType\">tdate</str>\n      </lst>\n      <lst name=\"typeMapping\">\n        <str name=\"valueClass\">java.lang.Long</str>\n        <str name=\"valueClass\">java.lang.Integer</str>\n        <str name=\"fieldType\">tlong</str>\n      </lst>\n      <lst name=\"typeMapping\">\n        <str name=\"valueClass\">java.lang.Number</str>\n        <str name=\"fieldType\">tdouble</str>\n      </lst>\n    </processor>\n\n    <processor class=\"solr.LogUpdateProcessorFactory\"/>\n    <processor class=\"solr.RunUpdateProcessorFactory\"/>\n  </updateRequestProcessorChain>\n\n\n  <!-- Deduplication\n\n  An example dedup update processor that creates the \"id\" field\n  on the fly based on the hash code of some other fields.  This\n  example has overwriteDupes set to false since we are using the\n  id field as the signatureField and Solr will maintain\n  uniqueness based on that anyway.\n\n  -->\n  <!--\n  <updateRequestProcessorChain name=\"dedupe\">\n  <processor class=\"solr.processor.SignatureUpdateProcessorFactory\">\n  <bool name=\"enabled\">true</bool>\n  <str name=\"signatureField\">id</str>\n  <bool name=\"overwriteDupes\">false</bool>\n  <str name=\"fields\">name,features,cat</str>\n  <str name=\"signatureClass\">solr.processor.Lookup3Signature</str>\n  </processor>\n  <processor class=\"solr.LogUpdateProcessorFactory\" />\n  <processor class=\"solr.RunUpdateProcessorFactory\" />\n  </updateRequestProcessorChain>\n  -->\n\n  <!-- Language identification\n\n  This example update chain identifies the language of the incoming\n  documents using the langid contrib. The detected language is\n  written to field language_s. No field name mapping is done.\n  The fields used for detection are text, title, subject and description,\n  making this example suitable for detecting languages form full-text\n  rich documents injected via ExtractingRequestHandler.\n  See more about langId at http://wiki.apache.org/solr/LanguageDetection\n  -->\n  <!--\n  <updateRequestProcessorChain name=\"langid\">\n  <processor class=\"org.apache.solr.update.processor.TikaLanguageIdentifierUpdateProcessorFactory\">\n  <str name=\"langid.fl\">text,title,subject,description</str>\n  <str name=\"langid.langField\">language_s</str>\n  <str name=\"langid.fallback\">en</str>\n  </processor>\n  <processor class=\"solr.LogUpdateProcessorFactory\" />\n  <processor class=\"solr.RunUpdateProcessorFactory\" />\n  </updateRequestProcessorChain>\n  -->\n\n  <!-- Script update processor\n\n  This example hooks in an update processor implemented using JavaScript.\n\n  See more about the script update processor at http://wiki.apache.org/solr/ScriptUpdateProcessor\n  -->\n  <!--\n  <updateRequestProcessorChain name=\"script\">\n  <processor class=\"solr.StatelessScriptUpdateProcessorFactory\">\n  <str name=\"script\">update-script.js</str>\n  <lst name=\"params\">\n  <str name=\"config_param\">example config parameter</str>\n  </lst>\n  </processor>\n  <processor class=\"solr.RunUpdateProcessorFactory\" />\n  </updateRequestProcessorChain>\n  -->\n\n  <!-- Response Writers\n\n  http://wiki.apache.org/solr/QueryResponseWriter\n\n  Request responses will be written using the writer specified by\n  the 'wt' request parameter matching the name of a registered\n  writer.\n\n  The \"default\" writer is the default and will be used if 'wt' is\n  not specified in the request.\n  -->\n  <!-- The following response writers are implicitly configured unless\n  overridden...\n  -->\n  <!--\n  <queryResponseWriter name=\"xml\"\n  default=\"true\"\n  class=\"solr.XMLResponseWriter\" />\n  <queryResponseWriter name=\"json\" class=\"solr.JSONResponseWriter\"/>\n  <queryResponseWriter name=\"python\" class=\"solr.PythonResponseWriter\"/>\n  <queryResponseWriter name=\"ruby\" class=\"solr.RubyResponseWriter\"/>\n  <queryResponseWriter name=\"php\" class=\"solr.PHPResponseWriter\"/>\n  <queryResponseWriter name=\"phps\" class=\"solr.PHPSerializedResponseWriter\"/>\n  <queryResponseWriter name=\"csv\" class=\"solr.CSVResponseWriter\"/>\n  <queryResponseWriter name=\"schema.xml\" class=\"solr.SchemaXmlResponseWriter\"/>\n  -->\n\n  <queryResponseWriter name=\"json\" class=\"solr.JSONResponseWriter\">\n    <!-- For the purposes of the tutorial, JSON responses are written as\n    plain text so that they are easy to read in *any* browser.\n    If you expect a MIME type of \"application/json\" just remove this override.\n    -->\n    <str name=\"content-type\">text/plain; charset=UTF-8</str>\n  </queryResponseWriter>\n\n  <!--\n  Custom response writers can be declared as needed...\n  -->\n  <queryResponseWriter name=\"velocity\" class=\"solr.VelocityResponseWriter\" startup=\"lazy\">\n    <str name=\"template.base.dir\">${velocity.template.base.dir:}</str>\n  </queryResponseWriter>\n\n  <!-- XSLT response writer transforms the XML output by any xslt file found\n  in Solr's conf/xslt directory.  Changes to xslt files are checked for\n  every xsltCacheLifetimeSeconds.\n  -->\n  <queryResponseWriter name=\"xslt\" class=\"solr.XSLTResponseWriter\">\n    <int name=\"xsltCacheLifetimeSeconds\">5</int>\n  </queryResponseWriter>\n\n  <!-- Query Parsers\n\n  http://wiki.apache.org/solr/SolrQuerySyntax\n\n  Multiple QParserPlugins can be registered by name, and then\n  used in either the \"defType\" param for the QueryComponent (used\n  by SearchHandler) or in LocalParams\n  -->\n  <!-- example of registering a query parser -->\n  <!--\n  <queryParser name=\"myparser\" class=\"com.mycompany.MyQParserPlugin\"/>\n  -->\n\n  <!-- Function Parsers\n\n  http://wiki.apache.org/solr/FunctionQuery\n\n  Multiple ValueSourceParsers can be registered by name, and then\n  used as function names when using the \"func\" QParser.\n  -->\n  <!-- example of registering a custom function parser  -->\n  <!--\n  <valueSourceParser name=\"myfunc\"\n  class=\"com.mycompany.MyValueSourceParser\" />\n  -->\n\n\n  <!-- Document Transformers\n  http://wiki.apache.org/solr/DocTransformers\n  -->\n  <!--\n  Could be something like:\n  <transformer name=\"db\" class=\"com.mycompany.LoadFromDatabaseTransformer\" >\n  <int name=\"connection\">jdbc://....</int>\n  </transformer>\n\n  To add a constant value to all docs, use:\n  <transformer name=\"mytrans2\" class=\"org.apache.solr.response.transform.ValueAugmenterFactory\" >\n  <int name=\"value\">5</int>\n  </transformer>\n\n  If you want the user to still be able to change it with _value:something_ use this:\n  <transformer name=\"mytrans3\" class=\"org.apache.solr.response.transform.ValueAugmenterFactory\" >\n  <double name=\"defaultValue\">5</double>\n  </transformer>\n\n  If you are using the QueryElevationComponent, you may wish to mark documents that get boosted.  The\n  EditorialMarkerFactory will do exactly that:\n  <transformer name=\"qecBooster\" class=\"org.apache.solr.response.transform.EditorialMarkerFactory\" />\n  -->\n\n\n  <!-- Legacy config for the admin interface -->\n  <admin>\n    <defaultQuery>*:*</defaultQuery>\n  </admin>\n\n</config>"
        }
      }
    },
    {
      "hadoop-policy" : {
        "properties_attributes" : { },
        "properties" : {
          "security.inter.datanode.protocol.acl" : "*",
          "security.refresh.usertogroups.mappings.protocol.acl" : "hadoop",
          "security.admin.operations.protocol.acl" : "hadoop",
          "security.client.datanode.protocol.acl" : "*",
          "security.datanode.protocol.acl" : "*",
          "security.inter.tracker.protocol.acl" : "*",
          "security.job.client.protocol.acl" : "*",
          "security.client.protocol.acl" : "*",
          "security.job.task.protocol.acl" : "*",
          "security.refresh.policy.protocol.acl" : "hadoop",
          "security.namenode.protocol.acl" : "*"
        }
      }
    },
    {
      "nifi-bootstrap-env" : {
        "properties_attributes" : { },
        "properties" : {
          "content" : "\n#\n# Licensed to the Apache Software Foundation (ASF) under one or more\n# contributor license agreements.  See the NOTICE file distributed with\n# this work for additional information regarding copyright ownership.\n# The ASF licenses this file to You under the Apache License, Version 2.0\n# (the \"License\"); you may not use this file except in compliance with\n# the License.  You may obtain a copy of the License at\n#\n#   http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n#\n\n# Java command to use when running NiFi\njava=java\n\n# Username to use when running NiFi. This value will be ignored on Windows.\nrun.as={{nifi_user}}\n##run.as=root\n\n# Configure where NiFi's lib and conf directories live\nlib.dir={{nifi_install_dir}}/lib\nconf.dir={{nifi_config_dir}}\n\n# How long to wait after telling NiFi to shutdown before explicitly killing the Process\ngraceful.shutdown.seconds=20\n\n{% if security_enabled %}\njava.arg.0=-Djava.security.auth.login.config={{nifi_jaas_conf}}\n{% endif %}\n\n# Disable JSR 199 so that we can use JSP's without running a JDK\njava.arg.1=-Dorg.apache.jasper.compiler.disablejsr199=true\n\n# JVM memory settings\njava.arg.2=-Xms{{nifi_initial_mem}}\njava.arg.3=-Xmx{{nifi_max_mem}}\n\n# Enable Remote Debugging\n#java.arg.debug=-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=8000\n\njava.arg.4=-Djava.net.preferIPv4Stack=true\n\n# allowRestrictedHeaders is required for Cluster/Node communications to work properly\njava.arg.5=-Dsun.net.http.allowRestrictedHeaders=true\njava.arg.6=-Djava.protocol.handler.pkgs=sun.net.www.protocol\n\n# The G1GC is still considered experimental but has proven to be very advantageous in providing great\n# performance without significant \"stop-the-world\" delays.\njava.arg.13=-XX:+UseG1GC\n\n#Set headless mode by default\njava.arg.14=-Djava.awt.headless=true\n\n#Ambari Metrics Collector URL - passed in to flow.xml for AmbariReportingTask\njava.arg.15=-Dambari.metrics.collector.url=http://{{metrics_collector_host}}:{{metrics_collector_port}}/ws/v1/timeline/metrics\n\n#Application ID - used in flow.xml - passed into flow.xml for AmbariReportingTask\njava.arg.16=-Dambari.application.id=nifi\n\n#Sets the provider of SecureRandom to /dev/urandom to prevent blocking on VMs\njava.arg.17=-Djava.security.egd=file:/dev/urandom\n\n# Requires JAAS to use only the provided JAAS configuration to authenticate a Subject, without using any \"fallback\" methods (such as prompting for username/password)\n# Please see https://docs.oracle.com/javase/8/docs/technotes/guides/security/jgss/single-signon.html, section \"EXCEPTIONS TO THE MODEL\"\njava.arg.18=-Djavax.security.auth.useSubjectCredsOnly=true\n\n###\n# Notification Services for notifying interested parties when NiFi is stopped, started, dies\n###\n\n# XML File that contains the definitions of the notification services\nnotification.services.file={{nifi_config_dir}}/bootstrap-notification-services.xml\n\n# In the case that we are unable to send a notification for an event, how many times should we retry?\nnotification.max.attempts=5\n\n# Comma-separated list of identifiers that are present in the notification.services.file; which services should be used to notify when NiFi is started?\n#nifi.start.notification.services=email-notification\n\n# Comma-separated list of identifiers that are present in the notification.services.file; which services should be used to notify when NiFi is stopped?\n#nifi.stop.notification.services=email-notification\n\n# Comma-separated list of identifiers that are present in the notification.services.file; which services should be used to notify when NiFi dies?\n#nifi.dead.notification.services=email-notification"
        }
      }
    },
    {
      "infra-solr-log4j" : {
        "properties_attributes" : { },
        "properties" : {
          "infra_log_maxbackupindex" : "9",
          "infra_log_maxfilesize" : "10",
          "content" : "# Licensed to the Apache Software Foundation (ASF) under one or more\n# contributor license agreements.  See the NOTICE file distributed with\n# this work for additional information regarding copyright ownership.\n# The ASF licenses this file to You under the Apache License, Version 2.0\n# (the \"License\"); you may not use this file except in compliance with\n# the License.  You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\n#  Logging level\ninfra.solr.log.dir={{infra_solr_log_dir}}\n#log4j.rootLogger=INFO, file, CONSOLE\nlog4j.rootLogger=WARN, file\n\nlog4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender\n\nlog4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout\nlog4j.appender.CONSOLE.layout.ConversionPattern=%-4r [%t] %-5p %c %x [%X{collection} %X{shard} %X{replica} %X{core}] \\u2013 %m%n\n\n#- size rotation with log cleanup.\nlog4j.appender.file=org.apache.log4j.RollingFileAppender\nlog4j.appender.file.MaxFileSize={{infra_log_maxfilesize}}MB\nlog4j.appender.file.MaxBackupIndex={{infra_log_maxbackupindex}}\n\n#- File to log to and log format\nlog4j.appender.file.File=${infra.solr.log.dir}/solr.log\nlog4j.appender.file.layout=org.apache.log4j.PatternLayout\nlog4j.appender.file.layout.ConversionPattern=%d{ISO8601} [%t] %-5p [%X{collection} %X{shard} %X{replica} %X{core}] %C (%F:%L) - %m%n\n\nlog4j.logger.org.apache.zookeeper=WARN\nlog4j.logger.org.apache.hadoop=WARN\n\n# set to INFO to enable infostream log messages\nlog4j.logger.org.apache.solr.update.LoggingInfoStream=OFF"
        }
      }
    },
    {
      "core-site" : {
        "properties_attributes" : {
          "final" : {
            "fs.defaultFS" : "true"
          }
        },
        "properties" : {
          "fs.defaultFS" : "hdfs://%HOSTGROUP::host_group_1%:8020",
          "ipc.server.tcpnodelay" : "true",
          "mapreduce.jobtracker.webinterface.trusted" : "false",
          "hadoop.security.auth_to_local" : "DEFAULT",
          "hadoop.proxyuser.root.groups" : "*",
          "ipc.client.idlethreshold" : "8000",
          "hadoop.proxyuser.hdfs.groups" : "*",
          "fs.trash.interval" : "360",
          "hadoop.http.authentication.simple.anonymous.allowed" : "true",
          "hadoop.security.authorization" : "false",
          "ipc.client.connection.maxidletime" : "30000",
          "hadoop.proxyuser.hcat.groups" : "*",
          "hadoop.proxyuser.hive.hosts" : "%HOSTGROUP::host_group_1%",
          "hadoop.proxyuser.root.hosts" : "adh16-blueprint",
          "ha.failover-controller.active-standby-elector.zk.op.retries" : "120",
          "hadoop.security.authentication" : "simple",
          "hadoop.proxyuser.hdfs.hosts" : "*",
          "ipc.client.connect.max.retries" : "50",
          "io.file.buffer.size" : "131072",
          "hadoop.proxyuser.oozie.hosts" : "%HOSTGROUP::host_group_1%",
          "hadoop.proxyuser.hcat.hosts" : "%HOSTGROUP::host_group_1%",
          "hadoop.proxyuser.oozie.groups" : "*",
          "net.topology.script.file.name" : "/etc/hadoop/conf/topology_script.py",
          "io.compression.codecs" : "org.apache.hadoop.io.compress.GzipCodec,org.apache.hadoop.io.compress.DefaultCodec,org.apache.hadoop.io.compress.SnappyCodec",
          "hadoop.proxyuser.hive.groups" : "*",
          "io.serializations" : "org.apache.hadoop.io.serializer.WritableSerialization"
        }
      }
    },
    {
      "oozie-log4j" : {
        "properties_attributes" : { },
        "properties" : {
          "oozie_log_maxhistory" : "720",
          "content" : "\n#\n# Licensed to the Apache Software Foundation (ASF) under one\n# or more contributor license agreements.  See the NOTICE file\n# distributed with this work for additional information\n# regarding copyright ownership.  The ASF licenses this file\n# to you under the Apache License, Version 2.0 (the\n# \"License\"); you may not use this file except in compliance\n# with the License.  You may obtain a copy of the License at\n#\n#    http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License. See accompanying LICENSE file.\n#\n\n# If the Java System property 'oozie.log.dir' is not defined at Oozie start up time\n# XLogService sets its value to '${oozie.home}/logs'\n\n# The appender that Oozie uses must be named 'oozie' (i.e. log4j.appender.oozie)\n\n# Using the RollingFileAppender with the OozieRollingPolicy will roll the log file every hour and retain up to MaxHistory number of\n# log files. If FileNamePattern ends with \".gz\" it will create gzip files.\nlog4j.appender.oozie=org.apache.log4j.rolling.RollingFileAppender\nlog4j.appender.oozie.RollingPolicy=org.apache.oozie.util.OozieRollingPolicy\nlog4j.appender.oozie.File=${oozie.log.dir}/oozie.log\nlog4j.appender.oozie.Append=true\nlog4j.appender.oozie.layout=org.apache.log4j.PatternLayout\nlog4j.appender.oozie.layout.ConversionPattern=%d{ISO8601} %5p %c{1}:%L - SERVER[${oozie.instance.id}] %m%n\n# The FileNamePattern must end with \"-%d{yyyy-MM-dd-HH}.gz\" or \"-%d{yyyy-MM-dd-HH}\" and also start with the\n# value of log4j.appender.oozie.File\nlog4j.appender.oozie.RollingPolicy.FileNamePattern=${log4j.appender.oozie.File}-%d{yyyy-MM-dd-HH}\n# The MaxHistory controls how many log files will be retained (720 hours / 24 hours per day = 30 days); -1 to disable\nlog4j.appender.oozie.RollingPolicy.MaxHistory={{oozie_log_maxhistory}}\n\n\n\nlog4j.appender.oozieError=org.apache.log4j.rolling.RollingFileAppender\nlog4j.appender.oozieError.RollingPolicy=org.apache.oozie.util.OozieRollingPolicy\nlog4j.appender.oozieError.File=${oozie.log.dir}/oozie-error.log\nlog4j.appender.oozieError.Append=true\nlog4j.appender.oozieError.layout=org.apache.log4j.PatternLayout\nlog4j.appender.oozieError.layout.ConversionPattern=%d{ISO8601} %5p %c{1}:%L - SERVER[${oozie.instance.id}] %m%n\n# The FileNamePattern must end with \"-%d{yyyy-MM-dd-HH}.gz\" or \"-%d{yyyy-MM-dd-HH}\" and also start with the\n# value of log4j.appender.oozieError.File\nlog4j.appender.oozieError.RollingPolicy.FileNamePattern=${log4j.appender.oozieError.File}-%d{yyyy-MM-dd-HH}\n# The MaxHistory controls how many log files will be retained (720 hours / 24 hours per day = 30 days); -1 to disable\nlog4j.appender.oozieError.RollingPolicy.MaxHistory=720\nlog4j.appender.oozieError.filter.1 = org.apache.log4j.varia.LevelMatchFilter\nlog4j.appender.oozieError.filter.1.levelToMatch = WARN\nlog4j.appender.oozieError.filter.2 = org.apache.log4j.varia.LevelMatchFilter\nlog4j.appender.oozieError.filter.2.levelToMatch = ERROR\nlog4j.appender.oozieError.filter.3 = org.apache.log4j.varia.LevelMatchFilter\nlog4j.appender.oozieError.filter.3.levelToMatch = FATAL\nlog4j.appender.oozieError.filter.4 = org.apache.log4j.varia.DenyAllFilter\n\n\n\n# Uncomment the below two lines to use the DailyRollingFileAppender instead\n# The DatePattern must end with either \"dd\" or \"HH\"\n#log4j.appender.oozie=org.apache.log4j.DailyRollingFileAppender\n#log4j.appender.oozie.DatePattern='.'yyyy-MM-dd-HH\n\nlog4j.appender.oozieops=org.apache.log4j.DailyRollingFileAppender\nlog4j.appender.oozieops.DatePattern='.'yyyy-MM-dd\nlog4j.appender.oozieops.File=${oozie.log.dir}/oozie-ops.log\nlog4j.appender.oozieops.Append=true\nlog4j.appender.oozieops.layout=org.apache.log4j.PatternLayout\nlog4j.appender.oozieops.layout.ConversionPattern=%d{ISO8601} %5p %c{1}:%L - %m%n\n\nlog4j.appender.oozieinstrumentation=org.apache.log4j.DailyRollingFileAppender\nlog4j.appender.oozieinstrumentation.DatePattern='.'yyyy-MM-dd\nlog4j.appender.oozieinstrumentation.File=${oozie.log.dir}/oozie-instrumentation.log\nlog4j.appender.oozieinstrumentation.Append=true\nlog4j.appender.oozieinstrumentation.layout=org.apache.log4j.PatternLayout\nlog4j.appender.oozieinstrumentation.layout.ConversionPattern=%d{ISO8601} %5p %c{1}:%L - %m%n\n\nlog4j.appender.oozieaudit=org.apache.log4j.DailyRollingFileAppender\nlog4j.appender.oozieaudit.DatePattern='.'yyyy-MM-dd\nlog4j.appender.oozieaudit.File=${oozie.log.dir}/oozie-audit.log\nlog4j.appender.oozieaudit.Append=true\nlog4j.appender.oozieaudit.layout=org.apache.log4j.PatternLayout\nlog4j.appender.oozieaudit.layout.ConversionPattern=%d{ISO8601} %5p %c{1}:%L - %m%n\n\nlog4j.appender.openjpa=org.apache.log4j.DailyRollingFileAppender\nlog4j.appender.openjpa.DatePattern='.'yyyy-MM-dd\nlog4j.appender.openjpa.File=${oozie.log.dir}/oozie-jpa.log\nlog4j.appender.openjpa.Append=true\nlog4j.appender.openjpa.layout=org.apache.log4j.PatternLayout\nlog4j.appender.openjpa.layout.ConversionPattern=%d{ISO8601} %5p %c{1}:%L - %m%n\n\nlog4j.logger.openjpa=INFO, openjpa\nlog4j.logger.oozieops=INFO, oozieops\nlog4j.logger.oozieinstrumentation=ALL, oozieinstrumentation\nlog4j.logger.oozieaudit=ALL, oozieaudit\nlog4j.logger.org.apache.oozie=INFO, oozie, oozieError\nlog4j.logger.org.apache.hadoop=WARN, oozie\nlog4j.logger.org.mortbay=WARN, oozie\nlog4j.logger.org.hsqldb=WARN, oozie\nlog4j.logger.org.apache.hadoop.security.authentication.server=WARN, oozie"
        }
      }
    },
    {
      "mahout-log4j" : {
        "properties_attributes" : { },
        "properties" : {
          "content" : "\n#\n#\n# Licensed to the Apache Software Foundation (ASF) under one\n# or more contributor license agreements.  See the NOTICE file\n# distributed with this work for additional information\n# regarding copyright ownership.  The ASF licenses this file\n# to you under the Apache License, Version 2.0 (the\n# \"License\"); you may not use this file except in compliance\n# with the License.  You may obtain a copy of the License at\n#\n#   http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing,\n# software distributed under the License is distributed on an\n# \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n# KIND, either express or implied.  See the License for the\n# specific language governing permissions and limitations\n# under the License.\n#\n#\n#\n\n# Set everything to be logged to the console\nlog4j.rootCategory=WARN, console\nlog4j.appender.console=org.apache.log4j.ConsoleAppender\nlog4j.appender.console.target=System.err\nlog4j.appender.console.layout=org.apache.log4j.PatternLayout\nlog4j.appender.console.layout.ConversionPattern=%d{yy/MM/dd HH:mm:ss} %p %c{1}: %m%n\n\n# Settings to quiet third party logs that are too verbose\nlog4j.logger.org.eclipse.jetty=WARN\nlog4j.logger.org.apache.spark.repl.SparkIMain$exprTyper=WARN\nlog4j.logger.org.apache.spark.repl.SparkILoop$SparkILoopInterpreter=WARN"
        }
      }
    },
    {
      "infra-logsearch-conf" : {
        "properties_attributes" : { },
        "properties" : {
          "component_mappings" : "INFRA_SOLR:infra_solr",
          "content" : "\n{\n  \"input\":[\n    {\n      \"type\":\"infra_solr\",\n      \"rowtype\":\"service\",\n      \"path\":\"{{default('/configurations/infra-solr-env/infra_solr_log_dir', '/var/log/ambari-infra-solr')}}/solr.log\"\n    }\n  ],\n  \"filter\":[\n    {\n      \"filter\":\"grok\",\n      \"conditions\":{\n        \"fields\":{\n          \"type\":[\n            \"infra_solr\"\n          ]\n        }\n      },\n      \"log4j_format\":\"\",\n      \"multiline_pattern\":\"^(%{TIMESTAMP_ISO8601:logtime})\",\n      \"message_pattern\":\"(?m)^%{TIMESTAMP_ISO8601:logtime}%{SPACE}\\\\[%{DATA:thread_name}\\\\]%{SPACE}%{LOGLEVEL:level}%{SPACE}%{GREEDYDATA:log_message}\",\n      \"post_map_values\":{\n        \"logtime\":{\n          \"map_date\":{\n            \"target_date_pattern\":\"yyyy-MM-dd HH:mm:ss,SSS\"\n          }\n        }\n      }\n    }\n  ]\n}",
          "service_name" : "Infra"
        }
      }
    },
    {
      "kafka-broker" : {
        "properties_attributes" : { },
        "properties" : {
          "replica.high.watermark.checkpoint.interval.ms" : "5000",
          "offsets.topic.num.partitions" : "50",
          "auto.create.topics.enable" : "true",
          "controller.socket.timeout.ms" : "30000",
          "external.kafka.metrics.include.prefix" : "kafka.network.RequestMetrics.ResponseQueueTimeMs.request.OffsetCommit.98percentile,kafka.network.RequestMetrics.ResponseQueueTimeMs.request.Offsets.95percentile,kafka.network.RequestMetrics.ResponseSendTimeMs.request.Fetch.95percentile,kafka.network.RequestMetrics.RequestsPerSec.request",
          "replica.socket.receive.buffer.bytes" : "65536",
          "min.insync.replicas" : "1",
          "kafka.timeline.metrics.maxRowCacheSize" : "10000",
          "zookeeper.connection.timeout.ms" : "25000",
          "controlled.shutdown.retry.backoff.ms" : "5000",
          "replica.fetch.wait.max.ms" : "500",
          "num.recovery.threads.per.data.dir" : "1",
          "kafka.timeline.metrics.reporter.sendInterval" : "5900",
          "log.roll.hours" : "168",
          "sasl.mechanism.inter.broker.protocol" : "GSSAPI",
          "default.replication.factor" : "1",
          "kafka.timeline.metrics.port" : "{{metric_collector_port}}",
          "offsets.topic.segment.bytes" : "104857600",
          "fetch.purgatory.purge.interval.requests" : "10000",
          "replica.socket.timeout.ms" : "30000",
          "message.max.bytes" : "1000000",
          "replica.lag.max.messages" : "4000",
          "kafka.ganglia.metrics.port" : "8671",
          "num.io.threads" : "8",
          "offsets.commit.required.acks" : "-1",
          "delete.topic.enable" : "false",
          "log.index.interval.bytes" : "4096",
          "offsets.commit.timeout.ms" : "5000",
          "log.segment.bytes" : "1073741824",
          "offset.metadata.max.bytes" : "4096",
          "zookeeper.connect" : "%HOSTGROUP::host_group_1%:2181",
          "port" : "6667",
          "zookeeper.sync.time.ms" : "2000",
          "num.replica.fetchers" : "1",
          "log.dirs" : "/kafka-logs",
          "controlled.shutdown.enable" : "true",
          "kafka.timeline.metrics.host" : "{{metric_collector_host}}",
          "compression.type" : "producer",
          "offsets.load.buffer.size" : "5242880",
          "controlled.shutdown.max.retries" : "3",
          "offsets.topic.replication.factor" : "1",
          "queued.max.requests" : "500",
          "auto.leader.rebalance.enable" : "true",
          "leader.imbalance.check.interval.seconds" : "300",
          "replica.lag.time.max.ms" : "10000",
          "socket.request.max.bytes" : "104857600",
          "zookeeper.session.timeout.ms" : "30000",
          "log.retention.bytes" : "-1",
          "num.network.threads" : "3",
          "offsets.retention.minutes" : "86400000",
          "kafka.metrics.reporters" : "org.apache.hadoop.metrics2.sink.kafka.KafkaTimelineMetricsReporter",
          "log.cleanup.interval.mins" : "10",
          "socket.send.buffer.bytes" : "102400",
          "log.retention.hours" : "168",
          "kafka.timeline.metrics.reporter.enabled" : "true",
          "num.partitions" : "1",
          "kafka.broker.jmx.port" : "9999",
          "listeners" : "PLAINTEXT://:9092",
          "socket.receive.buffer.bytes" : "102400",
          "replica.fetch.min.bytes" : "1",
          "sasl.enabled.mechanisms" : "GSSAPI",
          "external.kafka.metrics.exclude.prefix" : "kafka.network.RequestMetrics,kafka.server.DelayedOperationPurgatory,kafka.server.BrokerTopicMetrics.BytesRejectedPerSec",
          "controller.message.queue.size" : "10",
          "kafka.ganglia.metrics.reporter.enabled" : "true",
          "log.index.size.max.bytes" : "10485760",
          "offsets.retention.check.interval.ms" : "600000",
          "producer.purgatory.purge.interval.requests" : "10000",
          "kafka.ganglia.metrics.group" : "kafka",
          "offsets.topic.compression.codec" : "0",
          "replica.fetch.max.bytes" : "1048576",
          "leader.imbalance.per.broker.percentage" : "10"
        }
      }
    },
    {
      "pig-log4j" : {
        "properties_attributes" : { },
        "properties" : {
          "content" : "\n#\n#\n# Licensed to the Apache Software Foundation (ASF) under one\n# or more contributor license agreements.  See the NOTICE file\n# distributed with this work for additional information\n# regarding copyright ownership.  The ASF licenses this file\n# to you under the Apache License, Version 2.0 (the\n# \"License\"); you may not use this file except in compliance\n# with the License.  You may obtain a copy of the License at\n#\n#   http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing,\n# software distributed under the License is distributed on an\n# \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n# KIND, either express or implied.  See the License for the\n# specific language governing permissions and limitations\n# under the License.\n#\n#\n#\n\n# ***** Set root logger level to DEBUG and its only appender to A.\nlog4j.logger.org.apache.pig=info, A\n\n# ***** A is set to be a ConsoleAppender.\nlog4j.appender.A=org.apache.log4j.ConsoleAppender\n# ***** A uses PatternLayout.\nlog4j.appender.A.layout=org.apache.log4j.PatternLayout\nlog4j.appender.A.layout.ConversionPattern=%-4r [%t] %-5p %c %x - %m%n"
        }
      }
    },
    {
      "spark2-env" : {
        "properties_attributes" : { },
        "properties" : {
          "spark_user" : "spark",
          "spark_group" : "spark",
          "spark_pid_dir" : "/var/run/spark2",
          "spark_thrift_cmd_opts" : "",
          "spark_daemon_memory" : "1024",
          "hive_kerberos_keytab" : "{{hive_kerberos_keytab}}",
          "spark_log_dir" : "/var/log/spark2",
          "content" : "\n#!/usr/bin/env bash\n\n# This file is sourced when running various Spark programs.\n# Copy it as spark-env.sh and edit that to configure Spark for your site.\n\n# Options read in YARN client mode\n#SPARK_EXECUTOR_INSTANCES=\"2\" #Number of workers to start (Default: 2)\n#SPARK_EXECUTOR_CORES=\"1\" #Number of cores for the workers (Default: 1).\n#SPARK_EXECUTOR_MEMORY=\"1G\" #Memory per Worker (e.g. 1000M, 2G) (Default: 1G)\n#SPARK_DRIVER_MEMORY=\"512M\" #Memory for Master (e.g. 1000M, 2G) (Default: 512 Mb)\n#SPARK_YARN_APP_NAME=\"spark\" #The name of your application (Default: Spark)\n#SPARK_YARN_QUEUE=\"default\" #The hadoop queue to use for allocation requests (Default: default)\n#SPARK_YARN_DIST_FILES=\"\" #Comma separated list of files to be distributed with the job.\n#SPARK_YARN_DIST_ARCHIVES=\"\" #Comma separated list of archives to be distributed with the job.\n\n# Generic options for the daemons used in the standalone deploy mode\n\n# Alternate conf dir. (Default: ${SPARK_HOME}/conf)\nexport SPARK_CONF_DIR=${SPARK_CONF_DIR:-{{spark_home}}/conf}\n\n# Where log files are stored.(Default:${SPARK_HOME}/logs)\n#export SPARK_LOG_DIR=${SPARK_HOME:-{{spark_home}}}/logs\nexport SPARK_LOG_DIR={{spark_log_dir}}\n\n# Where the pid file is stored. (Default: /tmp)\nexport SPARK_PID_DIR={{spark_pid_dir}}\n\n#Memory for Master, Worker and history server (default: 1024MB)\nexport SPARK_DAEMON_MEMORY={{spark_daemon_memory}}m\n\n# A string representing this instance of spark.(Default: $USER)\nSPARK_IDENT_STRING=$USER\n\n# The scheduling priority for daemons. (Default: 0)\nSPARK_NICENESS=0\n\nexport HADOOP_HOME=${HADOOP_HOME:-{{hadoop_home}}}\nexport HADOOP_CONF_DIR=${HADOOP_CONF_DIR:-{{hadoop_conf_dir}}}\n\n# The java implementation to use.\nexport JAVA_HOME={{java_home}}\n\nexport SPARK_MASTER_WEBUI_PORT=5050\nexport SPARK_WORKER_WEBUI_PORT=4050"
        }
      }
    },
    {
      "kafka-manager-conf" : {
        "properties_attributes" : { },
        "properties" : {
          "application.conf" : "\n\n# KAFKA MANAGER application.conf file's content\nplay.crypto.secret=\"^<csmm5Fx4d=r2HEX8pelM3iBkFVv?k[mc;IZE<_Qoq8EkX_/7@Zt6dP05Pzea3U\"\npidfile.path=\"/var/run/kafka-manager/play.pid\"\n\n# The application languages\nplay.i18n.langs=[\"en\"]\n\nplay.http.requestHandler = \"play.http.DefaultHttpRequestHandler\"\nplay.http.context = \"/\"\nplay.application.loader=loader.KafkaManagerLoader\n\nkafka-manager.zkhosts=\"{{zookeeper_connect}}\"\npinned-dispatcher.type=\"PinnedDispatcher\"\npinned-dispatcher.executor=\"thread-pool-executor\"\napplication.features=[\"KMClusterManagerFeature\",\"KMTopicManagerFeature\",\"KMPreferredReplicaElectionFeature\",\"KMReassignPartitionsFeature\"]\n\nakka {\n  loggers = [\"akka.event.slf4j.Slf4jLogger\"]\n  loglevel = \"INFO\"\n}\n\n#basicAuthentication.enabled=${KAFKA_MANAGER_AUTH_ENABLED}\n#basicAuthentication.username=${KAFKA_MANAGER_USERNAME}\n#basicAuthentication.password=${KAFKA_MANAGER_PASSWORD}\nbasicAuthentication.realm=\"Kafka-Manager\"\nbasicAuthentication.excluded=[\"/api/health\"] # ping the health of your instance without authentification\n\n#kafka-manager.consumer.properties.file=${CONSUMER_PROPERTIES_FILE}"
        }
      }
    },
    {
      "logfeeder-system_log-env" : {
        "properties_attributes" : { },
        "properties" : {
          "logfeeder_secure_log_content" : "{\n  \"input\": [\n    {\n      \"type\": \"secure_log\",\n      \"rowtype\": \"service\",\n      \"path\": \"/var/log/secure\"\n    }\n  ],\n  \"filter\": [\n    {\n      \"filter\": \"grok\",\n      \"conditions\": {\n        \"fields\": {\n          \"type\": [\n            \"secure_log\"\n          ]\n        }\n      },\n      \"multiline_pattern\": \"^(%{SYSLOGTIMESTAMP:logtime})\",\n      \"message_pattern\": \"(?m)^%{SYSLOGTIMESTAMP:logtime}%{SPACE}%{SYSLOGHOST:host}%{SPACE}%{GREEDYDATA:log_message}\",\n      \"post_map_values\": {\n        \"logtime\": {\n          \"map_date\": {\n            \"target_date_pattern\": \"yyyy-MM-dd HH:mm:ss,SSS\",\n            \"src_date_pattern\" :\"MMM dd HH:mm:ss\"\n          }\n        }\n      }\n    }\n  ]\n}",
          "logfeeder_system_log_enabled" : "false",
          "logfeeder_system_messages_content" : "{\n  \"input\": [\n    {\n      \"type\": \"system_message\",\n      \"rowtype\": \"service\",\n      \"path\": \"/var/log/messages\"\n    }\n  ],\n  \"filter\": [\n    {\n      \"filter\": \"grok\",\n      \"conditions\": {\n        \"fields\": {\n          \"type\": [\n            \"system_message\"\n          ]\n        }\n      },\n      \"multiline_pattern\": \"^(%{SYSLOGTIMESTAMP:logtime})\",\n      \"message_pattern\": \"(?m)^%{SYSLOGTIMESTAMP:logtime}%{SPACE}%{SYSLOGHOST:host}%{SPACE}%{GREEDYDATA:log_message}\",\n      \"post_map_values\": {\n        \"logtime\": {\n          \"map_date\": {\n            \"target_date_pattern\": \"yyyy-MM-dd HH:mm:ss,SSS\",\n            \"src_date_pattern\" :\"MMM dd HH:mm:ss\"\n          }\n        }\n      }\n    }\n  ]\n}"
        }
      }
    },
    {
      "zeppelin-env" : {
        "properties_attributes" : { },
        "properties" : {
          "zeppelin.spark.jar.dir" : "/apps/zeppelin",
          "zeppelin.server.kerberos.keytab" : "",
          "zeppelin_log_dir" : "/var/log/zeppelin",
          "zeppelin.executor.instances" : "2",
          "zeppelin.server.kerberos.principal" : "",
          "zeppelin_env_content" : "\n# export JAVA_HOME=\nexport JAVA_HOME={{java64_home}}\n# export MASTER=                              # Spark master url. eg. spark://master_addr:7077. Leave empty if you want to use local mode.\nexport MASTER=yarn-client\nexport SPARK_YARN_JAR={{spark_jar}}\n# export ZEPPELIN_JAVA_OPTS                   # Additional jvm options. for example, export ZEPPELIN_JAVA_OPTS=\"-Dspark.executor.memory=8g -Dspark.cores.max=16\"\nexport ZEPPELIN_JAVA_OPTS=\"-Dspark.executor.memory={{executor_mem}} -Dspark.executor.instances={{executor_instances}} -Dspark.yarn.queue={{spark_queue}}\"\n# export ZEPPELIN_MEM                         # Zeppelin jvm mem options Default -Xms1024m -Xmx1024m -XX:MaxPermSize=512m\n# export ZEPPELIN_INTP_MEM                    # zeppelin interpreter process jvm mem options. Default -Xms1024m -Xmx1024m -XX:MaxPermSize=512m\n# export ZEPPELIN_INTP_JAVA_OPTS              # zeppelin interpreter process jvm options.\n# export ZEPPELIN_SSL_PORT                    # ssl port (used when ssl environment variable is set to true)\n\n# export ZEPPELIN_LOG_DIR                     # Where log files are stored.  PWD by default.\nexport ZEPPELIN_LOG_DIR={{zeppelin_log_dir}}\n# export ZEPPELIN_PID_DIR                     # The pid files are stored. ${ZEPPELIN_HOME}/run by default.\nexport ZEPPELIN_PID_DIR={{zeppelin_pid_dir}}\n# export ZEPPELIN_WAR_TEMPDIR                 # The location of jetty temporary directory.\n# export ZEPPELIN_NOTEBOOK_DIR                # Where notebook saved\n# export ZEPPELIN_NOTEBOOK_HOMESCREEN         # Id of notebook to be displayed in homescreen. ex) 2A94M5J1Z\n# export ZEPPELIN_NOTEBOOK_HOMESCREEN_HIDE    # hide homescreen notebook from list when this value set to \"true\". default \"false\"\n# export ZEPPELIN_NOTEBOOK_S3_BUCKET          # Bucket where notebook saved\n# export ZEPPELIN_NOTEBOOK_S3_ENDPOINT        # Endpoint of the bucket\n# export ZEPPELIN_NOTEBOOK_S3_USER            # User in bucket where notebook saved. For example bucket/user/notebook/2A94M5J1Z/note.json\n# export ZEPPELIN_IDENT_STRING                # A string representing this instance of zeppelin. $USER by default.\n# export ZEPPELIN_NICENESS                    # The scheduling priority for daemons. Defaults to 0.\n# export ZEPPELIN_INTERPRETER_LOCALREPO       # Local repository for interpreter's additional dependency loading\n# export ZEPPELIN_NOTEBOOK_STORAGE            # Refers to pluggable notebook storage class, can have two classes simultaneously with a sync between them (e.g. local and remote).\n# export ZEPPELIN_NOTEBOOK_ONE_WAY_SYNC       # If there are multiple notebook storages, should we treat the first one as the only source of truth?\n# export ZEPPELIN_NOTEBOOK_PUBLIC             # Make notebook public by default when created, private otherwise\nexport ZEPPELIN_INTP_CLASSPATH_OVERRIDES=\"{{external_dependency_conf}}\"\n#### Spark interpreter configuration ####\n\n## Use provided spark installation ##\n## defining SPARK_HOME makes Zeppelin run spark interpreter process using spark-submit\n##\n# export SPARK_HOME                           # (required) When it is defined, load it instead of Zeppelin embedded Spark libraries\n#export SPARK_HOME={{spark_home}}\n# export SPARK_SUBMIT_OPTIONS                 # (optional) extra options to pass to spark submit. eg) \"--driver-memory 512M --executor-memory 1G\".\nexport SPARK_SUBMIT_OPTIONS=\"--conf spark.driver.extraClassPath=/usr/lib/hadoop-yarn/lib/*\"\n# export SPARK_APP_NAME                       # (optional) The name of spark application.\n\n## Use embedded spark binaries ##\n## without SPARK_HOME defined, Zeppelin still able to run spark interpreter process using embedded spark binaries.\n## however, it is not encouraged when you can define SPARK_HOME\n##\n# Options read in YARN client mode\n# export HADOOP_CONF_DIR                      # yarn-site.xml is located in configuration directory in HADOOP_CONF_DIR.\nexport HADOOP_CONF_DIR=/etc/hadoop/conf\n# Pyspark (supported with Spark 1.2.1 and above)\n# To configure pyspark, you need to set spark distribution's path to 'spark.home' property in Interpreter setting screen in Zeppelin GUI\n# export PYSPARK_PYTHON                       # path to the python command. must be the same path on the driver(Zeppelin) and all workers.\n# export PYTHONPATH\n\nexport PYTHONPATH=\"${SPARK_HOME}/python:${SPARK_HOME}/python/lib/py4j-0.8.2.1-src.zip\"\nexport SPARK_YARN_USER_ENV=\"PYTHONPATH=${PYTHONPATH}\"\n\n## Spark interpreter options ##\n##\n# export ZEPPELIN_SPARK_USEHIVECONTEXT        # Use HiveContext instead of SQLContext if set true. true by default.\n# export ZEPPELIN_SPARK_CONCURRENTSQL         # Execute multiple SQL concurrently if set true. false by default.\n# export ZEPPELIN_SPARK_IMPORTIMPLICIT        # Import implicits, UDF collection, and sql if set true. true by default.\n# export ZEPPELIN_SPARK_MAXRESULT             # Max number of Spark SQL result to display. 1000 by default.\n# export ZEPPELIN_WEBSOCKET_MAX_TEXT_MESSAGE_SIZE       # Size in characters of the maximum text message to be received by websocket. Defaults to 1024000\n\n\n#### HBase interpreter configuration ####\n\n## To connect to HBase running on a cluster, either HBASE_HOME or HBASE_CONF_DIR must be set\n\n# export HBASE_HOME=                          # (require) Under which HBase scripts and configuration should be\n# export HBASE_CONF_DIR=                      # (optional) Alternatively, configuration directory can be set to point to the directory that has hbase-site.xml\n\n# export ZEPPELIN_IMPERSONATE_CMD             # Optional, when user want to run interpreter as end web user. eg) 'sudo -H -u ${ZEPPELIN_IMPERSONATE_USER} bash -c '",
          "zeppelin_user" : "zeppelin",
          "zeppelin_pid_dir" : "/var/run/zeppelin",
          "zeppelin.executor.mem" : "512m",
          "zeppelin_group" : "zeppelin"
        }
      }
    },
    {
      "hive-log4j" : {
        "properties_attributes" : { },
        "properties" : {
          "content" : "\n# Licensed to the Apache Software Foundation (ASF) under one\n# or more contributor license agreements.  See the NOTICE file\n# distributed with this work for additional information\n# regarding copyright ownership.  The ASF licenses this file\n# to you under the Apache License, Version 2.0 (the\n# \"License\"); you may not use this file except in compliance\n# with the License.  You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\n# Define some default values that can be overridden by system properties\nhive.log.threshold=ALL\nhive.root.logger=INFO,DRFA\nhive.log.dir=${java.io.tmpdir}/${user.name}\nhive.log.file=hive.log\n\n# Define the root logger to the system property \"hadoop.root.logger\".\nlog4j.rootLogger=${hive.root.logger}, EventCounter\n\n# Logging Threshold\nlog4j.threshold=${hive.log.threshold}\n\n#\n# Daily Rolling File Appender\n#\n# Use the PidDailyerRollingFileAppend class instead if you want to use separate log files\n# for different CLI session.\n#\n# log4j.appender.DRFA=org.apache.hadoop.hive.ql.log.PidDailyRollingFileAppender\n\nlog4j.appender.DRFA=org.apache.log4j.DailyRollingFileAppender\n\nlog4j.appender.DRFA.File=${hive.log.dir}/${hive.log.file}\n\n# Rollver at midnight\nlog4j.appender.DRFA.DatePattern=.yyyy-MM-dd\n\n# 30-day backup\n#log4j.appender.DRFA.MaxBackupIndex=30\nlog4j.appender.DRFA.layout=org.apache.log4j.PatternLayout\n\n# Pattern format: Date LogLevel LoggerName LogMessage\n#log4j.appender.DRFA.layout.ConversionPattern=%d{ISO8601} %p %c: %m%n\n# Debugging Pattern format\nlog4j.appender.DRFA.layout.ConversionPattern=%d{ISO8601} %-5p [%t]: %c{2} (%F:%M(%L)) - %m%n\n\n\n#\n# console\n# Add \"console\" to rootlogger above if you want to use this\n#\n\nlog4j.appender.console=org.apache.log4j.ConsoleAppender\nlog4j.appender.console.target=System.err\nlog4j.appender.console.layout=org.apache.log4j.PatternLayout\nlog4j.appender.console.layout.ConversionPattern=%d{yy/MM/dd HH:mm:ss} [%t]: %p %c{2}: %m%n\nlog4j.appender.console.encoding=UTF-8\n\n#custom logging levels\n#log4j.logger.xxx=DEBUG\n\n#\n# Event Counter Appender\n# Sends counts of logging messages at different severity levels to Hadoop Metrics.\n#\nlog4j.appender.EventCounter=org.apache.hadoop.hive.shims.HiveEventCounter\n\n\nlog4j.category.DataNucleus=ERROR,DRFA\nlog4j.category.Datastore=ERROR,DRFA\nlog4j.category.Datastore.Schema=ERROR,DRFA\nlog4j.category.JPOX.Datastore=ERROR,DRFA\nlog4j.category.JPOX.Plugin=ERROR,DRFA\nlog4j.category.JPOX.MetaData=ERROR,DRFA\nlog4j.category.JPOX.Query=ERROR,DRFA\nlog4j.category.JPOX.General=ERROR,DRFA\nlog4j.category.JPOX.Enhancer=ERROR,DRFA\n\n\n# Silence useless ZK logs\nlog4j.logger.org.apache.zookeeper.server.NIOServerCnxn=WARN,DRFA\nlog4j.logger.org.apache.zookeeper.ClientCnxnSocketNIO=WARN,DRFA"
        }
      }
    },
    {
      "nifi-jaas-conf" : {
        "properties_attributes" : { },
        "properties" : {
          "content" : "\nNiFiClient {\n    com.sun.security.auth.module.Krb5LoginModule required\n    useKeyTab=true\n    keyTab=\"{{nifi_service_keytab}}\"\n    storeKey=true\n    useTicketCache=false\n    principal=\"{{nifi_service_principal}}\";\n};\nRegistryClient {\n    com.sun.security.auth.module.Krb5LoginModule required\n    useKeyTab=true\n    keyTab=\"{{nifi_service_keytab}}\"\n    storeKey=true\n    useTicketCache=false\n    principal=\"{{nifi_service_principal}}\";\n};"
        }
      }
    },
    {
      "slider-client" : {
        "properties_attributes" : { },
        "properties" : { }
      }
    },
    {
      "kafka-manager-env" : {
        "properties_attributes" : { },
        "properties" : {
          "kafka.manager.port" : "9898",
          "kafka_manager_content" : "\n#Kafka Manager Config\nMAX_WAIT_TIME=120\nJAVA_HOME={{java64_home}}\nJAVA_OPTS=\"-Dhttp.port={{kafka_manager_port}}\""
        }
      }
    },
    {
      "spark2-hive-site-override" : {
        "properties_attributes" : { },
        "properties" : {
          "hive.metastore.client.connect.retry.delay" : "5",
          "hive.server2.enable.doAs" : "false",
          "hive.server2.thrift.port" : "10016",
          "hive.server2.transport.mode" : "binary",
          "hive.metastore.client.socket.timeout" : "1800"
        }
      }
    },
    {
      "tez-env" : {
        "properties_attributes" : { },
        "properties" : {
          "heap_dump_location" : "/tmp",
          "content" : "\n# Tez specific configuration\nexport TEZ_CONF_DIR={{config_dir}}\n\n# Set HADOOP_HOME to point to a specific hadoop install directory\nexport HADOOP_HOME=${HADOOP_HOME:-{{hadoop_home}}}\n\n# The java implementation to use.\nexport JAVA_HOME={{java64_home}}",
          "enable_heap_dump" : "false",
          "tez_user" : "tez"
        }
      }
    },
    {
      "oozie-site" : {
        "properties_attributes" : { },
        "properties" : {
          "oozie.base.url" : "http://%HOSTGROUP::host_group_1%:11000/oozie",
          "oozie.service.URIHandlerService.uri.handlers" : "org.apache.oozie.dependency.FSURIHandler,org.apache.oozie.dependency.HCatURIHandler",
          "oozie.service.HadoopAccessorService.kerberos.enabled" : "false",
          "oozie.action.retry.interval" : "30",
          "oozie.authentication.simple.anonymous.allowed" : "true",
          "oozie.service.HadoopAccessorService.hadoop.configurations" : "*={{hadoop_conf_dir}}",
          "oozie.service.JPAService.jdbc.username" : "oozie",
          "oozie.credentials.credentialclasses" : "hcat=org.apache.oozie.action.hadoop.HCatCredentials,hive2=org.apache.oozie.action.hadoop.Hive2Credentials",
          "oozie.services.ext" : "\n      org.apache.oozie.service.JMSAccessorService,org.apache.oozie.service.PartitionDependencyManagerService,org.apache.oozie.service.HCatAccessorService",
          "oozie.service.JPAService.jdbc.driver" : "org.apache.derby.jdbc.EmbeddedDriver",
          "oozie.authentication.type" : "simple",
          "oozie.service.AuthorizationService.security.enabled" : "true",
          "oozie.service.SparkConfigurationService.spark.configurations" : "*={{spark_conf_dir}}",
          "oozie.db.schema.name" : "oozie"
        }
      }
    },
    {
      "beeline-log4j2" : {
        "properties_attributes" : { },
        "properties" : {
          "content" : "\n# Licensed to the Apache Software Foundation (ASF) under one\n# or more contributor license agreements.  See the NOTICE file\n# distributed with this work for additional information\n# regarding copyright ownership.  The ASF licenses this file\n# to you under the Apache License, Version 2.0 (the\n# \"License\"); you may not use this file except in compliance\n# with the License.  You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\nstatus = INFO\nname = BeelineLog4j2\npackages = org.apache.hadoop.hive.ql.log\n\n# list of properties\nproperty.hive.log.level = {{hive_log_level}}\nproperty.hive.root.logger = console\n\n# list of all appenders\nappenders = console\n\n# console appender\nappender.console.type = Console\nappender.console.name = console\nappender.console.target = SYSTEM_ERR\nappender.console.layout.type = PatternLayout\nappender.console.layout.pattern = %d{yy/MM/dd HH:mm:ss} [%t]: %p %c{2}: %m%n\n\n# list of all loggers\nloggers = HiveConnection\n\n# HiveConnection logs useful info for dynamic service discovery\nlogger.HiveConnection.name = org.apache.hive.jdbc.HiveConnection\nlogger.HiveConnection.level = INFO\n\n# root logger\nrootLogger.level = ${sys:hive.log.level}\nrootLogger.appenderRefs = root\nrootLogger.appenderRef.root.ref = ${sys:hive.root.logger}"
        }
      }
    },
    {
      "spark2-logsearch-conf" : {
        "properties_attributes" : { },
        "properties" : {
          "component_mappings" : "SPARK2_JOBHISTORYSERVER:spark2_jobhistory_server;SPARK2_THRIFTSERVER:spark2_thriftserver;LIVY2_SERVER:livy2_server",
          "content" : "\n{\n   \"input\":[\n      {\n       \"type\":\"spark2_jobhistory_server\",\n       \"rowtype\":\"service\",\n       \"path\":\"{{default('/configurations/spark2-env/spark_log_dir', '/var/log/spark2')}}/spark-*-org.apache.spark.deploy.history.HistoryServer*.out\"\n     },\n     {\n       \"type\":\"spark2_thriftserver\",\n       \"rowtype\":\"service\",\n       \"path\":\"{{default('/configurations/spark2-env/spark_log_dir', '/var/log/spark2')}}/spark-*-org.apache.spark.sql.hive.thriftserver.HiveThriftServer2*.out\"\n     },\n     {\n       \"type\":\"livy2_server\",\n       \"rowtype\":\"service\",\n       \"path\":\"{{default('/configurations/livy2-env/livy2_log_dir', '/var/log/livy2')}}/livy-livy-server.out\"\n     }\n   ],\n   \"filter\":[\n      {\n          \"filter\":\"grok\",\n          \"conditions\":{\n            \"fields\":{\n              \"type\":[\n                \"spark2_jobhistory_server\",\n                \"spark2_thriftserver\",\n                \"livy2_server\"\n              ]\n             }\n          },\n          \"log4j_format\":\"\",\n          \"multiline_pattern\":\"^(%{SPARK_DATESTAMP:logtime}%{SPACE}%{LOGLEVEL:level})\",\n          \"message_pattern\":\"(?m)^%{SPARK_DATESTAMP:logtime}%{SPACE}%{LOGLEVEL:level}%{SPACE}%{JAVAFILE:file}:%{SPACE}%{GREEDYDATA:log_message}\",\n          \"post_map_values\":{\n            \"logtime\":{\n              \"map_date\":{\n                \"target_date_pattern\":\"yy/MM/dd HH:mm:ss\"\n              }\n             },\n            \"level\":{\n              \"map_fieldvalue\":{\n                \"pre_value\":\"WARNING\",\n                \"post_value\":\"WARN\"\n              }\n             }\n           }\n      }\n   ]\n}",
          "service_name" : "Spark2"
        }
      }
    },
    {
      "kafka_client_jaas_conf" : {
        "properties_attributes" : { },
        "properties" : {
          "content" : "\n      {% if kerberos_security_enabled %}\n      KafkaClient {\n      com.sun.security.auth.module.Krb5LoginModule required\n      useTicketCache=true\n      renewTicket=true\n      serviceName=\"{{kafka_bare_jaas_principal}}\";\n      };\n      {% endif %}"
        }
      }
    },
    {
      "zeppelin-shiro-ini" : {
        "properties_attributes" : { },
        "properties" : {
          "shiro_ini_content" : "\n[users]\n# List of users with their password allowed to access Zeppelin.\n# To use a different strategy (LDAP / Database / ...) check the shiro doc at http://shiro.apache.org/configuration.html#Configuration-INISections\nadmin = admin, admin\nuser1 = user1, role1, role2\nuser2 = user2, role3\nuser3 = user3, role2\n\n# Sample LDAP configuration, for user Authentication, currently tested for single Realm\n[main]\n### A sample for configuring Active Directory Realm\n#activeDirectoryRealm = org.apache.zeppelin.realm.ActiveDirectoryGroupRealm\n#activeDirectoryRealm.systemUsername = userNameA\n\n#use either systemPassword or hadoopSecurityCredentialPath, more details in http://zeppelin.apache.org/docs/latest/security/shiroauthentication.html\n#activeDirectoryRealm.systemPassword = passwordA\n#activeDirectoryRealm.hadoopSecurityCredentialPath = jceks://file/user/zeppelin/zeppelin.jceks\n#activeDirectoryRealm.searchBase = CN=Users,DC=SOME_GROUP,DC=COMPANY,DC=COM\n#activeDirectoryRealm.url = ldap://ldap.test.com:389\n#activeDirectoryRealm.groupRolesMap = \"CN=admin,OU=groups,DC=SOME_GROUP,DC=COMPANY,DC=COM\":\"admin\",\"CN=finance,OU=groups,DC=SOME_GROUP,DC=COMPANY,DC=COM\":\"finance\",\"CN=hr,OU=groups,DC=SOME_GROUP,DC=COMPANY,DC=COM\":\"hr\"\n#activeDirectoryRealm.authorizationCachingEnabled = false\n\n### A sample for configuring LDAP Directory Realm\n#ldapRealm = org.apache.zeppelin.realm.LdapGroupRealm\n## search base for ldap groups (only relevant for LdapGroupRealm):\n#ldapRealm.contextFactory.environment[ldap.searchBase] = dc=COMPANY,dc=COM\n#ldapRealm.contextFactory.url = ldap://ldap.test.com:389\n#ldapRealm.userDnTemplate = uid={0},ou=Users,dc=COMPANY,dc=COM\n#ldapRealm.contextFactory.authenticationMechanism = SIMPLE\n\n### A sample PAM configuration\n#pamRealm=org.apache.zeppelin.realm.PamRealm\n#pamRealm.service=sshd\n\n\nsessionManager = org.apache.shiro.web.session.mgt.DefaultWebSessionManager\n### If caching of user is required then uncomment below lines\ncacheManager = org.apache.shiro.cache.MemoryConstrainedCacheManager\nsecurityManager.cacheManager = $cacheManager\n\nsecurityManager.sessionManager = $sessionManager\n# 86,400,000 milliseconds = 24 hour\nsecurityManager.sessionManager.globalSessionTimeout = 86400000\nshiro.loginUrl = /api/login\n\n[roles]\nrole1 = *\nrole2 = *\nrole3 = *\nadmin = *\n\n[urls]\n# This section is used for url-based security.\n# You can secure interpreter, configuration and credential information by urls. Comment or uncomment the below urls that you want to hide.\n# anon means the access is anonymous.\n# authc means Form based Auth Security\n# To enfore security, comment the line below and uncomment the next one\n/api/version = anon\n#/api/interpreter/** = authc, roles[admin]\n#/api/configurations/** = authc, roles[admin]\n#/api/credential/** = authc, roles[admin]\n#/** = anon\n/** = authc"
        }
      }
    },
    {
      "logfeeder-env" : {
        "properties_attributes" : { },
        "properties" : {
          "logfeeder_keystore_type" : "jks",
          "logfeeder_truststore_location" : "/etc/security/serverKeys/logsearch.trustStore.jks",
          "logfeeder_kerberos_keytab" : "/etc/security/keytabs/logfeeder.service.keytab",
          "logfeeder_pid_dir" : "/var/run/ambari-logsearch-logfeeder",
          "logfeeder_solr_audit_logs_enable" : "true",
          "content" : "#!/bin/bash\n# Licensed to the Apache Software Foundation (ASF) under one or more\n# contributor license agreements.  See the NOTICE file distributed with\n# this work for additional information regarding copyright ownership.\n# The ASF licenses this file to You under the Apache License, Version 2.0\n# (the \"License\"); you may not use this file except in compliance with\n# the License.  You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\nset -e\n\nexport LOGFEEDER_PATH={{logfeeder_dir}}\n\nexport LOGFEEDER_CONF_DIR={{logsearch_logfeeder_conf}}\n\n#Logfile e.g. /var/log/logfeeder.log\nexport LOGFILE={{logfeeder_log}}\n\n#pid file e.g. /var/run/logfeeder.pid\nexport PID_FILE={{logfeeder_pid_file}}\n\nexport JAVA_HOME={{java64_home}}\n\nif [ \"$LOGFEEDER_JAVA_MEM\" = \"\" ]; then\n  export LOGFEEDER_JAVA_MEM=-Xmx{{logfeeder_max_mem}}\nfi\n\n{% if logfeeder_use_ssl %}\nexport LOGFEEDER_SSL=\"true\"\nexport LOGFEEDER_KEYSTORE_LOCATION={{logfeeder_keystore_location}}\nexport LOGFEEDER_KEYSTORE_TYPE={{logfeeder_keystore_type}}\nexport LOGFEEDER_TRUSTSTORE_LOCATION={{logfeeder_truststore_location}}\nexport LOGFEEDER_TRUSTSTORE_TYPE={{logfeeder_truststore_type}}\n{% endif %}",
          "logfeeder_external_solr_kerberos_keytab" : "",
          "logfeeder_max_mem" : "512m",
          "logfeeder_log_dir" : "/var/log/ambari-logsearch-logfeeder",
          "logfeeder_truststore_type" : "jks",
          "logfeeder_keystore_location" : "/etc/security/serverKeys/logsearch.keyStore.jks",
          "logfeeder_solr_service_logs_enable" : "true"
        }
      }
    },
    {
      "ams-env" : {
        "properties_attributes" : { },
        "properties" : {
          "timeline.metrics.skip.disk.metrics.patterns" : "true",
          "ambari_metrics_user" : "ams",
          "metrics_monitor_log_dir" : "/var/log/ambari-metrics-monitor",
          "metrics_collector_heapsize" : "512",
          "failover_strategy_blacklisted_interval" : "300",
          "metrics_collector_pid_dir" : "/var/run/ambari-metrics-collector",
          "metrics_collector_log_dir" : "/var/log/ambari-metrics-collector",
          "metrics_monitor_pid_dir" : "/var/run/ambari-metrics-monitor",
          "ams_classpath_additional" : "",
          "content" : "\n# Set environment variables here.\n\n# AMS instance name\nexport AMS_INSTANCE_NAME={{hostname}}\n\n# The java implementation to use. Java 1.6 required.\nexport JAVA_HOME={{java64_home}}\n\n# Collector Log directory for log4j\nexport AMS_COLLECTOR_LOG_DIR={{ams_collector_log_dir}}\n\n# Monitor Log directory for outfile\nexport AMS_MONITOR_LOG_DIR={{ams_monitor_log_dir}}\n\n# Collector pid directory\nexport AMS_COLLECTOR_PID_DIR={{ams_collector_pid_dir}}\n\n# Monitor pid directory\nexport AMS_MONITOR_PID_DIR={{ams_monitor_pid_dir}}\n\n# AMS HBase pid directory\nexport AMS_HBASE_PID_DIR={{hbase_pid_dir}}\n\n# AMS Collector heapsize\nexport AMS_COLLECTOR_HEAPSIZE={{metrics_collector_heapsize}}\n\n# HBase Tables Initialization check enabled\nexport AMS_HBASE_INIT_CHECK_ENABLED={{ams_hbase_init_check_enabled}}\n\n# AMS Collector options\nexport AMS_COLLECTOR_OPTS=\"-Djava.library.path=/usr/lib/ams-hbase/lib/hadoop-native\"\n{% if security_enabled %}\nexport AMS_COLLECTOR_OPTS=\"$AMS_COLLECTOR_OPTS -Djava.security.auth.login.config={{ams_collector_jaas_config_file}}\"\n{% endif %}\n\n# AMS Collector GC options\nexport AMS_COLLECTOR_GC_OPTS=\"-XX:+UseConcMarkSweepGC -verbose:gc -XX:+PrintGCDetails -XX:+PrintGCDateStamps -Xloggc:{{ams_collector_log_dir}}/collector-gc.log-`date +'%Y%m%d%H%M'`\"\nexport AMS_COLLECTOR_OPTS=\"$AMS_COLLECTOR_OPTS $AMS_COLLECTOR_GC_OPTS\"\n\n# Metrics collector host will be blacklisted for specified number of seconds if metric monitor failed to connect to it.\nexport AMS_FAILOVER_STRATEGY_BLACKLISTED_INTERVAL={{failover_strategy_blacklisted_interval}}\n\n# Extra Java CLASSPATH elements for Metrics Collector. Optional.\nexport COLLECTOR_ADDITIONAL_CLASSPATH={{ams_classpath_additional}}"
        }
      }
    },
    {
      "hbase-policy" : {
        "properties_attributes" : { },
        "properties" : {
          "security.masterregion.protocol.acl" : "*",
          "security.admin.protocol.acl" : "*",
          "security.client.protocol.acl" : "*"
        }
      }
    },
    {
      "capacity-scheduler" : {
        "properties_attributes" : { },
        "properties" : {
          "capacity-scheduler" : "null",
          "yarn.scheduler.capacity.default.minimum-user-limit-percent" : "100",
          "yarn.scheduler.capacity.maximum-am-resource-percent" : "0.2",
          "yarn.scheduler.capacity.root.acl_administer_queue" : "*",
          "yarn.scheduler.capacity.root.default.acl_administer_jobs" : "*",
          "yarn.scheduler.capacity.root.default.capacity" : "100",
          "yarn.scheduler.capacity.root.default.user-limit-factor" : "1",
          "yarn.scheduler.capacity.root.queues" : "default",
          "yarn.scheduler.capacity.root.capacity" : "100",
          "yarn.scheduler.capacity.root.default.acl_submit_applications" : "*",
          "yarn.scheduler.capacity.root.default.maximum-capacity" : "100",
          "yarn.scheduler.capacity.node-locality-delay" : "40",
          "yarn.scheduler.capacity.maximum-applications" : "10000",
          "yarn.scheduler.capacity.root.default.state" : "RUNNING"
        }
      }
    },
    {
      "webhcat-log4j" : {
        "properties_attributes" : { },
        "properties" : {
          "content" : "\n# Licensed to the Apache Software Foundation (ASF) under one\n# or more contributor license agreements.  See the NOTICE file\n# distributed with this work for additional information\n# regarding copyright ownership.  The ASF licenses this file\n# to you under the Apache License, Version 2.0 (the\n# \"License\"); you may not use this file except in compliance\n# with the License.  You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing,\n# software distributed under the License is distributed on an\n# \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n# KIND, either express or implied.  See the License for the\n# specific language governing permissions and limitations\n# under the License.\n\n# Define some default values that can be overridden by system properties\nwebhcat.root.logger = INFO, standard\nwebhcat.log.dir = .\nwebhcat.log.file = webhcat.log\n\nlog4j.rootLogger = ${webhcat.root.logger}\n\n# Logging Threshold\nlog4j.threshhold = DEBUG\n\nlog4j.appender.standard  =  org.apache.log4j.DailyRollingFileAppender\nlog4j.appender.standard.File = ${webhcat.log.dir}/${webhcat.log.file}\n\n# Rollver at midnight\nlog4j.appender.DRFA.DatePattern = .yyyy-MM-dd\n\nlog4j.appender.DRFA.layout = org.apache.log4j.PatternLayout\n\nlog4j.appender.standard.layout = org.apache.log4j.PatternLayout\nlog4j.appender.standard.layout.conversionPattern = %-5p | %d{DATE} | %c | %m%n\n\n# Class logging settings\nlog4j.logger.com.sun.jersey = DEBUG\nlog4j.logger.com.sun.jersey.spi.container.servlet.WebComponent = ERROR\nlog4j.logger.org.apache.hadoop = INFO\nlog4j.logger.org.apache.hadoop.conf = WARN\nlog4j.logger.org.apache.zookeeper = WARN\nlog4j.logger.org.eclipse.jetty = INFO"
        }
      }
    },
    {
      "atlas-log4j" : {
        "properties_attributes" : { },
        "properties" : {
          "atlas_log_number_of_backup_files" : "20",
          "atlas_log_max_backup_size" : "256",
          "atlas_log_level" : "info",
          "audit_log_level" : "info",
          "content" : "<?xml version=\"1.0\" encoding=\"UTF-8\" ?>\n<!--\n  ~ Licensed to the Apache Software Foundation (ASF) under one\n  ~ or more contributor license agreements.  See the NOTICE file\n  ~ distributed with this work for additional information\n  ~ regarding copyright ownership.  The ASF licenses this file\n  ~ to you under the Apache License, Version 2.0 (the\n  ~ \"License\"); you may not use this file except in compliance\n  ~ with the License.  You may obtain a copy of the License at\n  ~\n  ~     http://www.apache.org/licenses/LICENSE-2.0\n  ~\n  ~ Unless required by applicable law or agreed to in writing, software\n  ~ distributed under the License is distributed on an \"AS IS\" BASIS,\n  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n  ~ See the License for the specific language governing permissions and\n  ~ limitations under the License.\n  -->\n\n<!DOCTYPE log4j:configuration SYSTEM \"log4j.dtd\">\n\n<log4j:configuration xmlns:log4j=\"http://jakarta.apache.org/log4j/\">\n  <appender name=\"console\" class=\"org.apache.log4j.ConsoleAppender\">\n    <param name=\"Target\" value=\"System.out\"/>\n    <layout class=\"org.apache.log4j.PatternLayout\">\n      <param name=\"ConversionPattern\" value=\"%d %-5p - [%t:%x] ~ %m (%c{1}:%L)%n\"/>\n    </layout>\n  </appender>\n\n  <appender name=\"FILE\" class=\"org.apache.log4j.RollingFileAppender\">\n    <param name=\"File\" value=\"{{log_dir}}/application.log\"/>\n    <param name=\"Append\" value=\"true\"/>\n    <param name=\"MaxFileSize\" value=\"{{atlas_log_max_backup_size}}MB\" />\n    <param name=\"MaxBackupIndex\" value=\"{{atlas_log_number_of_backup_files}}\" />\n    <layout class=\"org.apache.log4j.PatternLayout\">\n      <param name=\"ConversionPattern\" value=\"%d %-5p - [%t:%x] ~ %m (%c{1}:%L)%n\"/>\n    </layout>\n  </appender>\n\n  <!-- uncomment this block to generate performance traces\n  <appender name=\"perf_appender\" class=\"org.apache.log4j.DailyRollingFileAppender\">\n    <param name=\"File\" value=\"{{log_dir}}/atlas_perf.log\" />\n    <param name=\"datePattern\" value=\"'.'yyyy-MM-dd\" />\n    <param name=\"append\" value=\"true\" />\n    <layout class=\"org.apache.log4j.PatternLayout\">\n      <param name=\"ConversionPattern\" value=\"%d|%t|%m%n\" />\n    </layout>\n  </appender>\n\n    <logger name=\"org.apache.atlas.perf\" additivity=\"false\">\n      <level value=\"debug\" />\n         <appender-ref ref=\"perf_appender\" />\n    </logger>\n  -->\n\n  <appender name=\"AUDIT\" class=\"org.apache.log4j.DailyRollingFileAppender\">\n    <param name=\"File\" value=\"{{log_dir}}/audit.log\"/>\n    <param name=\"Append\" value=\"true\"/>\n    <param name=\"Threshold\" value=\"info\"/>\n    <layout class=\"org.apache.log4j.PatternLayout\">\n      <param name=\"ConversionPattern\" value=\"%d %x %m%n\"/>\n    </layout>\n  </appender>\n\n  <logger name=\"org.apache.atlas\" additivity=\"false\">\n    <level value=\"{{atlas_log_level}}\"/>\n    <appender-ref ref=\"FILE\"/>\n  </logger>\n\n\n  <logger name=\"com.thinkaurelius.titan\" additivity=\"false\">\n    <level value=\"warn\"/>\n    <appender-ref ref=\"FILE\"/>\n  </logger>\n\n  <logger name=\"org.elasticsearch\" additivity=\"false\">\n    <level value=\"info\"/>\n    <appender-ref ref=\"FILE\"/>\n  </logger>\n\n  <logger name=\"org.apache.lucene\" additivity=\"false\">\n    <level value=\"info\"/>\n    <appender-ref ref=\"FILE\"/>\n  </logger>\n\n  <logger name=\"com.google\" additivity=\"false\">\n    <level value=\"info\"/>\n    <appender-ref ref=\"FILE\"/>\n  </logger>\n\n  <logger name=\"AUDIT\" additivity=\"false\">\n    <level value=\"{{audit_log_level}}\"/>\n    <appender-ref ref=\"AUDIT\"/>\n  </logger>\n\n  <root>\n    <priority value=\"info\"/>\n    <appender-ref ref=\"FILE\"/>\n  </root>\n\n</log4j:configuration>"
        }
      }
    },
    {
      "nifi-env" : {
        "properties_attributes" : { },
        "properties" : {
          "nifi_node_log_dir" : "/var/log/nifi",
          "nifi_user" : "nifi",
          "nifi_pid_dir" : "/var/run/nifi",
          "nifi_user_nproc_limit" : "10000",
          "nifi_user_nofile_limit" : "50000",
          "nifi_group" : "nifi",
          "content" : "\n#!/bin/sh\n#\n#    Licensed to the Apache Software Foundation (ASF) under one or more\n#    contributor license agreements.  See the NOTICE file distributed with\n#    this work for additional information regarding copyright ownership.\n#    The ASF licenses this file to You under the Apache License, Version 2.0\n#    (the \"License\"); you may not use this file except in compliance with\n#    the License.  You may obtain a copy of the License at\n#\n#       http://www.apache.org/licenses/LICENSE-2.0\n#\n#    Unless required by applicable law or agreed to in writing, software\n#    distributed under the License is distributed on an \"AS IS\" BASIS,\n#    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n#    See the License for the specific language governing permissions and\n#    limitations under the License.\n#\n\n# The java implementation to use.\nexport JAVA_HOME={{jdk64_home}}\n\nexport NIFI_HOME={{nifi_install_dir}}\n\n#The directory for the NiFi pid file\nexport NIFI_PID_DIR=\"{{nifi_pid_dir}}\"\n\n#The directory for NiFi log files\nexport NIFI_LOG_DIR=\"{{nifi_node_log_dir}}\""
        }
      }
    },
    {
      "flume-env" : {
        "properties_attributes" : { },
        "properties" : {
          "flume_conf_dir" : "/etc/flume/conf",
          "flume_log_dir" : "/var/log/flume",
          "flume_run_dir" : "/var/run/flume",
          "content" : "\n# Licensed to the Apache Software Foundation (ASF) under one or more\n# contributor license agreements.  See the NOTICE file distributed with\n# this work for additional information regarding copyright ownership.\n# The ASF licenses this file to You under the Apache License, Version 2.0\n# (the \"License\"); you may not use this file except in compliance with\n# the License.  You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\n# If this file is placed at FLUME_CONF_DIR/flume-env.sh, it will be sourced\n# during Flume startup.\n\n# Enviroment variables can be set here.\n\nexport JAVA_HOME={{java_home}}\n\n# Give Flume more memory and pre-allocate, enable remote monitoring via JMX\n# export JAVA_OPTS=\"-Xms100m -Xmx2000m -Dcom.sun.management.jmxremote\"\n\n# Note that the Flume conf directory is always included in the classpath.\n# Add flume sink to classpath\nif [ -e \"/usr/lib/flume/lib/ambari-metrics-flume-sink.jar\" ]; then\n  export FLUME_CLASSPATH=$FLUME_CLASSPATH:/usr/lib/flume/lib/ambari-metrics-flume-sink.jar\nfi\n\nexport HIVE_HOME={{flume_hive_home}}\nexport HCAT_HOME={{flume_hcat_home}}",
          "flume_user" : "flume"
        }
      }
    },
    {
      "hbase-env" : {
        "properties_attributes" : { },
        "properties" : {
          "hbase_regionserver_xmn_max" : "4000",
          "hbase_user" : "hbase",
          "hbase_master_heapsize" : "1024",
          "hbase_regionserver_xmn_ratio" : "0.2",
          "content" : "\n# Set environment variables here.\n\n# The java implementation to use. Java 1.6 required.\nexport JAVA_HOME={{java64_home}}\n\n# HBase Configuration directory\nexport HBASE_CONF_DIR=${HBASE_CONF_DIR:-{{hbase_conf_dir}}}\n\n# Extra Java CLASSPATH elements. Optional.\nexport HBASE_CLASSPATH=${HBASE_CLASSPATH}\n\nif [ -d \"/usr/lib/phoenix\" ]; then\nexport HBASE_CLASSPATH=$HBASE_CLASSPATH:/usr/lib/phoenix/phoenix-server.jar:/usr/lib/phoenix/phoenix-core-4.14.0-*.jar:/usr/lib/phoenix/:phoenix-pherf-4.14.0-HBase-*.jar:/usr/lib/phoenix-queryserver-*.jar:/usr/lib/phoenix/phoenix-tracing-webapp-4.14.0-HBase-*.jar\nfi\n\n\n# The maximum amount of heap to use, in MB. Default is 1000.\n# export HBASE_HEAPSIZE=1000\n\n# Extra Java runtime options.\n# Below are what we set by default. May only work with SUN JVM.\n# For more on why as well as other possible settings,\n# see http://wiki.apache.org/hadoop/PerformanceTuning\nexport SERVER_GC_OPTS=\"-verbose:gc -XX:+PrintGCDetails -XX:+PrintGCDateStamps -Xloggc:{{log_dir}}/gc.log-`date +'%Y%m%d%H%M'`\"\n# Uncomment below to enable java garbage collection logging.\n# export HBASE_OPTS=\"$HBASE_OPTS -verbose:gc -XX:+PrintGCDetails -XX:+PrintGCDateStamps -Xloggc:$HBASE_HOME/logs/gc-hbase.log\"\n\n# Uncomment and adjust to enable JMX exporting\n# See jmxremote.password and jmxremote.access in $JRE_HOME/lib/management to configure remote password access.\n# More details at: http://java.sun.com/javase/6/docs/technotes/guides/management/agent.html\n#\n# export HBASE_JMX_BASE=\"-Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false\"\n# If you want to configure BucketCache, specify '-XX: MaxDirectMemorySize=' with proper direct memory size\n# export HBASE_THRIFT_OPTS=\"$HBASE_JMX_BASE -Dcom.sun.management.jmxremote.port=10103\"\n# export HBASE_ZOOKEEPER_OPTS=\"$HBASE_JMX_BASE -Dcom.sun.management.jmxremote.port=10104\"\n\n# File naming hosts on which HRegionServers will run. $HBASE_HOME/conf/regionservers by default.\nexport HBASE_REGIONSERVERS=${HBASE_CONF_DIR}/regionservers\n\n# Extra ssh options. Empty by default.\n# export HBASE_SSH_OPTS=\"-o ConnectTimeout=1 -o SendEnv=HBASE_CONF_DIR\"\n\n# Where log files are stored. $HBASE_HOME/logs by default.\nexport HBASE_LOG_DIR={{log_dir}}\n\n# A string representing this instance of hbase. $USER by default.\n# export HBASE_IDENT_STRING=$USER\n\n# The scheduling priority for daemon processes. See 'man nice'.\n# export HBASE_NICENESS=10\n\n# The directory where pid files are stored. /tmp by default.\nexport HBASE_PID_DIR={{pid_dir}}\n\n# Seconds to sleep between slave commands. Unset by default. This\n# can be useful in large clusters, where, e.g., slave rsyncs can\n# otherwise arrive faster than the master can service them.\n# export HBASE_SLAVE_SLEEP=0.1\n\n# Tell HBase whether it should manage it's own instance of Zookeeper or not.\nexport HBASE_MANAGES_ZK=false\n\n{% if java_version < 8 %}\nJDK_DEPENDED_OPTS=\"-XX:PermSize=128m -XX:MaxPermSize=128m\"\n{% endif %}\n\n{% if security_enabled %}\nexport HBASE_OPTS=\"$HBASE_OPTS -XX:+UseConcMarkSweepGC -XX:ErrorFile={{log_dir}}/hs_err_pid%p.log -Djava.security.auth.login.config={{client_jaas_config_file}} -Djava.io.tmpdir={{java_io_tmpdir}}\"\nexport HBASE_MASTER_OPTS=\"$HBASE_MASTER_OPTS -Xmx{{master_heapsize}} -Djava.security.auth.login.config={{master_jaas_config_file}} $JDK_DEPENDED_OPTS\"\nexport HBASE_REGIONSERVER_OPTS=\"$HBASE_REGIONSERVER_OPTS -Xmn{{regionserver_xmn_size}} -XX:CMSInitiatingOccupancyFraction=70  -Xms{{regionserver_heapsize}} -Xmx{{regionserver_heapsize}} -Djava.security.auth.login.config={{regionserver_jaas_config_file}} $JDK_DEPENDED_OPTS\"\nexport PHOENIX_QUERYSERVER_OPTS=\"$PHOENIX_QUERYSERVER_OPTS -Djava.security.auth.login.config={{queryserver_jaas_config_file}}\"\n{% else %}\nexport HBASE_OPTS=\"$HBASE_OPTS -XX:+UseConcMarkSweepGC -XX:ErrorFile={{log_dir}}/hs_err_pid%p.log -Djava.io.tmpdir={{java_io_tmpdir}}\"\nexport HBASE_MASTER_OPTS=\"$HBASE_MASTER_OPTS -Xmx{{master_heapsize}} $JDK_DEPENDED_OPTS\"\nexport HBASE_REGIONSERVER_OPTS=\"$HBASE_REGIONSERVER_OPTS -Xmn{{regionserver_xmn_size}} -XX:CMSInitiatingOccupancyFraction=70  -Xms{{regionserver_heapsize}} -Xmx{{regionserver_heapsize}} $JDK_DEPENDED_OPTS\"\n{% endif %}\n\n# HBase off-heap MaxDirectMemorySize\nexport HBASE_REGIONSERVER_OPTS=\"$HBASE_REGIONSERVER_OPTS {% if hbase_max_direct_memory_size %} -XX:MaxDirectMemorySize={{hbase_max_direct_memory_size}}m {% endif %}\"",
          "hbase_java_io_tmpdir" : "/tmp",
          "hbase_user_nproc_limit" : "16000",
          "hbase_pid_dir" : "/var/run/hbase",
          "hbase_log_dir" : "/var/log/hbase",
          "hbase_regionserver_heapsize" : "8192",
          "hbase_user_nofile_limit" : "32000",
          "phoenix_sql_enabled" : "true"
        }
      }
    },
    {
      "ranger-atlas-security" : {
        "properties_attributes" : { },
        "properties" : { }
      }
    },
    {
      "zeppelin-logsearch-conf" : {
        "properties_attributes" : { },
        "properties" : {
          "component_mappings" : "ZEPPELIN_MASTER:zeppelin",
          "content" : "\n{\n  \"input\":[\n    {\n      \"type\":\"zeppelin\",\n      \"rowtype\":\"service\",\n      \"path\":\"{{default('/configurations/zeppelin-env/zeppelin_log_dir', '/var/log/zeppelin')}}/zeppelin-zeppelin-*.log\"\n    }\n   ],\n  \"filter\":[\n    {\n      \"filter\":\"grok\",\n      \"conditions\":{\n        \"fields\":{\n          \"type\":[\n            \"zeppelin\"\n          ]\n         }\n       },\n      \"log4j_format\":\"\",\n      \"multiline_pattern\":\"^(%{SPACE}%{LOGLEVEL:level}%{SPACE}\\\\[%{TIMESTAMP_ISO8601:logtime}\\\\])\",\n      \"message_pattern\":\"(?m)^%{SPACE}%{LOGLEVEL:level}%{SPACE}\\\\[%{TIMESTAMP_ISO8601:logtime}\\\\]%{SPACE}\\\\(\\\\{{\"{\"}}%{DATA:thread_name}\\\\{{\"}\"}}%{SPACE}%{JAVAFILE:file}\\\\[%{JAVAMETHOD:method}\\\\]:%{INT:line_number}\\\\)%{SPACE}-%{SPACE}%{GREEDYDATA:log_message}\",\n      \"post_map_values\":{\n        \"logtime\":{\n          \"map_date\":{\n            \"target_date_pattern\":\"yyyy-MM-dd HH:mm:ss,SSS\"\n          }\n         }\n       }\n     }\n   ]\n }",
          "service_name" : "Zeppelin"
        }
      }
    },
    {
      "hiveserver2-interactive-site" : {
        "properties_attributes" : { },
        "properties" : {
          "hive.async.log.enabled" : "false",
          "hive.service.metrics.hadoop2.component" : "hiveserver2",
          "hive.metastore.metrics.enabled" : "true",
          "hive.service.metrics.reporter" : "HADOOP2"
        }
      }
    },
    {
      "logfeeder-output-config" : {
        "properties_attributes" : { },
        "properties" : {
          "content" : "{#\n # Licensed to the Apache Software Foundation (ASF) under one\n # or more contributor license agreements.  See the NOTICE file\n # distributed with this work for additional information\n # regarding copyright ownership.  The ASF licenses this file\n # to you under the Apache License, Version 2.0 (the\n # \"License\"); you may not use this file except in compliance\n # with the License.  You may obtain a copy of the License at\n #\n #   http://www.apache.org/licenses/LICENSE-2.0\n #\n # Unless required by applicable law or agreed to in writing, software\n # distributed under the License is distributed on an \"AS IS\" BASIS,\n # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n # See the License for the specific language governing permissions and\n # limitations under the License.\n #}\n{\n  \"output\":[\n    {\n      \"comment\":\"Output to solr for service logs\",\n      \"is_enabled\":\"{{solr_service_logs_enable}}\",\n      \"destination\":\"solr\",\n      \"zk_connect_string\":\"{{logsearch_solr_zk_quorum}}{{logsearch_solr_zk_znode}}\",\n      \"collection\":\"{{logsearch_solr_collection_service_logs}}\",\n      \"number_of_shards\": \"{{logsearch_collection_service_logs_numshards}}\",\n      \"splits_interval_mins\": \"{{logsearch_service_logs_split_interval_mins}}\",\n      \"conditions\":{\n        \"fields\":{\n          \"rowtype\":[\n            \"service\"\n          ]\n\n        }\n\n      }\n\n    },\n    {\n      \"comment\":\"Output to solr for audit records\",\n      \"is_enabled\":\"{{solr_audit_logs_enable}}\",\n      \"destination\":\"solr\",\n      \"zk_connect_string\":\"{{logsearch_solr_zk_quorum}}{{logsearch_solr_zk_znode}}\",\n      \"collection\":\"{{logsearch_solr_collection_audit_logs}}\",\n      \"number_of_shards\": \"{{logsearch_collection_audit_logs_numshards}}\",\n      \"splits_interval_mins\": \"{{logsearch_audit_logs_split_interval_mins}}\",\n      \"conditions\":{\n        \"fields\":{\n          \"rowtype\":[\n            \"audit\"\n          ]\n\n        }\n\n      }\n\n    }\n\n  ]\n  \n}"
        }
      }
    },
    {
      "application-properties" : {
        "properties_attributes" : { },
        "properties" : {
          "atlas.ssl.exclude.protocols" : "TLSv1.2",
          "atlas.audit.hbase.zookeeper.quorum" : "%HOSTGROUP::host_group_1%",
          "atlas.proxyusers" : "knox",
          "atlas.notification.create.topics" : "true",
          "atlas.graph.storage.hbase.table" : "atlas_titan",
          "atlas.solr.kerberos.enable" : "false",
          "atlas.authentication.method.ldap.ad.domain" : "",
          "atlas.kafka.session.timeout.ms" : "30000",
          "atlas.auth.policy.file" : "{{conf_dir}}/policy-store.txt",
          "atlas.authentication.method.ldap.user.searchfilter" : "",
          "atlas.kafka.zookeeper.connection.timeout.ms" : "30000",
          "atlas.authentication.method.ldap.referral" : "ignore",
          "atlas.authentication.method.ldap.userDNpattern" : "uid=",
          "atlas.rest.address" : "http://adh16-blueprint:21000",
          "atlas.authentication.method.ldap.ad.user.searchfilter" : "(sAMAccountName={0})",
          "atlas.kafka.zookeeper.sync.time.ms" : "20",
          "atlas.authentication.method.ldap.base.dn" : "",
          "atlas.authentication.method.file" : "true",
          "atlas.authentication.method.ldap.ad.base.dn" : "",
          "atlas.authentication.keytab" : "/etc/security/keytabs/atlas.service.keytab",
          "atlas.lineage.hive.table.schema.query.Table" : "Table where name='%s'\\, columns",
          "atlas.authentication.method.ldap.ad.default.role" : "ROLE_USER",
          "atlas.lineage.schema.query.hive_table" : "hive_table where __guid='%s'\\, columns",
          "atlas.authorizer.impl" : "simple",
          "atlas.cluster.name" : "{{cluster_name}}",
          "atlas.authentication.method.ldap.default.role" : "ROLE_USER",
          "atlas.kafka.hook.group.id" : "atlas",
          "atlas.sso.knox.publicKey" : "",
          "atlas.kafka.bootstrap.servers" : "%HOSTGROUP::host_group_1%:9092",
          "atlas.authentication.method.ldap.bind.dn" : "",
          "atlas.lineage.hive.process.outputs.name" : "outputs",
          "atlas.authentication.method.ldap.ad.url" : "",
          "atlas.sso.knox.enabled" : "false",
          "atlas.authentication.method.ldap.ad.bind.dn" : "",
          "atlas.authentication.method.ldap.groupSearchFilter" : "",
          "atlas.authentication.method.ldap.type" : "ldap",
          "atlas.audit.hbase.tablename" : "ATLAS_ENTITY_AUDIT_EVENTS",
          "atlas.authentication.method" : "simple",
          "atlas.authentication.method.ldap.ad.referral" : "ignore",
          "atlas.server.https.port" : "21443",
          "atlas.authentication.method.file.filename" : "{{conf_dir}}/users-credentials.properties",
          "atlas.kafka.enable.auto.commit" : "false",
          "atlas.notification.replicas" : "1",
          "atlas.sso.knox.browser.useragent" : "",
          "atlas.enableTLS" : "false",
          "atlas.graph.index.search.solr.zookeeper-url" : "%HOSTGROUP::host_group_1%:2181/infra-solr",
          "atlas.kafka.zookeeper.session.timeout.ms" : "60000",
          "atlas.graph.index.search.solr.mode" : "cloud",
          "atlas.kafka.zookeeper.connect" : "%HOSTGROUP::host_group_1%:2181",
          "atlas.authentication.method.kerberos" : "false",
          "atlas.graph.storage.hostname" : "%HOSTGROUP::host_group_1%",
          "atlas.lineage.hive.table.type.name" : "DataSet",
          "atlas.lineage.hive.table.schema.query.hive_table" : "hive_table where name='%s'\\, columns",
          "atlas.lineage.hive.process.inputs.name" : "inputs",
          "atlas.authentication.method.ldap.groupSearchBase" : "",
          "atlas.sso.knox.providerurl" : "",
          "atlas.notification.embedded" : "false",
          "atlas.graph.index.search.backend" : "solr5",
          "atlas.notification.topics" : "ATLAS_HOOK,ATLAS_ENTITIES",
          "atlas.authentication.method.ldap.groupRoleAttribute" : "cn",
          "atlas.lineage.hive.process.type.name" : "Process",
          "atlas.lineage.schema.query.Table" : "Table where __guid='%s'\\, columns",
          "atlas.audit.zookeeper.session.timeout.ms" : "60000",
          "atlas.authentication.method.ldap" : "false",
          "atlas.server.http.port" : "21000",
          "atlas.authentication.method.ldap.url" : "",
          "atlas.graph.storage.backend" : "hbase"
        }
      }
    },
    {
      "ranger-kafka-policymgr-ssl" : {
        "properties_attributes" : { },
        "properties" : { }
      }
    },
    {
      "logfeeder-custom-logsearch-conf" : {
        "properties_attributes" : { },
        "properties" : {
          "content" : " ",
          "service_component_mappings" : ""
        }
      }
    },
    {
      "ranger-hbase-policymgr-ssl" : {
        "properties_attributes" : { },
        "properties" : { }
      }
    },
    {
      "hdfs-log4j" : {
        "properties_attributes" : { },
        "properties" : {
          "hadoop_security_log_max_backup_size" : "256",
          "hadoop_security_log_number_of_backup_files" : "20",
          "hadoop_log_number_of_backup_files" : "10",
          "content" : "\n#\n# Licensed to the Apache Software Foundation (ASF) under one\n# or more contributor license agreements.  See the NOTICE file\n# distributed with this work for additional information\n# regarding copyright ownership.  The ASF licenses this file\n# to you under the Apache License, Version 2.0 (the\n# \"License\"); you may not use this file except in compliance\n# with the License.  You may obtain a copy of the License at\n#\n#  http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing,\n# software distributed under the License is distributed on an\n# \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n# KIND, either express or implied.  See the License for the\n# specific language governing permissions and limitations\n# under the License.\n#\n\n\n# Define some default values that can be overridden by system properties\n# To change daemon root logger use hadoop_root_logger in hadoop-env\nhadoop.root.logger=INFO,console\nhadoop.log.dir=.\nhadoop.log.file=hadoop.log\n\n\n# Define the root logger to the system property \"hadoop.root.logger\".\nlog4j.rootLogger=${hadoop.root.logger}, EventCounter\n\n# Logging Threshold\nlog4j.threshhold=ALL\n\n#\n# Daily Rolling File Appender\n#\n\nlog4j.appender.DRFA=org.apache.log4j.DailyRollingFileAppender\nlog4j.appender.DRFA.File=${hadoop.log.dir}/${hadoop.log.file}\n\n# Rollver at midnight\nlog4j.appender.DRFA.DatePattern=.yyyy-MM-dd\n\n# 30-day backup\n#log4j.appender.DRFA.MaxBackupIndex=30\nlog4j.appender.DRFA.layout=org.apache.log4j.PatternLayout\n\n# Pattern format: Date LogLevel LoggerName LogMessage\nlog4j.appender.DRFA.layout.ConversionPattern=%d{ISO8601} %p %c: %m%n\n# Debugging Pattern format\n#log4j.appender.DRFA.layout.ConversionPattern=%d{ISO8601} %-5p %c{2} (%F:%M(%L)) - %m%n\n\n\n#\n# console\n# Add \"console\" to rootlogger above if you want to use this\n#\n\nlog4j.appender.console=org.apache.log4j.ConsoleAppender\nlog4j.appender.console.target=System.err\nlog4j.appender.console.layout=org.apache.log4j.PatternLayout\nlog4j.appender.console.layout.ConversionPattern=%d{yy/MM/dd HH:mm:ss} %p %c{2}: %m%n\n\n#\n# TaskLog Appender\n#\n\n#Default values\nhadoop.tasklog.taskid=null\nhadoop.tasklog.iscleanup=false\nhadoop.tasklog.noKeepSplits=4\nhadoop.tasklog.totalLogFileSize=100\nhadoop.tasklog.purgeLogSplits=true\nhadoop.tasklog.logsRetainHours=12\n\nlog4j.appender.TLA=org.apache.hadoop.mapred.TaskLogAppender\nlog4j.appender.TLA.taskId=${hadoop.tasklog.taskid}\nlog4j.appender.TLA.isCleanup=${hadoop.tasklog.iscleanup}\nlog4j.appender.TLA.totalLogFileSize=${hadoop.tasklog.totalLogFileSize}\n\nlog4j.appender.TLA.layout=org.apache.log4j.PatternLayout\nlog4j.appender.TLA.layout.ConversionPattern=%d{ISO8601} %p %c: %m%n\n\n#\n#Security audit appender\n#\nhadoop.security.logger=INFO,console\nhadoop.security.log.maxfilesize={{hadoop_security_log_max_backup_size}}MB\nhadoop.security.log.maxbackupindex={{hadoop_security_log_number_of_backup_files}}\nlog4j.category.SecurityLogger=${hadoop.security.logger}\nhadoop.security.log.file=SecurityAuth.audit\nlog4j.additivity.SecurityLogger=false\nlog4j.appender.DRFAS=org.apache.log4j.DailyRollingFileAppender\nlog4j.appender.DRFAS.File=${hadoop.log.dir}/${hadoop.security.log.file}\nlog4j.appender.DRFAS.layout=org.apache.log4j.PatternLayout\nlog4j.appender.DRFAS.layout.ConversionPattern=%d{ISO8601} %p %c: %m%n\nlog4j.appender.DRFAS.DatePattern=.yyyy-MM-dd\n\nlog4j.appender.RFAS=org.apache.log4j.RollingFileAppender\nlog4j.appender.RFAS.File=${hadoop.log.dir}/${hadoop.security.log.file}\nlog4j.appender.RFAS.layout=org.apache.log4j.PatternLayout\nlog4j.appender.RFAS.layout.ConversionPattern=%d{ISO8601} %p %c: %m%n\nlog4j.appender.RFAS.MaxFileSize=${hadoop.security.log.maxfilesize}\nlog4j.appender.RFAS.MaxBackupIndex=${hadoop.security.log.maxbackupindex}\n\n#\n# hdfs audit logging\n#\nhdfs.audit.logger=INFO,console\nlog4j.logger.org.apache.hadoop.hdfs.server.namenode.FSNamesystem.audit=${hdfs.audit.logger}\nlog4j.additivity.org.apache.hadoop.hdfs.server.namenode.FSNamesystem.audit=false\nlog4j.appender.DRFAAUDIT=org.apache.log4j.DailyRollingFileAppender\nlog4j.appender.DRFAAUDIT.File=${hadoop.log.dir}/hdfs-audit.log\nlog4j.appender.DRFAAUDIT.layout=org.apache.log4j.PatternLayout\nlog4j.appender.DRFAAUDIT.layout.ConversionPattern=%d{ISO8601} %p %c{2}: %m%n\nlog4j.appender.DRFAAUDIT.DatePattern=.yyyy-MM-dd\n\n#\n# NameNode metrics logging.\n# The default is to retain two namenode-metrics.log files up to 64MB each.\n#\nnamenode.metrics.logger=INFO,NullAppender\nlog4j.logger.NameNodeMetricsLog=${namenode.metrics.logger}\nlog4j.additivity.NameNodeMetricsLog=false\nlog4j.appender.NNMETRICSRFA=org.apache.log4j.RollingFileAppender\nlog4j.appender.NNMETRICSRFA.File=${hadoop.log.dir}/namenode-metrics.log\nlog4j.appender.NNMETRICSRFA.layout=org.apache.log4j.PatternLayout\nlog4j.appender.NNMETRICSRFA.layout.ConversionPattern=%d{ISO8601} %m%n\nlog4j.appender.NNMETRICSRFA.MaxBackupIndex=1\nlog4j.appender.NNMETRICSRFA.MaxFileSize=64MB\n\n#\n# mapred audit logging\n#\nmapred.audit.logger=INFO,console\nlog4j.logger.org.apache.hadoop.mapred.AuditLogger=${mapred.audit.logger}\nlog4j.additivity.org.apache.hadoop.mapred.AuditLogger=false\nlog4j.appender.MRAUDIT=org.apache.log4j.DailyRollingFileAppender\nlog4j.appender.MRAUDIT.File=${hadoop.log.dir}/mapred-audit.log\nlog4j.appender.MRAUDIT.layout=org.apache.log4j.PatternLayout\nlog4j.appender.MRAUDIT.layout.ConversionPattern=%d{ISO8601} %p %c{2}: %m%n\nlog4j.appender.MRAUDIT.DatePattern=.yyyy-MM-dd\n\n#\n# Rolling File Appender\n#\n\nlog4j.appender.RFA=org.apache.log4j.RollingFileAppender\nlog4j.appender.RFA.File=${hadoop.log.dir}/${hadoop.log.file}\n\n# Logfile size and and 30-day backups\nlog4j.appender.RFA.MaxFileSize={{hadoop_log_max_backup_size}}MB\nlog4j.appender.RFA.MaxBackupIndex={{hadoop_log_number_of_backup_files}}\n\nlog4j.appender.RFA.layout=org.apache.log4j.PatternLayout\nlog4j.appender.RFA.layout.ConversionPattern=%d{ISO8601} %-5p %c{2} - %m%n\nlog4j.appender.RFA.layout.ConversionPattern=%d{ISO8601} %-5p %c{2} (%F:%M(%L)) - %m%n\n\n\n# Custom Logging levels\n\nhadoop.metrics.log.level=INFO\n#log4j.logger.org.apache.hadoop.mapred.JobTracker=DEBUG\n#log4j.logger.org.apache.hadoop.mapred.TaskTracker=DEBUG\n#log4j.logger.org.apache.hadoop.fs.FSNamesystem=DEBUG\nlog4j.logger.org.apache.hadoop.metrics2=${hadoop.metrics.log.level}\n\n# Jets3t library\nlog4j.logger.org.jets3t.service.impl.rest.httpclient.RestS3Service=ERROR\n\n#\n# Null Appender\n# Trap security logger on the hadoop client side\n#\nlog4j.appender.NullAppender=org.apache.log4j.varia.NullAppender\n\n#\n# Event Counter Appender\n# Sends counts of logging messages at different severity levels to Hadoop Metrics.\n#\nlog4j.appender.EventCounter=org.apache.hadoop.log.metrics.EventCounter\n\n# Removes \"deprecated\" messages\nlog4j.logger.org.apache.hadoop.conf.Configuration.deprecation=WARN\n\n#\n# HDFS block state change log from block manager\n#\n# Uncomment the following to suppress normal block state change\n# messages from BlockManager in NameNode.\n#log4j.logger.BlockStateChange=WARN",
          "hadoop_log_max_backup_size" : "256"
        }
      }
    },
    {
      "nifi-logsearch-conf" : {
        "properties_attributes" : { },
        "properties" : {
          "component_mappings" : "NIFI_MASTER:nifi_app,nifi_bootstrap,nifi_setup,nifi_user;NIFI_CA:nifi_ca",
          "content" : "\n{\n  \"input\":[\n    {\n      \"type\":\"nifi_app\",\n      \"rowtype\":\"service\",\n      \"path\":\"{{nifi_log_dir}}/nifi-app.log\"\n    },\n    {\n      \"type\":\"nifi_bootstrap\",\n      \"rowtype\":\"service\",\n      \"path\":\"{{nifi_log_dir}}/nifi-bootstrap.log\"\n    },\n    {\n      \"type\":\"nifi_setup\",\n      \"rowtype\":\"service\",\n      \"path\":\"{{nifi_log_dir}}/nifi-setup.log\"\n    },\n    {\n      \"type\":\"nifi_user\",\n      \"rowtype\":\"service\",\n      \"path\":\"{{nifi_log_dir}}/nifi-user.log\"\n    },\n    {\n      \"type\":\"nifi_ca\",\n      \"rowtype\":\"service\",\n      \"path\":\"{{nifi_log_dir}}/nifi-ca.stdout\"\n    }\n  ],\n  \"filter\":[\n    {\n      \"filter\":\"grok\",\n      \"conditions\":{\n        \"fields\":{\n          \"type\":[\n            \"nifi_app\",\n            \"nifi_bootstrap\",\n            \"nifi_setup\",\n            \"nifi_user\",\n            \"nifi_ca\"\n          ]\n        }\n      },\n      \"log4j_format\":\"\",\n      \"multiline_pattern\":\"^(%{TIMESTAMP_ISO8601:logtime})\",\n      \"message_pattern\":\"(?m)^%{TIMESTAMP_ISO8601:logtime}%{SPACE}%{LOGLEVEL:level}%{SPACE}\\\\[%{DATA:thread_name}\\\\]%{SPACE}%{GREEDYDATA:log_message}\",\n      \"post_map_values\":{\n        \"logtime\":{\n          \"map_date\":{\n            \"target_date_pattern\":\"yyyy-MM-dd HH:mm:ss,SSS\"\n          }\n        }\n      }\n    }\n  ]\n}",
          "service_name" : "NiFi"
        }
      }
    },
    {
      "ams-log4j" : {
        "properties_attributes" : { },
        "properties" : {
          "ams_log_number_of_backup_files" : "60",
          "ams_log_max_backup_size" : "80",
          "content" : "\n#\n# Licensed to the Apache Software Foundation (ASF) under one\n# or more contributor license agreements.  See the NOTICE file\n# distributed with this work for additional information\n# regarding copyright ownership.  The ASF licenses this file\n# to you under the Apache License, Version 2.0 (the\n# \"License\"); you may not use this file except in compliance\n# with the License.  You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n#\n\n# Define some default values that can be overridden by system properties\nams.log.dir=.\nams.log.file=ambari-metrics-collector.log\n\n# Root logger option\nlog4j.rootLogger=INFO,file\n\n# Direct log messages to a log file\nlog4j.appender.file=org.apache.log4j.RollingFileAppender\nlog4j.appender.file.File=${ams.log.dir}/${ams.log.file}\nlog4j.appender.file.MaxFileSize={{ams_log_max_backup_size}}MB\nlog4j.appender.file.MaxBackupIndex={{ams_log_number_of_backup_files}}\nlog4j.appender.file.layout=org.apache.log4j.PatternLayout\nlog4j.appender.file.layout.ConversionPattern=%d{ISO8601} %p %c: %m%n"
        }
      }
    },
    {
      "ranger-atlas-audit" : {
        "properties_attributes" : { },
        "properties" : { }
      }
    },
    {
      "nifi-state-management-env" : {
        "properties_attributes" : { },
        "properties" : {
          "content" : "\n            <!--\n            Licensed to the Apache Software Foundation (ASF) under one or more\n            contributor license agreements.  See the NOTICE file distributed with\n            this work for additional information regarding copyright ownership.\n            The ASF licenses this file to You under the Apache License, Version 2.0\n            (the \"License\"); you may not use this file except in compliance with\n            the License.  You may obtain a copy of the License at\n            http://www.apache.org/licenses/LICENSE-2.0\n            Unless required by applicable law or agreed to in writing, software\n            distributed under the License is distributed on an \"AS IS\" BASIS,\n            WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n            See the License for the specific language governing permissions and\n            limitations under the License.\n            -->\n\n            <!--\n            This file provides a mechanism for defining and configuring the State Providers\n            that should be used for storing state locally and across a NiFi cluster. In order\n            to use a specific provider, it must be configured here and its identifier\n            must be specified in the nifi.properties file.\n            -->\n            <stateManagement>\n            <!--\n            State Provider that stores state locally in a configurable directory. This Provider requires the following properties:\n\n            Directory - the directory to store components' state in. If the directory being used is a sub-directory of the NiFi installation, it\n            is important that the directory be copied over to the new version when upgrading NiFi.\n            -->\n            <local-provider>\n            <id>local-provider</id>\n            <class>org.apache.nifi.controller.state.providers.local.WriteAheadLocalStateProvider</class>\n            <property name=\"Directory\">{{nifi_state_dir}}</property>\n            <property name=\"Always Sync\">false</property>\n            <property name=\"Partitions\">16</property>\n            <property name=\"Checkpoint Interval\">2 mins</property>\n            </local-provider>\n\n            <!--\n            State Provider that is used to store state in ZooKeeper. This Provider requires the following properties:\n\n            Root Node - the root node in ZooKeeper where state should be stored. The default is '/nifi', but it is advisable to change this to a different value if not using\n            the embedded ZooKeeper server and if multiple NiFi instances may all be using the same ZooKeeper Server.\n\n            Connect String - A comma-separated list of host:port pairs to connect to ZooKeeper. For example, myhost.mydomain:2181,host2.mydomain:5555,host3:6666\n\n            Session Timeout - Specifies how long this instance of NiFi is allowed to be disconnected from ZooKeeper before creating a new ZooKeeper Session. Default value is \"30 seconds\"\n\n            Access Control - Specifies which Access Controls will be applied to the ZooKeeper ZNodes that are created by this State Provider. This value must be set to one of:\n            - Open  : ZNodes will be open to any ZooKeeper client.\n            - CreatorOnly  : ZNodes will be accessible only by the creator. The creator will have full access to create children, read, write, delete, and administer the ZNodes.\n            This option is available only if access to ZooKeeper is secured via Kerberos or if a Username and Password are set.\n            -->\n\n\n            <cluster-provider>\n            <id>zk-provider</id>\n            <class>org.apache.nifi.controller.state.providers.zookeeper.ZooKeeperStateProvider</class>\n            <property name=\"Connect String\">{{zookeeper_quorum}}</property>\n            <property name=\"Root Node\">{{nifi_znode}}</property>\n            <property name=\"Session Timeout\">30 seconds</property>\n            <property name=\"Access Control\">Open</property>\n            </cluster-provider>\n            </stateManagement>"
        }
      }
    },
    {
      "hive-exec-log4j2" : {
        "properties_attributes" : { },
        "properties" : {
          "content" : "\n# Licensed to the Apache Software Foundation (ASF) under one\n# or more contributor license agreements.  See the NOTICE file\n# distributed with this work for additional information\n# regarding copyright ownership.  The ASF licenses this file\n# to you under the Apache License, Version 2.0 (the\n# \"License\"); you may not use this file except in compliance\n# with the License.  You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\nstatus = INFO\nname = HiveExecLog4j2\npackages = org.apache.hadoop.hive.ql.log\n\n# list of properties\nproperty.hive.log.level = {{hive_log_level}}\nproperty.hive.root.logger = FA\nproperty.hive.query.id = hadoop\nproperty.hive.log.dir = ${sys:java.io.tmpdir}/${sys:user.name}\nproperty.hive.log.file = ${sys:hive.query.id}.log\n\n# list of all appenders\nappenders = console, FA\n\n# console appender\nappender.console.type = Console\nappender.console.name = console\nappender.console.target = SYSTEM_ERR\nappender.console.layout.type = PatternLayout\nappender.console.layout.pattern = %d{yy/MM/dd HH:mm:ss} [%t]: %p %c{2}: %m%n\n\n# simple file appender\nappender.FA.type = File\nappender.FA.name = FA\nappender.FA.fileName = ${sys:hive.log.dir}/${sys:hive.log.file}\nappender.FA.layout.type = PatternLayout\nappender.FA.layout.pattern = %d{ISO8601} %-5p [%t]: %c{2} (%F:%M(%L)) - %m%n\n\n# list of all loggers\nloggers = NIOServerCnxn, ClientCnxnSocketNIO, DataNucleus, Datastore, JPOX\n\nlogger.NIOServerCnxn.name = org.apache.zookeeper.server.NIOServerCnxn\nlogger.NIOServerCnxn.level = WARN\n\nlogger.ClientCnxnSocketNIO.name = org.apache.zookeeper.ClientCnxnSocketNIO\nlogger.ClientCnxnSocketNIO.level = WARN\n\nlogger.DataNucleus.name = DataNucleus\nlogger.DataNucleus.level = ERROR\n\nlogger.Datastore.name = Datastore\nlogger.Datastore.level = ERROR\n\nlogger.JPOX.name = JPOX\nlogger.JPOX.level = ERROR\n\n# root logger\nrootLogger.level = ${sys:hive.log.level}\nrootLogger.appenderRefs = root\nrootLogger.appenderRef.root.ref = ${sys:hive.root.logger}"
        }
      }
    },
    {
      "giraph-env" : {
        "properties_attributes" : { },
        "properties" : {
          "giraph_home_dir" : "/home/giraph",
          "giraph_log_dir" : "/usr/lib/giraph/log",
          "giraph_group" : "giraph",
          "giraph_pid_dir" : "/var/run/giraph",
          "giraph_user" : "giraph"
        }
      }
    },
    {
      "logsearch-env" : {
        "properties_attributes" : { },
        "properties" : {
          "logsearch_pid_dir" : "/var/run/ambari-logsearch-portal",
          "logsearch_external_solr_kerberos_keytab" : "",
          "logsearch_user" : "logsearch",
          "logsearch_kerberos_keytab" : "/etc/security/keytabs/logsearch.service.keytab",
          "logsearch_debug_enabled" : "false",
          "content" : "#!/bin/bash\n# Licensed to the Apache Software Foundation (ASF) under one or more\n# contributor license agreements. See the NOTICE file distributed with\n# this work for additional information regarding copyright ownership.\n# The ASF licenses this file to You under the Apache License, Version 2.0\n# (the \"License\"); you may not use this file except in compliance with\n# the License. You may obtain a copy of the License at\n#\n# http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\nset -e\n\nexport LOGSEARCH_PORT={{logsearch_ui_port}}\n\n# path containing LogSearch.jar file\nexport LOGSEARCH_PATH={{logsearch_dir}}\n\nexport LOGSEARCH_CONF_DIR={{logsearch_server_conf}}\n\nexport LOGFILE={{logsearch_log_dir}}/logsearch.log\n\nexport PID_FILE={{logsearch_pid_file}}\n\nexport JAVA_HOME={{java64_home}}\n\nexport LOGSEARCH_JAVA_MEM=-Xmx{{logsearch_app_max_memory}}m\nif [ \"$LOGSEARCH_JAVA_MEM\" = \"\" ]; then\n  export LOGSEARCH_JAVA_MEM=\"-Xmx1g\"\nfi\n\nexport LOGSEARCH_DEBUG={{logsearch_debug_enabled}}\n\nexport LOGSEARCH_DEBUG_PORT={{logsearch_debug_port}}\n\n{% if logsearch_use_ssl %}\nexport LOGSEARCH_SSL=\"true\"\nexport LOGSEARCH_KEYSTORE_LOCATION={{logsearch_keystore_location}}\nexport LOGSEARCH_KEYSTORE_TYPE={{logsearch_keystore_type}}\nexport LOGSEARCH_TRUSTSTORE_LOCATION={{logsearch_truststore_location}}\nexport LOGSEARCH_TRUSTSTORE_TYPE={{logsearch_truststore_type}}\n{% endif %}",
          "logsearch_keystore_type" : "jks",
          "logsearch_log_dir" : "/var/log/ambari-logsearch-portal",
          "logsearch_keystore_location" : "/etc/ambari-logsearch-portal/conf/keys/logsearch.jks",
          "logsearch_ui_protocol" : "http",
          "logsearch_ui_port" : "61888",
          "logsearch_truststore_type" : "jks",
          "logsearch_debug_port" : "5005",
          "logsearch_app_max_memory" : "1024",
          "logsearch_truststore_location" : "/etc/ambari-logsearch-portal/conf/keys/logsearch.jks"
        }
      }
    },
    {
      "ams-ssl-client" : {
        "properties_attributes" : { },
        "properties" : {
          "ssl.client.truststore.type" : "jks",
          "ssl.client.truststore.location" : "/etc/security/clientKeys/all.jks"
        }
      }
    },
    {
      "infra-solr-xml" : {
        "properties_attributes" : { },
        "properties" : {
          "content" : "<?xml version=\"1.0\" encoding=\"UTF-8\" ?>\n<!--\nLicensed to the Apache Software Foundation (ASF) under one or more\ncontributor license agreements.  See the NOTICE file distributed with\nthis work for additional information regarding copyright ownership.\nThe ASF licenses this file to You under the Apache License, Version 2.0\n(the \"License\"); you may not use this file except in compliance with\nthe License.  You may obtain a copy of the License at\n\nhttp://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n-->\n<solr>\n  <solrcloud>\n    <str name=\"host\">${host:}</str>\n    <int name=\"hostPort\">${jetty.port:}</int>\n    <str name=\"hostContext\">${hostContext:solr}</str>\n    <int name=\"zkClientTimeout\">${zkClientTimeout:15000}</int>\n    <bool name=\"genericCoreNodeNames\">${genericCoreNodeNames:true}</bool>\n  </solrcloud>\n</solr>"
        }
      }
    },
    {
      "kafka-log4j" : {
        "properties_attributes" : { },
        "properties" : {
          "content" : "\n#\n#\n# Licensed to the Apache Software Foundation (ASF) under one\n# or more contributor license agreements.  See the NOTICE file\n# distributed with this work for additional information\n# regarding copyright ownership.  The ASF licenses this file\n# to you under the Apache License, Version 2.0 (the\n# \"License\"); you may not use this file except in compliance\n# with the License.  You may obtain a copy of the License at\n#\n#   http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing,\n# software distributed under the License is distributed on an\n# \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n# KIND, either express or implied.  See the License for the\n# specific language governing permissions and limitations\n# under the License.\n#\n#\n#\nkafka.logs.dir=logs\n\nlog4j.rootLogger=INFO, stdout\n\nlog4j.appender.stdout=org.apache.log4j.ConsoleAppender\nlog4j.appender.stdout.layout=org.apache.log4j.PatternLayout\nlog4j.appender.stdout.layout.ConversionPattern=[%d] %p %m (%c)%n\n\nlog4j.appender.kafkaAppender=org.apache.log4j.DailyRollingFileAppender\nlog4j.appender.kafkaAppender.DatePattern='.'yyyy-MM-dd-HH\nlog4j.appender.kafkaAppender.File=${kafka.logs.dir}/server.log\nlog4j.appender.kafkaAppender.layout=org.apache.log4j.PatternLayout\nlog4j.appender.kafkaAppender.layout.ConversionPattern=[%d] %p %m (%c)%n\n\nlog4j.appender.stateChangeAppender=org.apache.log4j.DailyRollingFileAppender\nlog4j.appender.stateChangeAppender.DatePattern='.'yyyy-MM-dd-HH\nlog4j.appender.stateChangeAppender.File=${kafka.logs.dir}/state-change.log\nlog4j.appender.stateChangeAppender.layout=org.apache.log4j.PatternLayout\nlog4j.appender.stateChangeAppender.layout.ConversionPattern=[%d] %p %m (%c)%n\n\nlog4j.appender.requestAppender=org.apache.log4j.DailyRollingFileAppender\nlog4j.appender.requestAppender.DatePattern='.'yyyy-MM-dd-HH\nlog4j.appender.requestAppender.File=${kafka.logs.dir}/kafka-request.log\nlog4j.appender.requestAppender.layout=org.apache.log4j.PatternLayout\nlog4j.appender.requestAppender.layout.ConversionPattern=[%d] %p %m (%c)%n\n\nlog4j.appender.cleanerAppender=org.apache.log4j.DailyRollingFileAppender\nlog4j.appender.cleanerAppender.DatePattern='.'yyyy-MM-dd-HH\nlog4j.appender.cleanerAppender.File=${kafka.logs.dir}/log-cleaner.log\nlog4j.appender.cleanerAppender.layout=org.apache.log4j.PatternLayout\nlog4j.appender.cleanerAppender.layout.ConversionPattern=[%d] %p %m (%c)%n\n\nlog4j.appender.controllerAppender=org.apache.log4j.DailyRollingFileAppender\nlog4j.appender.controllerAppender.DatePattern='.'yyyy-MM-dd-HH\nlog4j.appender.controllerAppender.File=${kafka.logs.dir}/controller.log\nlog4j.appender.controllerAppender.layout=org.apache.log4j.PatternLayout\nlog4j.appender.controllerAppender.layout.ConversionPattern=[%d] %p %m (%c)%n\n\n# Turn on all our debugging info\n#log4j.logger.kafka.producer.async.DefaultEventHandler=DEBUG, kafkaAppender\n#log4j.logger.kafka.client.ClientUtils=DEBUG, kafkaAppender\n#log4j.logger.kafka.perf=DEBUG, kafkaAppender\n#log4j.logger.kafka.perf.ProducerPerformance$ProducerThread=DEBUG, kafkaAppender\n#log4j.logger.org.I0Itec.zkclient.ZkClient=DEBUG\nlog4j.logger.kafka=INFO, kafkaAppender\nlog4j.logger.kafka.network.RequestChannel$=WARN, requestAppender\nlog4j.additivity.kafka.network.RequestChannel$=false\n\n#log4j.logger.kafka.network.Processor=TRACE, requestAppender\n#log4j.logger.kafka.server.KafkaApis=TRACE, requestAppender\n#log4j.additivity.kafka.server.KafkaApis=false\nlog4j.logger.kafka.request.logger=WARN, requestAppender\nlog4j.additivity.kafka.request.logger=false\n\nlog4j.logger.kafka.controller=TRACE, controllerAppender\nlog4j.additivity.kafka.controller=false\n\nlog4j.logger.kafka.log.LogCleaner=INFO, cleanerAppender\nlog4j.additivity.kafka.log.LogCleaner=false\n\nlog4j.logger.state.change.logger=TRACE, stateChangeAppender\nlog4j.additivity.state.change.logger=false"
        }
      }
    },
    {
      "nifi-node-logback-env" : {
        "properties_attributes" : { },
        "properties" : {
          "content" : "\n            <!--\n            Licensed to the Apache Software Foundation (ASF) under one or more\n            contributor license agreements.  See the NOTICE file distributed with\n            this work for additional information regarding copyright ownership.\n            The ASF licenses this file to You under the Apache License, Version 2.0\n            (the \"License\"); you may not use this file except in compliance with\n            the License.  You may obtain a copy of the License at\n            http://www.apache.org/licenses/LICENSE-2.0\n            Unless required by applicable law or agreed to in writing, software\n            distributed under the License is distributed on an \"AS IS\" BASIS,\n            WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n            See the License for the specific language governing permissions and\n            limitations under the License.\n            -->\n\n            <configuration scan=\"true\" scanPeriod=\"30 seconds\">\n            <contextListener class=\"ch.qos.logback.classic.jul.LevelChangePropagator\">\n            <resetJUL>true</resetJUL>\n            </contextListener>\n\n            <appender name=\"APP_FILE\" class=\"ch.qos.logback.core.rolling.RollingFileAppender\">\n            <file>${org.apache.nifi.bootstrap.config.log.dir}/nifi-app.log</file>\n            <rollingPolicy class=\"ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy\">\n            <!--\n            For daily rollover, use 'app_%d.log'.\n            For hourly rollover, use 'app_%d{yyyy-MM-dd_HH}.log'.\n            To GZIP rolled files, replace '.log' with '.log.gz'.\n            To ZIP rolled files, replace '.log' with '.log.zip'.\n            -->\n            <fileNamePattern>${org.apache.nifi.bootstrap.config.log.dir}/nifi-app_%d{yyyy-MM-dd_HH}.%i.log</fileNamePattern>\n            <maxFileSize>100MB</maxFileSize>\n            <!-- keep 30 log files worth of history -->\n            <maxHistory>30</maxHistory>\n\n            <!-- optional setting for keeping 10GB total of log files\n            <totalSizeCap>10GB</totalSizeCap>\n            -->\n            </rollingPolicy>\n            <immediateFlush>true</immediateFlush>\n            <encoder class=\"ch.qos.logback.classic.encoder.PatternLayoutEncoder\">\n            <pattern>%date %level [%thread] %logger{40} %msg%n</pattern>\n            </encoder>\n            </appender>\n\n            <appender name=\"USER_FILE\" class=\"ch.qos.logback.core.rolling.RollingFileAppender\">\n            <file>${org.apache.nifi.bootstrap.config.log.dir}/nifi-user.log</file>\n            <rollingPolicy class=\"ch.qos.logback.core.rolling.TimeBasedRollingPolicy\">\n            <!--\n            For daily rollover, use 'user_%d.log'.\n            For hourly rollover, use 'user_%d{yyyy-MM-dd_HH}.log'.\n            To GZIP rolled files, replace '.log' with '.log.gz'.\n            To ZIP rolled files, replace '.log' with '.log.zip'.\n            -->\n            <fileNamePattern>${org.apache.nifi.bootstrap.config.log.dir}/nifi-user_%d.log</fileNamePattern>\n            <!-- keep 30 log files worth of history -->\n            <maxHistory>30</maxHistory>\n            </rollingPolicy>\n            <encoder class=\"ch.qos.logback.classic.encoder.PatternLayoutEncoder\">\n            <pattern>%date %level [%thread] %logger{40} %msg%n</pattern>\n            </encoder>\n            </appender>\n\n            <appender name=\"BOOTSTRAP_FILE\" class=\"ch.qos.logback.core.rolling.RollingFileAppender\">\n            <file>${org.apache.nifi.bootstrap.config.log.dir}/nifi-bootstrap.log</file>\n            <rollingPolicy class=\"ch.qos.logback.core.rolling.TimeBasedRollingPolicy\">\n            <!--\n            For daily rollover, use 'user_%d.log'.\n            For hourly rollover, use 'user_%d{yyyy-MM-dd_HH}.log'.\n            To GZIP rolled files, replace '.log' with '.log.gz'.\n            To ZIP rolled files, replace '.log' with '.log.zip'.\n            -->\n            <fileNamePattern>${org.apache.nifi.bootstrap.config.log.dir}/nifi-bootstrap_%d.log</fileNamePattern>\n            <!-- keep 5 log files worth of history -->\n            <maxHistory>5</maxHistory>\n            </rollingPolicy>\n            <encoder class=\"ch.qos.logback.classic.encoder.PatternLayoutEncoder\">\n            <pattern>%date %level [%thread] %logger{40} %msg%n</pattern>\n            </encoder>\n            </appender>\n\n            <appender name=\"CONSOLE\" class=\"ch.qos.logback.core.ConsoleAppender\">\n            <encoder class=\"ch.qos.logback.classic.encoder.PatternLayoutEncoder\">\n            <pattern>%date %level [%thread] %logger{40} %msg%n</pattern>\n            </encoder>\n            </appender>\n\n            <!-- valid logging levels: TRACE, DEBUG, INFO, WARN, ERROR -->\n\n            <logger name=\"org.apache.nifi\" level=\"INFO\"/>\n            <logger name=\"org.apache.nifi.processors\" level=\"WARN\"/>\n            <logger name=\"org.apache.nifi.processors.standard.LogAttribute\" level=\"INFO\"/>\n            <logger name=\"org.apache.nifi.controller.repository.StandardProcessSession\" level=\"WARN\" />\n\n\n            <logger name=\"org.apache.zookeeper.ClientCnxn\" level=\"ERROR\" />\n            <logger name=\"org.apache.zookeeper.server.NIOServerCnxn\" level=\"ERROR\" />\n            <logger name=\"org.apache.zookeeper.server.NIOServerCnxnFactory\" level=\"ERROR\" />\n            <logger name=\"org.apache.zookeeper.server.quorum\" level=\"ERROR\" />\n            <logger name=\"org.apache.zookeeper.ZooKeeper\" level=\"ERROR\" />\n            <logger name=\"org.apache.zookeeper.server.PrepRequestProcessor\" level=\"ERROR\" />\n\n            <logger name=\"org.apache.curator.framework.recipes.leader.LeaderSelector\" level=\"OFF\" />\n            <logger name=\"org.apache.curator.ConnectionState\" level=\"OFF\" />\n\n            <!-- Logger for managing logging statements for nifi clusters. -->\n            <logger name=\"org.apache.nifi.cluster\" level=\"INFO\"/>\n\n            <!-- Logger for logging HTTP requests received by the web server. -->\n            <logger name=\"org.apache.nifi.server.JettyServer\" level=\"INFO\"/>\n\n            <!-- Logger for managing logging statements for jetty -->\n            <logger name=\"org.eclipse.jetty\" level=\"INFO\"/>\n\n            <!-- Suppress non-error messages due to excessive logging by class or library -->\n            <logger name=\"com.sun.jersey.spi.container.servlet.WebComponent\" level=\"ERROR\"/>\n            <logger name=\"com.sun.jersey.spi.spring\" level=\"ERROR\"/>\n            <logger name=\"org.springframework\" level=\"ERROR\"/>\n\n            <!-- Suppress non-error messages due to known warning about redundant path annotation (NIFI-574) -->\n            <logger name=\"com.sun.jersey.spi.inject.Errors\" level=\"ERROR\"/>\n\n            <!--\n            Logger for capturing user events. We do not want to propagate these\n            log events to the root logger. These messages are only sent to the\n            user-log appender.\n            -->\n            <logger name=\"org.apache.nifi.web.security\" level=\"INFO\" additivity=\"false\">\n            <appender-ref ref=\"USER_FILE\"/>\n            </logger>\n            <logger name=\"org.apache.nifi.web.api.config\" level=\"INFO\" additivity=\"false\">\n            <appender-ref ref=\"USER_FILE\"/>\n            </logger>\n            <logger name=\"org.apache.nifi.authorization\" level=\"INFO\" additivity=\"false\">\n            <appender-ref ref=\"USER_FILE\"/>\n            </logger>\n            <logger name=\"org.apache.nifi.cluster.authorization\" level=\"INFO\" additivity=\"false\">\n            <appender-ref ref=\"USER_FILE\"/>\n            </logger>\n            <logger name=\"org.apache.nifi.web.filter.RequestLogger\" level=\"INFO\" additivity=\"false\">\n            <appender-ref ref=\"USER_FILE\"/>\n            </logger>\n\n\n            <!--\n            Logger for capturing Bootstrap logs and NiFi's standard error and standard out.\n            -->\n            <logger name=\"org.apache.nifi.bootstrap\" level=\"INFO\" additivity=\"false\">\n            <appender-ref ref=\"BOOTSTRAP_FILE\" />\n            </logger>\n            <logger name=\"org.apache.nifi.bootstrap.Command\" level=\"INFO\" additivity=\"false\">\n            <appender-ref ref=\"CONSOLE\" />\n            <appender-ref ref=\"BOOTSTRAP_FILE\" />\n            </logger>\n\n            <!-- Everything written to NiFi's Standard Out will be logged with the logger org.apache.nifi.StdOut at INFO level -->\n            <logger name=\"org.apache.nifi.StdOut\" level=\"INFO\" additivity=\"false\">\n            <appender-ref ref=\"BOOTSTRAP_FILE\" />\n            </logger>\n\n            <!-- Everything written to NiFi's Standard Error will be logged with the logger org.apache.nifi.StdErr at ERROR level -->\n            <logger name=\"org.apache.nifi.StdErr\" level=\"ERROR\" additivity=\"false\">\n            <appender-ref ref=\"BOOTSTRAP_FILE\" />\n            </logger>\n\n            <!-- Turn off Calcite Exception logging -->\n            <logger name=\"org.apache.calcite.runtime.CalciteException\" level=\"OFF\" />\n\n\n            <root level=\"INFO\">\n            <appender-ref ref=\"APP_FILE\"/>\n            </root>\n\n            </configuration>"
        }
      }
    },
    {
      "kafka-env" : {
        "properties_attributes" : { },
        "properties" : {
          "kafka_pid_dir" : "/var/run/kafka",
          "kafka_user_nofile_limit" : "32000",
          "kafka_log_dir" : "/var/log/kafka",
          "kafka_user_nproc_limit" : "16000",
          "content" : "\n#!/bin/bash\n\n# Set KAFKA specific environment variables here.\n\n# The java implementation to use.\nexport JAVA_HOME={{java64_home}}\nexport PATH=$PATH:$JAVA_HOME/bin\nexport PID_DIR={{kafka_pid_dir}}\nexport LOG_DIR={{kafka_log_dir}}\nexport KAFKA_KERBEROS_PARAMS={{kafka_kerberos_params}}\nexport JMX_PORT={{kafka_broker_jmx_port}}\n{% if kerberos_security_enabled %}\nexport KAFKA_OPTS=\"-Djava.security.auth.login.config=/etc/kafka/conf/kafka_jaas.conf\"\n{% endif %}\nexport KAFKA_JMX_OPTS=\"-Dcom.sun.management.jmxremote=true -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false -Djava.rmi.server.hostname={{hostname}} -Djava.net.preferIPv4Stack=true\"\n\n      # Add kafka sink to classpath and related depenencies\nif [ -e \"/usr/lib/ambari-metrics-kafka-sink/ambari-metrics-kafka-sink.jar\" ]; then\n  export CLASSPATH=$CLASSPATH:/usr/lib/ambari-metrics-kafka-sink/ambari-metrics-kafka-sink.jar\n  export CLASSPATH=$CLASSPATH:/usr/lib/ambari-metrics-kafka-sink/lib/*\nfi\nif [ -f /etc/kafka/conf/kafka-ranger-env.sh ]; then\n. /etc/kafka/conf/kafka-ranger-env.sh\nfi",
          "is_supported_kafka_ranger" : "false",
          "kafka_user" : "kafka"
        }
      }
    },
    {
      "ams-grafana-ini" : {
        "properties_attributes" : { },
        "properties" : {
          "protocol" : "http",
          "cert_key" : "/etc/ambari-metrics-grafana/conf/ams-grafana.key",
          "port" : "3000",
          "cert_file" : "/etc/ambari-metrics-grafana/conf/ams-grafana.crt",
          "ca_cert" : "",
          "content" : "\n##################### Grafana Configuration Example #####################\n#\n# Everything has defaults so you only need to uncomment things you want to\n# change\n\n# possible values : production, development\n; app_mode = production\n\n#################################### Paths ####################################\n[paths]\n# Path to where grafana can store temp files, sessions, and the sqlite3 db (if that is used)\n#\n;data = /var/lib/grafana\ndata = {{ams_grafana_data_dir}}\n#\n# Directory where grafana can store logs\n#\n;logs = /var/log/grafana\nlogs = {{ams_grafana_log_dir}}\n\n\n#################################### Server ####################################\n[server]\n# Protocol (http or https)\n;protocol = http\nprotocol = {{ams_grafana_protocol}}\n# The ip address to bind to, empty will bind to all interfaces\n;http_addr =\n\n# The http port  to use\n;http_port = 3000\nhttp_port = {{ams_grafana_port}}\n\n# The public facing domain name used to access grafana from a browser\n;domain = localhost\n\n# Redirect to correct domain if host header does not match domain\n# Prevents DNS rebinding attacks\n;enforce_domain = false\n\n# The full public facing url\n;root_url = %(protocol)s://%(domain)s:%(http_port)s/\n\n# Log web requests\n;router_logging = false\n\n# the path relative working path\n;static_root_path = public\nstatic_root_path = /usr/lib/ambari-metrics-grafana/public\n\n# enable gzip\n;enable_gzip = false\n\n# https certs & key file\n;cert_file =\n;cert_key =\ncert_file = {{ams_grafana_cert_file}}\ncert_key = {{ams_grafana_cert_key}}\n\n#################################### Database ####################################\n[database]\n# Either \"mysql\", \"postgres\" or \"sqlite3\", it's your choice\n;type = sqlite3\n;host = 127.0.0.1:3306\n;name = grafana\n;user = root\n;password =\n\n# For \"postgres\" only, either \"disable\", \"require\" or \"verify-full\"\n;ssl_mode = disable\n\n# For \"sqlite3\" only, path relative to data_path setting\n;path = grafana.db\n\n#################################### Session ####################################\n[session]\n# Either \"memory\", \"file\", \"redis\", \"mysql\", \"postgres\", default is \"file\"\n;provider = file\n\n# Provider config options\n# memory: not have any config yet\n# file: session dir path, is relative to grafana data_path\n# redis: config like redis server e.g. `addr=127.0.0.1:6379,pool_size=100,db=grafana`\n# mysql: go-sql-driver/mysql dsn config string, e.g. `user:password@tcp(127.0.0.1:3306)/database_name`\n# postgres: user=a password=b host=localhost port=5432 dbname=c sslmode=disable\n;provider_config = sessions\n\n# Session cookie name\n;cookie_name = grafana_sess\n\n# If you use session in https only, default is false\n;cookie_secure = false\n\n# Session life time, default is 86400\n;session_life_time = 86400\n\n#################################### Analytics ####################################\n[analytics]\n# Server reporting, sends usage counters to stats.grafana.org every 24 hours.\n# No ip addresses are being tracked, only simple counters to track\n# running instances, dashboard and error counts. It is very helpful to us.\n# Change this option to false to disable reporting.\n;reporting_enabled = true\n\n# Google Analytics universal tracking code, only enabled if you specify an id here\n;google_analytics_ua_id =\n\n#################################### Security ####################################\n[security]\n# default admin user, created on startup\nadmin_user = {{ams_grafana_admin_user}}\n\n# default admin password, can be changed before first start of grafana,  or in profile settings\n;admin_password =\n\n# used for signing\n;secret_key = SW2YcwTIb9zpOOhoPsMm\n\n# Auto-login remember days\n;login_remember_days = 7\n;cookie_username = grafana_user\n;cookie_remember_name = grafana_remember\n\n# disable gravatar profile images\n;disable_gravatar = false\n\n# data source proxy whitelist (ip_or_domain:port seperated by spaces)\n;data_source_proxy_whitelist =\n\n#################################### Users ####################################\n[users]\n# disable user signup / registration\n;allow_sign_up = true\n\n# Allow non admin users to create organizations\n;allow_org_create = true\n\n# Set to true to automatically assign new users to the default organization (id 1)\n;auto_assign_org = true\n\n# Default role new users will be automatically assigned (if disabled above is set to true)\n;auto_assign_org_role = Viewer\n\n# Background text for the user field on the login page\n;login_hint = email or username\n\n#################################### Anonymous Auth ##########################\n[auth.anonymous]\n# enable anonymous access\nenabled = true\n\n# specify organization name that should be used for unauthenticated users\norg_name = Main Org.\n\n# specify role for unauthenticated users\n;org_role = Admin\n\n#################################### Github Auth ##########################\n[auth.github]\n;enabled = false\n;allow_sign_up = false\n;client_id = some_id\n;client_secret = some_secret\n;scopes = user:email,read:org\n;auth_url = https://github.com/login/oauth/authorize\n;token_url = https://github.com/login/oauth/access_token\n;api_url = https://api.github.com/user\n;team_ids =\n;allowed_organizations =\n\n#################################### Google Auth ##########################\n[auth.google]\n;enabled = false\n;allow_sign_up = false\n;client_id = some_client_id\n;client_secret = some_client_secret\n;scopes = https://www.googleapis.com/auth/userinfo.profile https://www.googleapis.com/auth/userinfo.email\n;auth_url = https://accounts.google.com/o/oauth2/auth\n;token_url = https://accounts.google.com/o/oauth2/token\n;api_url = https://www.googleapis.com/oauth2/v1/userinfo\n;allowed_domains =\n\n#################################### Auth Proxy ##########################\n[auth.proxy]\n;enabled = false\n;header_name = X-WEBAUTH-USER\n;header_property = username\n;auto_sign_up = true\n\n#################################### Basic Auth ##########################\n[auth.basic]\n;enabled = true\n\n#################################### Auth LDAP ##########################\n[auth.ldap]\n;enabled = false\n;config_file = /etc/grafana/ldap.toml\n\n#################################### SMTP / Emailing ##########################\n[smtp]\n;enabled = false\n;host = localhost:25\n;user =\n;password =\n;cert_file =\n;key_file =\n;skip_verify = false\n;from_address = admin@grafana.localhost\n\n[emails]\n;welcome_email_on_sign_up = false\n\n#################################### Logging ##########################\n[log]\n# Either \"console\", \"file\", default is \"console\"\n# Use comma to separate multiple modes, e.g. \"console, file\"\n;mode = console, file\n\n# Buffer length of channel, keep it as it is if you don't know what it is.\n;buffer_len = 10000\n\n# Either \"Trace\", \"Debug\", \"Info\", \"Warn\", \"Error\", \"Critical\", default is \"Trace\"\n;level = Info\n\n# For \"console\" mode only\n[log.console]\n;level =\n\n# For \"file\" mode only\n[log.file]\n;level =\n# This enables automated log rotate(switch of following options), default is true\n;log_rotate = true\n\n# Max line number of single file, default is 1000000\n;max_lines = 1000000\n\n# Max size shift of single file, default is 28 means 1 << 28, 256MB\n;max_lines_shift = 28\n\n# Segment log daily, default is true\n;daily_rotate = true\n\n# Expired days of log file(delete after max days), default is 7\n;max_days = 7\n\n#################################### AMPQ Event Publisher ##########################\n[event_publisher]\n;enabled = false\n;rabbitmq_url = amqp://localhost/\n;exchange = grafana_events\n\n;#################################### Dashboard JSON files ##########################\n[dashboards.json]\n;enabled = false\n;path = /var/lib/grafana/dashboards\npath = /usr/lib/ambari-metrics-grafana/public/dashboards"
        }
      }
    },
    {
      "atlas-solrconfig" : {
        "properties_attributes" : { },
        "properties" : {
          "content" : "<?xml version=\"1.0\" encoding=\"UTF-8\" ?>\n<!--\n Licensed to the Apache Software Foundation (ASF) under one or more\n contributor license agreements.  See the NOTICE file distributed with\n this work for additional information regarding copyright ownership.\n The ASF licenses this file to You under the Apache License, Version 2.0\n (the \"License\"); you may not use this file except in compliance with\n the License.  You may obtain a copy of the License at\n\n     http://www.apache.org/licenses/LICENSE-2.0\n\n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n-->\n\n<!--\n     ***\n     For more details about configurations options that may appear in\n     this file, see http://wiki.apache.org/solr/SolrConfigXml.\n-->\n<config>\n  <!-- In all configuration below, a prefix of \"solr.\" for class names\n       is an alias that causes solr to search appropriate packages,\n       including org.apache.solr.(search|update|request|core|analysis)\n\n       You may also specify a fully qualified Java classname if you\n       have your own custom plugins.\n    -->\n\n  <!-- Controls what version of Lucene various components of Solr\n       adhere to.  Generally, you want to use the latest version to\n       get all bug fixes and improvements. It is highly recommended\n       that you fully re-index after changing this setting as it can\n       affect both how text is indexed and queried.\n  -->\n  <luceneMatchVersion>5.5.1</luceneMatchVersion>\n\n  <!-- Data Directory\n\n       Used to specify an alternate directory to hold all index data\n       other than the default ./data under the Solr home.  If\n       replication is in use, this should match the replication\n       configuration.\n    -->\n  <dataDir>${solr.data.dir:}</dataDir>\n\n\n  <!-- The DirectoryFactory to use for indexes.\n\n       solr.StandardDirectoryFactory is filesystem\n       based and tries to pick the best implementation for the current\n       JVM and platform.  solr.NRTCachingDirectoryFactory, the default,\n       wraps solr.StandardDirectoryFactory and caches small files in memory\n       for better NRT performance.\n\n       One can force a particular implementation via solr.MMapDirectoryFactory,\n       solr.NIOFSDirectoryFactory, or solr.SimpleFSDirectoryFactory.\n\n       solr.RAMDirectoryFactory is memory based, not\n       persistent, and doesn't work with replication.\n    -->\n  <directoryFactory name=\"DirectoryFactory\"\n                    class=\"${solr.directoryFactory:solr.NRTCachingDirectoryFactory}\">\n  </directoryFactory>\n\n  <!-- The CodecFactory for defining the format of the inverted index.\n       The default implementation is SchemaCodecFactory, which is the official Lucene\n       index format, but hooks into the schema to provide per-field customization of\n       the postings lists and per-document values in the fieldType element\n       (postingsFormat/docValuesFormat). Note that most of the alternative implementations\n       are experimental, so if you choose to customize the index format, it's a good\n       idea to convert back to the official format e.g. via IndexWriter.addIndexes(IndexReader)\n       before upgrading to a newer version to avoid unnecessary reindexing.\n       A \"compressionMode\" string element can be added to <codecFactory> to choose\n       between the existing compression modes in the default codec: \"BEST_SPEED\" (default)\n       or \"BEST_COMPRESSION\".\n  -->\n  <codecFactory class=\"solr.SchemaCodecFactory\"/>\n\n  <!-- To disable dynamic schema REST APIs, use the following for <schemaFactory>:\n\n       <schemaFactory class=\"ClassicIndexSchemaFactory\"/>\n\n       When ManagedIndexSchemaFactory is specified instead, Solr will load the schema from\n       the resource named in 'managedSchemaResourceName', rather than from schema.xml.\n       Note that the managed schema resource CANNOT be named schema.xml.  If the managed\n       schema does not exist, Solr will create it after reading schema.xml, then rename\n       'schema.xml' to 'schema.xml.bak'.\n\n       Do NOT hand edit the managed schema - external modifications will be ignored and\n       overwritten as a result of schema modification REST API calls.\n\n       When ManagedIndexSchemaFactory is specified with mutable = true, schema\n       modification REST API calls will be allowed; otherwise, error responses will be\n       sent back for these requests.\n  -->\n  <schemaFactory class=\"ManagedIndexSchemaFactory\">\n    <bool name=\"mutable\">true</bool>\n    <str name=\"managedSchemaResourceName\">managed-schema</str>\n  </schemaFactory>\n\n  <!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n       Index Config - These settings control low-level behavior of indexing\n       Most example settings here show the default value, but are commented\n       out, to more easily see where customizations have been made.\n\n       Note: This replaces <indexDefaults> and <mainIndex> from older versions\n       ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->\n  <indexConfig>\n\n    <!-- LockFactory\n\n         This option specifies which Lucene LockFactory implementation\n         to use.\n\n         single = SingleInstanceLockFactory - suggested for a\n                  read-only index or when there is no possibility of\n                  another process trying to modify the index.\n         native = NativeFSLockFactory - uses OS native file locking.\n                  Do not use when multiple solr webapps in the same\n                  JVM are attempting to share a single index.\n         simple = SimpleFSLockFactory  - uses a plain file for locking\n\n         Defaults: 'native' is default for Solr3.6 and later, otherwise\n                   'simple' is the default\n\n         More details on the nuances of each LockFactory...\n         http://wiki.apache.org/lucene-java/AvailableLockFactories\n    -->\n    <lockType>${solr.lock.type:native}</lockType>\n\n    <!-- Lucene Infostream\n\n         To aid in advanced debugging, Lucene provides an \"InfoStream\"\n         of detailed information when indexing.\n\n         Setting the value to true will instruct the underlying Lucene\n         IndexWriter to write its info stream to solr's log. By default,\n         this is enabled here, and controlled through log4j.properties.\n      -->\n    <infoStream>true</infoStream>\n  </indexConfig>\n\n\n  <!-- JMX\n\n       This example enables JMX if and only if an existing MBeanServer\n       is found, use this if you want to configure JMX through JVM\n       parameters. Remove this to disable exposing Solr configuration\n       and statistics to JMX.\n\n       For more details see http://wiki.apache.org/solr/SolrJmx\n    -->\n  <jmx />\n  <!-- If you want to connect to a particular server, specify the\n       agentId\n    -->\n  <!-- <jmx agentId=\"myAgent\" /> -->\n  <!-- If you want to start a new MBeanServer, specify the serviceUrl -->\n  <!-- <jmx serviceUrl=\"service:jmx:rmi:///jndi/rmi://localhost:9999/solr\"/>\n    -->\n\n  <!-- The default high-performance update handler -->\n  <updateHandler class=\"solr.DirectUpdateHandler2\">\n\n    <!-- Enables a transaction log, used for real-time get, durability, and\n         and solr cloud replica recovery.  The log can grow as big as\n         uncommitted changes to the index, so use of a hard autoCommit\n         is recommended (see below).\n         \"dir\" - the target directory for transaction logs, defaults to the\n                solr data directory.\n         \"numVersionBuckets\" - sets the number of buckets used to keep\n                track of max version values when checking for re-ordered\n                updates; increase this value to reduce the cost of\n                synchronizing access to version buckets during high-volume\n                indexing, this requires 8 bytes (long) * numVersionBuckets\n                of heap space per Solr core.\n    -->\n    <updateLog>\n      <str name=\"dir\">${solr.ulog.dir:}</str>\n      <int name=\"numVersionBuckets\">${solr.ulog.numVersionBuckets:65536}</int>\n    </updateLog>\n\n    <!-- AutoCommit\n\n         Perform a hard commit automatically under certain conditions.\n         Instead of enabling autoCommit, consider using \"commitWithin\"\n         when adding documents.\n\n         http://wiki.apache.org/solr/UpdateXmlMessages\n\n         maxDocs - Maximum number of documents to add since the last\n                   commit before automatically triggering a new commit.\n\n         maxTime - Maximum amount of time in ms that is allowed to pass\n                   since a document was added before automatically\n                   triggering a new commit.\n         openSearcher - if false, the commit causes recent index changes\n           to be flushed to stable storage, but does not cause a new\n           searcher to be opened to make those changes visible.\n\n         If the updateLog is enabled, then it's highly recommended to\n         have some sort of hard autoCommit to limit the log size.\n      -->\n    <autoCommit>\n      <maxTime>${solr.autoCommit.maxTime:15000}</maxTime>\n      <openSearcher>false</openSearcher>\n    </autoCommit>\n\n    <!-- softAutoCommit is like autoCommit except it causes a\n         'soft' commit which only ensures that changes are visible\n         but does not ensure that data is synced to disk.  This is\n         faster and more near-realtime friendly than a hard commit.\n      -->\n    <autoSoftCommit>\n      <maxTime>${solr.autoSoftCommit.maxTime:-1}</maxTime>\n    </autoSoftCommit>\n\n  </updateHandler>\n\n  <!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n       Query section - these settings control query time things like caches\n       ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->\n  <query>\n    <!-- Max Boolean Clauses\n\n         Maximum number of clauses in each BooleanQuery,  an exception\n         is thrown if exceeded.\n\n         ** WARNING **\n\n         This option actually modifies a global Lucene property that\n         will affect all SolrCores.  If multiple solrconfig.xml files\n         disagree on this property, the value at any given moment will\n         be based on the last SolrCore to be initialized.\n\n      -->\n    <maxBooleanClauses>1024</maxBooleanClauses>\n\n\n    <!-- Solr Internal Query Caches\n\n         There are two implementations of cache available for Solr,\n         LRUCache, based on a synchronized LinkedHashMap, and\n         FastLRUCache, based on a ConcurrentHashMap.\n\n         FastLRUCache has faster gets and slower puts in single\n         threaded operation and thus is generally faster than LRUCache\n         when the hit ratio of the cache is high (> 75%), and may be\n         faster under other scenarios on multi-cpu systems.\n    -->\n\n    <!-- Filter Cache\n\n         Cache used by SolrIndexSearcher for filters (DocSets),\n         unordered sets of *all* documents that match a query.  When a\n         new searcher is opened, its caches may be prepopulated or\n         \"autowarmed\" using data from caches in the old searcher.\n         autowarmCount is the number of items to prepopulate.  For\n         LRUCache, the autowarmed items will be the most recently\n         accessed items.\n\n         Parameters:\n           class - the SolrCache implementation LRUCache or\n               (LRUCache or FastLRUCache)\n           size - the maximum number of entries in the cache\n           initialSize - the initial capacity (number of entries) of\n               the cache.  (see java.util.HashMap)\n           autowarmCount - the number of entries to prepopulate from\n               and old cache.\n      -->\n    <filterCache class=\"solr.FastLRUCache\"\n                 size=\"512\"\n                 initialSize=\"512\"\n                 autowarmCount=\"0\"/>\n\n    <!-- Query Result Cache\n\n        Caches results of searches - ordered lists of document ids\n        (DocList) based on a query, a sort, and the range of documents requested.\n        Additional supported parameter by LRUCache:\n           maxRamMB - the maximum amount of RAM (in MB) that this cache is allowed\n                      to occupy\n     -->\n    <queryResultCache class=\"solr.LRUCache\"\n                      size=\"512\"\n                      initialSize=\"512\"\n                      autowarmCount=\"0\"/>\n\n    <!-- Document Cache\n\n         Caches Lucene Document objects (the stored fields for each\n         document).  Since Lucene internal document ids are transient,\n         this cache will not be autowarmed.\n      -->\n    <documentCache class=\"solr.LRUCache\"\n                   size=\"512\"\n                   initialSize=\"512\"\n                   autowarmCount=\"0\"/>\n\n    <!-- custom cache currently used by block join -->\n    <cache name=\"perSegFilter\"\n           class=\"solr.search.LRUCache\"\n           size=\"10\"\n           initialSize=\"0\"\n           autowarmCount=\"10\"\n           regenerator=\"solr.NoOpRegenerator\" />\n\n    <!-- Lazy Field Loading\n\n         If true, stored fields that are not requested will be loaded\n         lazily.  This can result in a significant speed improvement\n         if the usual case is to not load all stored fields,\n         especially if the skipped fields are large compressed text\n         fields.\n    -->\n    <enableLazyFieldLoading>true</enableLazyFieldLoading>\n\n    <!-- Result Window Size\n\n         An optimization for use with the queryResultCache.  When a search\n         is requested, a superset of the requested number of document ids\n         are collected.  For example, if a search for a particular query\n         requests matching documents 10 through 19, and queryWindowSize is 50,\n         then documents 0 through 49 will be collected and cached.  Any further\n         requests in that range can be satisfied via the cache.\n      -->\n    <queryResultWindowSize>20</queryResultWindowSize>\n\n    <!-- Maximum number of documents to cache for any entry in the\n         queryResultCache.\n      -->\n    <queryResultMaxDocsCached>200</queryResultMaxDocsCached>\n\n    <!-- Use Cold Searcher\n\n         If a search request comes in and there is no current\n         registered searcher, then immediately register the still\n         warming searcher and use it.  If \"false\" then all requests\n         will block until the first searcher is done warming.\n      -->\n    <useColdSearcher>false</useColdSearcher>\n\n    <!-- Max Warming Searchers\n\n         Maximum number of searchers that may be warming in the\n         background concurrently.  An error is returned if this limit\n         is exceeded.\n\n         Recommend values of 1-2 for read-only slaves, higher for\n         masters w/o cache warming.\n      -->\n    <maxWarmingSearchers>2</maxWarmingSearchers>\n\n  </query>\n\n\n  <!-- Request Dispatcher\n\n       This section contains instructions for how the SolrDispatchFilter\n       should behave when processing requests for this SolrCore.\n\n       handleSelect is a legacy option that affects the behavior of requests\n       such as /select?qt=XXX\n\n       handleSelect=\"true\" will cause the SolrDispatchFilter to process\n       the request and dispatch the query to a handler specified by the\n       \"qt\" param, assuming \"/select\" isn't already registered.\n\n       handleSelect=\"false\" will cause the SolrDispatchFilter to\n       ignore \"/select\" requests, resulting in a 404 unless a handler\n       is explicitly registered with the name \"/select\"\n\n       handleSelect=\"true\" is not recommended for new users, but is the default\n       for backwards compatibility\n    -->\n  <requestDispatcher handleSelect=\"false\" >\n    <!-- Request Parsing\n\n         These settings indicate how Solr Requests may be parsed, and\n         what restrictions may be placed on the ContentStreams from\n         those requests\n\n         enableRemoteStreaming - enables use of the stream.file\n         and stream.url parameters for specifying remote streams.\n\n         multipartUploadLimitInKB - specifies the max size (in KiB) of\n         Multipart File Uploads that Solr will allow in a Request.\n\n         formdataUploadLimitInKB - specifies the max size (in KiB) of\n         form data (application/x-www-form-urlencoded) sent via\n         POST. You can use POST to pass request parameters not\n         fitting into the URL.\n\n         addHttpRequestToContext - if set to true, it will instruct\n         the requestParsers to include the original HttpServletRequest\n         object in the context map of the SolrQueryRequest under the\n         key \"httpRequest\". It will not be used by any of the existing\n         Solr components, but may be useful when developing custom\n         plugins.\n\n         *** WARNING ***\n         The settings below authorize Solr to fetch remote files, You\n         should make sure your system has some authentication before\n         using enableRemoteStreaming=\"true\"\n\n      -->\n    <requestParsers enableRemoteStreaming=\"true\"\n                    multipartUploadLimitInKB=\"2048000\"\n                    formdataUploadLimitInKB=\"2048\"\n                    addHttpRequestToContext=\"false\"/>\n\n    <!-- HTTP Caching\n\n         Set HTTP caching related parameters (for proxy caches and clients).\n\n         The options below instruct Solr not to output any HTTP Caching\n         related headers\n      -->\n    <httpCaching never304=\"true\" />\n\n  </requestDispatcher>\n\n  <!-- Request Handlers\n\n       http://wiki.apache.org/solr/SolrRequestHandler\n\n       Incoming queries will be dispatched to a specific handler by name\n       based on the path specified in the request.\n\n       Legacy behavior: If the request path uses \"/select\" but no Request\n       Handler has that name, and if handleSelect=\"true\" has been specified in\n       the requestDispatcher, then the Request Handler is dispatched based on\n       the qt parameter.  Handlers without a leading '/' are accessed this way\n       like so: http://host/app/[core/]select?qt=name  If no qt is\n       given, then the requestHandler that declares default=\"true\" will be\n       used or the one named \"standard\".\n\n       If a Request Handler is declared with startup=\"lazy\", then it will\n       not be initialized until the first request that uses it.\n\n    -->\n  <!-- SearchHandler\n\n       http://wiki.apache.org/solr/SearchHandler\n\n       For processing Search Queries, the primary Request Handler\n       provided with Solr is \"SearchHandler\" It delegates to a sequent\n       of SearchComponents (see below) and supports distributed\n       queries across multiple shards\n    -->\n  <requestHandler name=\"/select\" class=\"solr.SearchHandler\">\n    <!-- default values for query parameters can be specified, these\n         will be overridden by parameters in the request\n      -->\n    <lst name=\"defaults\">\n      <str name=\"echoParams\">explicit</str>\n      <int name=\"rows\">10</int>\n    </lst>\n\n  </requestHandler>\n\n  <!-- A request handler that returns indented JSON by default -->\n  <requestHandler name=\"/query\" class=\"solr.SearchHandler\">\n    <lst name=\"defaults\">\n      <str name=\"echoParams\">explicit</str>\n      <str name=\"wt\">json</str>\n      <str name=\"indent\">true</str>\n      <str name=\"df\">text</str>\n    </lst>\n  </requestHandler>\n\n  <!--\n    The export request handler is used to export full sorted result sets.\n    Do not change these defaults.\n  -->\n  <requestHandler name=\"/export\" class=\"solr.SearchHandler\">\n    <lst name=\"invariants\">\n      <str name=\"rq\">{!xport}</str>\n      <str name=\"wt\">xsort</str>\n      <str name=\"distrib\">false</str>\n    </lst>\n\n    <arr name=\"components\">\n      <str>query</str>\n    </arr>\n  </requestHandler>\n\n\n  <initParams path=\"/update/**,/query,/select,/tvrh,/elevate,/spell\">\n    <lst name=\"defaults\">\n      <str name=\"df\">text</str>\n    </lst>\n  </initParams>\n\n  <!-- Field Analysis Request Handler\n\n       RequestHandler that provides much the same functionality as\n       analysis.jsp. Provides the ability to specify multiple field\n       types and field names in the same request and outputs\n       index-time and query-time analysis for each of them.\n\n       Request parameters are:\n       analysis.fieldname - field name whose analyzers are to be used\n\n       analysis.fieldtype - field type whose analyzers are to be used\n       analysis.fieldvalue - text for index-time analysis\n       q (or analysis.q) - text for query time analysis\n       analysis.showmatch (true|false) - When set to true and when\n           query analysis is performed, the produced tokens of the\n           field value analysis will be marked as \"matched\" for every\n           token that is produces by the query analysis\n   -->\n  <requestHandler name=\"/analysis/field\"\n                  startup=\"lazy\"\n                  class=\"solr.FieldAnalysisRequestHandler\" />\n\n\n  <!-- Document Analysis Handler\n\n       http://wiki.apache.org/solr/AnalysisRequestHandler\n\n       An analysis handler that provides a breakdown of the analysis\n       process of provided documents. This handler expects a (single)\n       content stream with the following format:\n\n       <docs>\n         <doc>\n           <field name=\"id\">1</field>\n           <field name=\"name\">The Name</field>\n           <field name=\"text\">The Text Value</field>\n         </doc>\n         <doc>...</doc>\n         <doc>...</doc>\n         ...\n       </docs>\n\n    Note: Each document must contain a field which serves as the\n    unique key. This key is used in the returned response to associate\n    an analysis breakdown to the analyzed document.\n\n    Like the FieldAnalysisRequestHandler, this handler also supports\n    query analysis by sending either an \"analysis.query\" or \"q\"\n    request parameter that holds the query text to be analyzed. It\n    also supports the \"analysis.showmatch\" parameter which when set to\n    true, all field tokens that match the query tokens will be marked\n    as a \"match\".\n  -->\n  <requestHandler name=\"/analysis/document\"\n                  class=\"solr.DocumentAnalysisRequestHandler\"\n                  startup=\"lazy\" />\n\n  <!-- Echo the request contents back to the client -->\n  <requestHandler name=\"/debug/dump\" class=\"solr.DumpRequestHandler\" >\n    <lst name=\"defaults\">\n      <str name=\"echoParams\">explicit</str>\n      <str name=\"echoHandler\">true</str>\n    </lst>\n  </requestHandler>\n\n\n\n  <!-- Search Components\n\n       Search components are registered to SolrCore and used by\n       instances of SearchHandler (which can access them by name)\n\n       By default, the following components are available:\n\n       <searchComponent name=\"query\"     class=\"solr.QueryComponent\" />\n       <searchComponent name=\"facet\"     class=\"solr.FacetComponent\" />\n       <searchComponent name=\"mlt\"       class=\"solr.MoreLikeThisComponent\" />\n       <searchComponent name=\"highlight\" class=\"solr.HighlightComponent\" />\n       <searchComponent name=\"stats\"     class=\"solr.StatsComponent\" />\n       <searchComponent name=\"debug\"     class=\"solr.DebugComponent\" />\n\n     -->\n\n  <!-- Terms Component\n\n       http://wiki.apache.org/solr/TermsComponent\n\n       A component to return terms and document frequency of those\n       terms\n    -->\n  <searchComponent name=\"terms\" class=\"solr.TermsComponent\"/>\n\n  <!-- A request handler for demonstrating the terms component -->\n  <requestHandler name=\"/terms\" class=\"solr.SearchHandler\" startup=\"lazy\">\n    <lst name=\"defaults\">\n      <bool name=\"terms\">true</bool>\n      <bool name=\"distrib\">false</bool>\n    </lst>\n    <arr name=\"components\">\n      <str>terms</str>\n    </arr>\n  </requestHandler>\n\n  <!-- Legacy config for the admin interface -->\n  <admin>\n    <defaultQuery>*:*</defaultQuery>\n  </admin>\n\n</config>"
        }
      }
    },
    {
      "hadoop-env" : {
        "properties_attributes" : { },
        "properties" : {
          "hadoop_heapsize" : "1024",
          "proxyuser_group" : "users",
          "hadoop_root_logger" : "INFO,RFA",
          "dtnode_heapsize" : "1024m",
          "namenode_backup_dir" : "/tmp/upgrades",
          "hdfs_user" : "hdfs",
          "hadoop_pid_dir_prefix" : "/var/run/hadoop",
          "content" : "\n# Set Hadoop-specific environment variables here.\n\n# The only required environment variable is JAVA_HOME.  All others are\n# optional.  When running a distributed configuration it is best to\n# set JAVA_HOME in this file, so that it is correctly defined on\n# remote nodes.\n\n# The java implementation to use.  Required.\nexport JAVA_HOME={{java_home}}\nexport HADOOP_HOME_WARN_SUPPRESS=1\n\n# Hadoop home directory\nexport HADOOP_HOME=${HADOOP_HOME:-{{hadoop_home}}}\n\n# Hadoop Configuration Directory\n\n{# this is different for HDP1 #}\n# Path to jsvc required by secure HDP 2.0 datanode\nexport JSVC_HOME={{jsvc_path}}\n\n\n# The maximum amount of heap to use, in MB. Default is 1000.\nexport HADOOP_HEAPSIZE=\"{{hadoop_heapsize}}\"\n\nexport HADOOP_NAMENODE_INIT_HEAPSIZE=\"-Xms{{namenode_heapsize}}\"\n\n# Extra Java runtime options.  Empty by default.\nexport HADOOP_OPTS=\"-Djava.net.preferIPv4Stack=true ${HADOOP_OPTS}\"\n\nUSER=\"$(whoami)\"\n\n# Command specific options appended to HADOOP_OPTS when specified\nHADOOP_JOBTRACKER_OPTS=\"-server -XX:ParallelGCThreads=8 -XX:+UseConcMarkSweepGC -XX:ErrorFile={{hdfs_log_dir_prefix}}/$USER/hs_err_pid%p.log -XX:NewSize={{jtnode_opt_newsize}} -XX:MaxNewSize={{jtnode_opt_maxnewsize}} -Xloggc:{{hdfs_log_dir_prefix}}/$USER/gc.log-`date +'%Y%m%d%H%M'` -verbose:gc -XX:+PrintGCDetails -XX:+PrintGCTimeStamps -XX:+PrintGCDateStamps -Xmx{{jtnode_heapsize}} -Dhadoop.security.logger=INFO,DRFAS -Dmapred.audit.logger=INFO,MRAUDIT -Dhadoop.mapreduce.jobsummary.logger=INFO,JSA ${HADOOP_JOBTRACKER_OPTS}\"\n\nHADOOP_TASKTRACKER_OPTS=\"-server -Xmx{{ttnode_heapsize}} -Dhadoop.security.logger=ERROR,console -Dmapred.audit.logger=ERROR,console ${HADOOP_TASKTRACKER_OPTS}\"\n\n{% if java_version < 8 %}\nexport HADOOP_NAMENODE_OPTS=\"-server -XX:ParallelGCThreads=8 -XX:+UseConcMarkSweepGC -XX:ErrorFile={{hdfs_log_dir_prefix}}/$USER/hs_err_pid%p.log -XX:NewSize={{namenode_opt_newsize}} -XX:MaxNewSize={{namenode_opt_maxnewsize}} -XX:PermSize={{namenode_opt_permsize}} -XX:MaxPermSize={{namenode_opt_maxpermsize}} -Xloggc:{{hdfs_log_dir_prefix}}/$USER/gc.log-`date +'%Y%m%d%H%M'` -verbose:gc -XX:+PrintGCDetails -XX:+PrintGCTimeStamps -XX:+PrintGCDateStamps -XX:CMSInitiatingOccupancyFraction=70 -XX:+UseCMSInitiatingOccupancyOnly -Xms{{namenode_heapsize}} -Xmx{{namenode_heapsize}} -Dhadoop.security.logger=INFO,DRFAS -Dhdfs.audit.logger=INFO,DRFAAUDIT -Dnamenode.metrics.logger=INFO,NNMETRICSRFA -Dorg.mortbay.jetty.Request.maxFormContentSize=-1 ${HADOOP_NAMENODE_OPTS}\"\nexport HADOOP_DATANODE_OPTS=\"-server -XX:CMSInitiatingOccupancyFraction=70 -XX:+UseCMSInitiatingOccupancyOnly -XX:ParallelGCThreads=4 -XX:+UseConcMarkSweepGC -XX:ErrorFile=/var/log/hadoop/$USER/hs_err_pid%p.log -XX:NewSize=200m -XX:MaxNewSize=200m -XX:PermSize=128m -XX:MaxPermSize=256m -Xloggc:/var/log/hadoop/$USER/gc.log-`date +'%Y%m%d%H%M'` -verbose:gc -XX:+PrintGCDetails -XX:+PrintGCTimeStamps -XX:+PrintGCDateStamps -Xms{{dtnode_heapsize}} -Xmx{{dtnode_heapsize}} -Dhadoop.security.logger=INFO,DRFAS -Dhdfs.audit.logger=INFO,DRFAAUDIT ${HADOOP_DATANODE_OPTS}\"\n\n# The following applies to multiple commands (fs, dfs, fsck, distcp etc)\nexport HADOOP_CLIENT_OPTS=\"-Xmx${HADOOP_HEAPSIZE}m -XX:MaxPermSize=512m $HADOOP_CLIENT_OPTS\"\n\n{% else %}\nexport HADOOP_NAMENODE_OPTS=\"-server -XX:ParallelGCThreads=8 -XX:+UseConcMarkSweepGC -XX:ErrorFile={{hdfs_log_dir_prefix}}/$USER/hs_err_pid%p.log -XX:NewSize={{namenode_opt_newsize}} -XX:MaxNewSize={{namenode_opt_maxnewsize}} -Xloggc:{{hdfs_log_dir_prefix}}/$USER/gc.log-`date +'%Y%m%d%H%M'` -verbose:gc -XX:+PrintGCDetails -XX:+PrintGCTimeStamps -XX:+PrintGCDateStamps -XX:CMSInitiatingOccupancyFraction=70 -XX:+UseCMSInitiatingOccupancyOnly -Xms{{namenode_heapsize}} -Xmx{{namenode_heapsize}} -Dhadoop.security.logger=INFO,DRFAS -Dhdfs.audit.logger=INFO,DRFAAUDIT -Dnamenode.metrics.logger=INFO,NNMETRICSRFA ${HADOOP_NAMENODE_OPTS} -Dorg.mortbay.jetty.Request.maxFormContentSize=-1\"\nexport HADOOP_DATANODE_OPTS=\"-server -XX:CMSInitiatingOccupancyFraction=70 -XX:+UseCMSInitiatingOccupancyOnly -XX:ParallelGCThreads=4 -XX:+UseConcMarkSweepGC -XX:ErrorFile=/var/log/hadoop/$USER/hs_err_pid%p.log -XX:NewSize=200m -XX:MaxNewSize=200m -Xloggc:/var/log/hadoop/$USER/gc.log-`date +'%Y%m%d%H%M'` -verbose:gc -XX:+PrintGCDetails -XX:+PrintGCTimeStamps -XX:+PrintGCDateStamps -Xms{{dtnode_heapsize}} -Xmx{{dtnode_heapsize}} -Dhadoop.security.logger=INFO,DRFAS -Dhdfs.audit.logger=INFO,DRFAAUDIT ${HADOOP_DATANODE_OPTS}\"\n\n# The following applies to multiple commands (fs, dfs, fsck, distcp etc)\nexport HADOOP_CLIENT_OPTS=\"-Xmx${HADOOP_HEAPSIZE}m $HADOOP_CLIENT_OPTS\"\n{% endif %}\n\nHADOOP_BALANCER_OPTS=\"-server -Xmx{{hadoop_heapsize}}m ${HADOOP_BALANCER_OPTS}\"\n\nexport HADOOP_SECONDARYNAMENODE_OPTS=$HADOOP_NAMENODE_OPTS\n\n# On secure datanodes, user to run the datanode as after dropping privileges\nexport HADOOP_SECURE_DN_USER=${HADOOP_SECURE_DN_USER:-{{hadoop_secure_dn_user}}}\n\n# Extra ssh options.  Empty by default.\nexport HADOOP_SSH_OPTS=\"-o ConnectTimeout=5 -o SendEnv=HADOOP_CONF_DIR\"\n\n# Where log files are stored.  $HADOOP_HOME/logs by default.\nexport HADOOP_LOG_DIR={{hdfs_log_dir_prefix}}/$USER\n\n# History server logs\nexport HADOOP_MAPRED_LOG_DIR={{mapred_log_dir_prefix}}/$USER\n\n# Where log files are stored in the secure data environment.\nexport HADOOP_SECURE_DN_LOG_DIR={{hdfs_log_dir_prefix}}/$HADOOP_SECURE_DN_USER\n\n# File naming remote slave hosts.  $HADOOP_HOME/conf/slaves by default.\n# export HADOOP_SLAVES=${HADOOP_HOME}/conf/slaves\n\n# host:path where hadoop code should be rsync'd from.  Unset by default.\n# export HADOOP_MASTER=master:/home/$USER/src/hadoop\n\n# Seconds to sleep between slave commands.  Unset by default.  This\n# can be useful in large clusters, where, e.g., slave rsyncs can\n# otherwise arrive faster than the master can service them.\n# export HADOOP_SLAVE_SLEEP=0.1\n\n# The directory where pid files are stored. /tmp by default.\nexport HADOOP_PID_DIR={{hadoop_pid_dir_prefix}}/$USER\nexport HADOOP_SECURE_DN_PID_DIR={{hadoop_pid_dir_prefix}}/$HADOOP_SECURE_DN_USER\n\n# History server pid\nexport HADOOP_MAPRED_PID_DIR={{mapred_pid_dir_prefix}}/$USER\n\nYARN_RESOURCEMANAGER_OPTS=\"-Dyarn.server.resourcemanager.appsummary.logger=INFO,RMSUMMARY\"\n\n# A string representing this instance of hadoop. $USER by default.\nexport HADOOP_IDENT_STRING=$USER\n\n# The scheduling priority for daemon processes.  See 'man nice'.\n\n# export HADOOP_NICENESS=10\n\n# Add database libraries\nJAVA_JDBC_LIBS=\"\"\nif [ -d \"/usr/share/java\" ]; then\n  for jarFile in `ls /usr/share/java | grep -E \"(mysql|ojdbc|postgresql|sqljdbc)\" 2>/dev/null`\n  do\n    JAVA_JDBC_LIBS=${JAVA_JDBC_LIBS}:$jarFile\n  done\nfi\n\n# Add libraries required by nodemanager\nMAPREDUCE_LIBS={{mapreduce_libs_path}}\n\n# Add libraries to the hadoop classpath - some may not need a colon as they already include it\nexport HADOOP_CLASSPATH=${HADOOP_CLASSPATH}${JAVA_JDBC_LIBS}:${MAPREDUCE_LIBS}\n\n# added to the HADOOP_CLASSPATH\nif [ -d \"/usr/lib/tez\" ]; then\nexport HADOOP_CLASSPATH=$HADOOP_CLASSPATH:/usr/lib/tez/*:/usr/lib/tez/lib/commons-cli-1.2.jar:/usr/lib/tez/lib/commons-codec-1.4.jar:/usr/lib/tez/lib/commons-collections-3.2.2.jar:/usr/lib/tez/lib/commons-collections4-4.1.jar:/usr/lib/tez/lib/commons-io-2.4.jar:/usr/lib/tez/lib/commons-lang-2.6.jar:/usr/lib/tez/lib/commons-math3-3.1.1.jar::/etc/tez/conf\nfi\n\nif [ -d \"/usr/lib/atlas-server\" ]; then\nexport HADOOP_CLASSPATH=$HADOOP_CLASSPATH:/usr/lib/atlas-server/hook/hive/*:/usr/lib/atlas-server/hook/hive/atlas-hive-plugin-impl/*\nfi\n\nif [ -d \"/usr/lib/spark/yarn/\" ]; then\nexport HADOOP_CLASSPATH=$HADOOP_CLASSPATH:/usr/lib/spark/yarn/lib/*:/usr/lib/spark/yarn/*\nfi\n\n# Setting path to hdfs command line\nexport HADOOP_LIBEXEC_DIR={{hadoop_libexec_dir}}\n\n# Mostly required for hadoop 2.0\nexport JAVA_LIBRARY_PATH=${JAVA_LIBRARY_PATH}:{{hadoop_lib_home}}/native/Linux-{{architecture}}-64\n\nexport HADOOP_OPTS=\"-Dhdp.version=$HDP_VERSION $HADOOP_OPTS\"\n\n{% if is_datanode_max_locked_memory_set %}\n# Fix temporary bug, when ulimit from conf files is not picked up, without full relogin.\n# Makes sense to fix only when runing DN as root\nif [ \"$command\" == \"datanode\" ] && [ \"$EUID\" -eq 0 ] && [ -n \"$HADOOP_SECURE_DN_USER\" ]; then\n  ulimit -l {{datanode_max_locked_memory}}\nfi\n{% endif %}",
          "hdfs_log_dir_prefix" : "/var/log/hadoop",
          "namenode_opt_newsize" : "128m",
          "namenode_heapsize" : "1024m",
          "hdfs_tmp_dir" : "/tmp",
          "namenode_opt_maxpermsize" : "256m",
          "hdfs_user_nofile_limit" : "128000",
          "keyserver_host" : " ",
          "keyserver_port" : "",
          "hdfs_user_nproc_limit" : "65536",
          "namenode_opt_maxnewsize" : "128m",
          "namenode_opt_permsize" : "128m"
        }
      }
    },
    {
      "zookeeper-env" : {
        "properties_attributes" : { },
        "properties" : {
          "zk_log_dir" : "/var/log/zookeeper",
          "zk_user" : "zookeeper",
          "zk_pid_dir" : "/var/run/zookeeper",
          "content" : "\nexport JAVA_HOME={{java64_home}}\nexport ZOOKEEPER_HOME={{zk_home}}\nexport ZOO_LOG_DIR={{zk_log_dir}}\nexport ZOOPIDFILE={{zk_pid_file}}\nexport SERVER_JVMFLAGS={{zk_server_heapsize}}\nexport JAVA=$JAVA_HOME/bin/java\nexport CLASSPATH=$CLASSPATH:/usr/share/zookeeper/*\n\n{% if security_enabled %}\nexport SERVER_JVMFLAGS=\"$SERVER_JVMFLAGS -Djava.security.auth.login.config={{zk_server_jaas_file}}\"\nexport CLIENT_JVMFLAGS=\"$CLIENT_JVMFLAGS -Djava.security.auth.login.config={{zk_client_jaas_file}}\"\n{% endif %}"
        }
      }
    },
    {
      "livy2-env" : {
        "properties_attributes" : { },
        "properties" : {
          "livy2_log_dir" : "/var/log/livy2",
          "livy2_user" : "livy",
          "spark_home" : "/usr/lib/spark",
          "livy2_pid_dir" : "/var/run/livy2",
          "livy2_group" : "livy",
          "content" : "\n            #!/usr/bin/env bash\n\n            # - SPARK_HOME      Spark which you would like to use in livy\n            # - SPARK_CONF_DIR  Directory containing the Spark configuration to use.\n            # - HADOOP_CONF_DIR Directory containing the Hadoop / YARN configuration to use.\n            # - LIVY_LOG_DIR    Where log files are stored.  (Default: ${LIVY_HOME}/logs)\n            # - LIVY_PID_DIR    Where the pid file is stored. (Default: /tmp)\n            # - LIVY_SERVER_JAVA_OPTS  Java Opts for running livy server (You can set jvm related setting here, like jvm memory/gc algorithm and etc.)\n            export SPARK_HOME=/usr/lib/spark\n            export SPARK_CONF_DIR=/etc/spark/conf\n            export JAVA_HOME={{java_home}}\n            export HADOOP_CONF_DIR=/etc/hadoop/conf\n            export LIVY_LOG_DIR={{livy2_log_dir}}\n            export LIVY_PID_DIR={{livy2_pid_dir}}\n            export LIVY_SERVER_JAVA_OPTS=\"-Xmx2g\""
        }
      }
    },
    {
      "cluster-env" : {
        "properties_attributes" : { },
        "properties" : {
          "hide_yarn_memory_widget" : "false",
          "enable_external_ranger" : "false",
          "recovery_max_count" : "6",
          "manage_dirs_on_root" : "true",
          "managed_hdfs_resource_property_names" : "",
          "recovery_retry_interval" : "5",
          "manage_hive_fsroot" : "true",
          "repo_ubuntu_template" : "{{package_type}} {{base_url}} {{components}}",
          "stack_root" : "{\"ADH\":\"/usr/lib\"}",
          "fetch_nonlocal_groups" : "true",
          "one_dir_per_partition" : "false",
          "kerberos_domain" : "EXAMPLE.COM",
          "stack_packages" : "{\n  \"ADH\": {\n    \"stack-select\": {\n      \"ATLAS\": {\n        \"ATLAS_CLIENT\": {\n          \"STACK-SELECT-PACKAGE\": \"atlas-client\",\n          \"INSTALL\": [\n            \"atlas-client\"\n          ],\n          \"PATCH\": [\n            \"atlas-client\"\n          ],\n          \"STANDARD\": [\n            \"atlas-client\"\n          ]\n        },\n        \"ATLAS_SERVER\": {\n          \"STACK-SELECT-PACKAGE\": \"atlas-server\",\n          \"INSTALL\": [\n            \"atlas-server\"\n          ],\n          \"PATCH\": [\n            \"atlas-server\"\n          ],\n          \"STANDARD\": [\n            \"atlas-server\"\n          ]\n        }\n      },\n      \"FLUME\": {\n        \"FLUME_HANDLER\": {\n          \"STACK-SELECT-PACKAGE\": \"flume-server\",\n          \"INSTALL\": [\n            \"flume-server\"\n          ],\n          \"PATCH\": [\n            \"flume-server\"\n          ],\n          \"STANDARD\": [\n            \"flume-server\"\n          ]\n        }\n      },\n      \"HBASE\": {\n        \"HBASE_CLIENT\": {\n          \"STACK-SELECT-PACKAGE\": \"hbase-client\",\n          \"INSTALL\": [\n            \"hbase-client\",\n            \"hadoop-client\"\n          ],\n          \"PATCH\": [\n            \"hbase-client\"\n          ],\n          \"STANDARD\": [\n            \"hbase-client\",\n            \"hadoop-client\"\n          ]\n        },\n        \"HBASE_MASTER\": {\n          \"STACK-SELECT-PACKAGE\": \"hbase-master\",\n          \"INSTALL\": [\n            \"hbase-master\"\n          ],\n          \"PATCH\": [\n            \"hbase-master\"\n          ],\n          \"STANDARD\": [\n            \"hbase-master\"\n          ]\n        },\n        \"HBASE_REGIONSERVER\": {\n          \"STACK-SELECT-PACKAGE\": \"hbase-regionserver\",\n          \"INSTALL\": [\n            \"hbase-regionserver\"\n          ],\n          \"PATCH\": [\n            \"hbase-regionserver\"\n          ],\n          \"STANDARD\": [\n            \"hbase-regionserver\"\n          ]\n        },\n        \"HBASE_REST_SERVER\": {\n          \"STACK-SELECT-PACKAGE\": \"hbase-restserver\",\n          \"INSTALL\": [\n            \"hbase-restserver\"\n          ],\n          \"PATCH\": [\n            \"hbase-restserver\"\n          ],\n          \"STANDARD\": [\n            \"hbase-restserver\"\n          ]\n        },\n\n        \"PHOENIX_QUERY_SERVER\": {\n          \"STACK-SELECT-PACKAGE\": \"phoenix-server\",\n          \"INSTALL\": [\n            \"phoenix-server\"\n          ],\n          \"PATCH\": [\n            \"phoenix-server\"\n          ],\n          \"STANDARD\": [\n            \"phoenix-server\"\n          ]\n        }\n      },\n      \"HDFS\": {\n        \"DATANODE\": {\n          \"STACK-SELECT-PACKAGE\": \"hadoop-hdfs-datanode\",\n          \"INSTALL\": [\n            \"hadoop-hdfs-datanode\"\n          ],\n          \"PATCH\": [\n            \"hadoop-hdfs-datanode\"\n          ],\n          \"STANDARD\": [\n            \"hadoop-hdfs-datanode\"\n          ]\n        },\n        \"HDFS_CLIENT\": {\n          \"STACK-SELECT-PACKAGE\": \"hadoop-client\",\n          \"INSTALL\": [\n            \"hadoop-client\"\n          ],\n          \"PATCH\": [\n            \"hadoop-client\"\n          ],\n          \"STANDARD\": [\n            \"hadoop-client\"\n          ]\n        },\n        \"NAMENODE\": {\n          \"STACK-SELECT-PACKAGE\": \"hadoop-hdfs-namenode\",\n          \"INSTALL\": [\n            \"hadoop-hdfs-namenode\"\n          ],\n          \"PATCH\": [\n            \"hadoop-hdfs-namenode\"\n          ],\n          \"STANDARD\": [\n            \"hadoop-hdfs-namenode\"\n          ]\n        },\n        \"NFS_GATEWAY\": {\n          \"STACK-SELECT-PACKAGE\": \"hadoop-hdfs-nfs3\",\n          \"INSTALL\": [\n            \"hadoop-hdfs-nfs3\"\n          ],\n          \"PATCH\": [\n            \"hadoop-hdfs-nfs3\"\n          ],\n          \"STANDARD\": [\n            \"hadoop-hdfs-nfs3\"\n          ]\n        },\n        \"JOURNALNODE\": {\n          \"STACK-SELECT-PACKAGE\": \"hadoop-hdfs-journalnode\",\n          \"INSTALL\": [\n            \"hadoop-hdfs-journalnode\"\n          ],\n          \"PATCH\": [\n            \"hadoop-hdfs-journalnode\"\n          ],\n          \"STANDARD\": [\n            \"hadoop-hdfs-journalnode\"\n          ]\n        },\n        \"SECONDARY_NAMENODE\": {\n          \"STACK-SELECT-PACKAGE\": \"hadoop-hdfs-secondarynamenode\",\n          \"INSTALL\": [\n            \"hadoop-hdfs-secondarynamenode\"\n          ],\n          \"PATCH\": [\n            \"hadoop-hdfs-secondarynamenode\"\n          ],\n          \"STANDARD\": [\n            \"hadoop-hdfs-secondarynamenode\"\n          ]\n        }\n      },\n      \"HIVE\": {\n        \"HCAT\": {\n          \"STACK-SELECT-PACKAGE\": \"hive-webhcat\",\n          \"INSTALL\": [\n            \"hive-webhcat\"\n          ],\n          \"PATCH\": [\n            \"hive-webhcat\"\n          ],\n          \"STANDARD\": [\n            \"hive-webhcat\"\n          ]\n        },\n        \"HIVE_METASTORE\": {\n          \"STACK-SELECT-PACKAGE\": \"hive-metastore\",\n          \"INSTALL\": [\n            \"hive-metastore\"\n          ],\n          \"PATCH\": [\n            \"hive-metastore\"\n          ],\n          \"STANDARD\": [\n            \"hive-metastore\"\n          ]\n        },\n        \"HIVE_SERVER\": {\n          \"STACK-SELECT-PACKAGE\": \"hive-server2\",\n          \"INSTALL\": [\n            \"hive-server2\"\n          ],\n          \"PATCH\": [\n            \"hive-server2\"\n          ],\n          \"STANDARD\": [\n            \"hive-server2\"\n          ]\n        },\n        \"HIVE_SERVER_INTERACTIVE\": {\n          \"STACK-SELECT-PACKAGE\": \"hive-server2-hive2\",\n          \"INSTALL\": [\n            \"hive-server2-hive2\"\n          ],\n          \"PATCH\": [\n            \"hive-server2-hive2\"\n          ],\n          \"STANDARD\": [\n            \"hive-server2-hive2\"\n          ]\n        },\n        \"HIVE_CLIENT\": {\n          \"STACK-SELECT-PACKAGE\": \"hadoop-client\",\n          \"INSTALL\": [\n            \"hadoop-client\"\n          ],\n          \"PATCH\": [\n            \"hadoop-client\"\n          ],\n          \"STANDARD\": [\n            \"hadoop-client\"\n          ]\n        },\n        \"WEBHCAT_SERVER\": {\n          \"STACK-SELECT-PACKAGE\": \"hive-webhcat\",\n          \"INSTALL\": [\n            \"hive-webhcat\"\n          ],\n          \"PATCH\": [\n            \"hive-webhcat\"\n          ],\n          \"STANDARD\": [\n            \"hive-webhcat\"\n          ]\n        }\n      },\n      \"KAFKA\": {\n        \"KAFKA_BROKER\": {\n          \"STACK-SELECT-PACKAGE\": \"kafka-broker\",\n          \"INSTALL\": [\n            \"kafka-broker\"\n          ],\n          \"PATCH\": [\n            \"kafka-broker\"\n          ],\n          \"STANDARD\": [\n            \"kafka-broker\"\n          ]\n        }\n      },\n      \"KNOX\": {\n        \"KNOX_GATEWAY\": {\n          \"STACK-SELECT-PACKAGE\": \"knox-server\",\n          \"INSTALL\": [\n            \"knox-server\"\n          ],\n          \"PATCH\": [\n            \"knox-server\"\n          ],\n          \"STANDARD\": [\n            \"knox-server\"\n          ]\n        }\n      },\n      \"MAPREDUCE2\": {\n        \"HISTORYSERVER\": {\n          \"STACK-SELECT-PACKAGE\": \"hadoop-mapreduce-historyserver\",\n          \"INSTALL\": [\n            \"hadoop-mapreduce-historyserver\"\n          ],\n          \"PATCH\": [\n            \"hadoop-mapreduce-historyserver\"\n          ],\n          \"STANDARD\": [\n            \"hadoop-mapreduce-historyserver\"\n          ]\n        },\n        \"MAPREDUCE2_CLIENT\": {\n          \"STACK-SELECT-PACKAGE\": \"hadoop-client\",\n          \"INSTALL\": [\n            \"hadoop-client\"\n          ],\n          \"PATCH\": [\n            \"hadoop-client\"\n          ],\n          \"STANDARD\": [\n            \"hadoop-client\"\n          ]\n        }\n      },\n      \"OOZIE\": {\n        \"OOZIE_CLIENT\": {\n          \"STACK-SELECT-PACKAGE\": \"oozie-client\",\n          \"INSTALL\": [\n            \"oozie-client\"\n          ],\n          \"PATCH\": [\n            \"oozie-client\"\n          ],\n          \"STANDARD\": [\n            \"oozie-client\"\n          ]\n        },\n        \"OOZIE_SERVER\": {\n          \"STACK-SELECT-PACKAGE\": \"oozie-server\",\n          \"INSTALL\": [\n            \"oozie-client\",\n            \"oozie-server\"\n          ],\n          \"PATCH\": [\n            \"oozie-server\"\n          ],\n          \"STANDARD\": [\n            \"oozie-client\",\n            \"oozie-server\"\n          ]\n        }\n      },\n      \"PIG\": {\n        \"PIG\": {\n          \"STACK-SELECT-PACKAGE\": \"hadoop-client\",\n          \"INSTALL\": [\n            \"hadoop-client\"\n          ],\n          \"PATCH\": [\n            \"hadoop-client\"\n          ],\n          \"STANDARD\": [\n            \"hadoop-client\"\n          ]\n        }\n      },\n      \"R4ML\": {\n        \"R4ML\": {\n          \"STACK-SELECT-PACKAGE\": \"r4ml-client\",\n          \"INSTALL\": [\n            \"r4ml-client\"\n          ],\n          \"PATCH\": [\n            \"r4ml-client\"\n          ],\n          \"STANDARD\": [\n            \"r4ml-client\"\n          ]\n        }\n      },\n      \"RANGER\": {\n        \"RANGER_ADMIN\": {\n          \"STACK-SELECT-PACKAGE\": \"ranger-admin\",\n          \"INSTALL\": [\n            \"ranger-admin\"\n          ],\n          \"PATCH\": [\n            \"ranger-admin\"\n          ],\n          \"STANDARD\": [\n            \"ranger-admin\"\n          ]\n        },\n        \"RANGER_TAGSYNC\": {\n          \"STACK-SELECT-PACKAGE\": \"ranger-tagsync\",\n          \"INSTALL\": [\n            \"ranger-tagsync\"\n          ],\n          \"PATCH\": [\n            \"ranger-tagsync\"\n          ],\n          \"STANDARD\": [\n            \"ranger-tagsync\"\n          ]\n        },\n        \"RANGER_USERSYNC\": {\n          \"STACK-SELECT-PACKAGE\": \"ranger-usersync\",\n          \"INSTALL\": [\n            \"ranger-usersync\"\n          ],\n          \"PATCH\": [\n            \"ranger-usersync\"\n          ],\n          \"STANDARD\": [\n            \"ranger-usersync\"\n          ]\n        }\n      },\n      \"RANGER_KMS\": {\n        \"RANGER_KMS_SERVER\": {\n          \"STACK-SELECT-PACKAGE\": \"ranger-kms\",\n          \"INSTALL\": [\n            \"ranger-kms\"\n          ],\n          \"PATCH\": [\n            \"ranger-kms\"\n          ],\n          \"STANDARD\": [\n            \"ranger-kms\"\n          ]\n        }\n      },\n      \"SLIDER\": {\n        \"SLIDER\": {\n          \"STACK-SELECT-PACKAGE\": \"slider-client\",\n          \"INSTALL\": [\n            \"slider-client\",\n            \"hadoop-client\"\n          ],\n          \"PATCH\": [\n            \"slider-client\"\n          ],\n          \"STANDARD\": [\n            \"slider-client\",\n            \"hadoop-client\"\n          ]\n        }\n      },\n      \"SOLR\": {\n        \"SOLR\": {\n          \"STACK-SELECT-PACKAGE\": \"solr-server\",\n          \"INSTALL\": [\n            \"solr-server\"\n          ],\n          \"PATCH\": [\n            \"solr-server\"\n          ],\n          \"STANDARD\": [\n            \"solr-server\"\n          ]\n        }\n      },\n      \"SPARK\": {\n        \"LIVY_SERVER\": {\n          \"STACK-SELECT-PACKAGE\": \"livy-server\",\n          \"INSTALL\": [\n            \"livy-server\"\n          ],\n          \"PATCH\": [\n            \"livy-server\"\n          ],\n          \"STANDARD\": [\n            \"livy-server\"\n          ]\n        },\n        \"SPARK_CLIENT\": {\n          \"STACK-SELECT-PACKAGE\": \"spark-client\",\n          \"INSTALL\": [\n            \"spark-client\"\n          ],\n          \"PATCH\": [\n            \"spark-client\"\n          ],\n          \"STANDARD\": [\n            \"spark-client\"\n          ]\n        },\n        \"SPARK_JOBHISTORYSERVER\": {\n          \"STACK-SELECT-PACKAGE\": \"spark-historyserver\",\n          \"INSTALL\": [\n            \"spark-historyserver\"\n          ],\n          \"PATCH\": [\n            \"spark-historyserver\"\n          ],\n          \"STANDARD\": [\n            \"spark-historyserver\"\n          ]\n        },\n        \"SPARK_THRIFTSERVER\": {\n          \"STACK-SELECT-PACKAGE\": \"spark-thriftserver\",\n          \"INSTALL\": [\n            \"spark-thriftserver\"\n          ],\n          \"PATCH\": [\n            \"spark-thriftserver\"\n          ],\n          \"STANDARD\": [\n            \"spark-thriftserver\"\n          ]\n        }\n      },\n      \"SPARK2\": {\n        \"LIVY2_SERVER\": {\n          \"STACK-SELECT-PACKAGE\": \"livy2-server\",\n          \"INSTALL\": [\n            \"livy2-server\"\n          ],\n          \"PATCH\": [\n            \"livy2-server\"\n          ],\n          \"STANDARD\": [\n            \"livy2-server\"\n          ]\n        },\n        \"SPARK2_CLIENT\": {\n          \"STACK-SELECT-PACKAGE\": \"spark2-client\",\n          \"INSTALL\": [\n            \"spark2-client\"\n          ],\n          \"PATCH\": [\n            \"spark2-client\"\n          ],\n          \"STANDARD\": [\n            \"spark2-client\"\n          ]\n        },\n        \"SPARK2_JOBHISTORYSERVER\": {\n          \"STACK-SELECT-PACKAGE\": \"spark2-historyserver\",\n          \"INSTALL\": [\n            \"spark2-historyserver\"\n          ],\n          \"PATCH\": [\n            \"spark2-historyserver\"\n          ],\n          \"STANDARD\": [\n            \"spark2-historyserver\"\n          ]\n        },\n        \"SPARK2_THRIFTSERVER\": {\n          \"STACK-SELECT-PACKAGE\": \"spark2-thriftserver\",\n          \"INSTALL\": [\n            \"spark2-thriftserver\"\n          ],\n          \"PATCH\": [\n            \"spark2-thriftserver\"\n          ],\n          \"STANDARD\": [\n            \"spark2-thriftserver\"\n          ]\n        }\n      },\n      \"SQOOP\": {\n        \"SQOOP\": {\n          \"STACK-SELECT-PACKAGE\": \"sqoop-client\",\n          \"INSTALL\": [\n            \"sqoop-client\"\n          ],\n          \"PATCH\": [\n            \"sqoop-client\"\n          ],\n          \"STANDARD\": [\n            \"sqoop-client\"\n          ]\n        }\n      },\n      \"STORM\": {\n        \"NIMBUS\": {\n          \"STACK-SELECT-PACKAGE\": \"storm-nimbus\",\n          \"INSTALL\": [\n            \"storm-client\",\n            \"storm-nimbus\"\n          ],\n          \"PATCH\": [\n            \"storm-client\",\n            \"storm-nimbus\"\n          ],\n          \"STANDARD\": [\n            \"storm-client\",\n            \"storm-nimbus\"\n          ]\n        },\n        \"SUPERVISOR\": {\n          \"STACK-SELECT-PACKAGE\": \"storm-supervisor\",\n          \"INSTALL\": [\n            \"storm-client\",\n            \"storm-supervisor\"\n          ],\n          \"PATCH\": [\n            \"storm-client\",\n            \"storm-supervisor\"\n          ],\n          \"STANDARD\": [\n            \"storm-client\",\n            \"storm-supervisor\"\n          ]\n        },\n        \"DRPC_SERVER\": {\n          \"STACK-SELECT-PACKAGE\": \"storm-client\",\n          \"INSTALL\": [\n            \"storm-client\"\n          ],\n          \"PATCH\": [\n            \"storm-client\"\n          ],\n          \"STANDARD\": [\n            \"storm-client\"\n          ]\n        },\n        \"STORM_UI_SERVER\": {\n          \"STACK-SELECT-PACKAGE\": \"storm-client\",\n          \"INSTALL\": [\n            \"storm-client\"\n          ],\n          \"PATCH\": [\n            \"storm-client\"\n          ],\n          \"STANDARD\": [\n            \"storm-client\"\n          ]\n        }\n      },\n      \"SYSTEMML\": {\n        \"SYSTEMML\": {\n          \"STACK-SELECT-PACKAGE\": \"systemml-client\",\n          \"INSTALL\": [\n            \"systemml-client\"\n          ],\n          \"PATCH\": [\n            \"systemml-client\"\n          ],\n          \"STANDARD\": [\n            \"systemml-client\"\n          ]\n        }\n      },\n      \"TEZ\": {\n        \"TEZ_CLIENT\": {\n          \"STACK-SELECT-PACKAGE\": \"hadoop-client\",\n          \"INSTALL\": [\n            \"hadoop-client\"\n          ],\n          \"PATCH\": [\n            \"hadoop-client\"\n          ],\n          \"STANDARD\": [\n            \"hadoop-client\"\n          ]\n        }\n      },\n      \"TITAN\": {\n        \"TITAN_CLIENT\": {\n          \"STACK-SELECT-PACKAGE\": \"titan-client\",\n          \"INSTALL\": [\n            \"titan-client\"\n          ],\n          \"PATCH\": [\n            \"titan-client\"\n          ],\n          \"STANDARD\": [\n            \"titan-client\"\n          ]\n        },\n        \"TITAN_SERVER\": {\n          \"STACK-SELECT-PACKAGE\": \"titan-server\",\n          \"INSTALL\": [\n            \"titan-server\"\n          ],\n          \"PATCH\": [\n            \"titan-server\"\n          ],\n          \"STANDARD\": [\n            \"titan-server\"\n          ]\n        }\n      },\n      \"YARN\": {\n        \"APP_TIMELINE_SERVER\": {\n          \"STACK-SELECT-PACKAGE\": \"hadoop-yarn-timelineserver\",\n          \"INSTALL\": [\n            \"hadoop-yarn-timelineserver\"\n          ],\n          \"PATCH\": [\n            \"hadoop-yarn-timelineserver\"\n          ],\n          \"STANDARD\": [\n            \"hadoop-yarn-timelineserver\"\n          ]\n        },\n        \"NODEMANAGER\": {\n          \"STACK-SELECT-PACKAGE\": \"hadoop-yarn-nodemanager\",\n          \"INSTALL\": [\n            \"hadoop-yarn-nodemanager\"\n          ],\n          \"PATCH\": [\n            \"hadoop-yarn-nodemanager\"\n          ],\n          \"STANDARD\": [\n            \"hadoop-yarn-nodemanager\"\n          ]\n        },\n        \"RESOURCEMANAGER\": {\n          \"STACK-SELECT-PACKAGE\": \"hadoop-yarn-resourcemanager\",\n          \"INSTALL\": [\n            \"hadoop-yarn-resourcemanager\"\n          ],\n          \"PATCH\": [\n            \"hadoop-yarn-resourcemanager\"\n          ],\n          \"STANDARD\": [\n            \"hadoop-yarn-resourcemanager\"\n          ]\n        },\n        \"YARN_CLIENT\": {\n          \"STACK-SELECT-PACKAGE\": \"hadoop-client\",\n          \"INSTALL\": [\n            \"hadoop-client\"\n          ],\n          \"PATCH\": [\n            \"hadoop-client\"\n          ],\n          \"STANDARD\": [\n            \"hadoop-client\"\n          ]\n        }\n      },\n      \"ZEPPELIN\": {\n        \"ZEPPELIN_MASTER\": {\n          \"STACK-SELECT-PACKAGE\": \"zeppelin-server\",\n          \"INSTALL\": [\n            \"zeppelin-server\"\n          ],\n          \"PATCH\": [\n            \"zeppelin-server\"\n          ],\n          \"STANDARD\": [\n            \"zeppelin-server\"\n          ]\n        }\n      },\n      \"ZOOKEEPER\": {\n        \"ZOOKEEPER_CLIENT\": {\n          \"STACK-SELECT-PACKAGE\": \"zookeeper-client\",\n          \"INSTALL\": [\n            \"zookeeper-client\"\n          ],\n          \"PATCH\": [\n            \"zookeeper-client\"\n          ],\n          \"STANDARD\": [\n            \"zookeeper-client\"\n          ]\n        },\n        \"ZOOKEEPER_SERVER\": {\n          \"STACK-SELECT-PACKAGE\": \"zookeeper-server\",\n          \"INSTALL\": [\n            \"zookeeper-server\"\n          ],\n          \"PATCH\": [\n            \"zookeeper-server\"\n          ],\n          \"STANDARD\": [\n            \"zookeeper-server\"\n          ]\n        }\n      }\n    },\n    \"conf-select\": {\n      \"accumulo\": [\n        {\n          \"conf_dir\": \"/etc/accumulo/conf\",\n          \"current_dir\": \"{0}/current/accumulo-client/conf\"\n        }\n      ],\n      \"atlas\": [\n        {\n          \"conf_dir\": \"/etc/atlas/conf\",\n          \"current_dir\": \"{0}/current/atlas-client/conf\"\n        }\n      ],\n      \"druid\": [\n        {\n          \"conf_dir\": \"/etc/druid/conf\",\n          \"current_dir\": \"{0}/current/druid-overlord/conf\"\n        }\n      ],\n      \"falcon\": [\n        {\n          \"conf_dir\": \"/etc/falcon/conf\",\n          \"current_dir\": \"{0}/current/falcon-client/conf\"\n        }\n      ],\n      \"flume\": [\n        {\n          \"conf_dir\": \"/etc/flume/conf\",\n          \"current_dir\": \"{0}/current/flume-server/conf\"\n        }\n      ],\n      \"hadoop\": [\n        {\n          \"conf_dir\": \"/etc/hadoop/conf\",\n          \"current_dir\": \"{0}/current/hadoop-client/conf\"\n        }\n      ],\n      \"hbase\": [\n        {\n          \"conf_dir\": \"/etc/hbase/conf\",\n          \"current_dir\": \"{0}/current/hbase-client/conf\"\n        }\n      ],\n      \"hive\": [\n        {\n          \"conf_dir\": \"/etc/hive/conf\",\n          \"current_dir\": \"{0}/current/hive-client/conf\"\n        }\n      ],\n      \"hive2\": [\n        {\n          \"conf_dir\": \"/etc/hive2/conf\",\n          \"current_dir\": \"{0}/current/hive-server2-hive2/conf\"\n        }\n      ],\n      \"hive-hcatalog\": [\n        {\n          \"conf_dir\": \"/etc/hive-webhcat/conf\",\n          \"prefix\": \"/etc/hive-webhcat\",\n          \"current_dir\": \"{0}/current/hive-webhcat/etc/webhcat\"\n        },\n        {\n          \"conf_dir\": \"/etc/hive-hcatalog/conf\",\n          \"prefix\": \"/etc/hive-hcatalog\",\n          \"current_dir\": \"{0}/current/hive-webhcat/etc/hcatalog\"\n        }\n      ],\n      \"kafka\": [\n        {\n          \"conf_dir\": \"/etc/kafka/conf\",\n          \"current_dir\": \"{0}/current/kafka-broker/conf\"\n        }\n      ],\n      \"knox\": [\n        {\n          \"conf_dir\": \"/etc/knox/conf\",\n          \"current_dir\": \"{0}/current/knox-server/conf\"\n        }\n      ],\n      \"livy\": [\n        {\n          \"conf_dir\": \"/etc/livy/conf\",\n          \"current_dir\": \"{0}/current/livy-client/conf\"\n        }\n      ],\n      \"mahout\": [\n        {\n          \"conf_dir\": \"/etc/mahout/conf\",\n          \"current_dir\": \"{0}/current/mahout-client/conf\"\n        }\n      ],\n      \"nifi\": [\n        {\n          \"conf_dir\": \"/etc/nifi/conf\",\n          \"current_dir\": \"{0}/current/nifi/conf\"\n        }\n      ],\n      \"oozie\": [\n        {\n          \"conf_dir\": \"/etc/oozie/conf\",\n          \"current_dir\": \"{0}/current/oozie-client/conf\"\n        }\n      ],\n      \"phoenix\": [\n        {\n          \"conf_dir\": \"/etc/phoenix/conf\",\n          \"current_dir\": \"{0}/current/phoenix-client/conf\"\n        }\n      ],\n      \"pig\": [\n        {\n          \"conf_dir\": \"/etc/pig/conf\",\n          \"current_dir\": \"{0}/current/pig-client/conf\"\n        }\n      ],\n      \"ranger-admin\": [\n        {\n          \"conf_dir\": \"/etc/ranger/admin/conf\",\n          \"current_dir\": \"{0}/current/ranger-admin/conf\"\n        }\n      ],\n      \"ranger-kms\": [\n        {\n          \"conf_dir\": \"/etc/ranger/kms/conf\",\n          \"current_dir\": \"{0}/current/ranger-kms/conf\"\n        }\n      ],\n      \"ranger-tagsync\": [\n        {\n          \"conf_dir\": \"/etc/ranger/tagsync/conf\",\n          \"current_dir\": \"{0}/current/ranger-tagsync/conf\"\n        }\n      ],\n      \"ranger-usersync\": [\n        {\n          \"conf_dir\": \"/etc/ranger/usersync/conf\",\n          \"current_dir\": \"{0}/current/ranger-usersync/conf\"\n        }\n      ],\n      \"slider\": [\n        {\n          \"conf_dir\": \"/etc/slider/conf\",\n          \"current_dir\": \"{0}/current/slider-client/conf\"\n        }\n      ],\n      \"spark\": [\n        {\n          \"conf_dir\": \"/etc/spark/conf\",\n          \"current_dir\": \"{0}/current/spark-client/conf\"\n        }\n      ],\n      \"spark2\": [\n        {\n          \"conf_dir\": \"/etc/spark2/conf\",\n          \"current_dir\": \"{0}/current/spark2-client/conf\"\n        }\n      ],\n      \"sqoop\": [\n        {\n          \"conf_dir\": \"/etc/sqoop/conf\",\n          \"current_dir\": \"{0}/current/sqoop-client/conf\"\n        }\n      ],\n      \"storm\": [\n        {\n          \"conf_dir\": \"/etc/storm/conf\",\n          \"current_dir\": \"{0}/current/storm-client/conf\"\n        }\n      ],\n      \"storm-slider-client\": [\n        {\n          \"conf_dir\": \"/etc/storm-slider-client/conf\",\n          \"current_dir\": \"{0}/current/storm-slider-client/conf\"\n        }\n      ],\n      \"superset\": [\n        {\n          \"conf_dir\": \"/etc/druid-superset/conf\",\n          \"current_dir\": \"{0}/current/druid-superset/conf\"\n        }\n      ],\n      \"tez\": [\n        {\n          \"conf_dir\": \"/etc/tez/conf\",\n          \"current_dir\": \"{0}/current/tez-client/conf\"\n        }\n      ],\n      \"zeppelin\": [\n        {\n          \"conf_dir\": \"/etc/zeppelin/conf\",\n          \"current_dir\": \"{0}/current/zeppelin-server/conf\"\n        }\n      ],\n      \"zookeeper\": [\n        {\n          \"conf_dir\": \"/etc/zookeeper/conf\",\n          \"current_dir\": \"{0}/current/zookeeper-client/conf\"\n        }\n      ]\n    }\n  }\n}",
          "ignore_bad_mounts" : "false",
          "user_group" : "hadoop",
          "sysprep_skip_setup_jce" : "false",
          "override_uid" : "true",
          "security_enabled" : "false",
          "sysprep_skip_copy_fast_jar_hdfs" : "false",
          "agent_mounts_ignore_list" : "",
          "recovery_lifetime_max_count" : "1024",
          "recovery_type" : "AUTO_START",
          "repo_suse_rhel_template" : "[{{repo_id}}]\nname={{repo_id}}\n{% if mirror_list %}mirrorlist={{mirror_list}}{% else %}baseurl={{base_url}}{% endif %}\n\npath=/\nenabled=1\ngpgcheck=0",
          "sysprep_skip_create_users_and_groups" : "false",
          "sysprep_skip_copy_tarballs_hdfs" : "false",
          "sysprep_skip_copy_oozie_share_lib_to_hdfs" : "false",
          "recovery_enabled" : "true",
          "smokeuser" : "ambari-qa",
          "smokeuser_keytab" : "/etc/security/keytabs/smokeuser.headless.keytab",
          "alerts_repeat_tolerance" : "1",
          "recovery_window_in_minutes" : "60",
          "stack_name" : "ADH",
          "ignore_groupsusers_create" : "false"
        }
      }
    },
    {
      "ams-grafana-env" : {
        "properties_attributes" : { },
        "properties" : {
          "metrics_grafana_connect_retry_delay" : "20",
          "metrics_grafana_log_dir" : "/var/log/ambari-metrics-grafana",
          "metrics_grafana_connect_attempts" : "15",
          "metrics_grafana_pid_dir" : "/var/run/ambari-metrics-grafana",
          "content" : "\n# Set environment variables here.\n\n# AMS UI Server Home Dir\nexport AMS_GRAFANA_HOME_DIR={{ams_grafana_home_dir}}\n\n# AMS UI Server Data Dir\nexport AMS_GRAFANA_DATA_DIR={{ams_grafana_data_dir}}\n\n# AMS UI Server Log Dir\nexport AMS_GRAFANA_LOG_DIR={{ams_grafana_log_dir}}\n\n# AMS UI Server PID Dir\nexport AMS_GRAFANA_PID_DIR={{ams_grafana_pid_dir}}",
          "metrics_grafana_data_dir" : "/var/lib/ambari-metrics-grafana",
          "metrics_grafana_username" : "admin"
        }
      }
    },
    {
      "hive-interactive-site" : {
        "properties_attributes" : { },
        "properties" : {
          "hive.vectorized.groupby.maxentries" : "1000000",
          "hive.llap.client.consistent.splits" : "true",
          "hive.llap.daemon.yarn.container.mb" : "0",
          "hive.llap.io.memory.size" : "0",
          "hive.llap.daemon.am.liveness.heartbeat.interval.ms" : "10000ms",
          "hive.llap.task.scheduler.locality.delay" : "8000",
          "hive.vectorized.execution.reduce.enabled" : "true",
          "hive.llap.daemon.rpc.port" : "0",
          "hive.execution.mode" : "llap",
          "hive.exec.orc.split.strategy" : "HYBRID",
          "hive.llap.io.enabled" : "true",
          "hive.vectorized.execution.mapjoin.native.fast.hashtable.enabled" : "true",
          "hive.optimize.dynamic.partition.hashjoin" : "true",
          "hive.mapjoin.hybridgrace.hashtable" : "true",
          "hive.execution.engine" : "tez",
          "hive.llap.object.cache.enabled" : "true",
          "hive.llap.daemon.queue.name" : "default",
          "hive.tez.container.size" : "682",
          "hive.metastore.uris" : "",
          "hive.server2.tez.sessions.restricted.configs" : "hive.execution.mode,hive.execution.engine",
          "hive.llap.auto.allow.uber" : "false",
          "hive.server2.webui.port" : "10502",
          "hive.llap.daemon.num.executors" : "1",
          "hive.llap.daemon.task.scheduler.enable.preemption" : "true",
          "hive.llap.io.use.lrfu" : "true",
          "hive.vectorized.execution.mapjoin.native.enabled" : "true",
          "hive.metastore.event.listeners" : "",
          "hive.server2.tez.default.queues" : "default",
          "hive.llap.zk.sm.connectionString" : "%HOSTGROUP::host_group_1%:2181",
          "hive.server2.tez.sessions.custom.queue.allowed" : "ignore",
          "hive.server2.tez.sessions.per.default.queue" : "1",
          "hive.server2.webui.use.ssl" : "false",
          "hive.llap.management.rpc.port" : "15004",
          "hive.server2.thrift.http.port" : "10501",
          "hive.map.aggr.hash.min.reduction" : "0.99",
          "hive.llap.daemon.logger" : "query-routing",
          "hive.prewarm.enabled" : "false",
          "hive.auto.convert.join.noconditionaltask.size" : "1000000000",
          "llap.shuffle.connection-keep-alive.timeout" : "60",
          "hive.llap.execution.mode" : "all",
          "hive.llap.daemon.yarn.shuffle.port" : "15551",
          "hive.llap.enable.grace.join.in.llap" : "false",
          "hive.llap.daemon.vcpus.per.instance" : "${hive.llap.daemon.num.executors}",
          "hive.llap.io.memory.mode" : "",
          "hive.server2.thrift.port" : "10500",
          "hive.driver.parallel.compilation" : "true",
          "hive.tez.exec.print.summary" : "true",
          "hive.tez.input.generate.consistent.splits" : "true",
          "hive.vectorized.execution.mapjoin.minmax.enabled" : "true",
          "hive.server2.enable.doAs" : "false",
          "hive.server2.zookeeper.namespace" : "hiveserver2-hive2",
          "hive.tez.bucket.pruning" : "true",
          "hive.llap.io.threadpool.size" : "2",
          "llap.shuffle.connection-keep-alive.enable" : "true",
          "hive.llap.daemon.service.hosts" : "@llap0",
          "hive.server2.tez.initialize.default.sessions" : "true"
        }
      }
    },
    {
      "livy2-conf" : {
        "properties_attributes" : { },
        "properties" : {
          "livy.repl.enableHiveContext" : "true",
          "livy.spark.master" : "yarn-cluster",
          "livy.server.recovery.state-store.url" : "/livy2-recovery",
          "livy.server.session.timeout" : "3600000",
          "livy.environment" : "production",
          "livy.server.csrf_protection.enabled" : "true",
          "livy.server.recovery.mode" : "recovery",
          "livy.impersonation.enabled" : "true",
          "livy.server.port" : "8999",
          "livy.server.recovery.state-store" : "filesystem"
        }
      }
    },
    {
      "ranger-hive-audit" : {
        "properties_attributes" : { },
        "properties" : { }
      }
    },
    {
      "logsearch-audit_logs-solrconfig" : {
        "properties_attributes" : { },
        "properties" : {
          "logsearch_audit_logs_max_retention" : "7",
          "logsearch_audit_logs_merge_factor" : "5",
          "content" : "<?xml version=\"1.0\" encoding=\"UTF-8\" ?>\n<!--\nLicensed to the Apache Software Foundation (ASF) under one or more\ncontributor license agreements.  See the NOTICE file distributed with\nthis work for additional information regarding copyright ownership.\nThe ASF licenses this file to You under the Apache License, Version 2.0\n(the \"License\"); you may not use this file except in compliance with\nthe License.  You may obtain a copy of the License at\n\nhttp://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n-->\n\n<!--\nFor more details about configurations options that may appear in\nthis file, see http://wiki.apache.org/solr/SolrConfigXml.\n-->\n<config>\n  <!-- In all configuration below, a prefix of \"solr.\" for class names\n  is an alias that causes solr to search appropriate packages,\n  including org.apache.solr.(search|update|request|core|analysis)\n\n  You may also specify a fully qualified Java classname if you\n  have your own custom plugins.\n  -->\n\n  <!-- Controls what version of Lucene various components of Solr\n  adhere to.  Generally, you want to use the latest version to\n  get all bug fixes and improvements. It is highly recommended\n  that you fully re-index after changing this setting as it can\n  affect both how text is indexed and queried.\n  -->\n  <luceneMatchVersion>5.0.0</luceneMatchVersion>\n\n  <!-- <lib/> directives can be used to instruct Solr to load any Jars\n  identified and use them to resolve any \"plugins\" specified in\n  your solrconfig.xml or schema.xml (ie: Analyzers, Request\n  Handlers, etc...).\n\n  All directories and paths are resolved relative to the\n  instanceDir.\n\n  Please note that <lib/> directives are processed in the order\n  that they appear in your solrconfig.xml file, and are \"stacked\"\n  on top of each other when building a ClassLoader - so if you have\n  plugin jars with dependencies on other jars, the \"lower level\"\n  dependency jars should be loaded first.\n\n  If a \"./lib\" directory exists in your instanceDir, all files\n  found in it are included as if you had used the following\n  syntax...\n\n  <lib dir=\"./lib\" />\n  -->\n\n  <!-- A 'dir' option by itself adds any files found in the directory\n  to the classpath, this is useful for including all jars in a\n  directory.\n\n  When a 'regex' is specified in addition to a 'dir', only the\n  files in that directory which completely match the regex\n  (anchored on both ends) will be included.\n\n  If a 'dir' option (with or without a regex) is used and nothing\n  is found that matches, a warning will be logged.\n\n  The examples below can be used to load some solr-contribs along\n  with their external dependencies.\n  -->\n  <lib dir=\"${solr.install.dir:../../../..}/dist/\" regex=\"solr-dataimporthandler-.*\\.jar\"/>\n\n  <lib dir=\"${solr.install.dir:../../../..}/contrib/extraction/lib\" regex=\".*\\.jar\"/>\n  <lib dir=\"${solr.install.dir:../../../..}/dist/\" regex=\"solr-cell-\\d.*\\.jar\"/>\n\n  <lib dir=\"${solr.install.dir:../../../..}/contrib/clustering/lib/\" regex=\".*\\.jar\"/>\n  <lib dir=\"${solr.install.dir:../../../..}/dist/\" regex=\"solr-clustering-\\d.*\\.jar\"/>\n\n  <lib dir=\"${solr.install.dir:../../../..}/contrib/langid/lib/\" regex=\".*\\.jar\"/>\n  <lib dir=\"${solr.install.dir:../../../..}/dist/\" regex=\"solr-langid-\\d.*\\.jar\"/>\n\n  <lib dir=\"${solr.install.dir:../../../..}/contrib/velocity/lib\" regex=\".*\\.jar\"/>\n  <lib dir=\"${solr.install.dir:../../../..}/dist/\" regex=\"solr-velocity-\\d.*\\.jar\"/>\n\n  <!-- an exact 'path' can be used instead of a 'dir' to specify a\n  specific jar file.  This will cause a serious error to be logged\n  if it can't be loaded.\n  -->\n  <!--\n  <lib path=\"../a-jar-that-does-not-exist.jar\" />\n  -->\n\n  <!-- Data Directory\n\n  Used to specify an alternate directory to hold all index data\n  other than the default ./data under the Solr home.  If\n  replication is in use, this should match the replication\n  configuration.\n  -->\n  <dataDir>${solr.data.dir:}</dataDir>\n\n\n  <!-- The DirectoryFactory to use for indexes.\n\n  solr.StandardDirectoryFactory is filesystem\n  based and tries to pick the best implementation for the current\n  JVM and platform.  solr.NRTCachingDirectoryFactory, the default,\n  wraps solr.StandardDirectoryFactory and caches small files in memory\n  for better NRT performance.\n\n  One can force a particular implementation via solr.MMapDirectoryFactory,\n  solr.NIOFSDirectoryFactory, or solr.SimpleFSDirectoryFactory.\n\n  solr.RAMDirectoryFactory is memory based, not\n  persistent, and doesn't work with replication.\n  -->\n  <directoryFactory name=\"DirectoryFactory\"\n                    class=\"${solr.directoryFactory:solr.NRTCachingDirectoryFactory}\">\n\n\n    <!-- These will be used if you are using the solr.HdfsDirectoryFactory,\n    otherwise they will be ignored. If you don't plan on using hdfs,\n    you can safely remove this section. -->\n    <!-- The root directory that collection data should be written to. -->\n    <str name=\"solr.hdfs.home\">${solr.hdfs.home:}</str>\n    <!-- The hadoop configuration files to use for the hdfs client. -->\n    <str name=\"solr.hdfs.confdir\">${solr.hdfs.confdir:}</str>\n    <!-- Enable/Disable the hdfs cache. -->\n    <str name=\"solr.hdfs.blockcache.enabled\">${solr.hdfs.blockcache.enabled:true}</str>\n    <!-- Enable/Disable using one global cache for all SolrCores.\n    The settings used will be from the first HdfsDirectoryFactory created. -->\n    <str name=\"solr.hdfs.blockcache.global\">${solr.hdfs.blockcache.global:true}</str>\n\n  </directoryFactory>\n\n  <!-- The CodecFactory for defining the format of the inverted index.\n  The default implementation is SchemaCodecFactory, which is the official Lucene\n  index format, but hooks into the schema to provide per-field customization of\n  the postings lists and per-document values in the fieldType element\n  (postingsFormat/docValuesFormat). Note that most of the alternative implementations\n  are experimental, so if you choose to customize the index format, it's a good\n  idea to convert back to the official format e.g. via IndexWriter.addIndexes(IndexReader)\n  before upgrading to a newer version to avoid unnecessary reindexing.\n  -->\n  <codecFactory class=\"solr.SchemaCodecFactory\"/>\n\n  <!-- To enable dynamic schema REST APIs, use the following for <schemaFactory>: -->\n\n  <schemaFactory class=\"ManagedIndexSchemaFactory\">\n    <bool name=\"mutable\">true</bool>\n    <str name=\"managedSchemaResourceName\">managed-schema</str>\n  </schemaFactory>\n  <!--\n  When ManagedIndexSchemaFactory is specified, Solr will load the schema from\n  the resource named in 'managedSchemaResourceName', rather than from schema.xml.\n  Note that the managed schema resource CANNOT be named schema.xml.  If the managed\n  schema does not exist, Solr will create it after reading schema.xml, then rename\n  'schema.xml' to 'schema.xml.bak'.\n\n  Do NOT hand edit the managed schema - external modifications will be ignored and\n  overwritten as a result of schema modification REST API calls.\n\n  When ManagedIndexSchemaFactory is specified with mutable = true, schema\n  modification REST API calls will be allowed; otherwise, error responses will be\n  sent back for these requests.\n\n  <schemaFactory class=\"ClassicIndexSchemaFactory\"/>\n  -->\n\n  <!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n  Index Config - These settings control low-level behavior of indexing\n  Most example settings here show the default value, but are commented\n  out, to more easily see where customizations have been made.\n\n  Note: This replaces <indexDefaults> and <mainIndex> from older versions\n  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->\n  <indexConfig>\n    <!-- maxFieldLength was removed in 4.0. To get similar behavior, include a\n    LimitTokenCountFilterFactory in your fieldType definition. E.g.\n    <filter class=\"solr.LimitTokenCountFilterFactory\" maxTokenCount=\"10000\"/>\n    -->\n    <!-- Maximum time to wait for a write lock (ms) for an IndexWriter. Default: 1000 -->\n    <!-- <writeLockTimeout>1000</writeLockTimeout>  -->\n    <!-- LogSearch customization to avoid timeouts -->\n    <writeLockTimeout>10000</writeLockTimeout>\n\n    <!-- The maximum number of simultaneous threads that may be\n    indexing documents at once in IndexWriter; if more than this\n    many threads arrive they will wait for others to finish.\n    Default in Solr/Lucene is 8. -->\n    <!-- <maxIndexingThreads>8</maxIndexingThreads>  -->\n    <!-- LogSearch customization of increase performance -->\n    <maxIndexingThreads>50</maxIndexingThreads>\n\n    <!-- Expert: Enabling compound file will use less files for the index,\n    using fewer file descriptors on the expense of performance decrease.\n    Default in Lucene is \"true\". Default in Solr is \"false\" (since 3.6) -->\n    <!-- <useCompoundFile>false</useCompoundFile> -->\n\n    <!-- ramBufferSizeMB sets the amount of RAM that may be used by Lucene\n    indexing for buffering added documents and deletions before they are\n    flushed to the Directory.\n    maxBufferedDocs sets a limit on the number of documents buffered\n    before flushing.\n    If both ramBufferSizeMB and maxBufferedDocs is set, then\n    Lucene will flush based on whichever limit is hit first.\n    The default is 100 MB.  -->\n    <!-- <ramBufferSizeMB>100</ramBufferSizeMB> -->\n    <!-- <maxBufferedDocs>1000</maxBufferedDocs> -->\n\n    <!-- Expert: Merge Policy\n    The Merge Policy in Lucene controls how merging of segments is done.\n    The default since Solr/Lucene 3.3 is TieredMergePolicy.\n    The default since Lucene 2.3 was the LogByteSizeMergePolicy,\n    Even older versions of Lucene used LogDocMergePolicy.\n    -->\n    <!--\n    <mergePolicy class=\"org.apache.lucene.index.TieredMergePolicy\">\n    <int name=\"maxMergeAtOnce\">10</int>\n    <int name=\"segmentsPerTier\">10</int>\n    </mergePolicy>\n    -->\n\n    <!-- Merge Factor\n    The merge factor controls how many segments will get merged at a time.\n    For TieredMergePolicy, mergeFactor is a convenience parameter which\n    will set both MaxMergeAtOnce and SegmentsPerTier at once.\n    For LogByteSizeMergePolicy, mergeFactor decides how many new segments\n    will be allowed before they are merged into one.\n    Default is 10 for both merge policies.\n    -->\n    <!--\n    <mergeFactor>10</mergeFactor>\n    -->\n    <!-- LogSearch customization. Set to 5 to trigger purging of deleted documents more often -->\n    <mergeFactor>{{logsearch_audit_logs_merge_factor}}</mergeFactor>\n\n    <!-- Expert: Merge Scheduler\n    The Merge Scheduler in Lucene controls how merges are\n    performed.  The ConcurrentMergeScheduler (Lucene 2.3 default)\n    can perform merges in the background using separate threads.\n    The SerialMergeScheduler (Lucene 2.2 default) does not.\n    -->\n    <!--\n    <mergeScheduler class=\"org.apache.lucene.index.ConcurrentMergeScheduler\"/>\n    -->\n\n    <!-- LockFactory\n\n    This option specifies which Lucene LockFactory implementation\n    to use.\n\n    single = SingleInstanceLockFactory - suggested for a\n    read-only index or when there is no possibility of\n    another process trying to modify the index.\n    native = NativeFSLockFactory - uses OS native file locking.\n    Do not use when multiple solr webapps in the same\n    JVM are attempting to share a single index.\n    simple = SimpleFSLockFactory  - uses a plain file for locking\n\n    Defaults: 'native' is default for Solr3.6 and later, otherwise\n    'simple' is the default\n\n    More details on the nuances of each LockFactory...\n    http://wiki.apache.org/lucene-java/AvailableLockFactories\n    -->\n    <lockType>${solr.lock.type:native}</lockType>\n\n    <!-- Unlock On Startup\n\n    If true, unlock any held write or commit locks on startup.\n    This defeats the locking mechanism that allows multiple\n    processes to safely access a lucene index, and should be used\n    with care. Default is \"false\".\n\n    This is not needed if lock type is 'single'\n    -->\n    <!--\n    <unlockOnStartup>false</unlockOnStartup>\n    -->\n\n    <!-- Commit Deletion Policy\n    Custom deletion policies can be specified here. The class must\n    implement org.apache.lucene.index.IndexDeletionPolicy.\n\n    The default Solr IndexDeletionPolicy implementation supports\n    deleting index commit points on number of commits, age of\n    commit point and optimized status.\n\n    The latest commit point should always be preserved regardless\n    of the criteria.\n    -->\n    <!--\n    <deletionPolicy class=\"solr.SolrDeletionPolicy\">\n    -->\n    <!-- The number of commit points to be kept -->\n    <!-- <str name=\"maxCommitsToKeep\">1</str> -->\n    <!-- The number of optimized commit points to be kept -->\n    <!-- <str name=\"maxOptimizedCommitsToKeep\">0</str> -->\n    <!--\n    Delete all commit points once they have reached the given age.\n    Supports DateMathParser syntax e.g.\n    -->\n    <!--\n    <str name=\"maxCommitAge\">30MINUTES</str>\n    <str name=\"maxCommitAge\">1DAY</str>\n    -->\n    <!--\n    </deletionPolicy>\n    -->\n\n    <!-- Lucene Infostream\n\n    To aid in advanced debugging, Lucene provides an \"InfoStream\"\n    of detailed information when indexing.\n\n    Setting the value to true will instruct the underlying Lucene\n    IndexWriter to write its info stream to solr's log. By default,\n    this is enabled here, and controlled through log4j.properties.\n    -->\n    <infoStream>true</infoStream>\n  </indexConfig>\n\n\n  <!-- JMX\n\n  This example enables JMX if and only if an existing MBeanServer\n  is found, use this if you want to configure JMX through JVM\n  parameters. Remove this to disable exposing Solr configuration\n  and statistics to JMX.\n\n  For more details see http://wiki.apache.org/solr/SolrJmx\n  -->\n  <jmx/>\n  <!-- If you want to connect to a particular server, specify the\n  agentId\n  -->\n  <!-- <jmx agentId=\"myAgent\" /> -->\n  <!-- If you want to start a new MBeanServer, specify the serviceUrl -->\n  <!-- <jmx serviceUrl=\"service:jmx:rmi:///jndi/rmi://localhost:9999/solr\"/>\n  -->\n\n  <!-- The default high-performance update handler -->\n  <updateHandler class=\"solr.DirectUpdateHandler2\">\n\n    <!-- Enables a transaction log, used for real-time get, durability, and\n    and solr cloud replica recovery.  The log can grow as big as\n    uncommitted changes to the index, so use of a hard autoCommit\n    is recommended (see below).\n    \"dir\" - the target directory for transaction logs, defaults to the\n    solr data directory.  -->\n    <updateLog>\n      <str name=\"dir\">${solr.ulog.dir:}</str>\n    </updateLog>\n\n    <!-- AutoCommit\n\n    Perform a hard commit automatically under certain conditions.\n    Instead of enabling autoCommit, consider using \"commitWithin\"\n    when adding documents.\n\n    http://wiki.apache.org/solr/UpdateXmlMessages\n\n    maxDocs - Maximum number of documents to add since the last\n    commit before automatically triggering a new commit.\n\n    maxTime - Maximum amount of time in ms that is allowed to pass\n    since a document was added before automatically\n    triggering a new commit.\n    openSearcher - if false, the commit causes recent index changes\n    to be flushed to stable storage, but does not cause a new\n    searcher to be opened to make those changes visible.\n\n    If the updateLog is enabled, then it's highly recommended to\n    have some sort of hard autoCommit to limit the log size.\n    -->\n    <autoCommit>\n      <maxTime>${solr.autoCommit.maxTime:15000}</maxTime>\n      <openSearcher>false</openSearcher>\n    </autoCommit>\n\n    <!-- softAutoCommit is like autoCommit except it causes a\n    'soft' commit which only ensures that changes are visible\n    but does not ensure that data is synced to disk.  This is\n    faster and more near-realtime friendly than a hard commit.\n    -->\n\n    <autoSoftCommit>\n      <maxTime>${solr.autoSoftCommit.maxTime:5000}</maxTime>\n    </autoSoftCommit>\n\n    <!-- Update Related Event Listeners\n\n    Various IndexWriter related events can trigger Listeners to\n    take actions.\n\n    postCommit - fired after every commit or optimize command\n    postOptimize - fired after every optimize command\n    -->\n    <!-- The RunExecutableListener executes an external command from a\n    hook such as postCommit or postOptimize.\n\n    exe - the name of the executable to run\n    dir - dir to use as the current working directory. (default=\".\")\n    wait - the calling thread waits until the executable returns.\n    (default=\"true\")\n    args - the arguments to pass to the program.  (default is none)\n    env - environment variables to set.  (default is none)\n    -->\n    <!-- This example shows how RunExecutableListener could be used\n    with the script based replication...\n    http://wiki.apache.org/solr/CollectionDistribution\n    -->\n    <!--\n    <listener event=\"postCommit\" class=\"solr.RunExecutableListener\">\n    <str name=\"exe\">solr/bin/snapshooter</str>\n    <str name=\"dir\">.</str>\n    <bool name=\"wait\">true</bool>\n    <arr name=\"args\"> <str>arg1</str> <str>arg2</str> </arr>\n    <arr name=\"env\"> <str>MYVAR=val1</str> </arr>\n    </listener>\n    -->\n\n  </updateHandler>\n\n  <!-- IndexReaderFactory\n\n  Use the following format to specify a custom IndexReaderFactory,\n  which allows for alternate IndexReader implementations.\n\n  ** Experimental Feature **\n\n  Please note - Using a custom IndexReaderFactory may prevent\n  certain other features from working. The API to\n  IndexReaderFactory may change without warning or may even be\n  removed from future releases if the problems cannot be\n  resolved.\n\n\n  ** Features that may not work with custom IndexReaderFactory **\n\n  The ReplicationHandler assumes a disk-resident index. Using a\n  custom IndexReader implementation may cause incompatibility\n  with ReplicationHandler and may cause replication to not work\n  correctly. See SOLR-1366 for details.\n\n  -->\n  <!--\n  <indexReaderFactory name=\"IndexReaderFactory\" class=\"package.class\">\n  <str name=\"someArg\">Some Value</str>\n  </indexReaderFactory >\n  -->\n\n  <!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n  Query section - these settings control query time things like caches\n  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->\n  <query>\n    <!-- Max Boolean Clauses\n\n    Maximum number of clauses in each BooleanQuery,  an exception\n    is thrown if exceeded.\n\n    ** WARNING **\n\n    This option actually modifies a global Lucene property that\n    will affect all SolrCores.  If multiple solrconfig.xml files\n    disagree on this property, the value at any given moment will\n    be based on the last SolrCore to be initialized.\n\n    -->\n    <maxBooleanClauses>1024</maxBooleanClauses>\n\n\n    <!-- Solr Internal Query Caches\n\n    There are two implementations of cache available for Solr,\n    LRUCache, based on a synchronized LinkedHashMap, and\n    FastLRUCache, based on a ConcurrentHashMap.\n\n    FastLRUCache has faster gets and slower puts in single\n    threaded operation and thus is generally faster than LRUCache\n    when the hit ratio of the cache is high (> 75%), and may be\n    faster under other scenarios on multi-cpu systems.\n    -->\n\n    <!-- Filter Cache\n\n    Cache used by SolrIndexSearcher for filters (DocSets),\n    unordered sets of *all* documents that match a query.  When a\n    new searcher is opened, its caches may be prepopulated or\n    \"autowarmed\" using data from caches in the old searcher.\n    autowarmCount is the number of items to prepopulate.  For\n    LRUCache, the autowarmed items will be the most recently\n    accessed items.\n\n    Parameters:\n    class - the SolrCache implementation LRUCache or\n    (LRUCache or FastLRUCache)\n    size - the maximum number of entries in the cache\n    initialSize - the initial capacity (number of entries) of\n    the cache.  (see java.util.HashMap)\n    autowarmCount - the number of entries to prepopulate from\n    and old cache.\n    -->\n    <filterCache class=\"solr.FastLRUCache\"\n                 size=\"512\"\n                 initialSize=\"512\"\n                 autowarmCount=\"0\"/>\n\n    <!-- Query Result Cache\n\n    Caches results of searches - ordered lists of document ids\n    (DocList) based on a query, a sort, and the range of documents requested.\n    -->\n    <queryResultCache class=\"solr.LRUCache\"\n                      size=\"512\"\n                      initialSize=\"512\"\n                      autowarmCount=\"0\"/>\n\n    <!-- Document Cache\n\n    Caches Lucene Document objects (the stored fields for each\n    document).  Since Lucene internal document ids are transient,\n    this cache will not be autowarmed.\n    -->\n    <documentCache class=\"solr.LRUCache\"\n                   size=\"512\"\n                   initialSize=\"512\"\n                   autowarmCount=\"0\"/>\n\n    <!-- custom cache currently used by block join -->\n    <cache name=\"perSegFilter\"\n           class=\"solr.search.LRUCache\"\n           size=\"10\"\n           initialSize=\"0\"\n           autowarmCount=\"10\"\n           regenerator=\"solr.NoOpRegenerator\"/>\n\n    <!-- Field Value Cache\n\n    Cache used to hold field values that are quickly accessible\n    by document id.  The fieldValueCache is created by default\n    even if not configured here.\n    -->\n    <!--\n    <fieldValueCache class=\"solr.FastLRUCache\"\n    size=\"512\"\n    autowarmCount=\"128\"\n    showItems=\"32\" />\n    -->\n\n    <!-- Custom Cache\n\n    Example of a generic cache.  These caches may be accessed by\n    name through SolrIndexSearcher.getCache(),cacheLookup(), and\n    cacheInsert().  The purpose is to enable easy caching of\n    user/application level data.  The regenerator argument should\n    be specified as an implementation of solr.CacheRegenerator\n    if autowarming is desired.\n    -->\n    <!--\n    <cache name=\"myUserCache\"\n    class=\"solr.LRUCache\"\n    size=\"4096\"\n    initialSize=\"1024\"\n    autowarmCount=\"1024\"\n    regenerator=\"com.mycompany.MyRegenerator\"\n    />\n    -->\n\n\n    <!-- Lazy Field Loading\n\n    If true, stored fields that are not requested will be loaded\n    lazily.  This can result in a significant speed improvement\n    if the usual case is to not load all stored fields,\n    especially if the skipped fields are large compressed text\n    fields.\n    -->\n    <enableLazyFieldLoading>true</enableLazyFieldLoading>\n\n    <!-- Use Filter For Sorted Query\n\n    A possible optimization that attempts to use a filter to\n    satisfy a search.  If the requested sort does not include\n    score, then the filterCache will be checked for a filter\n    matching the query. If found, the filter will be used as the\n    source of document ids, and then the sort will be applied to\n    that.\n\n    For most situations, this will not be useful unless you\n    frequently get the same search repeatedly with different sort\n    options, and none of them ever use \"score\"\n    -->\n    <!--\n    <useFilterForSortedQuery>true</useFilterForSortedQuery>\n    -->\n\n    <!-- Result Window Size\n\n    An optimization for use with the queryResultCache.  When a search\n    is requested, a superset of the requested number of document ids\n    are collected.  For example, if a search for a particular query\n    requests matching documents 10 through 19, and queryWindowSize is 50,\n    then documents 0 through 49 will be collected and cached.  Any further\n    requests in that range can be satisfied via the cache.\n    -->\n    <queryResultWindowSize>20</queryResultWindowSize>\n\n    <!-- Maximum number of documents to cache for any entry in the\n    queryResultCache.\n    -->\n    <queryResultMaxDocsCached>200</queryResultMaxDocsCached>\n\n    <!-- Query Related Event Listeners\n\n    Various IndexSearcher related events can trigger Listeners to\n    take actions.\n\n    newSearcher - fired whenever a new searcher is being prepared\n    and there is a current searcher handling requests (aka\n    registered).  It can be used to prime certain caches to\n    prevent long request times for certain requests.\n\n    firstSearcher - fired whenever a new searcher is being\n    prepared but there is no current registered searcher to handle\n    requests or to gain autowarming data from.\n\n\n    -->\n    <!-- QuerySenderListener takes an array of NamedList and executes a\n    local query request for each NamedList in sequence.\n    -->\n    <listener event=\"newSearcher\" class=\"solr.QuerySenderListener\">\n      <arr name=\"queries\">\n        <!--\n        <lst><str name=\"q\">solr</str><str name=\"sort\">price asc</str></lst>\n        <lst><str name=\"q\">rocks</str><str name=\"sort\">weight asc</str></lst>\n        -->\n      </arr>\n    </listener>\n    <listener event=\"firstSearcher\" class=\"solr.QuerySenderListener\">\n      <arr name=\"queries\">\n        <lst>\n          <str name=\"q\">static firstSearcher warming in solrconfig.xml</str>\n        </lst>\n      </arr>\n    </listener>\n\n    <!-- Use Cold Searcher\n\n    If a search request comes in and there is no current\n    registered searcher, then immediately register the still\n    warming searcher and use it.  If \"false\" then all requests\n    will block until the first searcher is done warming.\n    -->\n    <useColdSearcher>true</useColdSearcher>\n\n    <!-- Max Warming Searchers\n\n    Maximum number of searchers that may be warming in the\n    background concurrently.  An error is returned if this limit\n    is exceeded.\n\n    Recommend values of 1-2 for read-only slaves, higher for\n    masters w/o cache warming.\n    -->\n    <maxWarmingSearchers>2</maxWarmingSearchers>\n\n  </query>\n\n\n  <!-- Request Dispatcher\n\n  This section contains instructions for how the SolrDispatchFilter\n  should behave when processing requests for this SolrCore.\n\n  handleSelect is a legacy option that affects the behavior of requests\n  such as /select?qt=XXX\n\n  handleSelect=\"true\" will cause the SolrDispatchFilter to process\n  the request and dispatch the query to a handler specified by the\n  \"qt\" param, assuming \"/select\" isn't already registered.\n\n  handleSelect=\"false\" will cause the SolrDispatchFilter to\n  ignore \"/select\" requests, resulting in a 404 unless a handler\n  is explicitly registered with the name \"/select\"\n\n  handleSelect=\"true\" is not recommended for new users, but is the default\n  for backwards compatibility\n  -->\n  <requestDispatcher handleSelect=\"false\">\n    <!-- Request Parsing\n\n    These settings indicate how Solr Requests may be parsed, and\n    what restrictions may be placed on the ContentStreams from\n    those requests\n\n    enableRemoteStreaming - enables use of the stream.file\n    and stream.url parameters for specifying remote streams.\n\n    multipartUploadLimitInKB - specifies the max size (in KiB) of\n    Multipart File Uploads that Solr will allow in a Request.\n\n    formdataUploadLimitInKB - specifies the max size (in KiB) of\n    form data (application/x-www-form-urlencoded) sent via\n    POST. You can use POST to pass request parameters not\n    fitting into the URL.\n\n    addHttpRequestToContext - if set to true, it will instruct\n    the requestParsers to include the original HttpServletRequest\n    object in the context map of the SolrQueryRequest under the\n    key \"httpRequest\". It will not be used by any of the existing\n    Solr components, but may be useful when developing custom\n    plugins.\n\n    *** WARNING ***\n    The settings below authorize Solr to fetch remote files, You\n    should make sure your system has some authentication before\n    using enableRemoteStreaming=\"true\"\n\n    -->\n    <requestParsers enableRemoteStreaming=\"true\"\n                    multipartUploadLimitInKB=\"2048000\"\n                    formdataUploadLimitInKB=\"2048\"\n                    addHttpRequestToContext=\"false\"/>\n\n    <!-- HTTP Caching\n\n    Set HTTP caching related parameters (for proxy caches and clients).\n\n    The options below instruct Solr not to output any HTTP Caching\n    related headers\n    -->\n    <httpCaching never304=\"true\"/>\n    <!-- If you include a <cacheControl> directive, it will be used to\n    generate a Cache-Control header (as well as an Expires header\n    if the value contains \"max-age=\")\n\n    By default, no Cache-Control header is generated.\n\n    You can use the <cacheControl> option even if you have set\n    never304=\"true\"\n    -->\n    <!--\n    <httpCaching never304=\"true\" >\n    <cacheControl>max-age=30, public</cacheControl>\n    </httpCaching>\n    -->\n    <!-- To enable Solr to respond with automatically generated HTTP\n    Caching headers, and to response to Cache Validation requests\n    correctly, set the value of never304=\"false\"\n\n    This will cause Solr to generate Last-Modified and ETag\n    headers based on the properties of the Index.\n\n    The following options can also be specified to affect the\n    values of these headers...\n\n    lastModFrom - the default value is \"openTime\" which means the\n    Last-Modified value (and validation against If-Modified-Since\n    requests) will all be relative to when the current Searcher\n    was opened.  You can change it to lastModFrom=\"dirLastMod\" if\n    you want the value to exactly correspond to when the physical\n    index was last modified.\n\n    etagSeed=\"...\" is an option you can change to force the ETag\n    header (and validation against If-None-Match requests) to be\n    different even if the index has not changed (ie: when making\n    significant changes to your config file)\n\n    (lastModifiedFrom and etagSeed are both ignored if you use\n    the never304=\"true\" option)\n    -->\n    <!--\n    <httpCaching lastModifiedFrom=\"openTime\"\n    etagSeed=\"Solr\">\n    <cacheControl>max-age=30, public</cacheControl>\n    </httpCaching>\n    -->\n  </requestDispatcher>\n\n  <!-- Request Handlers\n\n  http://wiki.apache.org/solr/SolrRequestHandler\n\n  Incoming queries will be dispatched to a specific handler by name\n  based on the path specified in the request.\n\n  Legacy behavior: If the request path uses \"/select\" but no Request\n  Handler has that name, and if handleSelect=\"true\" has been specified in\n  the requestDispatcher, then the Request Handler is dispatched based on\n  the qt parameter.  Handlers without a leading '/' are accessed this way\n  like so: http://host/app/[core/]select?qt=name  If no qt is\n  given, then the requestHandler that declares default=\"true\" will be\n  used or the one named \"standard\".\n\n  If a Request Handler is declared with startup=\"lazy\", then it will\n  not be initialized until the first request that uses it.\n\n  -->\n\n  <requestHandler name=\"/dataimport\" class=\"solr.DataImportHandler\">\n    <lst name=\"defaults\">\n      <str name=\"config\">solr-data-config.xml</str>\n    </lst>\n  </requestHandler>\n\n  <!-- SearchHandler\n\n  http://wiki.apache.org/solr/SearchHandler\n\n  For processing Search Queries, the primary Request Handler\n  provided with Solr is \"SearchHandler\" It delegates to a sequent\n  of SearchComponents (see below) and supports distributed\n  queries across multiple shards\n  -->\n  <requestHandler name=\"/select\" class=\"solr.SearchHandler\">\n    <!-- default values for query parameters can be specified, these\n    will be overridden by parameters in the request\n    -->\n    <lst name=\"defaults\">\n      <str name=\"echoParams\">explicit</str>\n      <int name=\"rows\">10</int>\n      <str name=\"df\">text</str>\n    </lst>\n    <!-- In addition to defaults, \"appends\" params can be specified\n    to identify values which should be appended to the list of\n    multi-val params from the query (or the existing \"defaults\").\n    -->\n    <!-- In this example, the param \"fq=instock:true\" would be appended to\n    any query time fq params the user may specify, as a mechanism for\n    partitioning the index, independent of any user selected filtering\n    that may also be desired (perhaps as a result of faceted searching).\n\n    NOTE: there is *absolutely* nothing a client can do to prevent these\n    \"appends\" values from being used, so don't use this mechanism\n    unless you are sure you always want it.\n    -->\n    <!--\n    <lst name=\"appends\">\n    <str name=\"fq\">inStock:true</str>\n    </lst>\n    -->\n    <!-- \"invariants\" are a way of letting the Solr maintainer lock down\n    the options available to Solr clients.  Any params values\n    specified here are used regardless of what values may be specified\n    in either the query, the \"defaults\", or the \"appends\" params.\n\n    In this example, the facet.field and facet.query params would\n    be fixed, limiting the facets clients can use.  Faceting is\n    not turned on by default - but if the client does specify\n    facet=true in the request, these are the only facets they\n    will be able to see counts for; regardless of what other\n    facet.field or facet.query params they may specify.\n\n    NOTE: there is *absolutely* nothing a client can do to prevent these\n    \"invariants\" values from being used, so don't use this mechanism\n    unless you are sure you always want it.\n    -->\n    <!--\n    <lst name=\"invariants\">\n    <str name=\"facet.field\">cat</str>\n    <str name=\"facet.field\">manu_exact</str>\n    <str name=\"facet.query\">price:[* TO 500]</str>\n    <str name=\"facet.query\">price:[500 TO *]</str>\n    </lst>\n    -->\n    <!-- If the default list of SearchComponents is not desired, that\n    list can either be overridden completely, or components can be\n    prepended or appended to the default list.  (see below)\n    -->\n    <!--\n    <arr name=\"components\">\n    <str>nameOfCustomComponent1</str>\n    <str>nameOfCustomComponent2</str>\n    </arr>\n    -->\n  </requestHandler>\n\n  <!-- A request handler that returns indented JSON by default -->\n  <requestHandler name=\"/query\" class=\"solr.SearchHandler\">\n    <lst name=\"defaults\">\n      <str name=\"echoParams\">explicit</str>\n      <str name=\"wt\">json</str>\n      <str name=\"indent\">true</str>\n      <str name=\"df\">text</str>\n    </lst>\n  </requestHandler>\n\n\n  <!-- realtime get handler, guaranteed to return the latest stored fields of\n  any document, without the need to commit or open a new searcher.  The\n  current implementation relies on the updateLog feature being enabled.\n\n  ** WARNING **\n  Do NOT disable the realtime get handler at /get if you are using\n  SolrCloud otherwise any leader election will cause a full sync in ALL\n  replicas for the shard in question. Similarly, a replica recovery will\n  also always fetch the complete index from the leader because a partial\n  sync will not be possible in the absence of this handler.\n  -->\n  <requestHandler name=\"/get\" class=\"solr.RealTimeGetHandler\">\n    <lst name=\"defaults\">\n      <str name=\"omitHeader\">true</str>\n      <str name=\"wt\">json</str>\n      <str name=\"indent\">true</str>\n    </lst>\n  </requestHandler>\n\n\n  <!-- A Robust Example\n\n  This example SearchHandler declaration shows off usage of the\n  SearchHandler with many defaults declared\n\n  Note that multiple instances of the same Request Handler\n  (SearchHandler) can be registered multiple times with different\n  names (and different init parameters)\n  -->\n  <requestHandler name=\"/browse\" class=\"solr.SearchHandler\">\n    <lst name=\"defaults\">\n      <str name=\"echoParams\">explicit</str>\n\n      <!-- VelocityResponseWriter settings -->\n      <str name=\"wt\">velocity</str>\n      <str name=\"v.template\">browse</str>\n      <str name=\"v.layout\">layout</str>\n\n      <!-- Query settings -->\n      <str name=\"defType\">edismax</str>\n      <str name=\"q.alt\">*:*</str>\n      <str name=\"rows\">10</str>\n      <str name=\"fl\">*,score</str>\n\n      <!-- Faceting defaults -->\n      <str name=\"facet\">on</str>\n      <str name=\"facet.mincount\">1</str>\n    </lst>\n  </requestHandler>\n\n\n  <initParams path=\"/update/**,/query,/select,/tvrh,/elevate,/spell,/browse\">\n    <lst name=\"defaults\">\n      <str name=\"df\">text</str>\n      <str name=\"update.chain\">add-unknown-fields-to-the-schema</str>\n    </lst>\n  </initParams>\n\n  <!-- Update Request Handler.\n\n  http://wiki.apache.org/solr/UpdateXmlMessages\n\n  The canonical Request Handler for Modifying the Index through\n  commands specified using XML, JSON, CSV, or JAVABIN\n\n  Note: Since solr1.1 requestHandlers requires a valid content\n  type header if posted in the body. For example, curl now\n  requires: -H 'Content-type:text/xml; charset=utf-8'\n\n  To override the request content type and force a specific\n  Content-type, use the request parameter:\n  ?update.contentType=text/csv\n\n  This handler will pick a response format to match the input\n  if the 'wt' parameter is not explicit\n  -->\n  <requestHandler name=\"/update\" class=\"solr.UpdateRequestHandler\">\n    <!-- See below for information on defining\n    updateRequestProcessorChains that can be used by name\n    on each Update Request\n    -->\n    <!--\n    <lst name=\"defaults\">\n    <str name=\"update.chain\">dedupe</str>\n    </lst>\n    -->\n  </requestHandler>\n\n  <!-- Solr Cell Update Request Handler\n\n  http://wiki.apache.org/solr/ExtractingRequestHandler\n\n  -->\n  <requestHandler name=\"/update/extract\"\n                  startup=\"lazy\"\n                  class=\"solr.extraction.ExtractingRequestHandler\">\n    <lst name=\"defaults\">\n      <str name=\"lowernames\">true</str>\n      <str name=\"uprefix\">ignored_</str>\n\n      <!-- capture link hrefs but ignore div attributes -->\n      <str name=\"captureAttr\">true</str>\n      <str name=\"fmap.a\">links</str>\n      <str name=\"fmap.div\">ignored_</str>\n    </lst>\n  </requestHandler>\n\n\n  <!-- Field Analysis Request Handler\n\n  RequestHandler that provides much the same functionality as\n  analysis.jsp. Provides the ability to specify multiple field\n  types and field names in the same request and outputs\n  index-time and query-time analysis for each of them.\n\n  Request parameters are:\n  analysis.fieldname - field name whose analyzers are to be used\n\n  analysis.fieldtype - field type whose analyzers are to be used\n  analysis.fieldvalue - text for index-time analysis\n  q (or analysis.q) - text for query time analysis\n  analysis.showmatch (true|false) - When set to true and when\n  query analysis is performed, the produced tokens of the\n  field value analysis will be marked as \"matched\" for every\n  token that is produces by the query analysis\n  -->\n  <requestHandler name=\"/analysis/field\"\n                  startup=\"lazy\"\n                  class=\"solr.FieldAnalysisRequestHandler\"/>\n\n\n  <!-- Document Analysis Handler\n\n  http://wiki.apache.org/solr/AnalysisRequestHandler\n\n  An analysis handler that provides a breakdown of the analysis\n  process of provided documents. This handler expects a (single)\n  content stream with the following format:\n\n  <docs>\n  <doc>\n  <field name=\"id\">1</field>\n  <field name=\"name\">The Name</field>\n  <field name=\"text\">The Text Value</field>\n  </doc>\n  <doc>...</doc>\n  <doc>...</doc>\n  ...\n  </docs>\n\n  Note: Each document must contain a field which serves as the\n  unique key. This key is used in the returned response to associate\n  an analysis breakdown to the analyzed document.\n\n  Like the FieldAnalysisRequestHandler, this handler also supports\n  query analysis by sending either an \"analysis.query\" or \"q\"\n  request parameter that holds the query text to be analyzed. It\n  also supports the \"analysis.showmatch\" parameter which when set to\n  true, all field tokens that match the query tokens will be marked\n  as a \"match\".\n  -->\n  <requestHandler name=\"/analysis/document\"\n                  class=\"solr.DocumentAnalysisRequestHandler\"\n                  startup=\"lazy\"/>\n\n  <!-- Admin Handlers\n\n  Admin Handlers - This will register all the standard admin\n  RequestHandlers.\n  -->\n  <!-- This single handler is equivalent to the following... -->\n  <!--\n  <requestHandler name=\"/admin/luke\"       class=\"solr.admin.LukeRequestHandler\" />\n  <requestHandler name=\"/admin/system\"     class=\"solr.admin.SystemInfoHandler\" />\n  <requestHandler name=\"/admin/plugins\"    class=\"solr.admin.PluginInfoHandler\" />\n  <requestHandler name=\"/admin/threads\"    class=\"solr.admin.ThreadDumpHandler\" />\n  <requestHandler name=\"/admin/properties\" class=\"solr.admin.PropertiesRequestHandler\" />\n  <requestHandler name=\"/admin/file\"       class=\"solr.admin.ShowFileRequestHandler\" >\n  -->\n  <!-- If you wish to hide files under ${solr.home}/conf, explicitly\n  register the ShowFileRequestHandler using the definition below.\n  NOTE: The glob pattern ('*') is the only pattern supported at present, *.xml will\n  not exclude all files ending in '.xml'. Use it to exclude _all_ updates\n  -->\n  <!--\n  <requestHandler name=\"/admin/file\"\n  class=\"solr.admin.ShowFileRequestHandler\" >\n  <lst name=\"invariants\">\n  <str name=\"hidden\">synonyms.txt</str>\n  <str name=\"hidden\">anotherfile.txt</str>\n  <str name=\"hidden\">*</str>\n  </lst>\n  </requestHandler>\n  -->\n\n  <!--\n  Enabling this request handler (which is NOT a default part of the admin handler) will allow the Solr UI to edit\n  all the config files. This is intended for secure/development use ONLY! Leaving available and publically\n  accessible is a security vulnerability and should be done with extreme caution!\n  -->\n  <!--\n  <requestHandler name=\"/admin/fileedit\" class=\"solr.admin.EditFileRequestHandler\" >\n  <lst name=\"invariants\">\n  <str name=\"hidden\">synonyms.txt</str>\n  <str name=\"hidden\">anotherfile.txt</str>\n  </lst>\n  </requestHandler>\n  -->\n  <!-- ping/healthcheck -->\n  <requestHandler name=\"/admin/ping\" class=\"solr.PingRequestHandler\">\n    <lst name=\"invariants\">\n      <str name=\"q\">solrpingquery</str>\n    </lst>\n    <lst name=\"defaults\">\n      <str name=\"echoParams\">all</str>\n    </lst>\n    <!-- An optional feature of the PingRequestHandler is to configure the\n    handler with a \"healthcheckFile\" which can be used to enable/disable\n    the PingRequestHandler.\n    relative paths are resolved against the data dir\n    -->\n    <!-- <str name=\"healthcheckFile\">server-enabled.txt</str> -->\n  </requestHandler>\n\n  <!-- Echo the request contents back to the client -->\n  <requestHandler name=\"/debug/dump\" class=\"solr.DumpRequestHandler\">\n    <lst name=\"defaults\">\n      <str name=\"echoParams\">explicit</str>\n      <str name=\"echoHandler\">true</str>\n    </lst>\n  </requestHandler>\n\n  <!-- Solr Replication\n\n  The SolrReplicationHandler supports replicating indexes from a\n  \"master\" used for indexing and \"slaves\" used for queries.\n\n  http://wiki.apache.org/solr/SolrReplication\n\n  It is also necessary for SolrCloud to function (in Cloud mode, the\n  replication handler is used to bulk transfer segments when nodes\n  are added or need to recover).\n\n  https://wiki.apache.org/solr/SolrCloud/\n  -->\n  <requestHandler name=\"/replication\" class=\"solr.ReplicationHandler\">\n    <!--\n    To enable simple master/slave replication, uncomment one of the\n    sections below, depending on whether this solr instance should be\n    the \"master\" or a \"slave\".  If this instance is a \"slave\" you will\n    also need to fill in the masterUrl to point to a real machine.\n    -->\n    <!--\n    <lst name=\"master\">\n    <str name=\"replicateAfter\">commit</str>\n    <str name=\"replicateAfter\">startup</str>\n    <str name=\"confFiles\">schema.xml,stopwords.txt</str>\n    </lst>\n    -->\n    <!--\n    <lst name=\"slave\">\n    <str name=\"masterUrl\">http://your-master-hostname:8983/solr</str>\n    <str name=\"pollInterval\">00:00:60</str>\n    </lst>\n    -->\n  </requestHandler>\n\n  <!-- Search Components\n\n  Search components are registered to SolrCore and used by\n  instances of SearchHandler (which can access them by name)\n\n  By default, the following components are available:\n\n  <searchComponent name=\"query\"     class=\"solr.QueryComponent\" />\n  <searchComponent name=\"facet\"     class=\"solr.FacetComponent\" />\n  <searchComponent name=\"mlt\"       class=\"solr.MoreLikeThisComponent\" />\n  <searchComponent name=\"highlight\" class=\"solr.HighlightComponent\" />\n  <searchComponent name=\"stats\"     class=\"solr.StatsComponent\" />\n  <searchComponent name=\"debug\"     class=\"solr.DebugComponent\" />\n\n  Default configuration in a requestHandler would look like:\n\n  <arr name=\"components\">\n  <str>query</str>\n  <str>facet</str>\n  <str>mlt</str>\n  <str>highlight</str>\n  <str>stats</str>\n  <str>debug</str>\n  </arr>\n\n  If you register a searchComponent to one of the standard names,\n  that will be used instead of the default.\n\n  To insert components before or after the 'standard' components, use:\n\n  <arr name=\"first-components\">\n  <str>myFirstComponentName</str>\n  </arr>\n\n  <arr name=\"last-components\">\n  <str>myLastComponentName</str>\n  </arr>\n\n  NOTE: The component registered with the name \"debug\" will\n  always be executed after the \"last-components\"\n\n  -->\n\n  <!-- Spell Check\n\n  The spell check component can return a list of alternative spelling\n  suggestions.\n\n  http://wiki.apache.org/solr/SpellCheckComponent\n  -->\n  <searchComponent name=\"spellcheck\" class=\"solr.SpellCheckComponent\">\n\n    <str name=\"queryAnalyzerFieldType\">key_lower_case</str>\n\n    <!-- Multiple \"Spell Checkers\" can be declared and used by this\n    component\n    -->\n\n    <!-- a spellchecker built from a field of the main index -->\n    <lst name=\"spellchecker\">\n      <str name=\"name\">default</str>\n      <str name=\"field\">text</str>\n      <str name=\"classname\">solr.DirectSolrSpellChecker</str>\n      <!-- the spellcheck distance measure used, the default is the internal levenshtein -->\n      <str name=\"distanceMeasure\">internal</str>\n      <!-- minimum accuracy needed to be considered a valid spellcheck suggestion -->\n      <float name=\"accuracy\">0.5</float>\n      <!-- the maximum #edits we consider when enumerating terms: can be 1 or 2 -->\n      <int name=\"maxEdits\">2</int>\n      <!-- the minimum shared prefix when enumerating terms -->\n      <int name=\"minPrefix\">1</int>\n      <!-- maximum number of inspections per result. -->\n      <int name=\"maxInspections\">5</int>\n      <!-- minimum length of a query term to be considered for correction -->\n      <int name=\"minQueryLength\">4</int>\n      <!-- maximum threshold of documents a query term can appear to be considered for correction -->\n      <float name=\"maxQueryFrequency\">0.01</float>\n      <!-- uncomment this to require suggestions to occur in 1% of the documents\n      <float name=\"thresholdTokenFrequency\">.01</float>\n      -->\n    </lst>\n\n    <!-- a spellchecker that can break or combine words.  See \"/spell\" handler below for usage -->\n    <lst name=\"spellchecker\">\n      <str name=\"name\">wordbreak</str>\n      <str name=\"classname\">solr.WordBreakSolrSpellChecker</str>\n      <str name=\"field\">name</str>\n      <str name=\"combineWords\">true</str>\n      <str name=\"breakWords\">true</str>\n      <int name=\"maxChanges\">10</int>\n    </lst>\n\n    <!-- a spellchecker that uses a different distance measure -->\n    <!--\n    <lst name=\"spellchecker\">\n    <str name=\"name\">jarowinkler</str>\n    <str name=\"field\">spell</str>\n    <str name=\"classname\">solr.DirectSolrSpellChecker</str>\n    <str name=\"distanceMeasure\">\n    org.apache.lucene.search.spell.JaroWinklerDistance\n    </str>\n    </lst>\n    -->\n\n    <!-- a spellchecker that use an alternate comparator\n\n    comparatorClass be one of:\n    1. score (default)\n    2. freq (Frequency first, then score)\n    3. A fully qualified class name\n    -->\n    <!--\n    <lst name=\"spellchecker\">\n    <str name=\"name\">freq</str>\n    <str name=\"field\">lowerfilt</str>\n    <str name=\"classname\">solr.DirectSolrSpellChecker</str>\n    <str name=\"comparatorClass\">freq</str>\n    -->\n\n    <!-- A spellchecker that reads the list of words from a file -->\n    <!--\n    <lst name=\"spellchecker\">\n    <str name=\"classname\">solr.FileBasedSpellChecker</str>\n    <str name=\"name\">file</str>\n    <str name=\"sourceLocation\">spellings.txt</str>\n    <str name=\"characterEncoding\">UTF-8</str>\n    <str name=\"spellcheckIndexDir\">spellcheckerFile</str>\n    </lst>\n    -->\n  </searchComponent>\n\n  <!-- A request handler for demonstrating the spellcheck component.\n\n  NOTE: This is purely as an example.  The whole purpose of the\n  SpellCheckComponent is to hook it into the request handler that\n  handles your normal user queries so that a separate request is\n  not needed to get suggestions.\n\n  IN OTHER WORDS, THERE IS REALLY GOOD CHANCE THE SETUP BELOW IS\n  NOT WHAT YOU WANT FOR YOUR PRODUCTION SYSTEM!\n\n  See http://wiki.apache.org/solr/SpellCheckComponent for details\n  on the request parameters.\n  -->\n  <requestHandler name=\"/spell\" class=\"solr.SearchHandler\" startup=\"lazy\">\n    <lst name=\"defaults\">\n      <str name=\"df\">text</str>\n      <!-- Solr will use suggestions from both the 'default' spellchecker\n      and from the 'wordbreak' spellchecker and combine them.\n      collations (re-written queries) can include a combination of\n      corrections from both spellcheckers -->\n      <str name=\"spellcheck.dictionary\">default</str>\n      <str name=\"spellcheck.dictionary\">wordbreak</str>\n      <str name=\"spellcheck\">on</str>\n      <str name=\"spellcheck.extendedResults\">true</str>\n      <str name=\"spellcheck.count\">10</str>\n      <str name=\"spellcheck.alternativeTermCount\">5</str>\n      <str name=\"spellcheck.maxResultsForSuggest\">5</str>\n      <str name=\"spellcheck.collate\">true</str>\n      <str name=\"spellcheck.collateExtendedResults\">true</str>\n      <str name=\"spellcheck.maxCollationTries\">10</str>\n      <str name=\"spellcheck.maxCollations\">5</str>\n    </lst>\n    <arr name=\"last-components\">\n      <str>spellcheck</str>\n    </arr>\n  </requestHandler>\n\n  <searchComponent name=\"suggest\" class=\"solr.SuggestComponent\">\n    <lst name=\"suggester\">\n      <str name=\"name\">mySuggester</str>\n      <str name=\"lookupImpl\">FuzzyLookupFactory</str>      <!-- org.apache.solr.spelling.suggest.fst -->\n      <str name=\"dictionaryImpl\">DocumentDictionaryFactory</str>    <!-- org.apache.solr.spelling.suggest.HighFrequencyDictionaryFactory -->\n      <str name=\"field\">cat</str>\n      <str name=\"weightField\">price</str>\n      <str name=\"suggestAnalyzerFieldType\">string</str>\n    </lst>\n  </searchComponent>\n\n  <requestHandler name=\"/suggest\" class=\"solr.SearchHandler\" startup=\"lazy\">\n    <lst name=\"defaults\">\n      <str name=\"suggest\">true</str>\n      <str name=\"suggest.count\">10</str>\n    </lst>\n    <arr name=\"components\">\n      <str>suggest</str>\n    </arr>\n  </requestHandler>\n  <!-- Term Vector Component\n\n  http://wiki.apache.org/solr/TermVectorComponent\n  -->\n  <searchComponent name=\"tvComponent\" class=\"solr.TermVectorComponent\"/>\n\n  <!-- A request handler for demonstrating the term vector component\n\n  This is purely as an example.\n\n  In reality you will likely want to add the component to your\n  already specified request handlers.\n  -->\n  <requestHandler name=\"/tvrh\" class=\"solr.SearchHandler\" startup=\"lazy\">\n    <lst name=\"defaults\">\n      <str name=\"df\">text</str>\n      <bool name=\"tv\">true</bool>\n    </lst>\n    <arr name=\"last-components\">\n      <str>tvComponent</str>\n    </arr>\n  </requestHandler>\n\n  <!-- Clustering Component\n\n  You'll need to set the solr.clustering.enabled system property\n  when running solr to run with clustering enabled:\n\n  java -Dsolr.clustering.enabled=true -jar start.jar\n\n  http://wiki.apache.org/solr/ClusteringComponent\n  http://carrot2.github.io/solr-integration-strategies/\n  -->\n  <searchComponent name=\"clustering\"\n                   enable=\"${solr.clustering.enabled:false}\"\n                   class=\"solr.clustering.ClusteringComponent\">\n    <lst name=\"engine\">\n      <str name=\"name\">lingo</str>\n\n      <!-- Class name of a clustering algorithm compatible with the Carrot2 framework.\n\n      Currently available open source algorithms are:\n      * org.carrot2.clustering.lingo.LingoClusteringAlgorithm\n      * org.carrot2.clustering.stc.STCClusteringAlgorithm\n      * org.carrot2.clustering.kmeans.BisectingKMeansClusteringAlgorithm\n\n      See http://project.carrot2.org/algorithms.html for more information.\n\n      A commercial algorithm Lingo3G (needs to be installed separately) is defined as:\n      * com.carrotsearch.lingo3g.Lingo3GClusteringAlgorithm\n      -->\n      <str name=\"carrot.algorithm\">org.carrot2.clustering.lingo.LingoClusteringAlgorithm</str>\n\n      <!-- Override location of the clustering algorithm's resources\n      (attribute definitions and lexical resources).\n\n      A directory from which to load algorithm-specific stop words,\n      stop labels and attribute definition XMLs.\n\n      For an overview of Carrot2 lexical resources, see:\n      http://download.carrot2.org/head/manual/#chapter.lexical-resources\n\n      For an overview of Lingo3G lexical resources, see:\n      http://download.carrotsearch.com/lingo3g/manual/#chapter.lexical-resources\n      -->\n      <str name=\"carrot.resourcesDir\">clustering/carrot2</str>\n    </lst>\n\n    <!-- An example definition for the STC clustering algorithm. -->\n    <lst name=\"engine\">\n      <str name=\"name\">stc</str>\n      <str name=\"carrot.algorithm\">org.carrot2.clustering.stc.STCClusteringAlgorithm</str>\n    </lst>\n\n    <!-- An example definition for the bisecting kmeans clustering algorithm. -->\n    <lst name=\"engine\">\n      <str name=\"name\">kmeans</str>\n      <str name=\"carrot.algorithm\">org.carrot2.clustering.kmeans.BisectingKMeansClusteringAlgorithm</str>\n    </lst>\n  </searchComponent>\n\n  <!-- A request handler for demonstrating the clustering component\n\n  This is purely as an example.\n\n  In reality you will likely want to add the component to your\n  already specified request handlers.\n  -->\n  <requestHandler name=\"/clustering\"\n                  startup=\"lazy\"\n                  enable=\"${solr.clustering.enabled:false}\"\n                  class=\"solr.SearchHandler\">\n    <lst name=\"defaults\">\n      <bool name=\"clustering\">true</bool>\n      <bool name=\"clustering.results\">true</bool>\n      <!-- Field name with the logical \"title\" of a each document (optional) -->\n      <str name=\"carrot.title\">name</str>\n      <!-- Field name with the logical \"URL\" of a each document (optional) -->\n      <str name=\"carrot.url\">id</str>\n      <!-- Field name with the logical \"content\" of a each document (optional) -->\n      <str name=\"carrot.snippet\">features</str>\n      <!-- Apply highlighter to the title/ content and use this for clustering. -->\n      <bool name=\"carrot.produceSummary\">true</bool>\n      <!-- the maximum number of labels per cluster -->\n      <!--<int name=\"carrot.numDescriptions\">5</int>-->\n      <!-- produce sub clusters -->\n      <bool name=\"carrot.outputSubClusters\">false</bool>\n\n      <!-- Configure the remaining request handler parameters. -->\n      <str name=\"defType\">edismax</str>\n      <str name=\"qf\">\n        text^0.5 features^1.0 name^1.2 sku^1.5 id^10.0 manu^1.1 cat^1.4\n      </str>\n      <str name=\"q.alt\">*:*</str>\n      <str name=\"rows\">10</str>\n      <str name=\"fl\">*,score</str>\n    </lst>\n    <arr name=\"last-components\">\n      <str>clustering</str>\n    </arr>\n  </requestHandler>\n\n  <!-- Terms Component\n\n  http://wiki.apache.org/solr/TermsComponent\n\n  A component to return terms and document frequency of those\n  terms\n  -->\n  <searchComponent name=\"terms\" class=\"solr.TermsComponent\"/>\n\n  <!-- A request handler for demonstrating the terms component -->\n  <requestHandler name=\"/terms\" class=\"solr.SearchHandler\" startup=\"lazy\">\n    <lst name=\"defaults\">\n      <bool name=\"terms\">true</bool>\n      <bool name=\"distrib\">false</bool>\n    </lst>\n    <arr name=\"components\">\n      <str>terms</str>\n    </arr>\n  </requestHandler>\n\n\n  <!-- Query Elevation Component\n\n  http://wiki.apache.org/solr/QueryElevationComponent\n\n  a search component that enables you to configure the top\n  results for a given query regardless of the normal lucene\n  scoring.\n  -->\n  <searchComponent name=\"elevator\" class=\"solr.QueryElevationComponent\">\n    <!-- pick a fieldType to analyze queries -->\n    <str name=\"queryFieldType\">string</str>\n    <str name=\"config-file\">elevate.xml</str>\n  </searchComponent>\n\n  <!-- A request handler for demonstrating the elevator component -->\n  <requestHandler name=\"/elevate\" class=\"solr.SearchHandler\" startup=\"lazy\">\n    <lst name=\"defaults\">\n      <str name=\"echoParams\">explicit</str>\n      <str name=\"df\">text</str>\n    </lst>\n    <arr name=\"last-components\">\n      <str>elevator</str>\n    </arr>\n  </requestHandler>\n\n  <!-- Highlighting Component\n\n  http://wiki.apache.org/solr/HighlightingParameters\n  -->\n  <searchComponent class=\"solr.HighlightComponent\" name=\"highlight\">\n    <highlighting>\n      <!-- Configure the standard fragmenter -->\n      <!-- This could most likely be commented out in the \"default\" case -->\n      <fragmenter name=\"gap\"\n                  default=\"true\"\n                  class=\"solr.highlight.GapFragmenter\">\n        <lst name=\"defaults\">\n          <int name=\"hl.fragsize\">100</int>\n        </lst>\n      </fragmenter>\n\n      <!-- A regular-expression-based fragmenter\n      (for sentence extraction)\n      -->\n      <fragmenter name=\"regex\"\n                  class=\"solr.highlight.RegexFragmenter\">\n        <lst name=\"defaults\">\n          <!-- slightly smaller fragsizes work better because of slop -->\n          <int name=\"hl.fragsize\">70</int>\n          <!-- allow 50% slop on fragment sizes -->\n          <float name=\"hl.regex.slop\">0.5</float>\n          <!-- a basic sentence pattern -->\n          <str name=\"hl.regex.pattern\">[-\\w ,/\\n\\&amp;quot;&amp;apos;]{20,200}</str>\n        </lst>\n      </fragmenter>\n\n      <!-- Configure the standard formatter -->\n      <formatter name=\"html\"\n                 default=\"true\"\n                 class=\"solr.highlight.HtmlFormatter\">\n        <lst name=\"defaults\">\n          <str name=\"hl.simple.pre\"><![CDATA[<em>]]></str>\n          <str name=\"hl.simple.post\"><![CDATA[</em>]]></str>\n        </lst>\n      </formatter>\n\n      <!-- Configure the standard encoder -->\n      <encoder name=\"html\"\n               class=\"solr.highlight.HtmlEncoder\"/>\n\n      <!-- Configure the standard fragListBuilder -->\n      <fragListBuilder name=\"simple\"\n                       class=\"solr.highlight.SimpleFragListBuilder\"/>\n\n      <!-- Configure the single fragListBuilder -->\n      <fragListBuilder name=\"single\"\n                       class=\"solr.highlight.SingleFragListBuilder\"/>\n\n      <!-- Configure the weighted fragListBuilder -->\n      <fragListBuilder name=\"weighted\"\n                       default=\"true\"\n                       class=\"solr.highlight.WeightedFragListBuilder\"/>\n\n      <!-- default tag FragmentsBuilder -->\n      <fragmentsBuilder name=\"default\"\n                        default=\"true\"\n                        class=\"solr.highlight.ScoreOrderFragmentsBuilder\">\n        <!--\n        <lst name=\"defaults\">\n        <str name=\"hl.multiValuedSeparatorChar\">/</str>\n        </lst>\n        -->\n      </fragmentsBuilder>\n\n      <!-- multi-colored tag FragmentsBuilder -->\n      <fragmentsBuilder name=\"colored\"\n                        class=\"solr.highlight.ScoreOrderFragmentsBuilder\">\n        <lst name=\"defaults\">\n          <str name=\"hl.tag.pre\"><![CDATA[\n  <b style=\"background:yellow\">,<b style=\"background:lawgreen\">,\n  <b style=\"background:aquamarine\">,<b style=\"background:magenta\">,\n  <b style=\"background:palegreen\">,<b style=\"background:coral\">,\n  <b style=\"background:wheat\">,<b style=\"background:khaki\">,\n  <b style=\"background:lime\">,<b style=\"background:deepskyblue\">]]></str>\n          <str name=\"hl.tag.post\"><![CDATA[</b>]]></str>\n        </lst>\n      </fragmentsBuilder>\n\n      <boundaryScanner name=\"default\"\n                       default=\"true\"\n                       class=\"solr.highlight.SimpleBoundaryScanner\">\n        <lst name=\"defaults\">\n          <str name=\"hl.bs.maxScan\">10</str>\n          <str name=\"hl.bs.chars\">.,!? &amp;#9;&amp;#10;&amp;#13;</str>\n        </lst>\n      </boundaryScanner>\n\n      <boundaryScanner name=\"breakIterator\"\n                       class=\"solr.highlight.BreakIteratorBoundaryScanner\">\n        <lst name=\"defaults\">\n          <!-- type should be one of CHARACTER, WORD(default), LINE and SENTENCE -->\n          <str name=\"hl.bs.type\">WORD</str>\n          <!-- language and country are used when constructing Locale object.  -->\n          <!-- And the Locale object will be used when getting instance of BreakIterator -->\n          <str name=\"hl.bs.language\">en</str>\n          <str name=\"hl.bs.country\">US</str>\n        </lst>\n      </boundaryScanner>\n    </highlighting>\n  </searchComponent>\n\n  <!-- Update Processors\n\n  Chains of Update Processor Factories for dealing with Update\n  Requests can be declared, and then used by name in Update\n  Request Processors\n\n  http://wiki.apache.org/solr/UpdateRequestProcessor\n\n  -->\n\n  <!-- Add unknown fields to the schema\n\n  An example field type guessing update processor that will\n  attempt to parse string-typed field values as Booleans, Longs,\n  Doubles, or Dates, and then add schema fields with the guessed\n  field types.\n\n  This requires that the schema is both managed and mutable, by\n  declaring schemaFactory as ManagedIndexSchemaFactory, with\n  mutable specified as true.\n\n  See http://wiki.apache.org/solr/GuessingFieldTypes\n  -->\n  <updateRequestProcessorChain name=\"add-unknown-fields-to-the-schema\">\n\n    <processor class=\"solr.DefaultValueUpdateProcessorFactory\">\n      <str name=\"fieldName\">_ttl_</str>\n      <str name=\"value\">+{{logsearch_audit_logs_max_retention}}DAYS</str>\n    </processor>\n    <processor class=\"solr.processor.DocExpirationUpdateProcessorFactory\">\n      <int name=\"autoDeletePeriodSeconds\">30</int>\n      <str name=\"ttlFieldName\">_ttl_</str>\n      <str name=\"expirationFieldName\">_expire_at_</str>\n    </processor>\n    <processor class=\"solr.FirstFieldValueUpdateProcessorFactory\">\n      <str name=\"fieldName\">_expire_at_</str>\n    </processor>\n\n\n    <processor class=\"solr.RemoveBlankFieldUpdateProcessorFactory\"/>\n    <processor class=\"solr.ParseBooleanFieldUpdateProcessorFactory\"/>\n    <processor class=\"solr.ParseLongFieldUpdateProcessorFactory\"/>\n    <processor class=\"solr.ParseDoubleFieldUpdateProcessorFactory\"/>\n    <processor class=\"solr.ParseDateFieldUpdateProcessorFactory\">\n      <arr name=\"format\">\n        <str>yyyy-MM-dd'T'HH:mm:ss.SSSZ</str>\n        <str>yyyy-MM-dd'T'HH:mm:ss,SSSZ</str>\n        <str>yyyy-MM-dd'T'HH:mm:ss.SSS</str>\n        <str>yyyy-MM-dd'T'HH:mm:ss,SSS</str>\n        <str>yyyy-MM-dd'T'HH:mm:ssZ</str>\n        <str>yyyy-MM-dd'T'HH:mm:ss</str>\n        <str>yyyy-MM-dd'T'HH:mmZ</str>\n        <str>yyyy-MM-dd'T'HH:mm</str>\n        <str>yyyy-MM-dd HH:mm:ss.SSSZ</str>\n        <str>yyyy-MM-dd HH:mm:ss,SSSZ</str>\n        <str>yyyy-MM-dd HH:mm:ss.SSS</str>\n        <str>yyyy-MM-dd HH:mm:ss,SSS</str>\n        <str>yyyy-MM-dd HH:mm:ssZ</str>\n        <str>yyyy-MM-dd HH:mm:ss</str>\n        <str>yyyy-MM-dd HH:mmZ</str>\n        <str>yyyy-MM-dd HH:mm</str>\n        <str>yyyy-MM-dd</str>\n      </arr>\n    </processor>\n    <processor class=\"solr.AddSchemaFieldsUpdateProcessorFactory\">\n      <str name=\"defaultFieldType\">key_lower_case</str>\n      <lst name=\"typeMapping\">\n        <str name=\"valueClass\">java.lang.Boolean</str>\n        <str name=\"fieldType\">boolean</str>\n      </lst>\n      <lst name=\"typeMapping\">\n        <str name=\"valueClass\">java.util.Date</str>\n        <str name=\"fieldType\">tdate</str>\n      </lst>\n      <lst name=\"typeMapping\">\n        <str name=\"valueClass\">java.lang.Long</str>\n        <str name=\"valueClass\">java.lang.Integer</str>\n        <str name=\"fieldType\">tlong</str>\n      </lst>\n      <lst name=\"typeMapping\">\n        <str name=\"valueClass\">java.lang.Number</str>\n        <str name=\"fieldType\">tdouble</str>\n      </lst>\n    </processor>\n\n    <processor class=\"solr.LogUpdateProcessorFactory\"/>\n    <processor class=\"solr.RunUpdateProcessorFactory\"/>\n  </updateRequestProcessorChain>\n\n\n  <!-- Deduplication\n\n  An example dedup update processor that creates the \"id\" field\n  on the fly based on the hash code of some other fields.  This\n  example has overwriteDupes set to false since we are using the\n  id field as the signatureField and Solr will maintain\n  uniqueness based on that anyway.\n\n  -->\n  <!--\n  <updateRequestProcessorChain name=\"dedupe\">\n  <processor class=\"solr.processor.SignatureUpdateProcessorFactory\">\n  <bool name=\"enabled\">true</bool>\n  <str name=\"signatureField\">id</str>\n  <bool name=\"overwriteDupes\">false</bool>\n  <str name=\"fields\">name,features,cat</str>\n  <str name=\"signatureClass\">solr.processor.Lookup3Signature</str>\n  </processor>\n  <processor class=\"solr.LogUpdateProcessorFactory\" />\n  <processor class=\"solr.RunUpdateProcessorFactory\" />\n  </updateRequestProcessorChain>\n  -->\n\n  <!-- Language identification\n\n  This example update chain identifies the language of the incoming\n  documents using the langid contrib. The detected language is\n  written to field language_s. No field name mapping is done.\n  The fields used for detection are text, title, subject and description,\n  making this example suitable for detecting languages form full-text\n  rich documents injected via ExtractingRequestHandler.\n  See more about langId at http://wiki.apache.org/solr/LanguageDetection\n  -->\n  <!--\n  <updateRequestProcessorChain name=\"langid\">\n  <processor class=\"org.apache.solr.update.processor.TikaLanguageIdentifierUpdateProcessorFactory\">\n  <str name=\"langid.fl\">text,title,subject,description</str>\n  <str name=\"langid.langField\">language_s</str>\n  <str name=\"langid.fallback\">en</str>\n  </processor>\n  <processor class=\"solr.LogUpdateProcessorFactory\" />\n  <processor class=\"solr.RunUpdateProcessorFactory\" />\n  </updateRequestProcessorChain>\n  -->\n\n  <!-- Script update processor\n\n  This example hooks in an update processor implemented using JavaScript.\n\n  See more about the script update processor at http://wiki.apache.org/solr/ScriptUpdateProcessor\n  -->\n  <!--\n  <updateRequestProcessorChain name=\"script\">\n  <processor class=\"solr.StatelessScriptUpdateProcessorFactory\">\n  <str name=\"script\">update-script.js</str>\n  <lst name=\"params\">\n  <str name=\"config_param\">example config parameter</str>\n  </lst>\n  </processor>\n  <processor class=\"solr.RunUpdateProcessorFactory\" />\n  </updateRequestProcessorChain>\n  -->\n\n  <!-- Response Writers\n\n  http://wiki.apache.org/solr/QueryResponseWriter\n\n  Request responses will be written using the writer specified by\n  the 'wt' request parameter matching the name of a registered\n  writer.\n\n  The \"default\" writer is the default and will be used if 'wt' is\n  not specified in the request.\n  -->\n  <!-- The following response writers are implicitly configured unless\n  overridden...\n  -->\n  <!--\n  <queryResponseWriter name=\"xml\"\n  default=\"true\"\n  class=\"solr.XMLResponseWriter\" />\n  <queryResponseWriter name=\"json\" class=\"solr.JSONResponseWriter\"/>\n  <queryResponseWriter name=\"python\" class=\"solr.PythonResponseWriter\"/>\n  <queryResponseWriter name=\"ruby\" class=\"solr.RubyResponseWriter\"/>\n  <queryResponseWriter name=\"php\" class=\"solr.PHPResponseWriter\"/>\n  <queryResponseWriter name=\"phps\" class=\"solr.PHPSerializedResponseWriter\"/>\n  <queryResponseWriter name=\"csv\" class=\"solr.CSVResponseWriter\"/>\n  <queryResponseWriter name=\"schema.xml\" class=\"solr.SchemaXmlResponseWriter\"/>\n  -->\n\n  <queryResponseWriter name=\"json\" class=\"solr.JSONResponseWriter\">\n    <!-- For the purposes of the tutorial, JSON responses are written as\n    plain text so that they are easy to read in *any* browser.\n    If you expect a MIME type of \"application/json\" just remove this override.\n    -->\n    <str name=\"content-type\">text/plain; charset=UTF-8</str>\n  </queryResponseWriter>\n\n  <!--\n  Custom response writers can be declared as needed...\n  -->\n  <queryResponseWriter name=\"velocity\" class=\"solr.VelocityResponseWriter\" startup=\"lazy\">\n    <str name=\"template.base.dir\">${velocity.template.base.dir:}</str>\n  </queryResponseWriter>\n\n  <!-- XSLT response writer transforms the XML output by any xslt file found\n  in Solr's conf/xslt directory.  Changes to xslt files are checked for\n  every xsltCacheLifetimeSeconds.\n  -->\n  <queryResponseWriter name=\"xslt\" class=\"solr.XSLTResponseWriter\">\n    <int name=\"xsltCacheLifetimeSeconds\">5</int>\n  </queryResponseWriter>\n\n  <!-- Query Parsers\n\n  http://wiki.apache.org/solr/SolrQuerySyntax\n\n  Multiple QParserPlugins can be registered by name, and then\n  used in either the \"defType\" param for the QueryComponent (used\n  by SearchHandler) or in LocalParams\n  -->\n  <!-- example of registering a query parser -->\n  <!--\n  <queryParser name=\"myparser\" class=\"com.mycompany.MyQParserPlugin\"/>\n  -->\n\n  <!-- Function Parsers\n\n  http://wiki.apache.org/solr/FunctionQuery\n\n  Multiple ValueSourceParsers can be registered by name, and then\n  used as function names when using the \"func\" QParser.\n  -->\n  <!-- example of registering a custom function parser  -->\n  <!--\n  <valueSourceParser name=\"myfunc\"\n  class=\"com.mycompany.MyValueSourceParser\" />\n  -->\n\n\n  <!-- Document Transformers\n  http://wiki.apache.org/solr/DocTransformers\n  -->\n  <!--\n  Could be something like:\n  <transformer name=\"db\" class=\"com.mycompany.LoadFromDatabaseTransformer\" >\n  <int name=\"connection\">jdbc://....</int>\n  </transformer>\n\n  To add a constant value to all docs, use:\n  <transformer name=\"mytrans2\" class=\"org.apache.solr.response.transform.ValueAugmenterFactory\" >\n  <int name=\"value\">5</int>\n  </transformer>\n\n  If you want the user to still be able to change it with _value:something_ use this:\n  <transformer name=\"mytrans3\" class=\"org.apache.solr.response.transform.ValueAugmenterFactory\" >\n  <double name=\"defaultValue\">5</double>\n  </transformer>\n\n  If you are using the QueryElevationComponent, you may wish to mark documents that get boosted.  The\n  EditorialMarkerFactory will do exactly that:\n  <transformer name=\"qecBooster\" class=\"org.apache.solr.response.transform.EditorialMarkerFactory\" />\n  -->\n\n\n  <!-- Legacy config for the admin interface -->\n  <admin>\n    <defaultQuery>*:*</defaultQuery>\n  </admin>\n\n</config>"
        }
      }
    },
    {
      "slider-log4j" : {
        "properties_attributes" : { },
        "properties" : {
          "content" : "\n# Licensed to the Apache Software Foundation (ASF) under one\n# or more contributor license agreements.  See the NOTICE file\n# distributed with this work for additional information\n# regarding copyright ownership.  The ASF licenses this file\n# to you under the Apache License, Version 2.0 (the\n# \"License\"); you may not use this file except in compliance\n# with the License.  You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\n\n# Define some default values that can be overridden by system properties\nlog4j.rootLogger=INFO,stdout\nlog4j.threshhold=ALL\nlog4j.appender.stdout=org.apache.log4j.ConsoleAppender\nlog4j.appender.stdout.layout=org.apache.log4j.PatternLayout\n\n# log layout skips stack-trace creation operations by avoiding line numbers and method\nlog4j.appender.stdout.layout.ConversionPattern=%d{ISO8601} [%t] %-5p %c{2} - %m%n\n\n# debug edition is much more expensive\n#log4j.appender.stdout.layout.ConversionPattern=%d{ISO8601} [%t] %-5p %c{2} (%F:%M(%L)) - %m%n\n\n\nlog4j.appender.subprocess=org.apache.log4j.ConsoleAppender\nlog4j.appender.subprocess.layout=org.apache.log4j.PatternLayout\nlog4j.appender.subprocess.layout.ConversionPattern=[%c{1}]: %m%n\n#log4j.logger.org.apache.slider.yarn.appmaster.SliderAppMasterer.master=INFO,subprocess\n\n# for debugging Slider\n#log4j.logger.org.apache.slider=DEBUG\n#log4j.logger.org.apache.slider=DEBUG\n\n# uncomment to debug service lifecycle issues\n#log4j.logger.org.apache.hadoop.yarn.service.launcher=DEBUG\n#log4j.logger.org.apache.hadoop.yarn.service=DEBUG\n\n# uncomment for YARN operations\n#log4j.logger.org.apache.hadoop.yarn.client=DEBUG\n\n# uncomment this to debug security problems\n#log4j.logger.org.apache.hadoop.security=DEBUG\n\n#crank back on some noise\nlog4j.logger.org.apache.hadoop.util.NativeCodeLoader=ERROR\nlog4j.logger.org.apache.hadoop.hdfs=WARN\n\n\nlog4j.logger.org.apache.hadoop.yarn.server.nodemanager.containermanager.monitor=WARN\nlog4j.logger.org.apache.hadoop.yarn.server.nodemanager.NodeStatusUpdaterImpl=WARN\nlog4j.logger.org.apache.zookeeper=WARN"
        }
      }
    },
    {
      "ranger-nifi-policymgr-ssl" : {
        "properties_attributes" : { },
        "properties" : { }
      }
    },
    {
      "ams-hbase-site" : {
        "properties_attributes" : {
          "final" : {
            "hbase.zookeeper.quorum" : "true"
          }
        },
        "properties" : {
          "hfile.block.cache.size" : "0.3",
          "phoenix.query.spoolThresholdBytes" : "20971520",
          "hbase.zookeeper.property.dataDir" : "${hbase.tmp.dir}/zookeeper",
          "hbase.regionserver.thread.compaction.large" : "2",
          "hbase.master.port" : "61300",
          "zookeeper.session.timeout.localHBaseCluster" : "120000",
          "phoenix.query.keepAliveMs" : "300000",
          "hbase.local.dir" : "${hbase.tmp.dir}/local",
          "phoenix.query.timeoutMs" : "300000",
          "hbase.regionserver.thread.compaction.small" : "3",
          "hbase.zookeeper.quorum" : "{{zookeeper_quorum_hosts}}",
          "hbase.client.scanner.timeout.period" : "300000",
          "hbase.regionserver.info.port" : "61330",
          "phoenix.query.rowKeyOrderSaltedTable" : "true",
          "phoenix.mutate.batchSize" : "10000",
          "zookeeper.znode.parent" : "/ams-hbase-unsecure",
          "hbase.master.info.port" : "61310",
          "hbase.rootdir" : "file:///var/lib/ambari-metrics-collector/hbase",
          "hbase.cluster.distributed" : "false",
          "hbase.hregion.majorcompaction" : "0",
          "hbase.hstore.flusher.count" : "2",
          "hbase.master.normalizer.class" : "org.apache.hadoop.hbase.master.normalizer.SimpleRegionNormalizer",
          "hbase.snapshot.enabled" : "false",
          "phoenix.spool.directory" : "${hbase.tmp.dir}/phoenix-spool",
          "phoenix.coprocessor.maxMetaDataCacheSize" : "20480000",
          "hbase.zookeeper.property.tickTime" : "6000",
          "hbase.zookeeper.leaderport" : "61388",
          "phoenix.sequence.saltBuckets" : "2",
          "hbase.hstore.blockingStoreFiles" : "200",
          "zookeeper.session.timeout" : "120000",
          "phoenix.coprocessor.maxServerCacheTimeToLiveMs" : "60000",
          "hbase.master.info.bindAddress" : "0.0.0.0",
          "hbase.regionserver.global.memstore.lowerLimit" : "0.3",
          "dfs.client.read.shortcircuit" : "true",
          "phoenix.query.maxGlobalMemoryPercentage" : "15",
          "hbase.hregion.memstore.flush.size" : "134217728",
          "hbase.hregion.max.filesize" : "4294967296",
          "phoenix.groupby.maxCacheSize" : "307200000",
          "hbase.master.wait.on.regionservers.mintostart" : "1",
          "hbase.regionserver.global.memstore.upperLimit" : "0.35",
          "hbase.normalizer.period" : "600000",
          "hbase.tmp.dir" : "/var/lib/ambari-metrics-collector/hbase-tmp",
          "hbase.client.scanner.caching" : "10000",
          "hbase.replication" : "false",
          "hbase.rpc.timeout" : "300000",
          "hbase.zookeeper.peerport" : "61288",
          "hbase.regionserver.port" : "61320",
          "hbase.zookeeper.property.clientPort" : "{{zookeeper_clientPort}}",
          "hbase.hregion.memstore.block.multiplier" : "4",
          "hbase.normalizer.enabled" : "false"
        }
      }
    },
    {
      "hbase-log4j" : {
        "properties_attributes" : { },
        "properties" : {
          "content" : "\n# Licensed to the Apache Software Foundation (ASF) under one\n# or more contributor license agreements.  See the NOTICE file\n# distributed with this work for additional information\n# regarding copyright ownership.  The ASF licenses this file\n# to you under the Apache License, Version 2.0 (the\n# \"License\"); you may not use this file except in compliance\n# with the License.  You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\n\n# Define some default values that can be overridden by system properties\nhbase.root.logger=INFO,console\nhbase.security.logger=INFO,console\nhbase.log.dir=.\nhbase.log.file=hbase.log\n\n# Define the root logger to the system property \"hbase.root.logger\".\nlog4j.rootLogger=${hbase.root.logger}\n\n# Logging Threshold\nlog4j.threshold=ALL\n\n#\n# Daily Rolling File Appender\n#\nlog4j.appender.DRFA=org.apache.log4j.DailyRollingFileAppender\nlog4j.appender.DRFA.File=${hbase.log.dir}/${hbase.log.file}\n\n# Rollver at midnight\nlog4j.appender.DRFA.DatePattern=.yyyy-MM-dd\n\n# 30-day backup\n#log4j.appender.DRFA.MaxBackupIndex=30\nlog4j.appender.DRFA.layout=org.apache.log4j.PatternLayout\n\n# Pattern format: Date LogLevel LoggerName LogMessage\nlog4j.appender.DRFA.layout.ConversionPattern=%d{ISO8601} %-5p [%t] %c{2}: %m%n\n\n# Rolling File Appender properties\nhbase.log.maxfilesize=256MB\nhbase.log.maxbackupindex=20\n\n# Rolling File Appender\nlog4j.appender.RFA=org.apache.log4j.RollingFileAppender\nlog4j.appender.RFA.File=${hbase.log.dir}/${hbase.log.file}\n\nlog4j.appender.RFA.MaxFileSize=${hbase.log.maxfilesize}\nlog4j.appender.RFA.MaxBackupIndex=${hbase.log.maxbackupindex}\n\nlog4j.appender.RFA.layout=org.apache.log4j.PatternLayout\nlog4j.appender.RFA.layout.ConversionPattern=%d{ISO8601} %-5p [%t] %c{2}: %m%n\n\n#\n# Security audit appender\n#\nhbase.security.log.file=SecurityAuth.audit\nhbase.security.log.maxfilesize=256MB\nhbase.security.log.maxbackupindex=20\nlog4j.appender.RFAS=org.apache.log4j.RollingFileAppender\nlog4j.appender.RFAS.File=${hbase.log.dir}/${hbase.security.log.file}\nlog4j.appender.RFAS.MaxFileSize=${hbase.security.log.maxfilesize}\nlog4j.appender.RFAS.MaxBackupIndex=${hbase.security.log.maxbackupindex}\nlog4j.appender.RFAS.layout=org.apache.log4j.PatternLayout\nlog4j.appender.RFAS.layout.ConversionPattern=%d{ISO8601} %p %c: %m%n\nlog4j.category.SecurityLogger=${hbase.security.logger}\nlog4j.additivity.SecurityLogger=false\n#log4j.logger.SecurityLogger.org.apache.hadoop.hbase.security.access.AccessController=TRACE\n\n#\n# Null Appender\n#\nlog4j.appender.NullAppender=org.apache.log4j.varia.NullAppender\n\n#\n# console\n# Add \"console\" to rootlogger above if you want to use this\n#\nlog4j.appender.console=org.apache.log4j.ConsoleAppender\nlog4j.appender.console.target=System.err\nlog4j.appender.console.layout=org.apache.log4j.PatternLayout\nlog4j.appender.console.layout.ConversionPattern=%d{ISO8601} %-5p [%t] %c{2}: %m%n\n\n# Custom Logging levels\n\nlog4j.logger.org.apache.zookeeper=INFO\n#log4j.logger.org.apache.hadoop.fs.FSNamesystem=DEBUG\nlog4j.logger.org.apache.hadoop.hbase=INFO\n# Make these two classes INFO-level. Make them DEBUG to see more zk debug.\nlog4j.logger.org.apache.hadoop.hbase.zookeeper.ZKUtil=INFO\nlog4j.logger.org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher=INFO\n#log4j.logger.org.apache.hadoop.dfs=DEBUG\n# Set this class to log INFO only otherwise its OTT\n# Enable this to get detailed connection error/retry logging.\n# log4j.logger.org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation=TRACE\n\n\n# Uncomment this line to enable tracing on _every_ RPC call (this can be a lot of output)\n#log4j.logger.org.apache.hadoop.ipc.HBaseServer.trace=DEBUG\n\n# Uncomment the below if you want to remove logging of client region caching'\n# and scan of .META. messages\n# log4j.logger.org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation=INFO\n# log4j.logger.org.apache.hadoop.hbase.client.MetaScanner=INFO"
        }
      }
    },
    {
      "kafka_jaas_conf" : {
        "properties_attributes" : { },
        "properties" : {
          "content" : "\n      {% if kerberos_security_enabled %}\n\n          KafkaServer {\n          com.sun.security.auth.module.Krb5LoginModule required\n          useKeyTab=true\n          keyTab=\"{{kafka_keytab_path}}\"\n          storeKey=true\n          useTicketCache=false\n          serviceName=\"{{kafka_bare_jaas_principal}}\"\n          principal=\"{{kafka_jaas_principal}}\";\n          };\n          KafkaClient {\n          com.sun.security.auth.module.Krb5LoginModule required\n          useTicketCache=true\n          renewTicket=true\n          serviceName=\"{{kafka_bare_jaas_principal}}\";\n          };\n          Client {\n          com.sun.security.auth.module.Krb5LoginModule required\n          useKeyTab=true\n          keyTab=\"{{kafka_keytab_path}}\"\n          storeKey=true\n          useTicketCache=false\n          serviceName=\"zookeeper\"\n          principal=\"{{kafka_jaas_principal}}\";\n          };\n          com.sun.security.jgss.krb5.initiate {\n          com.sun.security.auth.module.Krb5LoginModule required\n          renewTGT=false\n          doNotPrompt=true\n          useKeyTab=true\n          keyTab=\"{{kafka_keytab_path}}\"\n          storeKey=true\n          useTicketCache=false\n          serviceName=\"{{kafka_bare_jaas_principal}}\"\n          principal=\"{{kafka_jaas_principal}}\";\n          };\n\n      {% endif %}"
        }
      }
    },
    {
      "pig-env" : {
        "properties_attributes" : { },
        "properties" : {
          "content" : "\nJAVA_HOME={{java64_home}}\nHADOOP_HOME=${HADOOP_HOME:-{{hadoop_home}}}\n\nif [ -d \"/usr/lib/tez\" ]; then\n  PIG_OPTS=\"$PIG_OPTS -Dmapreduce.framework.name=yarn\"\nfi"
        }
      }
    },
    {
      "ranger-hdfs-policymgr-ssl" : {
        "properties_attributes" : { },
        "properties" : { }
      }
    },
    {
      "infra-solr-client-log4j" : {
        "properties_attributes" : { },
        "properties" : {
          "infra_client_log_maxfilesize" : "80",
          "infra_client_log_maxbackupindex" : "60",
          "content" : "# Copyright 2011 The Apache Software Foundation\n#\n# Licensed to the Apache Software Foundation (ASF) under one\n# or more contributor license agreements.  See the NOTICE file\n# distributed with this work for additional information\n# regarding copyright ownership.  The ASF licenses this file\n# to you under the Apache License, Version 2.0 (the\n# \"License\"); you may not use this file except in compliance\n# with the License.  You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\nlog4j.rootLogger=INFO,file,stdout,stderr\n\nlog4j.appender.file=org.apache.log4j.RollingFileAppender\nlog4j.appender.file.File={{solr_client_log|default('/var/log/ambari-infra-solr-client/solr-client.log')}}\nlog4j.appender.file.MaxFileSize={{solr_client_log_maxfilesize}}MB\nlog4j.appender.file.MaxBackupIndex={{solr_client_log_maxbackupindex}}\nlog4j.appender.file.layout=org.apache.log4j.PatternLayout\nlog4j.appender.file.layout.ConversionPattern=%d{DATE} %5p [%t] %c{1}:%L - %m%n\n\nlog4j.appender.stdout=org.apache.log4j.ConsoleAppender\nlog4j.appender.stdout.Threshold=INFO\nlog4j.appender.stdout.Target=System.out\nlog4j.appender.stdout.layout=org.apache.log4j.PatternLayout\nlog4j.appender.stdout.layout.ConversionPattern=%m%n\n\nlog4j.appender.stderr=org.apache.log4j.ConsoleAppender\nlog4j.appender.stderr.Threshold=ERROR\nlog4j.appender.stderr.Target=System.err\nlog4j.appender.stderr.layout=org.apache.log4j.PatternLayout\nlog4j.appender.stderr.layout.ConversionPattern=%m%n",
          "infra_solr_client_log_dir" : "/var/log/ambari-infra-solr-client"
        }
      }
    },
    {
      "ranger-atlas-policymgr-ssl" : {
        "properties_attributes" : { },
        "properties" : { }
      }
    },
    {
      "nifi-login-identity-providers-env" : {
        "properties_attributes" : { },
        "properties" : {
          "content" : "\n\n            <!--\n            Licensed to the Apache Software Foundation (ASF) under one or more\n            contributor license agreements.  See the NOTICE file distributed with\n            this work for additional information regarding copyright ownership.\n            The ASF licenses this file to You under the Apache License, Version 2.0\n            (the \"License\"); you may not use this file except in compliance with\n            the License.  You may obtain a copy of the License at\n            http://www.apache.org/licenses/LICENSE-2.0\n            Unless required by applicable law or agreed to in writing, software\n            distributed under the License is distributed on an \"AS IS\" BASIS,\n            WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n            See the License for the specific language governing permissions and\n            limitations under the License.\n            -->\n            <!--\n            This file lists the login identity providers to use when running securely. In order\n            to use a specific provider it must be configured here and it's identifier\n            must be specified in the nifi.properties file.\n            -->\n            <loginIdentityProviders>\n            <!--\n            Identity Provider for users logging in with username/password against an LDAP server.\n\n            'Authentication Strategy' - How the connection to the LDAP server is authenticated. Possible\n            values are ANONYMOUS, SIMPLE, or START_TLS.\n\n            'Manager DN' - The DN of the manager that is used to bind to the LDAP server to search for users.\n            'Manager Password' - The password of the manager that is used to bind to the LDAP server to\n            search for users.\n\n            'TLS - Keystore' - Path to the Keystore that is used when connecting to LDAP using START_TLS.\n            'TLS - Keystore Password' - Password for the Keystore that is used when connecting to LDAP\n            using START_TLS.\n            'TLS - Keystore Type' - Type of the Keystore that is used when connecting to LDAP using\n            START_TLS (i.e. JKS or PKCS12).\n            'TLS - Truststore' - Path to the Truststore that is used when connecting to LDAP using START_TLS.\n            'TLS - Truststore Password' - Password for the Truststore that is used when connecting to\n            LDAP using START_TLS.\n            'TLS - Truststore Type' - Type of the Truststore that is used when connecting to LDAP using\n            START_TLS (i.e. JKS or PKCS12).\n            'TLS - Client Auth' - Client authentication policy when connecting to LDAP using START_TLS.\n            Possible values are REQUIRED, WANT, NONE.\n            'TLS - Protocol' - Protocol to use when connecting to LDAP using START_TLS. (i.e. TLS,\n            TLSv1.1, TLSv1.2, etc).\n            'TLS - Shutdown Gracefully' - Specifies whether the TLS should be shut down gracefully\n            before the target context is closed. Defaults to false.\n\n            'Referral Strategy' - Strategy for handling referrals. Possible values are FOLLOW, IGNORE, THROW.\n            'Connect Timeout' - Duration of connect timeout. (i.e. 10 secs).\n            'Read Timeout' - Duration of read timeout. (i.e. 10 secs).\n\n            'Url' - Space-separated list of URLs of the LDAP servers (i.e. ldap://<hostname>:<port>).\n            'User Search Base' - Base DN for searching for users (i.e. CN=Users,DC=example,DC=com).\n            'User Search Filter' - Filter for searching for users against the 'User Search Base'.\n            (i.e. sAMAccountName={0}). The user specified name is inserted into '{0}'.\n\n            'Identity Strategy' - Strategy to identify users. Possible values are USE_DN and USE_USERNAME.\n            The default functionality if this property is missing is USE_DN in order to retain\n            backward compatibility. USE_DN will use the full DN of the user entry if possible.\n            USE_USERNAME will use the username the user logged in with.\n            'Authentication Expiration' - The duration of how long the user authentication is valid\n            for. If the user never logs out, they will be required to log back in following\n            this duration.\n            -->\n            <!-- To enable the ldap-provider remove 2 lines. This is 1 of 2.\n            <provider>\n            <identifier>ldap-provider</identifier>\n            <class>org.apache.nifi.ldap.LdapProvider</class>\n            <property name=\"Identity Strategy\">USE_DN</property>\n            <property name=\"Authentication Strategy\">START_TLS</property>\n            <property name=\"Manager DN\"></property>\n            <property name=\"Manager Password\"></property>\n            <property name=\"TLS - Keystore\"></property>\n            <property name=\"TLS - Keystore Password\"></property>\n            <property name=\"TLS - Keystore Type\"></property>\n            <property name=\"TLS - Truststore\"></property>\n            <property name=\"TLS - Truststore Password\"></property>\n            <property name=\"TLS - Truststore Type\"></property>\n            <property name=\"TLS - Client Auth\"></property>\n            <property name=\"TLS - Protocol\"></property>\n            <property name=\"TLS - Shutdown Gracefully\"></property>\n            <property name=\"Referral Strategy\">FOLLOW</property>\n            <property name=\"Connect Timeout\">10 secs</property>\n            <property name=\"Read Timeout\">10 secs</property>\n            <property name=\"Url\"></property>\n            <property name=\"User Search Base\"></property>\n            <property name=\"User Search Filter\"></property>\n            <property name=\"Identity Strategy\">USE_DN</property>\n            <property name=\"Authentication Expiration\">12 hours</property>\n            </provider>\n            To enable the ldap-provider remove 2 lines. This is 2 of 2. -->\n            <!--\n            Identity Provider for users logging in with username/password against a Kerberos KDC server.\n\n            'Default Realm' - Default realm to provide when user enters incomplete user principal (i.e. NIFI.APACHE.ORG).\n            'Authentication Expiration' - The duration of how long the user authentication is valid for. If the user never logs out, they will be required to log back in following this duration.\n            -->\n            {% if not security_enabled %}\n            <!-- To enable the kerberos-provider remove 2 lines. This is 1 of 2.\n            {% endif %}\n            <provider>\n            <identifier>kerberos-provider</identifier>\n            <class>org.apache.nifi.kerberos.KerberosProvider</class>\n            <property name=\"Default Realm\">{{nifi_kerberos_realm}}</property>\n            <property name=\"Authentication Expiration\">{{nifi_kerberos_authentication_expiration}}</property>\n            </provider>\n            {% if not security_enabled %}\n            To enable the kerberos-provider remove 2 lines. This is 2 of 2. -->\n            {% endif %}\n\n            </loginIdentityProviders>"
        }
      }
    },
    {
      "ranger-hbase-security" : {
        "properties_attributes" : { },
        "properties" : { }
      }
    },
    {
      "ranger-nifi-audit" : {
        "properties_attributes" : { },
        "properties" : { }
      }
    },
    {
      "ams-logsearch-conf" : {
        "properties_attributes" : { },
        "properties" : {
          "component_mappings" : "METRICS_COLLECTOR:ams_collector,ams_hbase_master,ams_hbase_regionserver;METRICS_MONITOR:ams_monitor;METRICS_GRAFANA:ams_grafana",
          "content" : "\n{\n  \"input\":[\n    {\n      \"type\":\"ams_hbase_master\",\n      \"rowtype\":\"service\",\n      \"path\":\"{{default('/configurations/ams-env/metrics_collector_log_dir', '/var/log/ambari-metrics-collector')}}/hbase-ams-master-*.log\"\n    },\n    {\n      \"type\":\"ams_hbase_regionserver\",\n      \"rowtype\":\"service\",\n      \"path\":\"{{default('/configurations/ams-env/metrics_collector_log_dir', '/var/log/ambari-metrics-collector')}}/hbase-ams-regionserver-*.log\"\n    },\n    {\n      \"type\":\"ams_collector\",\n      \"rowtype\":\"service\",\n      \"path\":\"{{default('/configurations/ams-env/metrics_collector_log_dir', '/var/log/ambari-metrics-collector')}}/ambari-metrics-collector.log\"\n    },\n    {\n      \"type\":\"ams_monitor\",\n      \"rowtype\":\"service\",\n      \"path\":\"{{default('/configurations/ams-env/metrics_monitor_log_dir', '/var/log/ambari-metrics-monitor')}}/ambari-metrics-monitor.out\"\n    },\n    {\n      \"type\":\"ams_grafana\",\n      \"rowtype\":\"service\",\n      \"path\":\"{{default('/configurations/ams-grafana-env/metrics_grafana_log_dir', '/var/log/ambari-metrics-grafana')}}/grafana.log\"\n    }\n  ],\n  \"filter\":[\n    {\n      \"filter\":\"grok\",\n      \"conditions\":{\n        \"fields\":{\n          \"type\":[\n            \"ams_collector\"\n          ]\n         }\n       },\n      \"log4j_format\":\"%d{ISO8601} %p %c: %m%n\",\n      \"multiline_pattern\":\"^(%{TIMESTAMP_ISO8601:logtime})\",\n      \"message_pattern\":\"(?m)^%{TIMESTAMP_ISO8601:logtime}%{SPACE}%{LOGLEVEL:level}%{SPACE}%{JAVACLASS:logger_name}:%{SPACE}%{GREEDYDATA:log_message}\",\n      \"post_map_values\":{\n        \"logtime\":{\n          \"map_date\":{\n            \"target_date_pattern\":\"yyyy-MM-dd HH:mm:ss,SSS\"\n          }\n         }\n       }\n     },\n    {\n      \"filter\":\"grok\",\n      \"conditions\":{\n        \"fields\":{\n          \"type\":[\n            \"ams_hbase_master\",\n            \"ams_hbase_regionserver\"\n          ]\n         }\n       },\n      \"log4j_format\":\"%d{ISO8601} %-5p [%t] %c{2}: %m%n\",\n      \"multiline_pattern\":\"^(%{TIMESTAMP_ISO8601:logtime})\",\n      \"message_pattern\":\"(?m)^%{TIMESTAMP_ISO8601:logtime}%{SPACE}%{LOGLEVEL:level}%{SPACE}\\\\[%{DATA:thread_name}\\\\]%{SPACE}%{JAVACLASS:logger_name}:%{SPACE}%{GREEDYDATA:log_message}\",\n      \"post_map_values\":{\n        \"logtime\":{\n          \"map_date\":{\n            \"target_date_pattern\":\"yyyy-MM-dd HH:mm:ss,SSS\"\n          }\n         }\n       }\n     },\n    {\n      \"filter\":\"grok\",\n      \"conditions\":{\n        \"fields\":{\n          \"type\":[\n            \"ams_grafana\"\n          ]\n         }\n       },\n      \"log4j_format\":\"%d{ISO8601} %-5p [%t] %c{2}: %m%n\",\n      \"multiline_pattern\":\"^(%{DATESTAMP:logtime})\",\n      \"message_pattern\":\"(?m)^%{DATESTAMP:logtime}%{SPACE}\\\\[%{WORD:level}\\\\]%{SPACE}%{GREEDYDATA:log_message}\",\n      \"post_map_values\":{\n        \"logtime\":{\n          \"map_date\":{\n            \"target_date_pattern\":\"yyyy/MM/dd HH:mm:ss\"\n          }\n         },\n        \"level\":[\n          {\n            \"map_fieldvalue\":{\n              \"pre_value\":\"I\",\n              \"post_value\":\"INFO\"\n            }\n          },\n          {\n            \"map_fieldvalue\":{\n              \"pre_value\":\"W\",\n              \"post_value\":\"WARN\"\n            }\n          },\n          {\n            \"map_fieldvalue\":{\n              \"pre_value\":\"D\",\n              \"post_value\":\"DEBUG\"\n             }\n           },\n           {\n             \"map_fieldvalue\":{\n               \"pre_value\":\"E\",\n               \"post_value\":\"ERROR\"\n             }\n           },\n           {\n             \"map_fieldvalue\":{\n               \"pre_value\":\"F\",\n               \"post_value\":\"FATAL\"\n             }\n           }\n         ]\n       }\n     },\n    {\n      \"filter\":\"grok\",\n      \"conditions\":{\n        \"fields\":{\n          \"type\":[\n            \"ams_monitor\"\n          ]\n        }\n      },\n      \"log4j_format\":\"\",\n      \"multiline_pattern\":\"^(%{TIMESTAMP_ISO8601:logtime})\",\n      \"message_pattern\":\"(?m)^%{TIMESTAMP_ISO8601:logtime}%{SPACE}\\\\[%{LOGLEVEL:level}\\\\]%{SPACE}%{JAVAFILE:file}:%{INT:line_number}%{SPACE}-%{SPACE}%{GREEDYDATA:log_message}\",\n      \"post_map_values\":{\n        \"logtime\":{\n          \"map_date\":{\n            \"target_date_pattern\":\"yyyy-MM-dd HH:mm:ss,SSS\"\n          }\n         }\n       },\n      \"level\":[\n        {\n          \"map_fieldvalue\":{\n            \"pre_value\":\"WARNING\",\n            \"post_value\":\"WARN\"\n          }\n        }\n      ]\n     }\n   ]\n }",
          "service_name" : "AMS"
        }
      }
    },
    {
      "hbase-site" : {
        "properties_attributes" : { },
        "properties" : {
          "hbase.coprocessor.master.classes" : "",
          "hfile.block.cache.size" : "0.4",
          "hbase.table.sanity.checks" : "false",
          "hbase.master.port" : "16000",
          "phoenix.functions.allowUserDefinedFunctions" : "true",
          "hbase.local.dir" : "${hbase.tmp.dir}/local",
          "phoenix.query.timeoutMs" : "60000",
          "hbase.regionserver.wal.codec" : "org.apache.hadoop.hbase.regionserver.wal.IndexedWALEditCodec",
          "hbase.rpc.controllerfactory.class" : "",
          "hbase.client.retries.number" : "35",
          "hbase.hstore.compaction.max" : "10",
          "hbase.zookeeper.quorum" : "%HOSTGROUP::host_group_1%",
          "hbase.regionserver.info.port" : "16030",
          "hbase.rpc.protection" : "authentication",
          "zookeeper.znode.parent" : "/hbase-unsecure",
          "hbase.master.info.port" : "16010",
          "hbase.rootdir" : "hdfs://%HOSTGROUP::host_group_1%:8020/apps/hbase/data",
          "hbase.cluster.distributed" : "true",
          "hbase.hregion.majorcompaction" : "604800000",
          "hbase.hregion.memstore.mslab.enabled" : "true",
          "hbase.security.authentication" : "simple",
          "hbase.security.authorization" : "false",
          "hbase.regionserver.executor.openregion.threads" : "20",
          "hbase.hstore.blockingStoreFiles" : "10",
          "hbase.zookeeper.useMulti" : "true",
          "dfs.domain.socket.path" : "/var/lib/hadoop-hdfs/dn_socket",
          "hbase.region.server.rpc.scheduler.factory.class" : "org.apache.hadoop.hbase.ipc.PhoenixRpcSchedulerFactory",
          "zookeeper.session.timeout" : "90000",
          "hbase.master.info.bindAddress" : "0.0.0.0",
          "hbase.master.ui.readonly" : "false",
          "hbase.hregion.majorcompaction.jitter" : "0.50",
          "hbase.hregion.memstore.flush.size" : "134217728",
          "hbase.hregion.max.filesize" : "10737418240",
          "zookeeper.recovery.retry" : "6",
          "hbase.regionserver.global.memstore.size" : "0.4",
          "hbase.client.keyvalue.maxsize" : "1048576",
          "hbase.tmp.dir" : "/tmp/hbase-${user.name}",
          "hbase.client.scanner.caching" : "100",
          "hbase.hstore.compactionThreshold" : "3",
          "hbase.master.wait.on.regionservers.timeout" : "30000",
          "hbase.master.namespace.init.timeout" : "2400000",
          "hbase.rpc.timeout" : "90000",
          "hbase.superuser" : "hbase",
          "hbase.coprocessor.region.classes" : "org.apache.hadoop.hbase.security.access.SecureBulkLoadEndpoint",
          "hbase.regionserver.handler.count" : "30",
          "hbase.bulkload.staging.dir" : "/apps/hbase/staging",
          "hbase.regionserver.port" : "16020",
          "hbase.zookeeper.property.clientPort" : "2181",
          "hbase.defaults.for.version.skip" : "true",
          "hbase.hregion.memstore.block.multiplier" : "4"
        }
      }
    },
    {
      "ranger-yarn-policymgr-ssl" : {
        "properties_attributes" : { },
        "properties" : { }
      }
    },
    {
      "infra-solr-security-json" : {
        "properties_attributes" : { },
        "properties" : {
          "infra_solr_ranger_audit_service_users" : "{default_ranger_audit_users}",
          "infra_solr_role_logfeeder" : "logfeeder_user",
          "infra_solr_role_ranger_audit" : "ranger_audit_user",
          "infra_solr_role_logsearch" : "logsearch_user",
          "infra_solr_role_dev" : "dev",
          "infra_solr_role_ranger_admin" : "ranger_admin_user",
          "infra_solr_role_atlas" : "atlas_user",
          "content" : " "
        }
      }
    },
    {
      "logsearch-log4j" : {
        "properties_attributes" : { },
        "properties" : {
          "logsearch_audit_log_maxfilesize" : "10",
          "logsearch_log_maxbackupindex" : "10",
          "logsearch_json_log_maxbackupindex" : "10",
          "logsearch_log_maxfilesize" : "10",
          "logsearch_perf_log_maxbackupindex" : "10",
          "logsearch_audit_log_maxbackupindex" : "10",
          "content" : "<?xml version=\"1.0\" encoding=\"UTF-8\" ?>\n<!--\nLicensed to the Apache Software Foundation (ASF) under one or more\ncontributor license agreements.  See the NOTICE file distributed with\nthis work for additional information regarding copyright ownership.\nThe ASF licenses this file to You under the Apache License, Version 2.0\n(the \"License\"); you may not use this file except in compliance with\nthe License.  You may obtain a copy of the License at\n\nhttp://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n-->\n<!DOCTYPE log4j:configuration SYSTEM \"log4j.dtd\">\n<log4j:configuration xmlns:log4j=\"http://jakarta.apache.org/log4j/\">\n  <appender name=\"console\" class=\"org.apache.log4j.ConsoleAppender\">\n    <param name=\"Target\" value=\"System.out\"/>\n    <layout class=\"org.apache.log4j.PatternLayout\">\n      <param name=\"ConversionPattern\" value=\"%d [%t] %-5p %C{6} (%F:%L) - %m%n\"/>\n    </layout>\n  </appender>\n\n  <appender name=\"rolling_file\" class=\"org.apache.log4j.RollingFileAppender\">\n    <param name=\"file\" value=\"{{logsearch_log_dir}}/logsearch.log\"/>\n    <param name=\"Threshold\" value=\"info\"/>\n    <param name=\"append\" value=\"true\"/>\n    <param name=\"maxFileSize\" value=\"{{logsearch_log_maxfilesize}}MB\"/>\n    <param name=\"maxBackupIndex\" value=\"{{logsearch_log_maxbackupindex}}\"/>\n    <layout class=\"org.apache.log4j.PatternLayout\">\n      <param name=\"ConversionPattern\" value=\"%d [%t] %-5p %C{6} (%F:%L) - %m%n\"/>\n    </layout>\n  </appender>\n\n  <appender name=\"rolling_file_json\" class=\"org.apache.ambari.logsearch.appender.LogsearchRollingFileAppender\">\n    <param name=\"file\" value=\"{{logsearch_log_dir}}/logsearch.json\"/>\n    <param name=\"append\" value=\"true\"/>\n    <param name=\"maxFileSize\" value=\"{{logsearch_json_log_maxfilesize}}MB\"/>\n    <param name=\"maxBackupIndex\" value=\"{{logsearch_json_log_maxbackupindex}}\"/>\n    <layout class=\"org.apache.ambari.logsearch.appender.LogsearchConversion\"/>\n  </appender>\n\n  <appender name=\"audit_rolling_file_json\" class=\"org.apache.ambari.logsearch.appender.LogsearchRollingFileAppender\">\n    <param name=\"file\" value=\"{{logsearch_log_dir}}/logsearch-audit.json\"/>\n    <param name=\"append\" value=\"true\"/>\n    <param name=\"maxFileSize\" value=\"{{logsearch_audit_log_maxfilesize}}MB\"/>\n    <param name=\"maxBackupIndex\" value=\"{{logsearch_audit_log_maxbackupindex}}\"/>\n    <layout class=\"org.apache.ambari.logsearch.appender.LogsearchConversion\"/>\n  </appender>\n\n  <appender name=\"performance_analyzer_json\" class=\"org.apache.ambari.logsearch.appender.LogsearchRollingFileAppender\">\n    <param name=\"file\" value=\"{{logsearch_log_dir}}/logsearch-performance.json\"/>\n    <param name=\"Threshold\" value=\"info\"/>\n    <param name=\"append\" value=\"true\"/>\n    <param name=\"maxFileSize\" value=\"{{logsearch_perf_log_maxfilesize}}MB\"/>\n    <param name=\"maxBackupIndex\" value=\"{{logsearch_perf_log_maxbackupindex}}\"/>\n    <layout class=\"org.apache.ambari.logsearch.appender.LogsearchConversion\"/>\n  </appender>\n\n  <logger name=\"org.apache.ambari.logsearch.audit\" additivity=\"true\">\n    <appender-ref ref=\"audit_rolling_file_json\"/>\n  </logger>\n\n  <logger name=\"org.apache.ambari.logsearch.performance\" additivity=\"false\">\n    <appender-ref ref=\"performance_analyzer_json\"/>\n  </logger>\n\n  <category name=\"org.apache.ambari.logsearch\" additivity=\"false\">\n    <priority value=\"info\"/>\n    <appender-ref ref=\"rolling_file_json\"/>\n  </category>\n\n  <root>\n    <priority value=\"info\"/>\n    <!-- <appender-ref ref=\"console\" /> -->\n    <appender-ref ref=\"rolling_file\" />\n    <appender-ref ref=\"rolling_file_json\"/>\n  </root>\n</log4j:configuration>",
          "logsearch_perf_log_maxfilesize" : "10",
          "logsearch_json_log_maxfilesize" : "10"
        }
      }
    },
    {
      "ranger-hive-policymgr-ssl" : {
        "properties_attributes" : { },
        "properties" : { }
      }
    },
    {
      "zookeeper-logsearch-conf" : {
        "properties_attributes" : { },
        "properties" : {
          "component_mappings" : "ZOOKEEPER_SERVER:zookeeper",
          "content" : "\n{\n  \"input\":[\n    {\n     \"type\":\"zookeeper\",\n     \"rowtype\":\"service\",\n     \"path\":\"{{default('/configurations/zookeeper-env/zk_log_dir', '/var/log/zookeeper')}}/zookeeper*.log\"\n    }\n  ],\n  \"filter\":[\n   {\n      \"filter\":\"grok\",\n      \"conditions\":{\n        \"fields\":{\"type\":[\"zookeeper\"]}\n      },\n     \"log4j_format\":\"%d{ISO8601} - %-5p [%t:%C{1}@%L] - %m%n\",\n     \"multiline_pattern\":\"^(%{TIMESTAMP_ISO8601:logtime})\",\n     \"message_pattern\":\"(?m)^%{TIMESTAMP_ISO8601:logtime}%{SPACE}-%{SPACE}%{LOGLEVEL:level}%{SPACE}\\\\[%{DATA:thread_name}\\\\@%{INT:line_number}\\\\]%{SPACE}-%{SPACE}%{GREEDYDATA:log_message}\",\n     \"post_map_values\": {\n       \"logtime\": {\n         \"map_date\":{\n           \"target_date_pattern\":\"yyyy-MM-dd HH:mm:ss,SSS\"\n         }\n       }\n     }\n    }\n   ]\n}",
          "service_name" : "Zookeeper"
        }
      }
    },
    {
      "hcat-env" : {
        "properties_attributes" : { },
        "properties" : {
          "content" : "\n      # Licensed to the Apache Software Foundation (ASF) under one\n      # or more contributor license agreements. See the NOTICE file\n      # distributed with this work for additional information\n      # regarding copyright ownership. The ASF licenses this file\n      # to you under the Apache License, Version 2.0 (the\n      # \"License\"); you may not use this file except in compliance\n      # with the License. You may obtain a copy of the License at\n      #\n      # http://www.apache.org/licenses/LICENSE-2.0\n      #\n      # Unless required by applicable law or agreed to in writing, software\n      # distributed under the License is distributed on an \"AS IS\" BASIS,\n      # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n      # See the License for the specific language governing permissions and\n      # limitations under the License.\n\n      JAVA_HOME={{java64_home}}\n      HCAT_PID_DIR={{hcat_pid_dir}}/\n      HCAT_LOG_DIR={{hcat_log_dir}}/\n      HCAT_CONF_DIR={{hcat_conf_dir}}\n      HADOOP_HOME=${HADOOP_HOME:-{{hadoop_home}}}\n      #DBROOT is the path where the connector jars are downloaded\n      DBROOT={{hcat_dbroot}}\n      USER={{hcat_user}}\n      METASTORE_PORT={{hive_metastore_port}}\n      HIVE_HOME=/usr/lib/hive"
        }
      }
    },
    {
      "atlas-logsearch-conf" : {
        "properties_attributes" : { },
        "properties" : {
          "component_mappings" : "ATLAS_SERVER:atlas_app",
          "content" : "\n{\n  \"input\":[\n    {\n      \"type\":\"atlas_app\",\n      \"rowtype\":\"service\",\n      \"path\":\"{{default('/configurations/atlas-env/metadata_log_dir', '/var/log/atlas')}}/application.log\"\n    }\n  ],\n  \"filter\":[\n    {\n      \"filter\":\"grok\",\n      \"conditions\":{\n        \"fields\":{\n          \"type\":[\n            \"atlas_app\"\n          ]\n         }\n       },\n      \"log4j_format\":\"%d %-5p - [%t:%x] ~ %m (%c{1}:%L)%n\",\n      \"multiline_pattern\":\"^(%{TIMESTAMP_ISO8601:logtime})\",\n      \"message_pattern\":\"(?m)^%{TIMESTAMP_ISO8601:logtime}%{SPACE}%{LOGLEVEL:level}%{SPACE}%{SPACE}-%{SPACE}\\\\[%{DATA:thread_name}\\\\]%{SPACE}~%{SPACE}%{GREEDYDATA:log_message}\",\n      \"post_map_values\":{\n        \"logtime\":{\n          \"map_date\":{\n            \"target_date_pattern\":\"yyyy-MM-dd HH:mm:ss,SSS\"\n          }\n         }\n       }\n     }\n   ]\n }",
          "service_name" : "Atlas"
        }
      }
    },
    {
      "pig-properties" : {
        "properties_attributes" : { },
        "properties" : {
          "content" : "\n# Licensed to the Apache Software Foundation (ASF) under one\n# or more contributor license agreements.  See the NOTICE file\n# distributed with this work for additional information\n# regarding copyright ownership.  The ASF licenses this file\n# to you under the Apache License, Version 2.0 (the\n# \"License\"); you may not use this file except in compliance\n# with the License.  You may obtain a copy of the License at\n#\n#  http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing,\n# software distributed under the License is distributed on an\n# \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n# KIND, either express or implied.  See the License for the\n# specific language governing permissions and limitations\n# under the License.\n\n# Pig configuration file. All values can be overwritten by command line\n# arguments; for a description of the properties, run\n#\n#     pig -h properties\n#\n\n############################################################################\n#\n# == Logging properties\n#\n\n# Location of pig log file. If blank, a file with a timestamped slug\n# ('pig_1399336559369.log') will be generated in the current working directory.\n#\n# pig.logfile=\n# pig.logfile=/tmp/pig-err.log\n\n# Log4j configuration file. Set at runtime with the -4 parameter. The source\n# distribution has a ./conf/log4j.properties.template file you can rename and\n# customize.\n#\n# log4jconf=./conf/log4j.properties\n\n# Verbose Output.\n# * false (default): print only INFO and above to screen\n# * true: Print all log messages to screen\n#\n# verbose=false\n\n# Omit timestamps on log messages. (default: false)\n#\n# brief=false\n\n# Logging level. debug=OFF|ERROR|WARN|INFO|DEBUG (default: INFO)\n#\n# debug=INFO\n\n# Roll up warnings across tasks, so that when millions of mappers suddenly cry\n# out in error they are partially silenced. (default, recommended: true)\n#\n# aggregate.warning=true\n\n# Should DESCRIBE pretty-print its schema?\n# * false (default): print on a single-line, suitable for pasting back in to your script\n# * true (recommended): prints on multiple lines with indentation, much more readable\n#\n# pig.pretty.print.schema=false\n\n# === Profiling UDFs  ===\n\n# Turn on UDF timers? This will cause two counters to be\n# tracked for every UDF and LoadFunc in your script: approx_microsecs measures\n# approximate time spent inside a UDF approx_invocations reports the approximate\n# number of times the UDF was invoked.\n#\n# * false (default): do not record timing information of UDFs.\n# * true: report UDF performance. Uses more counters, but gives more insight\n#   into script operation\n#\n# pig.udf.profile=false\n\n# Specify frequency of profiling (default: every 100th).\n# pig.udf.profile.frequency=100\n\n############################################################################\n#\n# == Site-specific Properties\n#\n\n# Execution Mode. Local mode is much faster, but only suitable for small amounts\n# of data. Local mode interprets paths on the local file system; Mapreduce mode\n# on the HDFS. Read more under 'Execution Modes' within the Getting Started\n# documentation.\n#\n# * mapreduce (default): use the Hadoop cluster defined in your Hadoop config files\n# * local: use local mode\n# * tez: use Tez on Hadoop cluster\n# * tez_local: use Tez local mode\n#\n# exectype=mapreduce\n\n# Bootstrap file with default statements to execute in every Pig job, similar to\n# .bashrc.  If blank, uses the file '.pigbootup' from your home directory; If a\n# value is supplied, that file is NOT loaded.  This does not do tilde expansion\n# -- you must supply the full path to the file.\n#\n# pig.load.default.statements=\n# pig.load.default.statements=/home/bob/.pigrc\n\n# Kill all waiting/running MR jobs upon a MR job failure? (default: false) If\n# false, jobs that can proceed independently will do so unless a parent stage\n# fails. If true, the failure of any stage in the script kills all jobs.\n#\n# stop.on.failure=false\n\n# File containing the pig script to run. Rarely set in the properties file.\n# Commandline: -f\n#\n# file=\n\n# Jarfile to load, colon separated. Rarely used.\n#\n# jar=\n\n# Register additional .jar files to use with your Pig script.\n# Most typically used as a command line option (see http://pig.apache.org/docs/r0.12.0/basic.html#register):\n#\n#     pig -Dpig.additional.jars=hdfs://nn.mydomain.com:9020/myjars/my.jar\n#\n# pig.additional.jars=<colon separated list of jars with optional wildcards>\n# pig.additional.jars=/usr/local/share/pig/pig/contrib/piggybank/java/piggybank.jar:/usr/local/share/pig/datafu/datafu-pig/build/libs/datafu-pig-1.2.1.jar\n\n# Specify potential packages to which a UDF or a group of UDFs belong,\n# eliminating the need to qualify the UDF on every call. See\n# http://pig.apache.org/docs/r0.12.0/udf.html#use-short-names\n#\n# Commandline use:\n#\n#     pig \\\n#       -Dpig.additional.jars=$PIG_HOME/contrib/piggybank/java/piggybank.jar:$PIG_HOME/../datafu/datafu-pig/build/libs/datafu-pig-1.2.1.jar \\\n#       -Dudf.import.list=org.apache.pig.piggybank.evaluation:datafu.pig.util \\\n#       happy_job.pig\n#\n# udf.import.list=<colon separated list of imports>\n# udf.import.list=org.apache.pig.piggybank.evaluation:datafu.pig.bags:datafu.pig.hash:datafu.pig.stats:datafu.pig.util\n\n#\n# Reuse jars across jobs run by the same user? (default: false) If enabled, jars\n# are placed in ${pig.user.cache.location}/${user.name}/.pigcache. Since most\n# jars change infrequently, this gives a minor speedup.\n#\n# pig.user.cache.enabled=false\n\n# Base path for storing jars cached by the pig.user.cache.enabled feature. (default: /tmp)\n#\n# pig.user.cache.location=/tmp\n\n# Replication factor for cached jars. If not specified mapred.submit.replication\n# is used, whose default is 10.\n#\n# pig.user.cache.replication=10\n\n# Default UTC offset. (default: the host's current UTC offset) Supply a UTC\n# offset in Java's timezone format: e.g., +08:00.\n#\n# pig.datetime.default.tz=\n\n############################################################################\n#\n# Memory impacting properties\n#\n\n# Amount of memory (as fraction of heap) allocated to bags before a spill is\n# forced. Default is 0.2, meaning 20% of available memory. Note that this memory\n# is shared across all large bags used by the application. See\n# http://pig.apache.org/docs/r0.12.0/perf.html#memory-management\n#\n# pig.cachedbag.memusage=0.2\n\n# Don't spill bags smaller than this size (bytes). Default: 5000000, or about\n# 5MB. Usually, the more spilling the longer runtime, so you might want to tune\n# it according to heap size of each task and so forth.\n#\n# pig.spill.size.threshold=5000000\n\n# EXPERIMENTAL: If a file bigger than this size (bytes) is spilled -- thus\n# freeing a bunch of ram -- tell the JVM to perform garbage collection.  This\n# should help reduce the number of files being spilled, but causes more-frequent\n# garbage collection. Default: 40000000 (about 40 MB)\n#\n# pig.spill.gc.activation.size=40000000\n\n# Maximum amount of data to replicate using the distributed cache when doing\n# fragment-replicated join. (default: 1000000000, about 1GB) Consider increasing\n# this in a production environment, but carefully.\n#\n# pig.join.replicated.max.bytes=1000000000\n\n# Fraction of heap available for the reducer to perform a skewed join. A low\n# fraction forces Pig to use more reducers, but increases the copying cost. See\n# http://pig.apache.org/docs/r0.12.0/perf.html#skewed-joins\n#\n# pig.skewedjoin.reduce.memusage=0.3\n\n#\n# === SchemaTuple ===\n#\n# The SchemaTuple feature (PIG-2632) uses a tuple's schema (when known) to\n# generate a custom Java class to hold records. Otherwise, tuples are loaded as\n# a plain list that is unaware of its contents' schema -- and so each element\n# has to be wrapped as a Java object on its own. This can provide more efficient\n# CPU utilization, serialization, and most of all memory usage.\n#\n# This feature is considered experimental and is off by default. You can\n# selectively enable it for specific operations using pig.schematuple.udf,\n# pig.schematuple.load, pig.schematuple.fr_join and pig.schematuple.merge_join\n#\n\n# Enable the SchemaTuple optimization in all available cases? (default: false; recommended: true)\n#\n# pig.schematuple=false\n\n# EXPERIMENTAL: Use SchemaTuples with UDFs (default: value of pig.schematuple).\n# pig.schematuple.udf=false\n\n# EXPERIMENTAL, CURRENTLY NOT IMPLEMENTED, but in the future, LoadFunc's with\n# known schemas should output SchemaTuples. (default: value of pig.schematuple)\n# pig.schematuple.load=false\n\n# EXPERIMENTAL: Use SchemaTuples in replicated joins. The potential memory\n# saving here is significant. (default: value of pig.schematuple)\n# pig.schematuple.fr_join=false\n\n# EXPERIMENTAL: Use SchemaTuples in merge joins. (default: value of pig.schematuple).\n# pig.schematuple.merge_join=false\n\n############################################################################\n#\n# Serialization options\n#\n\n# Omit empty part files from the output? (default: false)\n#\n# * false (default): reducers generates an output file, even if output is empty\n# * true (recommended): do not generate zero-byte part files\n#\n# The default behavior of MapReduce is to generate an empty file for no data, so\n# Pig follows that. But many small files can cause annoying extra map tasks and\n# put load on the HDFS, so consider setting this to 'true'\n#\n# pig.output.lazy=false\n\n#\n# === Tempfile Handling\n#\n\n# EXPERIMENTAL: Storage format for temporary files generated by intermediate\n# stages of Pig jobs. This can provide significant speed increases for certain\n# codecs, as reducing the amount of data transferred to and from disk can more\n# than make up for the cost of compression/compression. Recommend that you set\n# up LZO compression in Hadoop and specify tfile storage.\n#\n# Compress temporary files?\n# * false (default): do not compress\n# * true (recommended): compress temporary files.\n#\n# pig.tmpfilecompression=false\n# pig.tmpfilecompression=true\n\n# Tempfile storage container type.\n#\n# * tfile (default, recommended): more efficient, but only supports supports gz(gzip) and lzo compression.\n#   https://issues.apache.org/jira/secure/attachment/12396286/TFile%20Specification%2020081217.pdf\n# * seqfile: only supports gz(gzip), lzo, snappy, and bzip2 compression\n#\n# pig.tmpfilecompression.storage=tfile\n\n# Codec types for intermediate job files. tfile supports gz(gzip) and lzo;\n# seqfile support gz(gzip), lzo, snappy, bzip2\n#\n# * lzo (recommended with caveats): moderate compression, low cpu burden;\n#   typically leads to a noticeable speedup. Best default choice, but you must\n#   set up LZO independently due to license incompatibility\n# * snappy: moderate compression, low cpu burden; typically leads to a noticeable speedup..\n# * gz (default): higher compression, high CPU burden. Typically leads to a noticeable slowdown.\n# * bzip2: most compression, major CPU burden. Typically leads to a noticeable slowdown.\n#\n# pig.tmpfilecompression.codec=gzip\n\n#\n# === Split Combining\n#\n\n#\n# Should pig try to combine small files for fewer map tasks? This improves the\n# efficiency of jobs with many small input files, reduces the overhead on the\n# jobtracker, and reduces the number of output files a map-only job\n# produces. However, it only works with certain loaders and increases non-local\n# map tasks. See http://pig.apache.org/docs/r0.12.0/perf.html#combine-files\n#\n# * false (default, recommended): _do_ combine files\n# * true: do not combine files\n#\n# pig.noSplitCombination=false\n\n#\n# Size, in bytes, of data to be processed by a single map. Smaller files are\n# combined untill this size is reached. If unset, defaults to the file system's\n# default block size.\n#\n# pig.maxCombinedSplitSize=\n\n# ###########################################################################\n#\n# Execution options\n#\n\n# Should pig omit combiners? (default, recommended: false -- meaning pig _will_\n# use combiners)\n#\n# When combiners work well, they eliminate a significant amount of\n# data. However, if they do not eliminate much data -- say, a DISTINCT operation\n# that only eliminates 5% of the records -- they add a noticeable overhead to\n# the job. So the recommended default is false (use combiners), selectively\n# disabling them per-job:\n#\n#     pig -Dpig.exec.nocombiner=true distinct_but_not_too_much.pig\n#\n# pig.exec.nocombiner=false\n\n# EXPERIMENTAL: Aggregate records in map task before sending to the combiner?\n# (default: false, 10; recommended: true, 10). In cases where there is a massive\n# reduction of data in the aggregation step, pig can do a first pass of\n# aggregation before the data even leaves the mapper, saving much serialization\n# overhead. It's off by default but can give a major improvement to\n# group-and-aggregate operations. Pig skips partial aggregation unless reduction\n# is better than a factor of minReduction (default: 10). See\n# http://pig.apache.org/docs/r0.12.0/perf.html#hash-based-aggregation\n#\n# pig.exec.mapPartAgg=false\n# pig.exec.mapPartAgg.minReduction=10\n\n#\n# === Control how many reducers are used.\n#\n\n# Estimate number of reducers naively using a fixed amount of data per\n# reducer. Optimally, you have both fewer reducers than available reduce slots,\n# and reducers that are neither getting too little data (less than a half-GB or\n# so) nor too much data (more than 2-3 times the reducer child process max heap\n# size). The default of 1000000000 (about 1GB) is probably low for a production\n# cluster -- however it's much worse to set this too high (reducers spill many\n# times over in group-sort) than too low (delay waiting for reduce slots).\n#\n# pig.exec.reducers.bytes.per.reducer=1000000000\n\n#\n# Don't ever use more than this many reducers. (default: 999)\n#\n# pig.exec.reducers.max=999\n\n#\n# === Local mode for small jobs\n#\n\n# EXPERIMENTAL: Use local mode for small jobs? If true, jobs with input data\n# size smaller than pig.auto.local.input.maxbytes bytes and one or no reducers\n# are run in local mode, which is much faster. Note that file paths are still\n# interpreted as pig.exectype implies.\n#\n# * true (recommended): allow local mode for small jobs, which is much faster.\n# * false (default): always use pig.exectype.\n#\n# pig.auto.local.enabled=false\n\n#\n# Definition of a small job for the pig.auto.local.enabled feature. Only jobs\n# with less than this may bytes are candidates to run locally (default:\n# 100000000 bytes, about 1GB)\n#\n# pig.auto.local.input.maxbytes=100000000\n\n############################################################################\n#\n# Security Features\n#\n\n# Comma-delimited list of commands/operators that are disallowed. This security\n# feature can be used by administrators to block use of certain commands by\n# users.\n#\n# * <blank> (default): all commands and operators are allowed.\n# * fs,set (for example): block all filesystem commands and config changes from pig scripts.\n#\n# pig.blacklist=\n# pig.blacklist=fs,set\n\n# Comma-delimited list of the only commands/operators that are allowed. This\n# security feature can be used by administrators to block use of certain\n# commands by users.\n#\n# * <blank> (default): all commands and operators not on the pig.blacklist are allowed.\n# * load,store,filter,group: only LOAD, STORE, FILTER, GROUP\n#   from pig scripts. All other commands and operators will fail.\n#\n# pig.whitelist=\n# pig.whitelist=load,store,filter,group\n\n#####################################################################\n#\n# Advanced Site-specific Customizations\n#\n\n# Remove intermediate output files?\n#\n# * true (default, recommended): remove the files\n# * false: do NOT remove the files. You must clean them up yourself.\n#\n# Keeping them is useful for advanced debugging, but can be dangerous -- you\n# must clean them up yourself.  Inspect the intermediate outputs with\n#\n#     LOAD '/path/to/tmp/file' USING org.apache.pig.impl.io.TFileStorage();\n#\n# (Or ...SequenceFileInterStorage if pig.tmpfilecompression.storage is seqfile)\n#\n# pig.delete.temp.files=true\n\n# EXPERIMENTAL: A Pig Progress Notification Listener (PPNL) lets you wire pig's\n# progress into your visibility stack. To use a PPNL, supply the fully qualified\n# class name of a PPNL implementation. Note that only one PPNL can be set up, so\n# if you need several, write a PPNL that will chain them.\n#\n# See https://github.com/twitter/ambrose for a pretty awesome one of these\n#\n# pig.notification.listener=<fully qualified class name of a PPNL implementation>\n\n# String argument to pass to your PPNL constructor (optional). Only a single\n# string value is allowed. (default none)\n#\n# pig.notification.listener.arg=<somevalue>\n\n# EXPERIMENTAL: Class invoked to estimate the number of reducers to use.\n# (default: org.apache.pig.backend.hadoop.executionengine.mapReduceLayer.InputSizeReducerEstimator)\n#\n# If you don't know how or why to write a PigReducerEstimator, you're unlikely\n# to use this. By default, the naive mapReduceLayer.InputSizeReducerEstimator is\n# used, but you can specify anything implementing the interface\n# org.apache.pig.backend.hadoop.executionengine.mapReduceLayer.PigReducerEstimator\n#\n# pig.exec.reducer.estimator=<fully qualified class name of a PigReducerEstimator implementation>\n\n# Optional String argument to pass to your PigReducerEstimator. (default: none;\n# a single String argument is allowed).\n#\n# pig.exec.reducer.estimator.arg=<somevalue>\n\n# Class invoked to report the size of reducers output. By default, the reducers'\n# output is computed as the total size of output files. But not every storage is\n# file-based, and so this logic can be replaced by implementing the interface\n# org.apache.pig.backend.hadoop.executionengine.mapReduceLayer.PigStatsOutputSizeReader\n# If you need to register more than one reader, you can register them as a comma\n# separated list. Every reader implements a boolean supports(POStore sto) method.\n# When there are more than one reader, they are consulted in order, and the\n# first one whose supports() method returns true will be used.\n#\n# pig.stats.output.size.reader=<fully qualified class name of a PigStatsOutputSizeReader implementation>\n# pig.stats.output.size.reader.unsupported=<comma separated list of StoreFuncs that are not supported by this reader>\n\n# By default, Pig retrieves TaskReports for every launched task to compute\n# various job statistics. But this can cause OOM if the number of tasks is\n# large. In such case, you can disable it by setting this property to true.\n# pig.stats.notaskreport=false\n\n#\n# Override hadoop configs programatically\n#\n# By default, Pig expects hadoop configs (hadoop-site.xml and core-site.xml)\n# to be present on the classpath. There are cases when these configs are\n# needed to be passed programatically, such as while using the PigServer API.\n# In such cases, you can override hadoop configs by setting the property\n# \"pig.use.overriden.hadoop.configs\".\n#\n# When this property is set to true, Pig ignores looking for hadoop configs\n# in the classpath and instead picks it up from Properties/Configuration\n# object passed to it.\n#\n# pig.use.overriden.hadoop.configs=false\n\n# Implied LoadFunc for the LOAD operation when no USING clause is\n# present. Supply the fully qualified class name of a LoadFunc\n# implementation. Note: setting this means you will have to modify most code\n# brought in from elsewhere on the web, as people generally omit the USING\n# clause for TSV files.\n#\n# * org.apache.pig.builtin.PigStorage (default): the traditional tab-separated-values LoadFunc\n# * my.custom.udfcollection.MyCustomLoadFunc (for example): use MyCustomLoadFunc instead\n#\n# pig.default.load.func=<fully qualified class name of a LoadFunc implementation>\n\n# The implied StoreFunc for STORE operations with no USING clause. Supply the\n# fully qualified class name of a StoreFunc implementation.\n#\n# * org.apache.pig.builtin.PigStorage (default): the traditional tab-separated-values StoreFunc.\n# * my.custom.udfcollection.MyCustomStoreFunc (for example): use MyCustomStoreFunc instead\n#\n# pig.default.store.func=<fully qualified class name of a StoreFunc implementation>\n\n# Recover jobs when the application master is restarted? (default: false). This\n# is a Hadoop 2 specific property; enable it to take advantage of AM recovery.\n#\n# pig.output.committer.recovery.support=true\n\n# Should scripts check to prevent multiple stores writing to the same location?\n# (default: false) When set to true, stops the execution of script right away.\n#\npig.location.check.strict=false\n\n# In addition to the fs-style commands (rm, ls, etc) Pig can now execute\n# SQL-style DDL commands, eg \"sql create table pig_test(name string, age int)\".\n# The only implemented backend is hcat, and luckily that's also the default.\n#\n# pig.sql.type=hcat\n\n# Path to the hcat executable, for use with pig.sql.type=hcat (default: null)\n#\nhcat.bin=/usr/local/hcat/bin/hcat\n\n###########################################################################\n#\n# Overrides for extreme environments\n#\n# (Most people won't have to adjust these parameters)\n#\n\n\n# Limit the pig script length placed in the jobconf xml. (default:10240)\n# Extremely long queries can waste space in the JobConf; since its contents are\n# only advisory, the default is fine unless you are retaining it for forensics.\n#\n# pig.script.max.size=10240\n\n# Disable use of counters by Pig. Note that the word 'counter' is singular here.\n#\n# * false (default, recommended): do NOT disable counters.\n# * true: disable counters. Set this to true only when your Pig job will\n#   otherwise die because of using more counters than hadoop configured limit\n#\n# pig.disable.counter=true\n\n# Sample size (per-mapper, in number of rows) the ORDER..BY operation's\n# RandomSampleLoader uses to estimate how your data should be\n# partitioned. (default, recommended: 100 rows per task) Increase this if you\n# have exceptionally large input splits and are unhappy with the reducer skew.\n#\n# pig.random.sampler.sample.size=100\n\n# Process an entire script at once, reducing the amount of work and number of\n# tasks? (default, recommended: true) See http://pig.apache.org/docs/r0.12.0/perf.html#multi-query-execution\n#\n# MultiQuery optimization is very useful, and so the recommended default is\n# true. You may find a that a script fails to compile under MultiQuery. If so,\n# disable it at runtime:\n#\n#     pig -no_multiquery script_that_makes_pig_sad.pig\n#\n# opt.multiquery=true\n\n# For small queries, fetch data directly from the HDFS. (default, recommended:\n# true). If you want to force Pig to launch a MR job, for example when you're\n# testing a live cluster, disable with the -N option. See PIG-3642.\n#\n# opt.fetch=true\n\n# Enable auto/grace parallelism in tez. These should be used by default unless\n# you encounter some bug in automatic parallelism. If pig.tez.auto.parallelism\n# to false, use 1 as default parallelism\npig.tez.auto.parallelism=true\npig.tez.grace.parallelism=true\n\n###########################################################################\n#\n# Streaming properties\n#\n\n# Define what properties will be set in the streaming environment. Just set this\n# property to a comma-delimited list of properties to set, and those properties\n# will be set in the environment.\n#\n# pig.streaming.environment=<comma-delimited list of propertes>\n\n# Specify a comma-delimited list of local files to ship to distributed cache for\n# streaming job.\n#\n# pig.streaming.ship.files=<comma-delimited list of local files>\n\n# Specify a comma-delimited list of remote files to cache on distributed cache\n# for streaming job.\n#\n# pig.streaming.cache.files=<comma-delimited list of remote files>\n\n# Specify the python command to be used for python streaming udf. By default,\n# python is used, but you can overwrite it with a non-default version such as\n# python2.7.\n#\n# pig.streaming.udf.python.command=python"
        }
      }
    },
    {
      "nifi-authorizers-env" : {
        "properties_attributes" : { },
        "properties" : {
          "content" : "\n        <!--\n        Licensed to the Apache Software Foundation (ASF) under one or more\n        contributor license agreements.  See the NOTICE file distributed with\n        this work for additional information regarding copyright ownership.\n        The ASF licenses this file to You under the Apache License, Version 2.0\n        (the \"License\"); you may not use this file except in compliance with\n        the License.  You may obtain a copy of the License at\n        http://www.apache.org/licenses/LICENSE-2.0\n        Unless required by applicable law or agreed to in writing, software\n        distributed under the License is distributed on an \"AS IS\" BASIS,\n        WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n        See the License for the specific language governing permissions and\n        limitations under the License.\n        -->\n        <!--\n        This file lists the authority providers to use when running securely. In order\n        to use a specific provider it must be configured here and it's identifier\n        must be specified in the nifi.properties file.\n        -->\n        <authorizers>\n        \n        <!--\n        The FileAuthorizer is NiFi\"s provided authorizer and has the following properties:\n        - Authorizations File - The file where the FileAuthorizer will store policies.\n        - Users File - The file where the FileAuthorizer will store users and groups.\n        - Initial Admin Identity - The identity of an initial admin user that will be granted access to the UI and\n            given the ability to create additional users, groups, and policies. The value of this property could be\n            a DN when using certificates or LDAP, or a Kerberos principal. This property will only be used when there\n            are no other users, groups, and policies defined. If this property is specified then a Legacy Authorized\n            Users File can not be specified.\n            NOTE: Any identity mapping rules specified in nifi.properties will also be applied to the initial admin identity,\n            so the value should be the unmapped identity.\n        - Legacy Authorized Users File - The full path to an existing authorized-users.xml that will be automatically\n            converted to the new authorizations model. If this property is specified then an Initial Admin Identity can\n            not be specified, and this property will only be used when there are no other users, groups, and policies defined.\n        - Node Identity [unique key] - The identity of a NiFi cluster node. When clustered, a property for each node\n            should be defined, so that every node knows about every other node. If not clustered these properties can be ignored.\n            The name of each property must be unique, for example for a three node cluster:\n            \"Node Identity A\", \"Node Identity B\", \"Node Identity C\" or \"Node Identity 1\", \"Node Identity 2\", \"Node Identity 3\"\n            NOTE: Any identity mapping rules specified in nifi.properties will also be applied to the node identities,\n            so the values should be the unmapped identities (i.e. full DN from a certificate).        \n        -->\n        <authorizer>\n        <identifier>{{nifi_authorizer}}</identifier>\n        {% if has_ranger_admin and enable_ranger_nifi %}\n        <class>org.apache.nifi.ranger.authorization.RangerNiFiAuthorizer</class>\n        <property name=\"Ranger Audit Config Path\">{{nifi_config_dir}}/ranger-nifi-audit.xml</property>\n        <property name=\"Ranger Security Config Path\">{{nifi_config_dir}}/ranger-nifi-security.xml</property>\n        <property name=\"Ranger Service Type\">nifi</property>\n        <property name=\"Ranger Application Id\">nifi</property>\n        <property name=\"Ranger Admin Identity\">{{ranger_admin_identity}}</property>\n        {% if security_enabled %}\n        <property name=\"Ranger Kerberos Enabled\">true</property>\n        {% else %}\n        <property name=\"Ranger Kerberos Enabled\">false</property>\n        {% endif %}\n        {% else %}\n        <class>org.apache.nifi.authorization.FileAuthorizer</class>\n        <property name=\"Authorizations File\">{{nifi_flow_config_dir}}/authorizations.xml</property>\n        <property name=\"Users File\">{{nifi_flow_config_dir}}/users.xml</property>\n        <property name=\"Initial Admin Identity\">{{nifi_initial_admin_id}}</property>\n        <property name=\"Legacy Authorized Users File\"></property>\n        {% endif %}\n\n        {{nifi_ssl_config_content}}\n\n        </authorizer>\n        </authorizers>"
        }
      }
    },
    {
      "ranger-hive-plugin-properties" : {
        "properties_attributes" : { },
        "properties" : { }
      }
    },
    {
      "ranger-yarn-security" : {
        "properties_attributes" : { },
        "properties" : { }
      }
    },
    {
      "oozie-logsearch-conf" : {
        "properties_attributes" : { },
        "properties" : {
          "component_mappings" : "OOZIE_SERVER:oozie_app",
          "content" : "\n{\n  \"input\":[\n    {\n      \"type\":\"oozie_app\",\n      \"rowtype\":\"service\",\n      \"path\":\"{{default('/configurations/oozie-env/oozie_log_dir', '/var/log/oozie')}}/oozie.log\"\n    }\n   ],\n  \"filter\":[\n    {\n      \"filter\":\"grok\",\n      \"conditions\":{\n        \"fields\":{\n          \"type\":[\n            \"oozie_app\"\n          ]\n         }\n       },\n      \"log4j_format\":\"%d{ISO8601} %5p %c{1}:%L - SERVER[${oozie.instance.id}] %m%n\",\n      \"multiline_pattern\":\"^(%{TIMESTAMP_ISO8601:logtime})\",\n      \"message_pattern\":\"(?m)^%{TIMESTAMP_ISO8601:logtime}%{SPACE}%{LOGLEVEL:level}%{SPACE}%{DATA:logger_name}:%{INT:line_number}%{SPACE}-%{SPACE}%{GREEDYDATA:log_message}\",\n      \"post_map_values\":{\n        \"logtime\":{\n          \"map_date\":{\n            \"target_date_pattern\":\"yyyy-MM-dd HH:mm:ss,SSS\"\n          }\n         }\n       }\n     }\n   ]\n }",
          "service_name" : "Oozie"
        }
      }
    },
    {
      "ranger-yarn-audit" : {
        "properties_attributes" : { },
        "properties" : { }
      }
    },
    {
      "livy2-log4j-properties" : {
        "properties_attributes" : { },
        "properties" : {
          "content" : "\n            # Set everything to be logged to the console\n            log4j.rootCategory=INFO, console\n            log4j.appender.console=org.apache.log4j.ConsoleAppender\n            log4j.appender.console.target=System.err\n            log4j.appender.console.layout=org.apache.log4j.PatternLayout\n            log4j.appender.console.layout.ConversionPattern=%d{yy/MM/dd HH:mm:ss} %p %c{1}: %m%n\n\n            log4j.logger.org.eclipse.jetty=WARN"
        }
      }
    },
    {
      "ranger-nifi-plugin-properties" : {
        "properties_attributes" : { },
        "properties" : { }
      }
    },
    {
      "tez-interactive-site" : {
        "properties_attributes" : { },
        "properties" : {
          "tez.runtime.pipelined.sorter.lazy-allocate.memory" : "true",
          "tez.runtime.report.partition.stats" : "true",
          "tez.runtime.shuffle.fetch.buffer.percent" : "0.6",
          "tez.am.client.heartbeat.timeout.secs" : "90",
          "tez.task.timeout-ms" : "90000",
          "tez.am.node-blacklisting.enabled" : "false",
          "tez.history.logging.taskattempt-filters" : "SERVICE_BUSY,EXTERNAL_PREEMPTION",
          "tez.am.client.heartbeat.poll.interval.millis" : "6000",
          "tez.container.max.java.heap.fraction" : "-1",
          "tez.runtime.unordered.output.buffer.size-mb" : "100",
          "tez.runtime.shuffle.memory.limit.percent" : "0.25",
          "tez.runtime.pipelined-shuffle.enabled" : "false",
          "tez.runtime.shuffle.fetch.verify-disk-checksum" : "false",
          "tez.runtime.shuffle.parallel.copies" : "8",
          "tez.session.am.dag.submit.timeout.secs" : "1209600",
          "tez.dag.recovery.enabled" : "false",
          "tez.task.heartbeat.timeout.check-ms" : "15000",
          "tez.am.resource.memory.mb" : "1536",
          "tez.lib.uris" : "/apps/tez/tez.tar.gz",
          "tez.am.task.listener.thread-count" : "1",
          "tez.history.logging.timeline.num-dags-per-group" : "5",
          "tez.grouping.node.local.only" : "true",
          "tez.runtime.io.sort.mb" : "512"
        }
      }
    },
    {
      "hive-exec-log4j" : {
        "properties_attributes" : { },
        "properties" : {
          "content" : "\n# Licensed to the Apache Software Foundation (ASF) under one\n# or more contributor license agreements.  See the NOTICE file\n# distributed with this work for additional information\n# regarding copyright ownership.  The ASF licenses this file\n# to you under the Apache License, Version 2.0 (the\n# \"License\"); you may not use this file except in compliance\n# with the License.  You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\n# Define some default values that can be overridden by system properties\n\nhive.log.threshold=ALL\nhive.root.logger=INFO,FA\nhive.log.dir=${java.io.tmpdir}/${user.name}\nhive.query.id=hadoop\nhive.log.file=${hive.query.id}.log\n\n# Define the root logger to the system property \"hadoop.root.logger\".\nlog4j.rootLogger=${hive.root.logger}, EventCounter\n\n# Logging Threshold\nlog4j.threshhold=${hive.log.threshold}\n\n#\n# File Appender\n#\n\nlog4j.appender.FA=org.apache.log4j.FileAppender\nlog4j.appender.FA.File=${hive.log.dir}/${hive.log.file}\nlog4j.appender.FA.layout=org.apache.log4j.PatternLayout\n\n# Pattern format: Date LogLevel LoggerName LogMessage\n#log4j.appender.DRFA.layout.ConversionPattern=%d{ISO8601} %p %c: %m%n\n# Debugging Pattern format\nlog4j.appender.FA.layout.ConversionPattern=%d{ISO8601} %-5p %c{2} (%F:%M(%L)) - %m%n\n\n\n#\n# console\n# Add \"console\" to rootlogger above if you want to use this\n#\n\nlog4j.appender.console=org.apache.log4j.ConsoleAppender\nlog4j.appender.console.target=System.err\nlog4j.appender.console.layout=org.apache.log4j.PatternLayout\nlog4j.appender.console.layout.ConversionPattern=%d{yy/MM/dd HH:mm:ss} %p %c{2}: %m%n\n\n#custom logging levels\n#log4j.logger.xxx=DEBUG\n\n#\n# Event Counter Appender\n# Sends counts of logging messages at different severity levels to Hadoop Metrics.\n#\nlog4j.appender.EventCounter=org.apache.hadoop.hive.shims.HiveEventCounter\n\n\nlog4j.category.DataNucleus=ERROR,FA\nlog4j.category.Datastore=ERROR,FA\nlog4j.category.Datastore.Schema=ERROR,FA\nlog4j.category.JPOX.Datastore=ERROR,FA\nlog4j.category.JPOX.Plugin=ERROR,FA\nlog4j.category.JPOX.MetaData=ERROR,FA\nlog4j.category.JPOX.Query=ERROR,FA\nlog4j.category.JPOX.General=ERROR,FA\nlog4j.category.JPOX.Enhancer=ERROR,FA\n\n\n# Silence useless ZK logs\nlog4j.logger.org.apache.zookeeper.server.NIOServerCnxn=WARN,FA\nlog4j.logger.org.apache.zookeeper.ClientCnxnSocketNIO=WARN,FA"
        }
      }
    },
    {
      "spark2-defaults" : {
        "properties_attributes" : { },
        "properties" : {
          "spark.history.kerberos.keytab" : "none",
          "spark.yarn.archive" : "hdfs:///apps/spark2/jars/spark2-ADH-yarn-archive.tar.gz",
          "spark.driver.extraLibraryPath" : "{{spark_hadoop_lib_native}}",
          "spark.driver.extraClassPath" : "/usr/lib/hadoop-hdfs/hadoop-hdfs.jar:/usr/lib/hadoop-hdfs/hadoop-hdfs-client.jar:/usr/lib/hadoop-hdfs/hadoop-hdfs-native-client.jar:/usr/lib/hadoop-hdfs/hadoop-hdfs-nfs.jar:/usr/lib/hadoop/hadoop-annotations.jar:/usr/lib/hadoop/hadoop-auth.jar:/usr/lib/hadoop/hadoop-common.jar:/usr/lib/hadoop-yarn/hadoop-yarn-client.jar:/usr/lib/hadoop-yarn/hadoop-yarn-api.jar:/usr/lib/hadoop/hadoop-yarn-server-common.jar",
          "spark.executor.extraLibraryPath" : "{{spark_hadoop_lib_native}}",
          "spark.history.provider" : "org.apache.spark.deploy.history.FsHistoryProvider",
          "spark.yarn.jars" : "hdfs:///apps/spark2/jars",
          "spark.history.ui.port" : "18081",
          "spark.eventLog.dir" : "hdfs:///spark2-history/",
          "spark.eventLog.enabled" : "true",
          "spark.yarn.historyServer.address" : "{{spark_history_server_host}}:{{spark_history_ui_port}}",
          "spark.history.fs.logDirectory" : "hdfs:///spark2-history/",
          "spark.yarn.queue" : "default"
        }
      }
    },
    {
      "ranger-nifi-security" : {
        "properties_attributes" : { },
        "properties" : { }
      }
    },
    {
      "webhcat-env" : {
        "properties_attributes" : { },
        "properties" : {
          "content" : "\n# The file containing the running pid\nPID_FILE={{webhcat_pid_file}}\n\nTEMPLETON_LOG_DIR={{templeton_log_dir}}/\n\n\nWEBHCAT_LOG_DIR={{templeton_log_dir}}/\n\n# The console error log\nERROR_LOG={{templeton_log_dir}}/webhcat-console-error.log\n\n# The console log\nCONSOLE_LOG={{templeton_log_dir}}/webhcat-console.log\n\n#TEMPLETON_JAR=templeton_jar_name\n\n#HADOOP_PREFIX=hadoop_prefix\n\n#HCAT_PREFIX=hive_prefix\n\n# Set HADOOP_HOME to point to a specific hadoop install directory\nexport HADOOP_HOME=${HADOOP_HOME:-{{hadoop_home}}}"
        }
      }
    },
    {
      "hdfs-site" : {
        "properties_attributes" : {
          "final" : {
            "dfs.webhdfs.enabled" : "true",
            "dfs.namenode.http-address" : "true",
            "dfs.support.append" : "true",
            "dfs.namenode.name.dir" : "true",
            "dfs.datanode.failed.volumes.tolerated" : "true",
            "dfs.datanode.data.dir" : "true"
          }
        },
        "properties" : {
          "dfs.replication" : "1",
          "dfs.namenode.audit.log.async" : "true",
          "dfs.namenode.checkpoint.dir" : "/hadoop/hdfs/namesecondary",
          "dfs.namenode.avoid.read.stale.datanode" : "true",
          "manage.include.files" : "false",
          "dfs.journalnode.http-address" : "0.0.0.0:8480",
          "nfs.file.dump.dir" : "/tmp/.hdfs-nfs",
          "dfs.namenode.rpc-address" : "%HOSTGROUP::host_group_1%:8020",
          "dfs.namenode.https-address" : "%HOSTGROUP::host_group_1%:50470",
          "dfs.encrypt.data.transfer.cipher.suites" : "AES/CTR/NoPadding",
          "dfs.client.read.shortcircuit.streams.cache.size" : "4096",
          "dfs.hosts.exclude" : "/etc/hadoop/conf/dfs.exclude",
          "dfs.namenode.accesstime.precision" : "0",
          "dfs.namenode.fslock.fair" : "false",
          "dfs.permissions.enabled" : "true",
          "dfs.datanode.balance.bandwidthPerSec" : "6250000",
          "dfs.namenode.stale.datanode.interval" : "30000",
          "dfs.content-summary.limit" : "5000",
          "dfs.http.policy" : "HTTP_ONLY",
          "dfs.journalnode.https-address" : "0.0.0.0:8481",
          "dfs.datanode.du.reserved" : "6375079936",
          "dfs.domain.socket.path" : "/var/lib/hadoop-hdfs/dn_socket",
          "dfs.datanode.ipc.address" : "0.0.0.0:8010",
          "dfs.cluster.administrators" : " hdfs",
          "dfs.datanode.max.transfer.threads" : "16384",
          "dfs.namenode.handler.count" : "150",
          "dfs.https.port" : "50470",
          "dfs.replication.max" : "50",
          "dfs.client.read.shortcircuit" : "true",
          "dfs.webhdfs.enabled" : "true",
          "dfs.namenode.http-address" : "%HOSTGROUP::host_group_1%:50070",
          "dfs.namenode.name.dir" : "/hadoop/hdfs/namenode",
          "dfs.namenode.avoid.write.stale.datanode" : "true",
          "dfs.datanode.https.address" : "0.0.0.0:50475",
          "dfs.datanode.failed.volumes.tolerated" : "0",
          "dfs.client.retry.policy.enabled" : "false",
          "hadoop.caller.context.enabled" : "true",
          "dfs.namenode.startup.delay.block.deletion.sec" : "3600",
          "dfs.block.access.token.enable" : "true",
          "dfs.datanode.data.dir" : "/hadoop/hdfs/data",
          "dfs.permissions.superusergroup" : "hdfs",
          "dfs.blocksize" : "134217728",
          "dfs.namenode.checkpoint.edits.dir" : "${dfs.namenode.checkpoint.dir}",
          "nfs.exports.allowed.hosts" : "* rw",
          "dfs.datanode.address" : "0.0.0.0:50010",
          "dfs.blockreport.initialDelay" : "120",
          "dfs.datanode.data.dir.perm" : "750",
          "dfs.namenode.write.stale.datanode.ratio" : "1.0f",
          "dfs.namenode.name.dir.restore" : "true",
          "dfs.heartbeat.interval" : "3",
          "dfs.namenode.secondary.http-address" : "%HOSTGROUP::host_group_1%:50090",
          "dfs.namenode.checkpoint.txns" : "1000000",
          "dfs.journalnode.edits.dir" : "/hadoop/hdfs/journalnode",
          "dfs.support.append" : "true",
          "fs.permissions.umask-mode" : "022",
          "dfs.namenode.safemode.threshold-pct" : "1",
          "dfs.namenode.checkpoint.period" : "21600",
          "dfs.datanode.http.address" : "0.0.0.0:50075"
        }
      }
    },
    {
      "logsearch-common-env" : {
        "properties_attributes" : { },
        "properties" : {
          "logsearch_external_solr_ssl_enabled" : "false",
          "logsearch_external_solr_zk_znode" : "/solr",
          "logsearch_use_external_solr" : "false",
          "logsearch_external_solr_kerberos_enabled" : "false",
          "logsearch_external_solr_zk_quorum" : "adh16-blueprint:2181"
        }
      }
    },
    {
      "atlas-env" : {
        "properties_attributes" : { },
        "properties" : {
          "atlas_server_max_new_size" : "600",
          "atlas_server_metadata_size" : "50000",
          "metadata_log_dir" : "/var/log/atlas",
          "metadata_conf_file" : "atlas-application.properties",
          "metadata_classpath" : " ",
          "atlas_solr_replication_factor" : "1",
          "metadata_expanded_war_dir" : "./server/webapp",
          "content" : "\n      # The java implementation to use. If JAVA_HOME is not found we expect java and jar to be in path\n      export JAVA_HOME={{java64_home}}\n\n      # any additional java opts you want to set. This will apply to both client and server operations\n      {% if security_enabled %}\n      export ATLAS_OPTS=\"{{metadata_opts}} -Djava.security.auth.login.config={{atlas_jaas_file}}\"\n      {% else %}\n      export ATLAS_OPTS=\"{{metadata_opts}}\"\n      {% endif %}\n\n      # metadata configuration directory\n      export ATLAS_CONF={{conf_dir}}\n\n      # Where log files are stored. Defatult is logs directory under the base install location\n      export ATLAS_LOG_DIR={{log_dir}}\n\n      # additional classpath entries\n      export ATLASCPPATH={{metadata_classpath}}\n\n      # data dir\n      export ATLAS_DATA_DIR={{data_dir}}\n\n      # pid dir\n      export ATLAS_PID_DIR={{pid_dir}}\n\n      # hbase conf dir\n      export HBASE_CONF_DIR={{hbase_conf_dir}}\n\n      # Where do you want to expand the war file. By Default it is in /server/webapp dir under the base install dir.\n      export ATLAS_EXPANDED_WEBAPP_DIR={{expanded_war_dir}}\n      export ATLAS_SERVER_OPTS=\"-server -XX:SoftRefLRUPolicyMSPerMB=0 -XX:+CMSClassUnloadingEnabled -XX:+UseConcMarkSweepGC -XX:+CMSParallelRemarkEnabled -XX:+PrintTenuringDistribution -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=$ATLAS_LOG_DIR/atlas_server.hprof -Xloggc:$ATLAS_LOG_DIR/gc-worker.log -verbose:gc -XX:+UseGCLogFileRotation -XX:NumberOfGCLogFiles=10 -XX:GCLogFileSize=1m -XX:+PrintGCDetails -XX:+PrintHeapAtGC -XX:+PrintGCTimeStamps\"\n      {% if java_version == 8 %}\n      export ATLAS_SERVER_HEAP=\"-Xms{{atlas_server_xmx}}m -Xmx{{atlas_server_xmx}}m -XX:MaxNewSize={{atlas_server_max_new_size}}m -XX:MetaspaceSize=100m -XX:MaxMetaspaceSize=512m\"\n      {% else %}\n      export ATLAS_SERVER_HEAP=\"-Xms{{atlas_server_xmx}}m -Xmx{{atlas_server_xmx}}m -XX:MaxNewSize={{atlas_server_max_new_size}}m -XX:MaxPermSize=512m\"\n      {% endif %}",
          "atlas.admin.username" : "admin",
          "metadata_user" : "atlas",
          "atlas_server_xmx" : "2048",
          "metadata_opts" : "-Dlog4j.configuration=atlas-log4j.xml",
          "atlas_solr_shards" : "1",
          "atlas.hbase.conf.dir" : "/etc/hbase/conf",
          "metadata_data_dir" : "/var/lib/atlas/data",
          "metadata_pid_dir" : "/var/run/atlas"
        }
      }
    },
    {
      "logfeeder-properties" : {
        "properties_attributes" : { },
        "properties" : {
          "logfeeder.cache.last.dedup.enabled" : "false",
          "logfeeder.cache.enabled" : "false",
          "logfeeder.log.filter.enable" : "true",
          "logfeeder.cache.size" : "100",
          "logfeeder.solr.config.interval" : "5",
          "logfeeder.cache.key.field" : "log_message",
          "logfeeder.cache.dedup.interval" : "1000",
          "logfeeder.checkpoint.folder" : "/etc/ambari-logsearch-logfeeder/conf/checkpoints",
          "logfeeder.metrics.collector.hosts" : "{metrics_collector_hosts}",
          "logfeeder.config.files" : "{default_config_files}"
        }
      }
    },
    {
      "yarn-site" : {
        "properties_attributes" : { },
        "properties" : {
          "yarn.log-aggregation.file-formats" : "IndexedFormat,TFile",
          "yarn.resourcemanager.zk-address" : "%HOSTGROUP::host_group_1%:2181",
          "yarn.nodemanager.container-monitor.interval-ms" : "3000",
          "yarn.timeline-service.entity-group-fs-store.active-dir" : "/ats/active/",
          "yarn.log.server.web-service.url" : "http://%HOSTGROUP::host_group_1%:8188/ws/v1/applicationhistory",
          "yarn.nodemanager.linux-container-executor.group" : "hadoop",
          "yarn.application.classpath" : "$HADOOP_CONF_DIR,/usr/lib/hadoop/*,/usr/lib/hadoop/lib/*,/usr/lib/hadoop-hdfs/*,/usr/lib/hadoop-hdfs/lib/*,/usr/lib/hadoop-yarn/*,/usr/lib/hadoop-yarn/lib/*,/usr/lib/hadoop-mapreduce/*,/usr/lib/hadoop-mapreduce/lib/*",
          "yarn.nodemanager.kill-escape.launch-command-line" : "slider-agent,LLAP",
          "yarn.admin.acl" : "yarn",
          "yarn.timeline-service.entity-group-fs-store.cleaner-interval-seconds" : "3600",
          "yarn.nodemanager.remote-app-log-dir-suffix" : "logs",
          "yarn.nodemanager.address" : "0.0.0.0:45454",
          "yarn.resourcemanager.webapp.address" : "%HOSTGROUP::host_group_1%:8088",
          "yarn.timeline-service.leveldb-timeline-store.ttl-interval-ms" : "300000",
          "yarn.scheduler.maximum-allocation-vcores" : "2",
          "yarn.timeline-service.address" : "%HOSTGROUP::host_group_1%:10200",
          "yarn.timeline-service.enabled" : "true",
          "yarn.nodemanager.aux-services" : "mapreduce_shuffle,spark_shuffle",
          "yarn.nodemanager.resource.cpu-vcores" : "8",
          "yarn.resourcemanager.webapp.delegation-token-auth-filter.enabled" : "false",
          "yarn.nodemanager.aux-services.spark_shuffle.class" : "org.apache.spark.network.yarn.YarnShuffleService",
          "yarn.nodemanager.log-aggregation.debug-enabled" : "false",
          "yarn.resourcemanager.zk-acl" : "world:anyone:rwcda",
          "yarn.client.nodemanager-connect.max-wait-ms" : "60000",
          "yarn.http.policy" : "HTTP_ONLY",
          "yarn.timeline-service.http-authentication.simple.anonymous.allowed" : "true",
          "yarn.resourcemanager.zk-state-store.parent-path" : "/rmstore",
          "yarn.timeline-service.leveldb-timeline-store.start-time-read-cache-size" : "10000",
          "yarn.resourcemanager.admin.address" : "%HOSTGROUP::host_group_1%:8141",
          "yarn.nodemanager.linux-container-executor.cgroups.strict-resource-usage" : "false",
          "yarn.resourcemanager.resource-tracker.address" : "%HOSTGROUP::host_group_1%:8025",
          "yarn.nodemanager.delete.debug-delay-sec" : "0",
          "yarn.resourcemanager.fs.state-store.retry-policy-spec" : "2000, 500",
          "yarn.timeline-service.http-authentication.type" : "simple",
          "yarn.timeline-service.ttl-enable" : "true",
          "yarn.timeline-service.entity-group-fs-store.retain-seconds" : "604800",
          "yarn.log-aggregation.retain-seconds" : "2592000",
          "yarn.nodemanager.resource.memory-mb" : "19968",
          "yarn.nodemanager.disk-health-checker.min-healthy-disks" : "0.25",
          "yarn.node-labels.enabled" : "false",
          "yarn.nodemanager.kill-escape.user" : "hive",
          "yarn.resourcemanager.connect.max-wait.ms" : "-1",
          "yarn.resourcemanager.zk-num-retries" : "1000",
          "yarn.scheduler.minimum-allocation-vcores" : "1",
          "yarn.resourcemanager.scheduler.class" : "org.apache.hadoop.yarn.server.resourcemanager.scheduler.capacity.CapacityScheduler",
          "yarn.resourcemanager.system-metrics-publisher.enabled" : "true",
          "yarn.timeline-service.client.max-retries" : "30",
          "yarn.timeline-service.client.retry-interval-ms" : "1000",
          "yarn.timeline-service.http-authentication.proxyuser.root.hosts" : "adh16-blueprint",
          "yarn.timeline-service.store-class" : "org.apache.hadoop.yarn.server.timeline.EntityGroupFSTimelineStore",
          "yarn.timeline-service.bind-host" : "0.0.0.0",
          "yarn.nodemanager.container-metrics.unregister-delay-ms" : "60000",
          "yarn.timeline-service.generic-application-history.store-class" : "org.apache.hadoop.yarn.server.applicationhistoryservice.NullApplicationHistoryStore",
          "yarn.resourcemanager.fs.state-store.uri" : " ",
          "yarn.resourcemanager.recovery.enabled" : "true",
          "yarn.timeline-service.entity-group-fs-store.group-id-plugin-classpath" : "",
          "yarn.resourcemanager.scheduler.address" : "%HOSTGROUP::host_group_1%:8030",
          "yarn.timeline-service.client.fd-flush-interval-secs" : "5",
          "yarn.timeline-service.leveldb-timeline-store.start-time-write-cache-size" : "10000",
          "yarn.timeline-service.ttl-ms" : "2678400000",
          "yarn.nodemanager.health-checker.script.timeout-ms" : "60000",
          "yarn.log.server.url" : "http://%HOSTGROUP::host_group_1%:19888/jobhistory/logs",
          "yarn.timeline-service.entity-group-fs-store.group-id-plugin-classes" : "org.apache.tez.dag.history.logging.ats.TimelineCachePluginImpl",
          "yarn.resourcemanager.address" : "%HOSTGROUP::host_group_1%:8050",
          "yarn.timeline-service.recovery.enabled" : "true",
          "yarn.nodemanager.recovery.dir" : "{{yarn_log_dir_prefix}}/nodemanager/recovery-state",
          "yarn.resourcemanager.scheduler.monitor.enable" : "false",
          "hadoop.registry.rm.enabled" : "true",
          "yarn.resourcemanager.bind-host" : "0.0.0.0",
          "yarn.nodemanager.log-aggregation.num-log-files-per-app" : "336",
          "yarn.nodemanager.admin-env" : "MALLOC_ARENA_MAX=$MALLOC_ARENA_MAX",
          "yarn.resourcemanager.system-metrics-publisher.dispatcher.pool-size" : "10",
          "yarn.acl.enable" : "false",
          "manage.include.files" : "false",
          "yarn.resourcemanager.ha.enabled" : "false",
          "yarn.timeline-service.entity-group-fs-store.app-cache-size" : "10",
          "yarn.client.nodemanager-connect.retry-interval-ms" : "10000",
          "yarn.timeline-service.version" : "1.5",
          "yarn.timeline-service.leveldb-timeline-store.read-cache-size" : "104857600",
          "yarn.resourcemanager.monitor.capacity.preemption.natural_termination_factor" : "1",
          "yarn.nodemanager.local-dirs" : "/hadoop/yarn/local",
          "yarn.timeline-service.leveldb-timeline-store.path" : "/var/log/hadoop-yarn/timeline",
          "yarn.nodemanager.recovery.enabled" : "true",
          "yarn.log-aggregation.file-controller.IndexedFormat.class" : "org.apache.hadoop.yarn.logaggregation.filecontroller.ifile.LogAggregationIndexedFileController",
          "yarn.resourcemanager.zk-timeout-ms" : "10000",
          "yarn.resourcemanager.am.max-attempts" : "2",
          "yarn.resourcemanager.state-store.max-completed-applications" : "${yarn.resourcemanager.max-completed-applications}",
          "yarn.node-labels.fs-store.root-dir" : "/system/yarn/node-labels",
          "yarn.node-labels.fs-store.retry-policy-spec" : "2000, 500",
          "yarn.nodemanager.aux-services.mapreduce_shuffle.class" : "org.apache.hadoop.mapred.ShuffleHandler",
          "yarn.log-aggregation-enable" : "true",
          "yarn.resourcemanager.work-preserving-recovery.enabled" : "true",
          "yarn.nodemanager.aux-services.spark_shuffle.classpath" : "/usr/lib/spark/jars/*",
          "yarn.resourcemanager.store.class" : "org.apache.hadoop.yarn.server.resourcemanager.recovery.ZKRMStateStore",
          "yarn.timeline-service.http-authentication.proxyuser.root.groups" : "*",
          "yarn.timeline-service.leveldb-state-store.path" : "/hadoop/yarn/timeline",
          "yarn.nodemanager.log.retain-seconds" : "604800",
          "yarn.timeline-service.entity-group-fs-store.done-dir" : "/ats/done/",
          "yarn.nodemanager.disk-health-checker.max-disk-utilization-per-disk-percentage" : "90",
          "hadoop.registry.zk.quorum" : "%HOSTGROUP::host_group_1%:2181",
          "yarn.nodemanager.log-aggregation.roll-monitoring-interval-seconds" : "3600",
          "yarn.nodemanager.container-executor.class" : "org.apache.hadoop.yarn.server.nodemanager.DefaultContainerExecutor",
          "yarn.resourcemanager.nodes.exclude-path" : "/etc/hadoop/conf/yarn.exclude",
          "yarn.timeline-service.state-store-class" : "org.apache.hadoop.yarn.server.timeline.recovery.LeveldbTimelineStateStore",
          "yarn.log-aggregation.file-controller.TFile.class" : "org.apache.hadoop.yarn.logaggregation.filecontroller.tfile.LogAggregationTFileController",
          "yarn.nodemanager.bind-host" : "0.0.0.0",
          "yarn.resourcemanager.hostname" : "%HOSTGROUP::host_group_1%",
          "yarn.resourcemanager.monitor.capacity.preemption.total_preemption_per_round" : "1",
          "yarn.resourcemanager.connect.retry-interval.ms" : "15000",
          "yarn.timeline-service.webapp.address" : "%HOSTGROUP::host_group_1%:8188",
          "yarn.scheduler.minimum-allocation-mb" : "1024",
          "yarn.timeline-service.entity-group-fs-store.summary-store" : "org.apache.hadoop.yarn.server.timeline.RollingLevelDBTimelineStore",
          "yarn.nodemanager.health-checker.interval-ms" : "135000",
          "yarn.nodemanager.disk-health-checker.min-free-space-per-disk-mb" : "1000",
          "yarn.resourcemanager.zk-retry-interval-ms" : "1000",
          "yarn.scheduler.capacity.ordering-policy.priority-utilization.underutilized-preemption.enabled" : "false",
          "yarn.nodemanager.remote-app-log-dir" : "/app-logs",
          "yarn.scheduler.maximum-allocation-mb" : "6400",
          "yarn.nodemanager.vmem-check-enabled" : "false",
          "yarn.timeline-service.entity-group-fs-store.scan-interval-seconds" : "15",
          "yarn.resourcemanager.webapp.https.address" : "%HOSTGROUP::host_group_1%:8090",
          "yarn.timeline-service.webapp.https.address" : "%HOSTGROUP::host_group_1%:8190",
          "yarn.nodemanager.resource.percentage-physical-cpu-limit" : "80",
          "yarn.nodemanager.vmem-pmem-ratio" : "2.1",
          "yarn.nodemanager.log-aggregation.compression-type" : "gz",
          "yarn.resourcemanager.work-preserving-recovery.scheduling-wait-ms" : "10000",
          "yarn.nodemanager.log-dirs" : "/hadoop/yarn/log"
        }
      }
    },
    {
      "hiveserver2-site" : {
        "properties_attributes" : { },
        "properties" : {
          "hive.security.authorization.enabled" : "false"
        }
      }
    },
    {
      "nifi-flow-env" : {
        "properties_attributes" : { },
        "properties" : {
          "content" : "\n<flowController>\n  <maxTimerDrivenThreadCount>10</maxTimerDrivenThreadCount>\n  <maxEventDrivenThreadCount>5</maxEventDrivenThreadCount>\n  <rootGroup>\n    <id>7c84501d-d10c-407c-b9f3-1d80e38fe36a</id>\n    <name>NiFi Flow</name>\n    <position x=\"0.0\" y=\"0.0\"/>\n    <comment/>\n  </rootGroup>\n  <controllerServices/>\n  <reportingTasks>\n    <reportingTask>\n      <id>3b80ba0f-a6c0-48db-b721-4dbc04cef28e</id>\n      <name>AmbariReportingTask</name>\n      <comment/>\n      <class>org.apache.nifi.reporting.ambari.AmbariReportingTask</class>\n      <schedulingPeriod>{{nifi_ambari_reporting_frequency}}</schedulingPeriod>\n      <scheduledState>RUNNING</scheduledState>\n      <schedulingStrategy>TIMER_DRIVEN</schedulingStrategy>\n      <property>\n        <name>Metrics Collector URL</name>\n        <value>${ambari.metrics.collector.url}</value>\n      </property>\n      <property>\n        <name>Application ID</name>\n        <value>${ambari.application.id}</value>\n      </property>\n      <property>\n        <name>Hostname</name>\n        <value>${hostname(true)}</value>\n      </property>\n    </reportingTask>\n  </reportingTasks>\n</flowController>"
        }
      }
    },
    {
      "ranger-atlas-plugin-properties" : {
        "properties_attributes" : { },
        "properties" : { }
      }
    },
    {
      "yarn-logsearch-conf" : {
        "properties_attributes" : { },
        "properties" : {
          "component_mappings" : "RESOURCEMANAGER:yarn_resourcemanager,yarn_historyserver,yarn_jobsummary;NODEMANAGER:yarn_nodemanager;APP_TIMELINE_SERVER:yarn_timelineserver",
          "content" : "\n{\n  \"input\":[\n    {\n      \"type\":\"yarn_nodemanager\",\n      \"rowtype\":\"service\",\n      \"path\":\"{{default('/configurations/yarn-env/yarn_log_dir_prefix', '/var/log/hadoop')}}/{{default('configurations/yarn-env/yarn_user', 'yarn')}}/yarn-{{default('configurations/yarn-env/yarn_user', 'yarn')}}-nodemanager-*.log\"\n    },\n    {\n      \"type\":\"yarn_resourcemanager\",\n      \"rowtype\":\"service\",\n      \"path\":\"{{default('/configurations/yarn-env/yarn_log_dir_prefix', '/var/log/hadoop')}}/{{default('configurations/yarn-env/yarn_user', 'yarn')}}/yarn-{{default('configurations/yarn-env/yarn_user', 'yarn')}}-resourcemanager-*.log\"\n    },\n    {\n      \"type\":\"yarn_timelineserver\",\n      \"rowtype\":\"service\",\n      \"path\":\"{{default('/configurations/yarn-env/yarn_log_dir_prefix', '/var/log/hadoop')}}/{{default('configurations/yarn-env/yarn_user', 'yarn')}}/yarn-{{default('configurations/yarn-env/yarn_user', 'yarn')}}-timelineserver-*.log\"\n    },\n    {\n      \"type\":\"yarn_historyserver\",\n      \"rowtype\":\"service\",\n      \"path\":\"{{default('/configurations/yarn-env/yarn_log_dir_prefix', '/var/log/hadoop')}}/{{default('configurations/yarn-env/yarn_user', 'yarn')}}/yarn-{{default('configurations/yarn-env/yarn_user', 'yarn')}}-historyserver-*.log\"\n    },\n    {\n      \"type\":\"yarn_jobsummary\",\n      \"rowtype\":\"service\",\n      \"path\":\"{{default('/configurations/yarn-env/yarn_log_dir_prefix', '/var/log/hadoop')}}/{{default('configurations/yarn-env/yarn_user', 'yarn')}}/hadoop-mapreduce.jobsummary.log\"\n    }\n   ],\n  \"filter\":[\n    {\n      \"filter\":\"grok\",\n      \"conditions\":{\n        \"fields\":{\n          \"type\":[\n            \"yarn_historyserver\",\n            \"yarn_jobsummary\",\n            \"yarn_nodemanager\",\n            \"yarn_resourcemanager\",\n            \"yarn_timelineserver\"\n          ]\n         }\n       },\n      \"log4j_format\":\"%d{ISO8601} %-5p %c{2} (%F:%M(%L)) - %m%n\",\n      \"multiline_pattern\":\"^(%{TIMESTAMP_ISO8601:logtime})\",\n      \"message_pattern\":\"(?m)^%{TIMESTAMP_ISO8601:logtime}%{SPACE}%{LOGLEVEL:level}%{SPACE}%{JAVACLASS:logger_name}%{SPACE}\\\\(%{JAVAFILE:file}:%{JAVAMETHOD:method}\\\\(%{INT:line_number}\\\\)\\\\)%{SPACE}-%{SPACE}%{GREEDYDATA:log_message}\",\n      \"post_map_values\":{\n        \"logtime\":{\n          \"map_date\":{\n            \"target_date_pattern\":\"yyyy-MM-dd HH:mm:ss,SSS\"\n          }\n         }\n       }\n     }\n   ]\n}",
          "service_name" : "YARN"
        }
      }
    },
    {
      "ams-hbase-security-site" : {
        "properties_attributes" : { },
        "properties" : {
          "hbase.coprocessor.master.classes" : "",
          "hbase.myclient.keytab" : "",
          "hadoop.security.authentication" : "",
          "ams.zookeeper.keytab" : "",
          "hbase.zookeeper.property.jaasLoginRenew" : "",
          "hbase.regionserver.keytab.file" : "",
          "hbase.zookeeper.property.authProvider.1" : "",
          "hbase.zookeeper.property.kerberos.removeHostFromPrincipal" : "",
          "hbase.coprocessor.region.classes" : "",
          "hbase.security.authentication" : "",
          "hbase.master.keytab.file" : "",
          "hbase.security.authorization" : "",
          "hbase.zookeeper.property.kerberos.removeRealmFromPrincipal" : ""
        }
      }
    },
    {
      "ranger-yarn-plugin-properties" : {
        "properties_attributes" : { },
        "properties" : { }
      }
    },
    {
      "sqoop-env" : {
        "properties_attributes" : { },
        "properties" : {
          "jdbc_drivers" : " ",
          "sqoop.atlas.hook" : "true",
          "sqoop_user" : "sqoop",
          "content" : "\n# Set Hadoop-specific environment variables here.\n\n#Set path to where bin/hadoop is available\n#Set path to where bin/hadoop is available\nexport HADOOP_HOME=${HADOOP_HOME:-{{hadoop_home}}}\n\n#set the path to where bin/hbase is available\nexport HBASE_HOME=${HBASE_HOME:-{{hbase_home}}}\n\n#Set the path to where bin/hive is available\nexport HIVE_HOME=${HIVE_HOME:-{{hive_home}}}\n\n#Set the path for where zookeper config dir is\nexport ZOOCFGDIR=${ZOOCFGDIR:-/etc/zookeeper/conf}\n\n# add libthrift in hive to sqoop class path first so hive imports work\nexport SQOOP_USER_CLASSPATH=\"`ls ${HIVE_HOME}/lib/libthrift-*.jar 2> /dev/null`:${SQOOP_USER_CLASSPATH}\""
        }
      }
    },
    {
      "yarn-env" : {
        "properties_attributes" : { },
        "properties" : {
          "yarn_cgroups_enabled" : "false",
          "yarn_user_nproc_limit" : "65536",
          "yarn_log_dir_prefix" : "/var/log/hadoop-yarn",
          "apptimelineserver_heapsize" : "8072",
          "yarn_user_nofile_limit" : "32768",
          "content" : "\n      export HADOOP_YARN_HOME={{hadoop_yarn_home}}\n      USER=\"$(whoami)\"\n      export YARN_LOG_DIR={{yarn_log_dir_prefix}}/$USER\n      export YARN_PID_DIR={{yarn_pid_dir_prefix}}/$USER\n      export HADOOP_LIBEXEC_DIR={{hadoop_libexec_dir}}\n      export JAVA_HOME={{java64_home}}\n      export JAVA_LIBRARY_PATH=\"${JAVA_LIBRARY_PATH}:{{hadoop_java_io_tmpdir}}\"\n\n      # We need to add the EWMA appender for the yarn daemons only;\n      # however, YARN_ROOT_LOGGER is shared by the yarn client and the\n      # daemons. This is restrict the EWMA appender to daemons only.\n      INVOKER=\"${0##*/}\"\n      if [ \"$INVOKER\" == \"yarn-daemon.sh\" ]; then\n        export YARN_ROOT_LOGGER=${YARN_ROOT_LOGGER:-INFO,EWMA,RFA}\n      fi\n\n      # User for YARN daemons\n      export HADOOP_YARN_USER=${HADOOP_YARN_USER:-yarn}\n\n      # resolve links - $0 may be a softlink\n      export YARN_CONF_DIR=\"${YARN_CONF_DIR:-$HADOOP_YARN_HOME/conf}\"\n\n      # some Java parameters\n      # export JAVA_HOME=/home/y/libexec/jdk1.6.0/\n      if [ \"$JAVA_HOME\" != \"\" ]; then\n      #echo \"run java in $JAVA_HOME\"\n      JAVA_HOME=$JAVA_HOME\n      fi\n\n      if [ \"$JAVA_HOME\" = \"\" ]; then\n      echo \"Error: JAVA_HOME is not set.\"\n      exit 1\n      fi\n\n      JAVA=$JAVA_HOME/bin/java\n      JAVA_HEAP_MAX=-Xmx1000m\n\n      # For setting YARN specific HEAP sizes please use this\n      # Parameter and set appropriately\n      YARN_HEAPSIZE={{yarn_heapsize}}\n\n      # check envvars which might override default args\n      if [ \"$YARN_HEAPSIZE\" != \"\" ]; then\n      JAVA_HEAP_MAX=\"-Xmx\"\"$YARN_HEAPSIZE\"\"m\"\n      fi\n\n      # Resource Manager specific parameters\n\n      # Specify the max Heapsize for the ResourceManager using a numerical value\n      # in the scale of MB. For example, to specify an jvm option of -Xmx1000m, set\n      # the value to 1000.\n      # This value will be overridden by an Xmx setting specified in either YARN_OPTS\n      # and/or YARN_RESOURCEMANAGER_OPTS.\n      # If not specified, the default value will be picked from either YARN_HEAPMAX\n      # or JAVA_HEAP_MAX with YARN_HEAPMAX as the preferred option of the two.\n      export YARN_RESOURCEMANAGER_HEAPSIZE={{resourcemanager_heapsize}}\n\n      # Specify the JVM options to be used when starting the ResourceManager.\n      # These options will be appended to the options specified as YARN_OPTS\n      # and therefore may override any similar flags set in YARN_OPTS\n      #export YARN_RESOURCEMANAGER_OPTS=\n\n      # Node Manager specific parameters\n\n      # Specify the max Heapsize for the NodeManager using a numerical value\n      # in the scale of MB. For example, to specify an jvm option of -Xmx1000m, set\n      # the value to 1000.\n      # This value will be overridden by an Xmx setting specified in either YARN_OPTS\n      # and/or YARN_NODEMANAGER_OPTS.\n      # If not specified, the default value will be picked from either YARN_HEAPMAX\n      # or JAVA_HEAP_MAX with YARN_HEAPMAX as the preferred option of the two.\n      export YARN_NODEMANAGER_HEAPSIZE={{nodemanager_heapsize}}\n\n      # Specify the max Heapsize for the timeline server using a numerical value\n      # in the scale of MB. For example, to specify an jvm option of -Xmx1000m, set\n      # the value to 1024.\n      # This value will be overridden by an Xmx setting specified in either YARN_OPTS\n      # and/or YARN_TIMELINESERVER_OPTS.\n      # If not specified, the default value will be picked from either YARN_HEAPMAX\n      # or JAVA_HEAP_MAX with YARN_HEAPMAX as the preferred option of the two.\n      export YARN_TIMELINESERVER_HEAPSIZE={{apptimelineserver_heapsize}}\n\n      # Specify the JVM options to be used when starting the NodeManager.\n      # These options will be appended to the options specified as YARN_OPTS\n      # and therefore may override any similar flags set in YARN_OPTS\n      #export YARN_NODEMANAGER_OPTS=\n\n      # so that filenames w/ spaces are handled correctly in loops below\n      IFS=\n\n\n      # default log directory and file\n      if [ \"$YARN_LOG_DIR\" = \"\" ]; then\n      YARN_LOG_DIR=\"$HADOOP_YARN_HOME/logs\"\n      fi\n      if [ \"$YARN_LOGFILE\" = \"\" ]; then\n      YARN_LOGFILE='yarn.log'\n      fi\n\n      # default policy file for service-level authorization\n      if [ \"$YARN_POLICYFILE\" = \"\" ]; then\n      YARN_POLICYFILE=\"hadoop-policy.xml\"\n      fi\n\n      # restore ordinary behaviour\n      unset IFS\n\n\n      YARN_OPTS=\"$YARN_OPTS -Dhadoop.log.dir=$YARN_LOG_DIR\"\n      YARN_OPTS=\"$YARN_OPTS -Dyarn.log.dir=$YARN_LOG_DIR\"\n      YARN_OPTS=\"$YARN_OPTS -Dhadoop.log.file=$YARN_LOGFILE\"\n      YARN_OPTS=\"$YARN_OPTS -Dyarn.log.file=$YARN_LOGFILE\"\n      YARN_OPTS=\"$YARN_OPTS -Dyarn.home.dir=$YARN_COMMON_HOME\"\n      YARN_OPTS=\"$YARN_OPTS -Dyarn.id.str=$YARN_IDENT_STRING\"\n      YARN_OPTS=\"$YARN_OPTS -Dhadoop.root.logger=${YARN_ROOT_LOGGER:-INFO,console}\"\n      YARN_OPTS=\"$YARN_OPTS -Dyarn.root.logger=${YARN_ROOT_LOGGER:-INFO,console}\"\n      export YARN_NODEMANAGER_OPTS=\"$YARN_NODEMANAGER_OPTS -Dnm.audit.logger=INFO,NMAUDIT\"\n      export YARN_RESOURCEMANAGER_OPTS=\"$YARN_RESOURCEMANAGER_OPTS -Drm.audit.logger=INFO,RMAUDIT\"\n      if [ \"x$JAVA_LIBRARY_PATH\" != \"x\" ]; then\n      YARN_OPTS=\"$YARN_OPTS -Djava.library.path=$JAVA_LIBRARY_PATH\"\n      fi\n      YARN_OPTS=\"$YARN_OPTS -Dyarn.policy.file=$YARN_POLICYFILE\"\n      YARN_OPTS=\"$YARN_OPTS -Djava.io.tmpdir={{hadoop_java_io_tmpdir}}\"\n      {% if rm_security_opts is defined %}\n      YARN_OPTS=\"{{rm_security_opts}} $YARN_OPTS\"\n      {% endif %}",
          "is_supported_yarn_ranger" : "true",
          "service_check.queue.name" : "default",
          "resourcemanager_heapsize" : "1024",
          "yarn_pid_dir_prefix" : "/var/run/hadoop-yarn",
          "yarn_user" : "yarn",
          "min_user_id" : "1000",
          "yarn_heapsize" : "1024",
          "nodemanager_heapsize" : "1024"
        }
      }
    },
    {
      "ranger-hdfs-audit" : {
        "properties_attributes" : { },
        "properties" : { }
      }
    },
    {
      "ranger-hdfs-plugin-properties" : {
        "properties_attributes" : { },
        "properties" : { }
      }
    },
    {
      "spark2-thrift-fairscheduler" : {
        "properties_attributes" : { },
        "properties" : {
          "fairscheduler_content" : "<?xml version=\"1.0\"?>\n            <allocations>\n            <pool name=\"default\">\n            <schedulingMode>FAIR</schedulingMode>\n            <weight>1</weight>\n            <minShare>2</minShare>\n            </pool>\n            </allocations>"
        }
      }
    },
    {
      "mahout-env" : {
        "properties_attributes" : { },
        "properties" : {
          "mahout_user" : "mahout"
        }
      }
    },
    {
      "infra-solr-env" : {
        "properties_attributes" : { },
        "properties" : {
          "infra_solr_keystore_type" : "jks",
          "infra_solr_kerberos_keytab" : "/etc/security/keytabs/infra_solr.service.keytab",
          "infra_solr_keystore_location" : "/etc/security/serverKeys/infra.solr.keyStore.jks",
          "infra_solr_truststore_type" : "jks",
          "infra_solr_datadir" : "/opt/ambari_infra_solr/data",
          "infra_solr_web_kerberos_keytab" : "/etc/security/keytabs/spnego.service.keytab",
          "infra_solr_user" : "infra-solr",
          "infra_solr_log_dir" : "/var/log/ambari-infra-solr",
          "infra_solr_jmx_port" : "18886",
          "infra_solr_maxmem" : "2048",
          "content" : "#!/bin/bash\n# Licensed to the Apache Software Foundation (ASF) under one or more\n# contributor license agreements. See the NOTICE file distributed with\n# this work for additional information regarding copyright ownership.\n# The ASF licenses this file to You under the Apache License, Version 2.0\n# (the \"License\"); you may not use this file except in compliance with\n# the License. You may obtain a copy of the License at\n#\n# http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\n# By default the script will use JAVA_HOME to determine which java\n# to use, but you can set a specific path for Solr to use without\n# affecting other Java applications on your server/workstation.\nSOLR_JAVA_HOME={{java64_home}}\n\n# Increase Java Min/Max Heap as needed to support your indexing / query needs\nSOLR_JAVA_MEM=\"-Xms{{infra_solr_min_mem}}m -Xmx{{infra_solr_max_mem}}m\"\n\n# Enable verbose GC logging\nGC_LOG_OPTS=\"-verbose:gc -XX:+PrintHeapAtGC -XX:+PrintGCDetails \\\n-XX:+PrintGCDateStamps -XX:+PrintGCTimeStamps -XX:+PrintTenuringDistribution -XX:+PrintGCApplicationStoppedTime\"\n\n# These GC settings have shown to work well for a number of common Solr workloads\nGC_TUNE=\"-XX:NewRatio=3 \\\n-XX:SurvivorRatio=4 \\\n-XX:TargetSurvivorRatio=90 \\\n-XX:MaxTenuringThreshold=8 \\\n-XX:+UseConcMarkSweepGC \\\n-XX:+UseParNewGC \\\n-XX:ConcGCThreads=4 -XX:ParallelGCThreads=4 \\\n-XX:+CMSScavengeBeforeRemark \\\n-XX:PretenureSizeThreshold=64m \\\n-XX:+UseCMSInitiatingOccupancyOnly \\\n-XX:CMSInitiatingOccupancyFraction=50 \\\n-XX:CMSMaxAbortablePrecleanTime=6000 \\\n-XX:+CMSParallelRemarkEnabled \\\n-XX:+ParallelRefProcEnabled\"\n\n# Set the ZooKeeper connection string if using an external ZooKeeper ensemble\n# e.g. host1:2181,host2:2181/chroot\n# Leave empty if not using SolrCloud\nZK_HOST=\"{{zookeeper_quorum}}{{infra_solr_znode}}\"\n\n# Set the ZooKeeper client timeout (for SolrCloud mode)\nZK_CLIENT_TIMEOUT=\"60000\"\n\n# By default the start script uses \"localhost\"; override the hostname here\n# for production SolrCloud environments to control the hostname exposed to cluster state\n#SOLR_HOST=\"192.168.1.1\"\n\n# By default the start script uses UTC; override the timezone if needed\n#SOLR_TIMEZONE=\"UTC\"\n\n# Set to true to activate the JMX RMI connector to allow remote JMX client applications\n# to monitor the JVM hosting Solr; set to \"false\" to disable that behavior\n# (false is recommended in production environments)\nENABLE_REMOTE_JMX_OPTS=\"true\"\n\n# The script will use SOLR_PORT+10000 for the RMI_PORT or you can set it here\nRMI_PORT={{infra_solr_jmx_port}}\n\n# Anything you add to the SOLR_OPTS variable will be included in the java\n# start command line as-is, in ADDITION to other options. If you specify the\n# -a option on start script, those options will be appended as well. Examples:\n#SOLR_OPTS=\"$SOLR_OPTS -Dsolr.autoSoftCommit.maxTime=3000\"\n#SOLR_OPTS=\"$SOLR_OPTS -Dsolr.autoCommit.maxTime=60000\"\n#SOLR_OPTS=\"$SOLR_OPTS -Dsolr.clustering.enabled=true\"\nSOLR_OPTS=\"$SOLR_OPTS -Ddisable.configEdit=true\"\n\n# Location where the bin/solr script will save PID files for running instances\n# If not set, the script will create PID files in $SOLR_TIP/bin\nSOLR_PID_DIR={{infra_solr_piddir}}\n\n# Path to a directory where Solr creates index files, the specified directory\n# must contain a solr.xml; by default, Solr will use server/solr\nSOLR_HOME={{infra_solr_datadir}}\n\n# Solr provides a default Log4J configuration properties file in server/resources\n# however, you may want to customize the log settings and file appender location\n# so you can point the script to use a different log4j.properties file\nLOG4J_PROPS={{infra_solr_conf}}/log4j.properties\n\n# Location where Solr should write logs to; should agree with the file appender\n# settings in server/resources/log4j.properties\nSOLR_LOGS_DIR={{infra_solr_log_dir}}\n\n# Sets the port Solr binds to, default is 8983\nSOLR_PORT={{infra_solr_port}}\n\n# Be sure to update the paths to the correct keystore for your environment\n{% if infra_solr_ssl_enabled %}\nSOLR_SSL_KEY_STORE={{infra_solr_keystore_location}}\nSOLR_SSL_KEY_STORE_PASSWORD={{infra_solr_keystore_password}}\nSOLR_SSL_TRUST_STORE={{infra_solr_truststore_location}}\nSOLR_SSL_TRUST_STORE_PASSWORD={{infra_solr_truststore_password}}\nSOLR_SSL_NEED_CLIENT_AUTH=false\nSOLR_SSL_WANT_CLIENT_AUTH=false\n{% endif %}\n\n# Uncomment to set a specific SSL port (-Djetty.ssl.port=N); if not set\n# and you are using SSL, then the start script will use SOLR_PORT for the SSL port\n#SOLR_SSL_PORT=\n\n{% if security_enabled -%}\nSOLR_HOST=`hostname -f`\nSOLR_JAAS_FILE={{infra_solr_jaas_file}}\nSOLR_KERB_KEYTAB={{infra_solr_web_kerberos_keytab}}\nSOLR_KERB_PRINCIPAL={{infra_solr_web_kerberos_principal}}\nSOLR_KERB_NAME_RULES=\"{{infra_solr_kerberos_name_rules}}\"\n\nSOLR_AUTHENTICATION_CLIENT_CONFIGURER=\"org.apache.solr.client.solrj.impl.Krb5HttpClientConfigurer\"\nSOLR_AUTHENTICATION_OPTS=\" -DauthenticationPlugin=org.apache.solr.security.KerberosPlugin -Djava.security.auth.login.config=$SOLR_JAAS_FILE -Dsolr.kerberos.principal=${SOLR_KERB_PRINCIPAL} -Dsolr.kerberos.keytab=${SOLR_KERB_KEYTAB} -Dsolr.kerberos.cookie.domain=${SOLR_HOST}\"\n{% endif %}",
          "infra_solr_kerberos_name_rules" : "DEFAULT",
          "infra_solr_minmem" : "1024",
          "infra_solr_port" : "8886",
          "infra_solr_pid_dir" : "/var/run/ambari-infra-solr",
          "infra_solr_ssl_enabled" : "false",
          "infra_solr_znode" : "/infra-solr",
          "infra_solr_truststore_location" : "/etc/security/serverKeys/infra.solr.trustStore.jks"
        }
      }
    },
    {
      "llap-cli-log4j2" : {
        "properties_attributes" : { },
        "properties" : {
          "llap_cli_log_maxfilesize" : "256",
          "content" : "\n# Licensed to the Apache Software Foundation (ASF) under one\n# or more contributor license agreements.  See the NOTICE file\n# distributed with this work for additional information\n# regarding copyright ownership.  The ASF licenses this file\n# to you under the Apache License, Version 2.0 (the\n# \"License\"); you may not use this file except in compliance\n# with the License.  You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\nstatus = WARN\nname = LlapCliLog4j2\npackages = org.apache.hadoop.hive.ql.log\n\n# list of properties\nproperty.hive.log.level = WARN\nproperty.hive.root.logger = console\nproperty.hive.log.dir = ${sys:java.io.tmpdir}/${sys:user.name}\nproperty.hive.log.file = llap-cli.log\nproperty.hive.llapstatus.consolelogger.level = INFO\n\n# list of all appenders\nappenders = console, DRFA, llapstatusconsole\n\n# console appender\nappender.console.type = Console\nappender.console.name = console\nappender.console.target = SYSTEM_ERR\nappender.console.layout.type = PatternLayout\nappender.console.layout.pattern = %p %c{2}: %m%n\n\n# llapstatusconsole appender\nappender.llapstatusconsole.type = Console\nappender.llapstatusconsole.name = llapstatusconsole\nappender.llapstatusconsole.target = SYSTEM_OUT\nappender.llapstatusconsole.layout.type = PatternLayout\nappender.llapstatusconsole.layout.pattern = %m%n\n\n# daily rolling file appender\nappender.DRFA.type = RollingRandomAccessFile\nappender.DRFA.name = DRFA\nappender.DRFA.fileName = ${sys:hive.log.dir}/${sys:hive.log.file}\n# Use %pid in the filePattern to append process-id@host-name to the filename if you want separate log files for different CLI session\nappender.DRFA.filePattern = ${sys:hive.log.dir}/${sys:hive.log.file}.%d{yyyy-MM-dd}_%i\nappender.DRFA.layout.type = PatternLayout\nappender.DRFA.layout.pattern = %d{ISO8601} %5p [%t] %c{2}: %m%n\nappender.DRFA.policies.type = Policies\nappender.DRFA.policies.time.type = TimeBasedTriggeringPolicy\nappender.DRFA.policies.time.interval = 1\nappender.DRFA.policies.time.modulate = true\nappender.DRFA.strategy.type = DefaultRolloverStrategy\nappender.DRFA.strategy.max = {{llap_cli_log_maxbackupindex}}\nappender.DRFA.policies.fsize.type = SizeBasedTriggeringPolicy\nappender.DRFA.policies.fsize.size = {{llap_cli_log_maxfilesize}}MB\n\n# list of all loggers\nloggers = ZooKeeper, DataNucleus, Datastore, JPOX, HadoopConf, LlapStatusServiceDriverConsole\n\nlogger.ZooKeeper.name = org.apache.zookeeper\nlogger.ZooKeeper.level = WARN\n\nlogger.DataNucleus.name = DataNucleus\nlogger.DataNucleus.level = ERROR\n\nlogger.Datastore.name = Datastore\nlogger.Datastore.level = ERROR\n\nlogger.JPOX.name = JPOX\nlogger.JPOX.level = ERROR\n\nlogger.HadoopConf.name = org.apache.hadoop.conf.Configuration\nlogger.HadoopConf.level = ERROR\n\nlogger.LlapStatusServiceDriverConsole.name = LlapStatusServiceDriverConsole\nlogger.LlapStatusServiceDriverConsole.additivity = false\nlogger.LlapStatusServiceDriverConsole.level = ${sys:hive.llapstatus.consolelogger.level}\n\n\n# root logger\nrootLogger.level = ${sys:hive.log.level}\nrootLogger.appenderRefs = root, DRFA\nrootLogger.appenderRef.root.ref = ${sys:hive.root.logger}\nrootLogger.appenderRef.DRFA.ref = DRFA\nlogger.LlapStatusServiceDriverConsole.appenderRefs = llapstatusconsole, DRFA\nlogger.LlapStatusServiceDriverConsole.appenderRef.llapstatusconsole.ref = llapstatusconsole\nlogger.LlapStatusServiceDriverConsole.appenderRef.DRFA.ref = DRFA",
          "llap_cli_log_maxbackupindex" : "30"
        }
      }
    },
    {
      "llap-daemon-log4j" : {
        "properties_attributes" : { },
        "properties" : {
          "hive_llap_log_maxfilesize" : "256",
          "content" : "\n# Licensed to the Apache Software Foundation (ASF) under one\n# or more contributor license agreements.  See the NOTICE file\n# distributed with this work for additional information\n# regarding copyright ownership.  The ASF licenses this file\n# to you under the Apache License, Version 2.0 (the\n# \"License\"); you may not use this file except in compliance\n# with the License.  You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\n\n# This is the log4j2 properties file used by llap-daemons. There's several loggers defined, which\n# can be selected while configuring LLAP.\n# Based on the one selected - UI links etc need to be manipulated in the system.\n# Note: Some names and logic is common to this file and llap LogHelpers. Make sure to change that\n# as well, if changing this file.\n\nstatus = INFO\nname = LlapDaemonLog4j2\npackages = org.apache.hadoop.hive.ql.log\n\n# list of properties\nproperty.llap.daemon.log.level = {{hive_log_level}}\nproperty.llap.daemon.root.logger = console\nproperty.llap.daemon.log.dir = .\nproperty.llap.daemon.log.file = llapdaemon.log\nproperty.llap.daemon.historylog.file = llapdaemon_history.log\nproperty.llap.daemon.log.maxfilesize = {{hive_llap_log_maxfilesize}}MB\nproperty.llap.daemon.log.maxbackupindex = {{hive_llap_log_maxbackupindex}}\n\n# list of all appenders\nappenders = console, RFA, HISTORYAPPENDER, query-routing\n\n# console appender\nappender.console.type = Console\nappender.console.name = console\nappender.console.target = SYSTEM_ERR\nappender.console.layout.type = PatternLayout\nappender.console.layout.pattern = %d{ISO8601} %5p [%t (%X{fragmentId})] %c{2}: %m%n\n\n# rolling file appender\nappender.RFA.type = RollingRandomAccessFile\nappender.RFA.name = RFA\nappender.RFA.fileName = ${sys:llap.daemon.log.dir}/${sys:llap.daemon.log.file}\nappender.RFA.filePattern = ${sys:llap.daemon.log.dir}/${sys:llap.daemon.log.file}_%d{yyyy-MM-dd-HH}_%i.done\nappender.RFA.layout.type = PatternLayout\nappender.RFA.layout.pattern = %d{ISO8601} %-5p [%t (%X{fragmentId})] %c: %m%n\nappender.RFA.policies.type = Policies\nappender.RFA.policies.time.type = TimeBasedTriggeringPolicy\nappender.RFA.policies.time.interval = 1\nappender.RFA.policies.time.modulate = true\nappender.RFA.policies.size.type = SizeBasedTriggeringPolicy\nappender.RFA.policies.size.size = ${sys:llap.daemon.log.maxfilesize}\nappender.RFA.strategy.type = DefaultRolloverStrategy\nappender.RFA.strategy.max = ${sys:llap.daemon.log.maxbackupindex}\n\n# history file appender\nappender.HISTORYAPPENDER.type = RollingRandomAccessFile\nappender.HISTORYAPPENDER.name = HISTORYAPPENDER\nappender.HISTORYAPPENDER.fileName = ${sys:llap.daemon.log.dir}/${sys:llap.daemon.historylog.file}\nappender.HISTORYAPPENDER.filePattern = ${sys:llap.daemon.log.dir}/${sys:llap.daemon.historylog.file}_%d{yyyy-MM-dd}_%i.done\nappender.HISTORYAPPENDER.layout.type = PatternLayout\nappender.HISTORYAPPENDER.layout.pattern = %m%n\nappender.HISTORYAPPENDER.policies.type = Policies\nappender.HISTORYAPPENDER.policies.size.type = SizeBasedTriggeringPolicy\nappender.HISTORYAPPENDER.policies.size.size = ${sys:llap.daemon.log.maxfilesize}\nappender.HISTORYAPPENDER.policies.time.type = TimeBasedTriggeringPolicy\nappender.HISTORYAPPENDER.policies.time.interval = 1\nappender.HISTORYAPPENDER.policies.time.modulate = true\nappender.HISTORYAPPENDER.strategy.type = DefaultRolloverStrategy\nappender.HISTORYAPPENDER.strategy.max = ${sys:llap.daemon.log.maxbackupindex}\n\n# queryId based routing file appender\nappender.query-routing.type = Routing\nappender.query-routing.name = query-routing\nappender.query-routing.routes.type = Routes\nappender.query-routing.routes.pattern = $${ctx:queryId}\n#Purge polciy for query-based Routing Appender\nappender.query-routing.purgePolicy.type = LlapRoutingAppenderPurgePolicy\n# Note: Do not change this name without changing the corresponding entry in LlapConstants\nappender.query-routing.purgePolicy.name = llapLogPurgerQueryRouting\n# default route\nappender.query-routing.routes.route-default.type = Route\nappender.query-routing.routes.route-default.key = $${ctx:queryId}\nappender.query-routing.routes.route-default.ref = RFA\n# queryId based route\nappender.query-routing.routes.route-mdc.type = Route\nappender.query-routing.routes.route-mdc.file-mdc.type = LlapWrappedAppender\nappender.query-routing.routes.route-mdc.file-mdc.name = IrrelevantName-query-routing\nappender.query-routing.routes.route-mdc.file-mdc.app.type = RandomAccessFile\nappender.query-routing.routes.route-mdc.file-mdc.app.name = file-mdc\nappender.query-routing.routes.route-mdc.file-mdc.app.fileName = ${sys:llap.daemon.log.dir}/${ctx:queryId}-${ctx:dagId}.log\nappender.query-routing.routes.route-mdc.file-mdc.app.layout.type = PatternLayout\nappender.query-routing.routes.route-mdc.file-mdc.app.layout.pattern = %d{ISO8601} %5p [%t (%X{fragmentId})] %c{2}: %m%n\n\n# list of all loggers\nloggers = PerfLogger, EncodedReader, NIOServerCnxn, ClientCnxnSocketNIO, DataNucleus, Datastore, JPOX, HistoryLogger, LlapIoImpl, LlapIoOrc, LlapIoCache, LlapIoLocking, TezSM, TezSS, TezHC\n\nlogger.TezSM.name = org.apache.tez.runtime.library.common.shuffle.impl.ShuffleManager.fetch\nlogger.TezSM.level = WARN\nlogger.TezSS.name = org.apache.tez.runtime.library.common.shuffle.orderedgrouped.ShuffleScheduler.fetch\nlogger.TezSS.level = WARN\nlogger.TezHC.name = org.apache.tez.http.HttpConnection.url\nlogger.TezHC.level = WARN\n\nlogger.PerfLogger.name = org.apache.hadoop.hive.ql.log.PerfLogger\nlogger.PerfLogger.level = DEBUG\n\nlogger.EncodedReader.name = org.apache.hadoop.hive.ql.io.orc.encoded.EncodedReaderImpl\nlogger.EncodedReader.level = INFO\n\nlogger.LlapIoImpl.name = LlapIoImpl\nlogger.LlapIoImpl.level = INFO\n\nlogger.LlapIoOrc.name = LlapIoOrc\nlogger.LlapIoOrc.level = WARN\n\nlogger.LlapIoCache.name = LlapIoCache\nlogger.LlapIoCache.level = WARN\n\nlogger.LlapIoLocking.name = LlapIoLocking\nlogger.LlapIoLocking.level = WARN\n\nlogger.NIOServerCnxn.name = org.apache.zookeeper.server.NIOServerCnxn\nlogger.NIOServerCnxn.level = WARN\n\nlogger.ClientCnxnSocketNIO.name = org.apache.zookeeper.ClientCnxnSocketNIO\nlogger.ClientCnxnSocketNIO.level = WARN\n\nlogger.DataNucleus.name = DataNucleus\nlogger.DataNucleus.level = ERROR\n\nlogger.Datastore.name = Datastore\nlogger.Datastore.level = ERROR\n\nlogger.JPOX.name = JPOX\nlogger.JPOX.level = ERROR\n\nlogger.HistoryLogger.name = org.apache.hadoop.hive.llap.daemon.HistoryLogger\nlogger.HistoryLogger.level = INFO\nlogger.HistoryLogger.additivity = false\nlogger.HistoryLogger.appenderRefs = HistoryAppender\nlogger.HistoryLogger.appenderRef.HistoryAppender.ref = HISTORYAPPENDER\n\n# root logger\nrootLogger.level = ${sys:llap.daemon.log.level}\nrootLogger.appenderRefs = root\nrootLogger.appenderRef.root.ref = ${sys:llap.daemon.root.logger}",
          "hive_llap_log_maxbackupindex" : "240"
        }
      }
    },
    {
      "ranger-kafka-audit" : {
        "properties_attributes" : { },
        "properties" : { }
      }
    },
    {
      "flume-logsearch-conf" : {
        "properties_attributes" : { },
        "properties" : {
          "component_mappings" : "FLUME:flume_handler",
          "content" : "\n{\n  \"input\":[\n    {\n      \"type\":\"flume_handler\",\n      \"rowtype\":\"service\",\n      \"path\":\"{{default('/configurations/flume-env/flume_log_dir', '/var/log/flume')}}/flume.log\"\n    }\n   ],\n  \"filter\":[\n    {\n      \"filter\":\"grok\",\n      \"conditions\":{\n        \"fields\":{\n          \"type\":[\n            \"flume_handler\"\n          ]\n         }\n       },\n      \"log4j_format\":\"\",\n      \"multiline_pattern\":\"^(%{USER_SYNC_DATE:logtime})\",\n      \"message_pattern\":\"(?m)^%{USER_SYNC_DATE:logtime}%{SPACE}%{LOGLEVEL:level}%{SPACE}\\\\[%{DATA:thread_name}\\\\]%{SPACE}\\\\(%{JAVACLASS:class}\\\\.%{JAVAMETHOD:method}:%{INT:line_number}\\\\)%{SPACE}-%{SPACE}%{GREEDYDATA:log_message}\",\n      \"post_map_values\":{\n        \"logtime\":{\n          \"map_date\":{\n            \"target_date_pattern\":\"dd MMM yyyy HH:mm:ss,SSS\"\n          }\n         }\n       }\n     }\n   ]\n }",
          "service_name" : "Flume"
        }
      }
    },
    {
      "logsearch-admin-json" : {
        "properties_attributes" : { },
        "properties" : {
          "content" : "{#\n # Licensed to the Apache Software Foundation (ASF) under one\n # or more contributor license agreements.  See the NOTICE file\n # distributed with this work for additional information\n # regarding copyright ownership.  The ASF licenses this file\n # to you under the Apache License, Version 2.0 (the\n # \"License\"); you may not use this file except in compliance\n # with the License.  You may obtain a copy of the License at\n #\n #   http://www.apache.org/licenses/LICENSE-2.0\n #\n # Unless required by applicable law or agreed to in writing, software\n # distributed under the License is distributed on an \"AS IS\" BASIS,\n # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n # See the License for the specific language governing permissions and\n # limitations under the License.\n #}\n{\n \"users\": [{\n \"name\": \"Logsearch Admin\",\n \"username\": \"{{logsearch_admin_username}}\",\n \"password\": \"{{logsearch_admin_password}}\",\n \"en_password\": \"\"\n  }]\n}",
          "logsearch_admin_username" : "ambari_logsearch_admin"
        }
      }
    },
    {
      "logsearch-properties" : {
        "properties_attributes" : { },
        "properties" : {
          "logsearch.collection.audit.logs.replication.factor" : "1",
          "logsearch.spnego.kerberos.enabled" : "false",
          "logsearch.solr.collection.audit.logs" : "audit_logs",
          "logsearch.auth.jwt.query.param.original_url" : "originalUrl",
          "logsearch.auth.jwt.provider_url" : "",
          "logsearch.solr.collection.service.logs" : "hadoop_logs",
          "logsearch.roles.allowed" : "AMBARI.ADMINISTRATOR,CLUSTER.ADMINISTRATOR",
          "logsearch.spnego.kerberos.host" : "_HOST",
          "logsearch.auth.jwt.public_key" : "",
          "logsearch.auth.jwt.audiances" : "",
          "logsearch.auth.jwt.enabled" : "false",
          "logsearch.audit.logs.split.interval.mins" : "15",
          "logsearch.service.logs.fields" : "logtime,level,event_count,ip,type,seq_num,path,file,line_number,host,log_message,id",
          "logsearch.auth.external_auth.enabled" : "true",
          "logsearch.collection.audit.logs.numshards" : "2",
          "logsearch.ranger.audit.logs.collection.name" : "ranger_audits",
          "logsearch.logfeeder.include.default.level" : "FATAL,ERROR,WARN",
          "logsearch.spnego.kerberos.keytab" : "",
          "logsearch.auth.external_auth.login_url" : "/api/v1/users/$USERNAME/privileges?fields=*",
          "logsearch.collection.service.logs.replication.factor" : "1",
          "logsearch.solr.metrics.collector.hosts" : "{metrics_collector_hosts}",
          "logsearch.collection.service.logs.numshards" : "2",
          "logsearch.auth.jwt.cookie.name" : "hadoop-jwt",
          "logsearch.service.logs.split.interval.mins" : "15",
          "logsearch.solr.audit.logs.use.ranger" : "false",
          "logsearch.auth.external_auth.host_url" : "{ambari_server_auth_host_url}"
        }
      }
    },
    {
      "hive-interactive-env" : {
        "properties_attributes" : { },
        "properties" : {
          "enable_hive_interactive" : "false",
          "llap_heap_size" : "0",
          "llap_app_name" : "llap0",
          "num_retries_for_checking_llap_status" : "20",
          "hive_heapsize" : "512",
          "content" : "\n      if [ \"$SERVICE\" = \"cli\" ]; then\n      if [ -z \"$DEBUG\" ]; then\n      export HADOOP_OPTS=\"$HADOOP_OPTS -XX:NewRatio=12 -XX:MaxHeapFreeRatio=40 -XX:MinHeapFreeRatio=15 -XX:+UseParNewGC -XX:-UseGCOverheadLimit\"\n      else\n      export HADOOP_OPTS=\"$HADOOP_OPTS -XX:NewRatio=12 -XX:MaxHeapFreeRatio=40 -XX:MinHeapFreeRatio=15 -XX:-UseGCOverheadLimit\"\n      fi\n      fi\n\n      # The heap size of the jvm stared by hive shell script can be controlled via:\n\n      if [ \"$SERVICE\" = \"metastore\" ]; then\n      export HADOOP_HEAPSIZE={{hive_metastore_heapsize}} # Setting for HiveMetastore\n      else\n      export HADOOP_HEAPSIZE={{hive_interactive_heapsize}} # Setting for HiveServer2 and Client\n      fi\n\n      export HADOOP_CLIENT_OPTS=\"$HADOOP_CLIENT_OPTS  -Xmx${HADOOP_HEAPSIZE}m\"\n      export HADOOP_CLIENT_OPTS=\"$HADOOP_CLIENT_OPTS{{heap_dump_opts}}\"\n\n      # Larger heap size may be required when running queries over large number of files or partitions.\n      # By default hive shell scripts use a heap size of 256 (MB).  Larger heap size would also be\n      # appropriate for hive server (hwi etc).\n\n\n      # Set HADOOP_HOME to point to a specific hadoop install directory\n      HADOOP_HOME=${HADOOP_HOME:-{{hadoop_home}}}\n\n      # Hive Configuration Directory can be controlled by:\n      export HIVE_CONF_DIR={{hive_server_interactive_conf_dir}}\n\n      # Add additional hcatalog jars\n      if [ \"${HIVE_AUX_JARS_PATH}\" != \"\" ]; then\n        export HIVE_AUX_JARS_PATH=${HIVE_AUX_JARS_PATH}\n      else\n        export HIVE_AUX_JARS_PATH=/usr/lib/hive/lib/hive-hcatalog-core.jar\n      fi\n\n      export METASTORE_PORT={{hive_metastore_port}}\n\n      # Spark assembly contains a conflicting copy of HiveConf from hive-1.2\n      export HIVE_SKIP_SPARK_ASSEMBLY=true",
          "llap_log_level" : "INFO",
          "num_llap_nodes_for_llap_daemons" : "1",
          "num_llap_nodes" : "1",
          "llap_headroom_space" : "12288",
          "llap_extra_slider_opts" : "",
          "slider_am_container_mb" : "341",
          "hive_aux_jars" : "",
          "llap_java_opts" : "-XX:+AlwaysPreTouch {% if java_version > 7 %}-Xss512k -XX:+UseG1GC -XX:TLABSize=8m -XX:+ResizeTLAB -XX:+UseNUMA -XX:+AggressiveOpts -XX:InitiatingHeapOccupancyPercent=40 -XX:G1ReservePercent=20 -XX:MaxGCPauseMillis=200{% else %}-XX:+PrintGCDetails -verbose:gc -XX:+PrintGCTimeStamps -XX:+UseNUMA -XX:+UseParallelGC{% endif %}{{heap_dump_opts}}"
        }
      }
    },
    {
      "spark2-log4j-properties" : {
        "properties_attributes" : { },
        "properties" : {
          "content" : "\n# Set everything to be logged to the console\nlog4j.rootCategory=INFO, console\nlog4j.appender.console=org.apache.log4j.ConsoleAppender\nlog4j.appender.console.target=System.err\nlog4j.appender.console.layout=org.apache.log4j.PatternLayout\nlog4j.appender.console.layout.ConversionPattern=%d{yy/MM/dd HH:mm:ss} %p %c{1}: %m%n\n\n# Settings to quiet third party logs that are too verbose\nlog4j.logger.org.eclipse.jetty=WARN\nlog4j.logger.org.eclipse.jetty.util.component.AbstractLifeCycle=ERROR\nlog4j.logger.org.apache.spark.repl.SparkIMain$exprTyper=INFO\nlog4j.logger.org.apache.spark.repl.SparkILoop$SparkILoopInterpreter=INFO"
        }
      }
    },
    {
      "ams-site" : {
        "properties_attributes" : { },
        "properties" : {
          "timeline.metrics.cluster.aggregator.hourly.interval" : "3600",
          "timeline.metrics.cluster.aggregator.minute.checkpointCutOffMultiplier" : "2",
          "timeline.metrics.cluster.aggregator.daily.checkpointCutOffMultiplier" : "2",
          "timeline.metrics.downsampler.event.metric.patterns" : "topology\\.%",
          "timeline.metrics.host.aggregator.hourly.interval" : "3600",
          "timeline.metrics.aggregators.skip.blockcache.enabled" : "false",
          "timeline.metrics.service.rpc.address" : "0.0.0.0:60200",
          "timeline.metrics.service.operation.mode" : "embedded",
          "timeline.metrics.aggregator.checkpoint.dir" : "/var/lib/ambari-metrics-collector/checkpoint",
          "failover.strategy" : "round-robin",
          "timeline.metrics.cluster.aggregator.second.checkpointCutOffMultiplier" : "2",
          "timeline.metrics.service.http.policy" : "HTTP_ONLY",
          "timeline.metrics.downsampler.topn.value" : "10",
          "timeline.metrics.host.aggregator.minute.checkpointCutOffMultiplier" : "2",
          "timeline.metrics.service.watcher.timeout" : "30",
          "timeline.metrics.service.checkpointDelay" : "60",
          "timeline.metrics.cluster.aggregator.second.interval" : "120",
          "timeline.metrics.service.webapp.address" : "0.0.0.0:6188",
          "timeline.metrics.host.aggregator.daily.ttl" : "31536000",
          "timeline.metrics.service.watcher.delay" : "30",
          "timeline.metrics.service.watcher.disabled" : "false",
          "timeline.metrics.hbase.init.check.enabled" : "true",
          "timeline.metrics.host.aggregator.hourly.disabled" : "false",
          "timeline.metrics.service.cluster.aggregator.appIds" : "datanode,nodemanager,hbase",
          "timeline.metrics.cluster.aggregator.hourly.checkpointCutOffMultiplier" : "2",
          "timeline.metrics.host.aggregator.daily.checkpointCutOffMultiplier" : "2",
          "timeline.metrics.service.resultset.fetchSize" : "2000",
          "timeline.metrics.cluster.aggregator.hourly.ttl" : "31536000",
          "cluster.zookeeper.quorum" : "{{cluster_zookeeper_quorum_hosts}}",
          "timeline.metrics.downsampler.topn.function" : "max",
          "timeline.metrics.host.aggregator.ttl" : "86400",
          "phoenix.spool.directory" : "/tmp",
          "timeline.metrics.host.aggregate.splitpoints" : "kafka.network.RequestMetrics.ResponseSendTimeMs.request.ControlledShutdown.min",
          "timeline.metrics.service.handler.thread.count" : "20",
          "timeline.metrics.cache.size" : "200",
          "timeline.metrics.cluster.aggregator.minute.interval" : "300",
          "timeline.metrics.cluster.aggregator.minute.ttl" : "2592000",
          "timeline.metrics.host.aggregator.minute.interval" : "300",
          "timeline.metrics.cluster.aggregator.interpolation.enabled" : "true",
          "timeline.metrics.cache.commit.interval" : "10",
          "timeline.metrics.host.aggregator.minute.disabled" : "false",
          "timeline.metrics.service.metadata.filters" : "ContainerResource",
          "timeline.metrics.cache.enabled" : "true",
          "timeline.metrics.cluster.aggregate.splitpoints" : "kafka.network.RequestMetrics.ResponseSendTimeMs.request.ControlledShutdown.min",
          "timeline.metrics.cluster.aggregator.minute.disabled" : "false",
          "timeline.metrics.service.use.groupBy.aggregators" : "true",
          "phoenix.query.maxGlobalMemoryPercentage" : "25",
          "timeline.metrics.service.default.result.limit" : "15840",
          "timeline.metrics.hbase.compression.scheme" : "SNAPPY",
          "timeline.metrics.cluster.aggregator.daily.ttl" : "63072000",
          "cluster.zookeeper.property.clientPort" : "{{cluster_zookeeper_clientPort}}",
          "timeline.metrics.sink.report.interval" : "60",
          "timeline.metrics.cluster.aggregator.second.timeslice.interval" : "30",
          "timeline.metrics.cluster.aggregation.sql.filters" : "sdisk\\_%,boottime",
          "timeline.metrics.downsampler.topn.metric.patterns" : "dfs.NNTopUserOpCounts.windowMs=60000.op=__%.user=%,dfs.NNTopUserOpCounts.windowMs=300000.op=__%.user=%,dfs.NNTopUserOpCounts.windowMs=1500000.op=__%.user=%",
          "timeline.metrics.host.aggregator.hourly.ttl" : "2592000",
          "timeline.metrics.cluster.aggregator.daily.interval" : "86400",
          "timeline.metrics.host.aggregator.daily.disabled" : "false",
          "timeline.metrics.cluster.aggregator.daily.disabled" : "false",
          "timeline.metrics.cluster.aggregator.hourly.disabled" : "false",
          "timeline.metrics.service.watcher.initial.delay" : "600",
          "timeline.metrics.host.aggregator.minute.ttl" : "604800",
          "timeline.metrics.hbase.data.block.encoding" : "FAST_DIFF",
          "timeline.metrics.cluster.aggregator.second.disabled" : "false",
          "timeline.metrics.sink.collection.period" : "10",
          "timeline.metrics.host.aggregator.hourly.checkpointCutOffMultiplier" : "2",
          "timeline.metrics.daily.aggregator.minute.interval" : "86400",
          "timeline.metrics.cluster.aggregator.second.ttl" : "259200"
        }
      }
    },
    {
      "logfeeder-ambari-config" : {
        "properties_attributes" : { },
        "properties" : {
          "content" : "{#\n # Licensed to the Apache Software Foundation (ASF) under one\n # or more contributor license agreements.  See the NOTICE file\n # distributed with this work for additional information\n # regarding copyright ownership.  The ASF licenses this file\n # to you under the Apache License, Version 2.0 (the\n # \"License\"); you may not use this file except in compliance\n # with the License.  You may obtain a copy of the License at\n #\n #   http://www.apache.org/licenses/LICENSE-2.0\n #\n # Unless required by applicable law or agreed to in writing, software\n # distributed under the License is distributed on an \"AS IS\" BASIS,\n # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n # See the License for the specific language governing permissions and\n # limitations under the License.\n #}\n{\n  \"input\":[\n    {\n      \"type\":\"ambari_agent\",\n      \"rowtype\":\"service\",\n      \"path\":\"{{ambari_agent_log_dir}}/ambari-agent.log\"\n    },\n    {\n      \"type\":\"ambari_server\",\n      \"rowtype\":\"service\",\n      \"path\":\"{{ambari_server_log_dir}}/ambari-server.log\"\n    },\n    {\n      \"type\":\"ambari_alerts\",\n      \"rowtype\":\"service\",\n      \"add_fields\":{\n        \"level\":\"UNKNOWN\"\n      },\n      \"path\":\"{{ambari_server_log_dir}}/ambari-alerts.log\"\n    },\n    {\n      \"type\":\"ambari_config_changes\",\n      \"rowtype\":\"service\",\n      \"path\":\"{{ambari_server_log_dir}}/ambari-config-changes.log\"\n    },\n    {\n      \"type\":\"ambari_eclipselink\",\n      \"rowtype\":\"service\",\n      \"path\":\"{{ambari_server_log_dir}}/ambari-eclipselink.log\"\n    },\n    {\n      \"type\":\"ambari_server_check_database\",\n      \"rowtype\":\"service\",\n      \"path\":\"{{ambari_server_log_dir}}/ambari-server-check-database.log\"\n    },\n    {\n      \"type\":\"ambari_audit\",\n      \"rowtype\":\"audit\",\n      \"add_fields\":{\n        \"logType\":\"AmbariAudit\",\n        \"enforcer\":\"ambari-acl\",\n        \"repoType\":\"1\",\n        \"repo\":\"ambari\",\n        \"level\":\"INFO\"\n      },\n      \"path\":\"{{ambari_server_log_dir}}/ambari-audit.log\"\n    }\n\n  ],\n  \"filter\":[\n    {\n      \"filter\":\"grok\",\n      \"conditions\":{\n        \"fields\":{\n          \"type\":[\n            \"ambari_agent\"\n          ]\n\n        }\n\n      },\n      \"log4j_format\":\"\",\n      \"multiline_pattern\":\"^(%{LOGLEVEL:level} %{TIMESTAMP_ISO8601:logtime})\",\n      \"message_pattern\":\"(?m)^%{LOGLEVEL:level} %{TIMESTAMP_ISO8601:logtime} %{JAVAFILE:file}:%{INT:line_number} - %{GREEDYDATA:log_message}\",\n      \"post_map_values\":{\n        \"logtime\":{\n          \"map_date\":{\n            \"target_date_pattern\":\"yyyy-MM-dd HH:mm:ss,SSS\"\n          }\n\n        },\n        \"level\":{\n          \"map_fieldvalue\":{\n            \"pre_value\":\"WARNING\",\n            \"post_value\":\"WARN\"\n          }\n\n        }\n\n      }\n\n    },\n    {\n      \"filter\":\"grok\",\n      \"conditions\":{\n        \"fields\":{\n          \"type\":[\n            \"ambari_server\"\n          ]\n          \n        }\n        \n      },\n      \"log4j_format\":\"%d{DATE} %5p [%t] %c{1}:%L - %m%n\",\n      \"multiline_pattern\":\"^(%{USER_SYNC_DATE:logtime})\",\n      \"message_pattern\":\"(?m)^%{USER_SYNC_DATE:logtime}%{SPACE}%{LOGLEVEL:level}%{SPACE}\\\\[%{DATA:thread_name}\\\\]%{SPACE}%{JAVACLASS:logger_name}:%{INT:line_number}%{SPACE}-%{SPACE}%{GREEDYDATA:log_message}\",\n      \"post_map_values\":{\n        \"logtime\":{\n          \"map_date\":{\n            \"target_date_pattern\":\"dd MMM yyyy HH:mm:ss\"\n          }\n\n        }\n\n      }\n\n    },\n    {\n      \"filter\":\"grok\",\n      \"conditions\":{\n        \"fields\":{\n          \"type\":[\n            \"ambari_alerts\"\n          ]\n          \n        }\n        \n      },\n      \"log4j_format\":\"%d{DATE} %5p [%t] %c{1}:%L - %m%n\",\n      \"multiline_pattern\":\"^(%{TIMESTAMP_ISO8601:logtime})\",\n      \"message_pattern\":\"(?m)^%{TIMESTAMP_ISO8601:logtime}%{SPACE}%{GREEDYDATA:log_message}\",\n      \"post_map_values\":{\n        \"logtime\":{\n          \"map_date\":{\n            \"target_date_pattern\":\"yyyy-MM-dd HH:mm:ss,SSS\"\n          }\n\n        }\n\n      }\n\n    },\n    {\n      \"filter\":\"grok\",\n      \"conditions\":{\n        \"fields\":{\n          \"type\":[\n            \"ambari_config_changes\"\n          ]\n          \n        }\n        \n      },\n      \"log4j_format\":\"%d{DATE} %5p [%t] %c{1}:%L - %m%n\",\n      \"multiline_pattern\":\"^(%{TIMESTAMP_ISO8601:logtime})\",\n      \"message_pattern\":\"(?m)^%{TIMESTAMP_ISO8601:logtime}%{SPACE}%{LOGLEVEL:level}%{SPACE}-%{SPACE}%{GREEDYDATA:log_message}\",\n      \"post_map_values\":{\n        \"logtime\":{\n          \"map_date\":{\n            \"target_date_pattern\":\"yyyy-MM-dd HH:mm:ss,SSS\"\n          }\n\n        }\n\n      }\n\n    },\n    {\n      \"filter\":\"grok\",\n      \"conditions\":{\n        \"fields\":{\n          \"type\":[\n            \"ambari_eclipselink\"\n          ]\n          \n        }\n        \n      },\n      \"log4j_format\":\"%d{DATE} %5p [%t] %c{1}:%L - %m%n\",\n      \"multiline_pattern\":\"^(\\\\[EL%{SPACE}%{LOGLEVEL:level}\\\\])\",\n      \"message_pattern\":\"(?m)^\\\\[EL%{SPACE}%{LOGLEVEL:level}\\\\]:%{SPACE}%{TIMESTAMP_ISO8601:logtime}%{GREEDYDATA:log_message}\",\n      \"post_map_values\":{\n        \"logtime\":{\n          \"map_date\":{\n            \"target_date_pattern\":\"yyyy-MM-dd HH:mm:ss.SSS\"\n          }\n\n        },\n        \"level\":{\n          \"map_fieldvalue\":{\n            \"pre_value\":\"Warning\",\n            \"post_value\":\"Warn\"\n          }\n\n        }\n\n      }\n\n    },\n    {\n      \"filter\":\"grok\",\n      \"conditions\":{\n        \"fields\":{\n          \"type\":[\n            \"ambari_server_check_database\"\n          ]\n          \n        }\n        \n      },\n      \"log4j_format\":\"%d{DATE} %5p [%t] %c{1}:%L - %m%n\",\n      \"multiline_pattern\":\"^(%{TIMESTAMP_ISO8601:logtime})\",\n      \"message_pattern\":\"(?m)^%{TIMESTAMP_ISO8601:logtime}%{SPACE}%{LOGLEVEL:level}%{SPACE}-%{SPACE}%{GREEDYDATA:log_message}\",\n      \"post_map_values\":{\n        \"logtime\":{\n          \"map_date\":{\n            \"target_date_pattern\":\"yyyy-MM-dd HH:mm:ss,SSS\"\n          }\n\n        }\n\n      }\n\n    },\n    {\n      \"filter\":\"grok\",\n      \"conditions\":{\n        \"fields\":{\n          \"type\":[\n            \"ambari_audit\"\n          ]\n\n        }\n\n      },\n      \"log4j_format\":\"%d{ISO8601} %-5p %c{2} (%F:%M(%L)) - %m%n\",\n      \"multiline_pattern\":\"^(%{TIMESTAMP_ISO8601:evtTime})\",\n      \"message_pattern\":\"(?m)^%{TIMESTAMP_ISO8601:evtTime},%{SPACE}%{GREEDYDATA:log_message}\",\n      \"post_map_values\":{\n        \"evtTime\":{\n          \"map_date\":{\n            \"target_date_pattern\":\"yyyy-MM-dd'T'HH:mm:ss.SSSXX\"\n          }\n\n        }\n\n      }\n\n    },\n    {\n      \"filter\":\"keyvalue\",\n      \"sort_order\":1,\n      \"conditions\":{\n        \"fields\":{\n          \"type\":[\n            \"ambari_audit\"\n          ]\n\n        }\n\n      },\n      \"source_field\":\"log_message\",\n      \"field_split\":\", \",\n      \"value_borders\":\"()\",\n      \"post_map_values\":{\n        \"User\":{\n          \"map_fieldvalue\":{\n            \"pre_value\":\"null\",\n            \"post_value\":\"unknown\"\n          },\n          \"map_fieldname\":{\n            \"new_fieldname\":\"reqUser\"\n          }\n        },\n        \"Hostname\":{\n          \"map_fieldname\":{\n            \"new_fieldname\":\"host\"\n          }\n        },\n        \"Host name\":{\n          \"map_fieldname\":{\n            \"new_fieldname\":\"host\"\n          }\n        },\n        \"RemoteIp\":{\n          \"map_fieldname\":{\n            \"new_fieldname\":\"cliIP\"\n          }\n        },\n        \"RequestType\":{\n          \"map_fieldname\":{\n            \"new_fieldname\":\"cliType\"\n          }\n        },\n        \"TaskId\":{\n          \"map_fieldname\":{\n            \"new_fieldname\":\"task_id\"\n          }\n        },\n        \"Operation\":{\n          \"map_fieldname\":{\n            \"new_fieldname\":\"action\"\n          }\n        },\n        \"url\":{\n          \"map_fieldname\":{\n            \"new_fieldname\":\"resource\"\n          }\n        },\n        \"ResourcePath\":{\n          \"map_fieldname\":{\n            \"new_fieldname\":\"resource\"\n          }\n        },\n        \"Cluster name\":{\n          \"map_fieldname\":{\n            \"new_fieldname\":\"cluster\"\n          }\n        },\n        \"Reason\":{\n          \"map_fieldname\":{\n            \"new_fieldname\":\"reason\"\n          }\n        },\n        \"Base URL\":{\n          \"map_fieldname\":{\n            \"new_fieldname\":\"ws_base_url\"\n          }\n        },\n        \"Command\":{\n          \"map_fieldvalue\":{\n            \"pre_value\":\"null\",\n            \"post_value\":\"unknown\"\n          },\n          \"map_fieldname\":{\n            \"new_fieldname\":\"ws_command\"\n          }\n        },\n        \"Component\":{\n          \"map_fieldname\":{\n            \"new_fieldname\":\"ws_component\"\n          }\n        },\n        \"Details\":{\n          \"map_fieldname\":{\n            \"new_fieldname\":\"ws_details\"\n          }\n        },\n        \"Display name\":{\n          \"map_fieldvalue\":{\n            \"pre_value\":\"null\",\n            \"post_value\":\"unknown\"\n          },\n          \"map_fieldname\":{\n            \"new_fieldname\":\"ws_display_name\"\n          }\n        },\n        \"OS\":{\n          \"map_fieldname\":{\n            \"new_fieldname\":\"ws_os\"\n          }\n        },\n        \"Repo id\":{\n          \"map_fieldname\":{\n            \"new_fieldname\":\"ws_repo_id\"\n          }\n        },\n        \"Repo version\":{\n          \"map_fieldvalue\":{\n            \"pre_value\":\"null\",\n            \"post_value\":\"unknown\"\n          },\n          \"map_fieldname\":{\n            \"new_fieldname\":\"ws_repo_version\"\n          }\n        },\n        \"Repositories\":{\n          \"map_fieldname\":{\n            \"new_fieldname\":\"ws_repositories\"\n          }\n        },\n        \"RequestId\":{\n          \"map_fieldname\":{\n            \"new_fieldname\":\"ws_request_id\"\n          }\n        },\n        \"Roles\":{\n          \"map_fieldname\":{\n            \"new_fieldname\":\"ws_roles\"\n          }\n        },\n        \"Stack\":{\n          \"map_fieldname\":{\n            \"new_fieldname\":\"ws_stack\"\n          }\n        },\n        \"Stack version\":{\n          \"map_fieldname\":{\n            \"new_fieldname\":\"ws_stack_version\"\n          }\n        },\n        \"VersionNote\":{\n          \"map_fieldvalue\":{\n            \"pre_value\":\"null\",\n            \"post_value\":\"unknown\"\n          },\n          \"map_fieldname\":{\n            \"new_fieldname\":\"ws_version_note\"\n          }\n        },\n        \"VersionNumber\":{\n          \"map_fieldvalue\":{\n            \"pre_value\":\"Vnull\",\n            \"post_value\":\"unknown\"\n          },\n          \"map_fieldname\":{\n            \"new_fieldname\":\"ws_version_number\"\n          }\n        },\n        \"Status\":[\n          {\n            \"map_fieldcopy\":{\n              \"copy_name\": \"ws_status\"\n            }\n          },\n          {\n            \"map_fieldvalue\":{\n              \"pre_value\":\"Success\",\n              \"post_value\":\"1\"\n            }\n          },\n          {\n            \"map_fieldvalue\":{\n              \"pre_value\":\"Successfully queued\",\n              \"post_value\":\"1\"\n            }\n          },\n          {\n            \"map_fieldvalue\":{\n              \"pre_value\":\"QUEUED\",\n              \"post_value\":\"1\"\n            }\n          },\n          {\n            \"map_fieldvalue\":{\n              \"pre_value\":\"PENDING\",\n              \"post_value\":\"1\"\n            }\n          },\n          {\n            \"map_fieldvalue\":{\n              \"pre_value\":\"COMPLETED\",\n              \"post_value\":\"1\"\n            }\n          },\n          {\n            \"map_fieldvalue\":{\n              \"pre_value\":\"IN_PROGRESS\",\n              \"post_value\":\"1\"\n            }\n          },\n          {\n            \"map_fieldvalue\":{\n              \"pre_value\":\"Failed\",\n              \"post_value\":\"0\"\n            }\n          },\n          {\n            \"map_fieldvalue\":{\n              \"pre_value\":\"Failed to queue\",\n              \"post_value\":\"0\"\n            }\n          },\n          {\n            \"map_fieldvalue\":{\n              \"pre_value\":\"HOLDING\",\n              \"post_value\":\"0\"\n            }\n          },\n          {\n            \"map_fieldvalue\":{\n              \"pre_value\":\"HOLDING_FAILED\",\n              \"post_value\":\"0\"\n            }\n          },\n          {\n            \"map_fieldvalue\":{\n              \"pre_value\":\"HOLDING_TIMEDOUT\",\n              \"post_value\":\"0\"\n            }\n          },\n          {\n            \"map_fieldvalue\":{\n              \"pre_value\":\"FAILED\",\n              \"post_value\":\"0\"\n            }\n          },\n          {\n            \"map_fieldvalue\":{\n              \"pre_value\":\"TIMEDOUT\",\n              \"post_value\":\"0\"\n            }\n          },\n          {\n            \"map_fieldvalue\":{\n              \"pre_value\":\"ABORTED\",\n              \"post_value\":\"0\"\n            }\n          },\n          {\n            \"map_fieldvalue\":{\n              \"pre_value\":\"SKIPPED_FAILED\",\n              \"post_value\":\"0\"\n            }\n          },\n          {\n            \"map_fieldname\":{\n              \"new_fieldname\":\"result\"\n            }\n          }\n        ],\n        \"ResultStatus\":[\n          {\n            \"map_fieldcopy\":{\n              \"copy_name\": \"ws_result_status\"\n            }\n          },\n          {\n            \"map_fieldvalue\":{\n              \"pre_value\":\"200 OK\",\n              \"post_value\":\"1\"\n            }\n          },\n          {\n            \"map_fieldvalue\":{\n              \"pre_value\":\"201 Created\",\n              \"post_value\":\"1\"\n            }\n          },\n          {\n            \"map_fieldvalue\":{\n              \"pre_value\":\"202 Accepted\",\n              \"post_value\":\"1\"\n            }\n          },\n          {\n            \"map_fieldvalue\":{\n              \"pre_value\":\"400 Bad Request\",\n              \"post_value\":\"0\"\n            }\n          },\n          {\n            \"map_fieldvalue\":{\n              \"pre_value\":\"401 Unauthorized\",\n              \"post_value\":\"0\"\n            }\n          },\n          {\n            \"map_fieldvalue\":{\n              \"pre_value\":\"403 Forbidden\",\n              \"post_value\":\"0\"\n            }\n          },\n          {\n            \"map_fieldvalue\":{\n              \"pre_value\":\"404 Not Found\",\n              \"post_value\":\"0\"\n            }\n          },\n          {\n            \"map_fieldvalue\":{\n              \"pre_value\":\"409 Resource Conflict\",\n              \"post_value\":\"0\"\n            }\n          },\n          {\n            \"map_fieldvalue\":{\n              \"pre_value\":\"500 Internal Server Error\",\n              \"post_value\":\"0\"\n            }\n          },\n          {\n            \"map_fieldname\":{\n              \"new_fieldname\":\"result\"\n            }\n          }\n        ]\n\n      }\n\n    }\n\n  ]\n\n}"
        }
      }
    },
    {
      "logfeeder-log4j" : {
        "properties_attributes" : { },
        "properties" : {
          "logfeeder_json_log_maxfilesize" : "10",
          "logfeeder_log_maxbackupindex" : "10",
          "logfeeder_log_maxfilesize" : "10",
          "logfeeder_json_log_maxbackupindex" : "10",
          "content" : "<?xml version=\"1.0\" encoding=\"UTF-8\" ?>\n<!--\nLicensed to the Apache Software Foundation (ASF) under one or more\ncontributor license agreements.  See the NOTICE file distributed with\nthis work for additional information regarding copyright ownership.\nThe ASF licenses this file to You under the Apache License, Version 2.0\n(the \"License\"); you may not use this file except in compliance with\nthe License.  You may obtain a copy of the License at\n\nhttp://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n-->\n<!DOCTYPE log4j:configuration SYSTEM \"log4j.dtd\">\n<log4j:configuration xmlns:log4j=\"http://jakarta.apache.org/log4j/\">\n  <appender name=\"console\" class=\"org.apache.log4j.ConsoleAppender\">\n    <param name=\"Target\" value=\"System.out\"/>\n    <layout class=\"org.apache.log4j.PatternLayout\">\n      <param name=\"ConversionPattern\" value=\"%d [%t] %-5p %C{6} (%F:%L) - %m%n\"/>\n    </layout>\n  </appender>\n\n  <appender name=\"rolling_file\" class=\"org.apache.log4j.RollingFileAppender\">\n    <param name=\"file\" value=\"{{logfeeder_log_dir}}/logfeeder.log\"/>\n    <param name=\"append\" value=\"true\"/>\n    <param name=\"maxFileSize\" value=\"{{logfeeder_log_maxfilesize}}MB\"/>\n    <param name=\"maxBackupIndex\" value=\"{{logfeeder_log_maxbackupindex}}\"/>\n    <layout class=\"org.apache.log4j.PatternLayout\">\n      <param name=\"ConversionPattern\" value=\"%d [%t] %-5p %C{6} (%F:%L) - %m%n\"/>\n    </layout>\n  </appender>\n\n  <appender name=\"rolling_file_json\"\n    class=\"org.apache.ambari.logsearch.appender.LogsearchRollingFileAppender\">\n    <param name=\"file\" value=\"{{logfeeder_log_dir}}/logsearch-logfeeder.json\" />\n    <param name=\"append\" value=\"true\" />\n    <param name=\"maxFileSize\" value=\"{{logfeeder_json_log_maxfilesize}}MB\" />\n    <param name=\"maxBackupIndex\" value=\"{{logfeeder_json_log_maxbackupindex}}\" />\n    <layout class=\"org.apache.ambari.logsearch.appender.LogsearchConversion\" />\n  </appender>\n\n\n  <!-- Logs to suppress BEGIN -->\n  <category name=\"org.apache.solr.common.cloud.ZkStateReader\" additivity=\"false\">\n    <priority value=\"error\" />\n    <appender-ref ref=\"daily_rolling_file\" />\n  </category>\n\n  <category name=\"apache.solr.client.solrj.impl.CloudSolrClient\" additivity=\"false\">\n    <priority value=\"fatal\" />\n    <appender-ref ref=\"daily_rolling_file\" />\n  </category>\n  <!-- Logs to suppress END -->\n\n  <category name=\"org.apache.ambari.logfeeder\" additivity=\"false\">\n    <priority value=\"INFO\" />\n    <appender-ref ref=\"console\" />\n    <!-- <appender-ref ref=\"daily_rolling_file\" /> -->\n    <appender-ref ref=\"rolling_file_json\"/>\n  </category>\n\n  <root>\n    <priority value=\"warn\"/>\n    <!-- <appender-ref ref=\"rolling_file\"/> -->\n    <!-- <appender-ref ref=\"daily_rolling_file\" /> -->\n  </root>\n</log4j:configuration>"
        }
      }
    },
    {
      "mapred-site" : {
        "properties_attributes" : { },
        "properties" : {
          "mapreduce.task.io.sort.mb" : "2047",
          "mapreduce.map.speculative" : "false",
          "mapreduce.jobhistory.recovery.store.class" : "org.apache.hadoop.mapreduce.v2.hs.HistoryServerLeveldbStateStoreService",
          "mapreduce.cluster.administrators" : " hadoop",
          "mapreduce.job.counters.max" : "130",
          "mapreduce.reduce.log.level" : "INFO",
          "mapreduce.shuffle.port" : "13562",
          "yarn.app.mapreduce.am.admin-command-opts" : "-server -XX:NewRatio=8 -Djava.net.preferIPv4Stack=true -Dhadoop.metrics.log.level=WARN",
          "mapreduce.jobhistory.address" : "%HOSTGROUP::host_group_1%:10020",
          "mapreduce.map.sort.spill.percent" : "0.7",
          "mapreduce.map.memory.mb" : "5120",
          "mapreduce.jobhistory.recovery.enable" : "true",
          "mapreduce.admin.reduce.child.java.opts" : "-server -XX:NewRatio=8 -Djava.net.preferIPv4Stack=true -Dhadoop.metrics.log.level=WARN",
          "mapreduce.map.log.level" : "INFO",
          "mapreduce.task.timeout" : "300000",
          "mapreduce.admin.user.env" : "LD_LIBRARY_PATH={{hadoop_lib_home}}/native/Linux-{{architecture}}-64:./mr-framework/hadoop/lib/native:./mr-framework/hadoop/lib/native/Linux-{{architecture}}-64",
          "mapreduce.am.max-attempts" : "2",
          "yarn.app.mapreduce.am.staging-dir" : "/user",
          "mapreduce.reduce.memory.mb" : "6400",
          "mapreduce.framework.name" : "yarn",
          "mapreduce.reduce.shuffle.merge.percent" : "0.66",
          "mapreduce.reduce.shuffle.parallelcopies" : "30",
          "mapreduce.output.fileoutputformat.compress" : "false",
          "mapreduce.admin.map.child.java.opts" : "-server -XX:NewRatio=8 -Djava.net.preferIPv4Stack=true -Dhadoop.metrics.log.level=WARN",
          "mapreduce.job.reduce.slowstart.completedmaps" : "0.05",
          "mapreduce.jobhistory.done-dir" : "/mr-history/done",
          "mapreduce.jobhistory.http.policy" : "HTTP_ONLY",
          "mapreduce.jobhistory.webapp.address" : "%HOSTGROUP::host_group_1%:19888",
          "mapreduce.job.queuename" : "default",
          "mapreduce.application.classpath" : "$PWD/mr-framework/hadoop/share/hadoop/mapreduce/*:$PWD/mr-framework/hadoop/share/hadoop/mapreduce/lib/*:$PWD/mr-framework/hadoop/share/hadoop/common/*:$PWD/mr-framework/hadoop/share/hadoop/common/lib/*:$PWD/mr-framework/hadoop/share/hadoop/yarn/*:$PWD/mr-framework/hadoop/share/hadoop/yarn/lib/*:$PWD/mr-framework/hadoop/share/hadoop/hdfs/*:$PWD/mr-framework/hadoop/share/hadoop/hdfs/lib/*:$PWD/mr-framework/hadoop/share/hadoop/tools/lib/*:/usr/lib/hadoop/lib/hadoop-lzo-0.6.0.*.jar:/etc/hadoop/conf/secure:/usr/lib/hadoop/*",
          "mapreduce.task.io.sort.factor" : "100",
          "mapreduce.reduce.java.opts" : "-Xmx5120m",
          "mapreduce.map.output.compress" : "false",
          "mapreduce.jobhistory.recovery.store.leveldb.path" : "/hadoop/mapreduce/jhs",
          "yarn.app.mapreduce.client.job.max-retries" : "60",
          "mapreduce.reduce.input.buffer.percent" : "0.0",
          "mapreduce.jobhistory.intermediate-done-dir" : "/mr-history/tmp",
          "yarn.app.mapreduce.am.log.level" : "INFO",
          "yarn.app.mapreduce.am.command-opts" : "-Xmx4096m",
          "mapreduce.map.java.opts" : "-Xmx4096m",
          "mapreduce.reduce.shuffle.input.buffer.percent" : "0.7",
          "mapreduce.reduce.speculative" : "false",
          "mapreduce.output.fileoutputformat.compress.type" : "BLOCK",
          "yarn.app.mapreduce.am.resource.mb" : "5120"
        }
      }
    },
    {
      "spark2-metrics-properties" : {
        "properties_attributes" : { },
        "properties" : {
          "content" : "\n# syntax: [instance].sink|source.[name].[options]=[value]\n\n# This file configures Spark's internal metrics system. The metrics system is\n# divided into instances which correspond to internal components.\n# Each instance can be configured to report its metrics to one or more sinks.\n# Accepted values for [instance] are \"master\", \"worker\", \"executor\", \"driver\",\n# and \"applications\". A wild card \"*\" can be used as an instance name, in\n# which case all instances will inherit the supplied property.\n#\n# Within an instance, a \"source\" specifies a particular set of grouped metrics.\n# there are two kinds of sources:\n# 1. Spark internal sources, like MasterSource, WorkerSource, etc, which will\n# collect a Spark component's internal state. Each instance is paired with a\n# Spark source that is added automatically.\n# 2. Common sources, like JvmSource, which will collect low level state.\n# These can be added through configuration options and are then loaded\n# using reflection.\n#\n# A \"sink\" specifies where metrics are delivered to. Each instance can be\n# assigned one or more sinks.\n#\n# The sink|source field specifies whether the property relates to a sink or\n# source.\n#\n# The [name] field specifies the name of source or sink.\n#\n# The [options] field is the specific property of this source or sink. The\n# source or sink is responsible for parsing this property.\n#\n# Notes:\n# 1. To add a new sink, set the \"class\" option to a fully qualified class\n# name (see examples below).\n# 2. Some sinks involve a polling period. The minimum allowed polling period\n# is 1 second.\n# 3. Wild card properties can be overridden by more specific properties.\n# For example, master.sink.console.period takes precedence over\n# *.sink.console.period.\n# 4. A metrics specific configuration\n# \"spark.metrics.conf=${SPARK_HOME}/conf/metrics.properties\" should be\n# added to Java properties using -Dspark.metrics.conf=xxx if you want to\n# customize metrics system. You can also put the file in ${SPARK_HOME}/conf\n# and it will be loaded automatically.\n# 5. MetricsServlet is added by default as a sink in master, worker and client\n# driver, you can send http request \"/metrics/json\" to get a snapshot of all the\n# registered metrics in json format. For master, requests \"/metrics/master/json\" and\n# \"/metrics/applications/json\" can be sent seperately to get metrics snapshot of\n# instance master and applications. MetricsServlet may not be configured by self.\n#\n\n## List of available sinks and their properties.\n\n# org.apache.spark.metrics.sink.ConsoleSink\n# Name: Default: Description:\n# period 10 Poll period\n# unit seconds Units of poll period\n\n# org.apache.spark.metrics.sink.CSVSink\n# Name: Default: Description:\n# period 10 Poll period\n# unit seconds Units of poll period\n# directory /tmp Where to store CSV files\n\n# org.apache.spark.metrics.sink.GangliaSink\n# Name: Default: Description:\n# host NONE Hostname or multicast group of Ganglia server\n# port NONE Port of Ganglia server(s)\n# period 10 Poll period\n# unit seconds Units of poll period\n# ttl 1 TTL of messages sent by Ganglia\n# mode multicast Ganglia network mode ('unicast' or 'multicast')\n\n# org.apache.spark.metrics.sink.JmxSink\n\n# org.apache.spark.metrics.sink.MetricsServlet\n# Name: Default: Description:\n# path VARIES* Path prefix from the web server root\n# sample false Whether to show entire set of samples for histograms ('false' or 'true')\n#\n# * Default path is /metrics/json for all instances except the master. The master has two paths:\n# /metrics/aplications/json # App information\n# /metrics/master/json # Master information\n\n# org.apache.spark.metrics.sink.GraphiteSink\n# Name: Default: Description:\n# host NONE Hostname of Graphite server\n# port NONE Port of Graphite server\n# period 10 Poll period\n# unit seconds Units of poll period\n# prefix EMPTY STRING Prefix to prepend to metric name\n\n## Examples\n# Enable JmxSink for all instances by class name\n#*.sink.jmx.class=org.apache.spark.metrics.sink.JmxSink\n\n# Enable ConsoleSink for all instances by class name\n#*.sink.console.class=org.apache.spark.metrics.sink.ConsoleSink\n\n# Polling period for ConsoleSink\n#*.sink.console.period=10\n\n#*.sink.console.unit=seconds\n\n# Master instance overlap polling period\n#master.sink.console.period=15\n\n#master.sink.console.unit=seconds\n\n# Enable CsvSink for all instances\n#*.sink.csv.class=org.apache.spark.metrics.sink.CsvSink\n\n# Polling period for CsvSink\n#*.sink.csv.period=1\n\n#*.sink.csv.unit=minutes\n\n# Polling directory for CsvSink\n#*.sink.csv.directory=/tmp/\n\n# Worker instance overlap polling period\n#worker.sink.csv.period=10\n\n#worker.sink.csv.unit=minutes\n\n# Enable jvm source for instance master, worker, driver and executor\n#master.source.jvm.class=org.apache.spark.metrics.source.JvmSource\n\n#worker.source.jvm.class=org.apache.spark.metrics.source.JvmSource\n\n#driver.source.jvm.class=org.apache.spark.metrics.source.JvmSource\n\n#executor.source.jvm.class=org.apache.spark.metrics.source.JvmSource"
        }
      }
    },
    {
      "spark2-thrift-sparkconf" : {
        "properties_attributes" : {
          "final" : {
            "spark.eventLog.dir" : "true",
            "spark.eventLog.enabled" : "true",
            "spark.history.fs.logDirectory" : "true"
          }
        },
        "properties" : {
          "spark.master" : "{{spark_thrift_master}}",
          "spark.scheduler.allocation.file" : "{{spark_conf}}/spark-thrift-fairscheduler.xml",
          "spark.driver.extraLibraryPath" : "{{spark_hadoop_lib_native}}",
          "spark.driver.extraClassPath" : "/usr/lib/hadoop-hdfs/hadoop-hdfs.jar:/usr/lib/hadoop-hdfs/hadoop-hdfs-client.jar:/usr/lib/hadoop-hdfs/hadoop-hdfs-native-client.jar:/usr/lib/hadoop-hdfs/hadoop-hdfs-nfs.jar:/usr/lib/hadoop/hadoop-annotations.jar:/usr/lib/hadoop/hadoop-auth.jar:/usr/lib/hadoop/hadoop-common.jar:/usr/lib/hadoop-yarn/hadoop-yarn-client.jar:/usr/lib/hadoop-yarn/hadoop-yarn-api.jar:/usr/lib/hadoop/hadoop-yarn-server-common.jar",
          "spark.executor.extraLibraryPath" : "{{spark_hadoop_lib_native}}",
          "spark.hadoop.cacheConf" : "false",
          "spark.history.provider" : "org.apache.spark.deploy.history.FsHistoryProvider",
          "spark.dynamicAllocation.maxExecutors" : "10",
          "spark.scheduler.mode" : "FAIR",
          "spark.eventLog.dir" : "{{spark_history_dir}}",
          "spark.eventLog.enabled" : "true",
          "spark.dynamicAllocation.minExecutors" : "0",
          "spark.shuffle.service.enabled" : "true",
          "spark.dynamicAllocation.initialExecutors" : "0",
          "spark.history.fs.logDirectory" : "{{spark_history_dir}}",
          "spark.yarn.queue" : "default",
          "spark.dynamicAllocation.enabled" : "true"
        }
      }
    },
    {
      "hive-site" : {
        "properties_attributes" : {
          "hidden" : {
            "javax.jdo.option.ConnectionPassword" : "HIVE_CLIENT,WEBHCAT_SERVER,HCAT,CONFIG_DOWNLOAD"
          }
        },
        "properties" : {
          "hive.exec.reducers.bytes.per.reducer" : "67108864",
          "hive.metastore.pre.event.listeners" : "org.apache.hadoop.hive.ql.security.authorization.AuthorizationPreEventListener",
          "hive.optimize.reducededuplication" : "true",
          "hive.metastore.sasl.enabled" : "false",
          "hive.vectorized.execution.enabled" : "true",
          "hive.security.authorization.manager" : "org.apache.hadoop.hive.ql.security.authorization.plugin.sqlstd.SQLStdConfOnlyAuthorizerFactory",
          "hive.auto.convert.join.noconditionaltask" : "true",
          "hive.exec.orc.compression.strategy" : "SPEED",
          "hive.server2.allow.user.substitution" : "true",
          "hive.limit.pushdown.memory.usage" : "0.04",
          "hive.merge.rcfile.block.level" : "true",
          "hive.stats.fetch.column.stats" : "true",
          "hive.tez.dynamic.partition.pruning" : "true",
          "hive.exec.max.dynamic.partitions.pernode" : "2000",
          "hive.exec.orc.default.compress" : "ZLIB",
          "hive.merge.mapredfiles" : "false",
          "hive.compactor.abortedtxn.threshold" : "1000",
          "hive.map.aggr" : "true",
          "hive.tez.dynamic.partition.pruning.max.data.size" : "104857600",
          "hive.compactor.initiator.on" : "false",
          "hive.smbjoin.cache.rows" : "10000",
          "atlas.rest.address" : "http://%HOSTGROUP::host_group_1%:21000",
          "hive.exec.max.dynamic.partitions" : "5000",
          "hive.auto.convert.join" : "true",
          "hive.server2.support.dynamic.service.discovery" : "true",
          "hive.tez.log.level" : "INFO",
          "hive.compactor.worker.timeout" : "86400L",
          "hive.metastore.authorization.storage.checks" : "false",
          "hive.merge.mapfiles" : "true",
          "hive.exec.post.hooks" : "org.apache.hadoop.hive.ql.hooks.ATSHook,org.apache.atlas.hive.hook.HiveHook",
          "hive.server2.transport.mode" : "binary",
          "atlas.cluster.name" : "primary",
          "hive.server2.thrift.http.path" : "cliservice",
          "hive.enforce.sortmergebucketmapjoin" : "true",
          "hive.metastore.execute.setugi" : "true",
          "hive.tez.smb.number.waves" : "0.5",
          "hive.server2.authentication.spnego.keytab" : "HTTP/_HOST@EXAMPLE.COM",
          "hive.zookeeper.quorum" : "%HOSTGROUP::host_group_1%:2181",
          "hive.mapjoin.bucket.cache.size" : "10000",
          "hive.metastore.kerberos.principal" : "hive/_HOST@EXAMPLE.COM",
          "hive.tez.auto.reducer.parallelism" : "true",
          "hive.security.metastore.authorization.manager" : "org.apache.hadoop.hive.ql.security.authorization.StorageBasedAuthorizationProvider",
          "datanucleus.autoCreateSchema" : "false",
          "datanucleus.fixedDatastore" : "true",
          "hive.compute.query.using.stats" : "true",
          "hive.security.authorization.enabled" : "false",
          "hive.server2.thrift.sasl.qop" : "auth",
          "hive.merge.orcfile.stripe.level" : "true",
          "hive.orc.splits.include.file.footer" : "false",
          "hive.exec.compress.output" : "false",
          "hive.user.install.directory" : "/user/",
          "hive.prewarm.enabled" : "false",
          "hive.compactor.delta.num.threshold" : "10",
          "hive.orc.compute.splits.num.threads" : "10",
          "hive.vectorized.groupby.checkinterval" : "4096",
          "hive.txn.manager" : "org.apache.hadoop.hive.ql.lockmgr.DummyTxnManager",
          "datanucleus.cache.level2.type" : "none",
          "hive.map.aggr.hash.percentmemory" : "0.5",
          "hive.optimize.bucketmapjoin" : "true",
          "hive.tez.max.partition.factor" : "2.0",
          "hive.server2.thrift.port" : "10000",
          "hive.exec.failure.hooks" : "org.apache.hadoop.hive.ql.hooks.ATSHook",
          "hive.exec.compress.intermediate" : "false",
          "hive.exec.max.created.files" : "100000",
          "hive.mapred.reduce.tasks.speculative.execution" : "false",
          "hive.vectorized.groupby.flush.percent" : "0.1",
          "hive.metastore.client.socket.timeout" : "1800s",
          "hive.server2.tez.initialize.default.sessions" : "false",
          "hive.stats.autogather" : "true",
          "hive.optimize.sort.dynamic.partition" : "false",
          "hive.txn.max.open.batch" : "1000",
          "hive.default.fileformat" : "TextFile",
          "hive.mapjoin.optimized.hashtable" : "true",
          "hive.vectorized.groupby.maxentries" : "100000",
          "hive.compactor.check.interval" : "300L",
          "hive.security.authenticator.manager" : "org.apache.hadoop.hive.ql.security.ProxyUserAuthenticator",
          "hive.security.metastore.authorization.auth.reads" : "true",
          "hive.compactor.delta.pct.threshold" : "0.1f",
          "hive.vectorized.execution.reduce.enabled" : "false",
          "javax.jdo.option.ConnectionDriverName" : "com.mysql.jdbc.Driver",
          "hive.stats.dbclass" : "fs",
          "hive.exec.parallel" : "false",
          "hive.compactor.worker.threads" : "0",
          "hive.exec.submitviachild" : "false",
          "hive.fetch.task.conversion" : "more",
          "hive.server2.authentication" : "NONE",
          "hive.map.aggr.hash.force.flush.memory.threshold" : "0.9",
          "hive.merge.tezfiles" : "false",
          "hive.metastore.cache.pinobjtypes" : "Table,Database,Type,FieldSchema,Order",
          "hive.optimize.index.filter" : "true",
          "hive.server2.authentication.spnego.principal" : "/etc/security/keytabs/spnego.service.keytab",
          "hive.convert.join.bucket.mapjoin.tez" : "false",
          "hive.metastore.warehouse.dir" : "/apps/hive/warehouse",
          "hive.execution.engine" : "tez",
          "hive.tez.dynamic.partition.pruning.max.event.size" : "1048576",
          "hive.cbo.enable" : "true",
          "hive.exec.orc.encoding.strategy" : "SPEED",
          "hive.metastore.schema.verification" : "true",
          "hive.optimize.constant.propagation" : "true",
          "hive.tez.container.size" : "5120",
          "hive.metastore.connect.retries" : "24",
          "hive.optimize.reducededuplication.min.reducer" : "4",
          "hive.tez.input.format" : "org.apache.hadoop.hive.ql.io.HiveInputFormat",
          "hive.cluster.delegation.token.store.zookeeper.connectString" : "%HOSTGROUP::host_group_1%:2181",
          "hive.metastore.uris" : "thrift://%HOSTGROUP::host_group_1%:9083",
          "hive.exec.dynamic.partition.mode" : "strict",
          "hive.server2.thrift.max.worker.threads" : "500",
          "hive.server2.use.SSL" : "false",
          "hive.tez.java.opts" : "-server -Djava.net.preferIPv4Stack=true -XX:NewRatio=8 -XX:+UseNUMA -XX:+UseG1GC -XX:+ResizeTLAB -XX:+PrintGCDetails -verbose:gc -XX:+PrintGCTimeStamps",
          "hive.exec.submit.local.task.via.child" : "true",
          "hive.optimize.null.scan" : "true",
          "hive.exec.orc.default.stripe.size" : "67108864",
          "hive.limit.optimize.enable" : "true",
          "hive.cluster.delegation.token.store.zookeeper.znode" : "/hive/cluster/delegation",
          "hive.exec.pre.hooks" : "org.apache.hadoop.hive.ql.hooks.ATSHook",
          "hive.cluster.delegation.token.store.class" : "org.apache.hadoop.hive.thrift.ZooKeeperTokenStore",
          "ambari.hive.db.schema.name" : "hive",
          "hive.zookeeper.client.port" : "2181",
          "hive.tez.cpu.vcores" : "-1",
          "hive.metastore.client.connect.retry.delay" : "5s",
          "hive.server2.tez.default.queues" : "default",
          "hive.server2.tez.sessions.per.default.queue" : "1",
          "hive.server2.thrift.http.port" : "10001",
          "hive.server2.logging.operation.log.location" : "/tmp/hive/operation_logs",
          "javax.jdo.option.ConnectionURL" : "jdbc:mysql://%HOSTGROUP::host_group_1%/hive?createDatabaseIfNotExist=true",
          "hive.map.aggr.hash.min.reduction" : "0.5",
          "hive.merge.size.per.task" : "256000000",
          "hive.merge.smallfiles.avgsize" : "16000000",
          "hive.exec.reducers.max" : "1009",
          "hive.optimize.metadataonly" : "true",
          "hive.fetch.task.conversion.threshold" : "1073741824",
          "hive.prewarm.numcontainers" : "3",
          "hive.tez.min.partition.factor" : "0.25",
          "hive.auto.convert.join.noconditionaltask.size" : "1431655765",
          "hive.server2.logging.operation.enabled" : "true",
          "hive.metastore.kerberos.keytab.file" : "/etc/security/keytabs/hive.service.keytab",
          "hive.exec.parallel.thread.number" : "8",
          "hive.support.concurrency" : "false",
          "javax.jdo.option.ConnectionUserName" : "hive",
          "hive.conf.restricted.list" : "hive.security.authenticator.manager,hive.security.authorization.manager,hive.users.in.admin.role",
          "hive.auto.convert.sortmerge.join.to.mapjoin" : "false",
          "hive.fetch.task.aggr" : "false",
          "hive.cli.print.header" : "false",
          "hive.server2.table.type.mapping" : "CLASSIC",
          "hive.txn.timeout" : "300",
          "hive.stats.fetch.partition.stats" : "true",
          "hive.optimize.bucketmapjoin.sortedmerge" : "false",
          "hive.security.metastore.authenticator.manager" : "org.apache.hadoop.hive.ql.security.HadoopDefaultMetastoreAuthenticator",
          "hive.server2.enable.doAs" : "true",
          "hive.server2.zookeeper.namespace" : "hiveserver2",
          "hive.default.fileformat.managed" : "TextFile",
          "hive.exec.scratchdir" : "/tmp/hive",
          "hive.exec.dynamic.partition" : "true",
          "hive.metastore.server.max.threads" : "100000",
          "hive.metastore.failure.retries" : "24",
          "hive.auto.convert.sortmerge.join" : "true",
          "hive.zookeeper.namespace" : "hive_zookeeper_namespace"
        }
      }
    },
    {
      "tez-site" : {
        "properties_attributes" : { },
        "properties" : {
          "tez.am.launch.cmd-opts" : "-XX:+PrintGCDetails -verbose:gc -XX:+PrintGCTimeStamps -XX:+UseNUMA -XX:+UseG1GC -XX:+ResizeTLAB{{heap_dump_opts}}",
          "tez.runtime.sorter.class" : "PIPELINED",
          "tez.am.env" : "LD_LIBRARY_PATH=/usr/lib/hadoop/lib/native:/usr/lib/hadoop/lib/native/Linux-amd64-64",
          "tez.counters.max.groups" : "3000",
          "tez.task.resource.memory.mb" : "5120",
          "tez.runtime.intermediate-input.compress.codec" : "org.apache.hadoop.io.compress.SnappyCodec",
          "tez.am.grouping.max-size" : "1073741824",
          "tez.runtime.intermediate-output.should-compress" : "false",
          "tez.am.view-acls" : "*",
          "tez.runtime.shuffle.memory.limit.percent" : "0.25",
          "tez.runtime.optimize.local.fetch" : "true",
          "tez.runtime.pipelined.sorter.sort.threads" : "2",
          "tez.staging-dir" : "/tmp/${user.name}/staging",
          "tez.runtime.intermediate-output.compress.codec" : "org.apache.hadoop.io.compress.SnappyCodec",
          "tez.session.am.dag.submit.timeout.secs" : "600",
          "tez.am.grouping.min-size" : "16777216",
          "tez.am.container.reuse.locality.delay-allocation-millis" : "250",
          "tez.session.client.timeout.secs" : "180",
          "tez.am.am-rm.heartbeat.interval-ms.max" : "250",
          "tez.task.launch.cmd-opts" : "-XX:+PrintGCDetails -verbose:gc -XX:+PrintGCTimeStamps -XX:+UseNUMA -XX:+UseG1GC -XX:+ResizeTLAB{{heap_dump_opts}}",
          "tez.lib.uris" : "hdfs:///apps/tez/tez.tar.gz",
          "tez.history.logging.timeline-cache-plugin.old-num-dags-per-group" : "5",
          "tez.am.java.opts" : "-server -Xmx1024m -Djava.net.preferIPv4Stack=true -XX:+UseNUMA -XX:+UseParallelGC",
          "tez.counters.max" : "10000",
          "tez.runtime.shuffle.fetch.buffer.percent" : "0.6",
          "tez.queue.name" : "default",
          "tez.runtime.unordered.output.buffer.size-mb" : "384",
          "tez.am.container.reuse.enabled" : "true",
          "tez.am.container.session.delay-allocation-millis" : "10000",
          "tez.am.log.level" : "INFO",
          "tez.history.logging.service.class" : "org.apache.tez.dag.history.logging.ats.ATSHistoryLoggingService",
          "tez.yarn.ats.enabled" : "true",
          "tez.am.grouping.split-waves" : "1.4",
          "tez.am.resource.memory.mb" : "5120",
          "tez.runtime.intermediate-input.is-compressed" : "false",
          "tez.am.container.reuse.non-local-fallback.enabled" : "true",
          "tez.am.container.reuse.rack-fallback.enabled" : "true",
          "tez.task.get-task.sleep.interval-ms.max" : "200",
          "tez.am.shuffle-vertex-manager.max-src-fraction" : "0.4",
          "tez.runtime.io.sort.mb" : "1351",
          "tez.task.generate.counters.per.io" : "true",
          "tez.am.shuffle-vertex-manager.min-src-fraction" : "0.2"
        }
      }
    },
    {
      "webhcat-site" : {
        "properties_attributes" : { },
        "properties" : {
          "templeton.zookeeper.hosts" : "%HOSTGROUP::host_group_1%:2181",
          "webhcat.proxyuser.root.groups" : "*",
          "webhcat.proxyuser.root.hosts" : "adh16-blueprint",
          "templeton.hadoop.queue.name" : "default",
          "templeton.hadoop" : "/usr/lib/hadoop/bin/hadoop",
          "templeton.hive.extra.files" : "/etc/tez/conf/tez-site.xml,/usr/lib/tez,/usr/lib/tez/lib",
          "templeton.hcat.home" : "hive.tar.gz/hive/hcatalog",
          "templeton.override.enabled" : "false",
          "templeton.hive.properties" : "hive.metastore.local=false,hive.metastore.uris=thrift://%HOSTGROUP::host_group_1%:9083,hive.metastore.sasl.enabled=false,hive.metastore.execute.setugi=true",
          "templeton.python" : "${env.PYTHON_CMD}",
          "templeton.storage.class" : "org.apache.hive.hcatalog.templeton.tool.ZooKeeperStorage",
          "templeton.streaming.jar" : "hdfs:///apps/mapreduce/hadoop-streaming.jar",
          "templeton.hadoop.conf.dir" : "/etc/hadoop/conf",
          "templeton.hcat" : "/usr/lib/hive/bin/hcat",
          "templeton.jar" : "/usr/lib/hive/share/webhcat/svr/lib/hive-webhcat-*.jar",
          "templeton.port" : "50111",
          "templeton.libjars" : "/usr/lib/zookeeper/zookeeper.jar",
          "templeton.hive.path" : "hive.tar.gz/hive/bin/hive",
          "templeton.exec.timeout" : "60000",
          "templeton.sqoop.home" : "sqoop.tar.gz/sqoop",
          "templeton.sqoop.archive" : "hdfs:///apps/sqoop/sqoop.tar.gz",
          "templeton.hive.archive" : "hdfs:///apps/hive/hive.tar.gz",
          "templeton.hive.home" : "hive.tar.gz/hive",
          "templeton.pig.archive" : "hdfs:///apps/pig/pig.tar.gz",
          "templeton.pig.path" : "pig.tar.gz/pig/bin/pig",
          "templeton.sqoop.path" : "sqoop.tar.gz/sqoop/bin/sqoop"
        }
      }
    },
    {
      "slider-env" : {
        "properties_attributes" : { },
        "properties" : {
          "content" : "\n# Set Slider-specific environment variables here.\n\n# The only required environment variable is JAVA_HOME.  All others are\n# optional.  When running a distributed configuration it is best to\n# set JAVA_HOME in this file, so that it is correctly defined on\n# remote nodes.\n\n# The java implementation to use.  Required.\nexport JAVA_HOME={{java64_home}}\n# The hadoop conf directory.  Optional as slider-client.xml can be edited to add properties.\nexport HADOOP_CONF_DIR={{hadoop_conf_dir}}"
        }
      }
    },
    {
      "ams-hbase-env" : {
        "properties_attributes" : { },
        "properties" : {
          "hbase_master_maxperm_size" : "128",
          "max_open_files_limit" : "32768",
          "regionserver_xmn_size" : "128",
          "hbase_master_heapsize" : "640",
          "hbase_regionserver_xmn_ratio" : "0.2",
          "hbase_master_xmn_size" : "192",
          "content" : "\n# Set environment variables here.\n\n# The java implementation to use. Java 1.6+ required.\nexport JAVA_HOME={{java64_home}}\n\n# HBase Configuration directory\nexport HBASE_CONF_DIR=${HBASE_CONF_DIR:-{{hbase_conf_dir}}}\n\n# Extra Java CLASSPATH elements. Optional.\nadditional_cp={{hbase_classpath_additional}}\nif [  -n \"$additional_cp\" ];\nthen\n  export HBASE_CLASSPATH=${HBASE_CLASSPATH}:$additional_cp\nelse\n  export HBASE_CLASSPATH=${HBASE_CLASSPATH}\nfi\n\n# The maximum amount of heap to use for hbase shell.\nexport HBASE_SHELL_OPTS=\"-Xmx256m\"\n\n# Extra Java runtime options.\n# Below are what we set by default. May only work with SUN JVM.\n# For more on why as well as other possible settings,\n# see http://wiki.apache.org/hadoop/PerformanceTuning\nexport HBASE_OPTS=\"-XX:+UseConcMarkSweepGC -XX:ErrorFile={{hbase_log_dir}}/hs_err_pid%p.log -Djava.io.tmpdir={{hbase_tmp_dir}}\"\nexport SERVER_GC_OPTS=\"-verbose:gc -XX:+PrintGCDetails -XX:+PrintGCDateStamps -Xloggc:{{hbase_log_dir}}/gc.log-`date +'%Y%m%d%H%M'`\"\n# Uncomment below to enable java garbage collection logging.\n# export HBASE_OPTS=\"$HBASE_OPTS -verbose:gc -XX:+PrintGCDetails -XX:+PrintGCDateStamps -Xloggc:$HBASE_HOME/logs/gc-hbase.log\"\n\n# Uncomment and adjust to enable JMX exporting\n# See jmxremote.password and jmxremote.access in $JRE_HOME/lib/management to configure remote password access.\n# More details at: http://java.sun.com/javase/6/docs/technotes/guides/management/agent.html\n#\n# export HBASE_JMX_BASE=\"-Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false\"\n\n{% if java_version < 8 %}\nexport HBASE_MASTER_OPTS=\" -XX:PermSize=64m -XX:MaxPermSize={{hbase_master_maxperm_size}} -Xms{{hbase_heapsize}} -Xmx{{hbase_heapsize}} -Xmn{{hbase_master_xmn_size}} -XX:CMSInitiatingOccupancyFraction=70 -XX:+UseCMSInitiatingOccupancyOnly\"\nexport HBASE_REGIONSERVER_OPTS=\"-XX:MaxPermSize=128m -Xmn{{regionserver_xmn_size}} -XX:CMSInitiatingOccupancyFraction=70 -XX:+UseCMSInitiatingOccupancyOnly -Xms{{regionserver_heapsize}} -Xmx{{regionserver_heapsize}}\"\n{% else %}\nexport HBASE_MASTER_OPTS=\" -Xms{{hbase_heapsize}} -Xmx{{hbase_heapsize}} -Xmn{{hbase_master_xmn_size}} -XX:CMSInitiatingOccupancyFraction=70 -XX:+UseCMSInitiatingOccupancyOnly\"\nexport HBASE_REGIONSERVER_OPTS=\" -Xmn{{regionserver_xmn_size}} -XX:CMSInitiatingOccupancyFraction=70 -XX:+UseCMSInitiatingOccupancyOnly -Xms{{regionserver_heapsize}} -Xmx{{regionserver_heapsize}}\"\n{% endif %}\n\n\n# export HBASE_THRIFT_OPTS=\"$HBASE_JMX_BASE -Dcom.sun.management.jmxremote.port=10103\"\n# export HBASE_ZOOKEEPER_OPTS=\"$HBASE_JMX_BASE -Dcom.sun.management.jmxremote.port=10104\"\n\n# File naming hosts on which HRegionServers will run. $HBASE_HOME/conf/regionservers by default.\nexport HBASE_REGIONSERVERS=${HBASE_CONF_DIR}/regionservers\n\n# Extra ssh options. Empty by default.\n# export HBASE_SSH_OPTS=\"-o ConnectTimeout=1 -o SendEnv=HBASE_CONF_DIR\"\n\n# Where log files are stored. $HBASE_HOME/logs by default.\nexport HBASE_LOG_DIR={{hbase_log_dir}}\n\n# A string representing this instance of hbase. $USER by default.\n# export HBASE_IDENT_STRING=$USER\n\n# The scheduling priority for daemon processes. See 'man nice'.\n# export HBASE_NICENESS=10\n\n# The directory where pid files are stored. /tmp by default.\nexport HBASE_PID_DIR={{hbase_pid_dir}}\n\n# Seconds to sleep between slave commands. Unset by default. This\n# can be useful in large clusters, where, e.g., slave rsyncs can\n# otherwise arrive faster than the master can service them.\n# export HBASE_SLAVE_SLEEP=0.1\n\n# Tell HBase whether it should manage it's own instance of Zookeeper or not.\nexport HBASE_MANAGES_ZK=false\n\n{% if security_enabled %}\nexport HBASE_OPTS=\"$HBASE_OPTS -Djava.security.auth.login.config={{client_jaas_config_file}}\"\nexport HBASE_MASTER_OPTS=\"$HBASE_MASTER_OPTS -Djava.security.auth.login.config={{master_jaas_config_file}} -Djavax.security.auth.useSubjectCredsOnly=false\"\nexport HBASE_REGIONSERVER_OPTS=\"$HBASE_REGIONSERVER_OPTS -Djava.security.auth.login.config={{regionserver_jaas_config_file}} -Djavax.security.auth.useSubjectCredsOnly=false\"\nexport HBASE_ZOOKEEPER_OPTS=\"$HBASE_ZOOKEEPER_OPTS -Djava.security.auth.login.config={{ams_zookeeper_jaas_config_file}}\"\n{% endif %}\n\n# use embedded native libs\n_HADOOP_NATIVE_LIB=\"/usr/lib/ams-hbase/lib/hadoop-native/\"\nexport HBASE_OPTS=\"$HBASE_OPTS -Djava.library.path=${_HADOOP_NATIVE_LIB}\"\n\n# Unset HADOOP_HOME to avoid importing HADOOP installed cluster related configs like: /usr/hdp/2.2.0.0-2041/hadoop/conf/\nexport HADOOP_HOME={{ams_hbase_home_dir}}\n\n# Explicitly Setting HBASE_HOME for AMS HBase so that there is no conflict\nexport HBASE_HOME={{ams_hbase_home_dir}}",
          "hbase_pid_dir" : "/var/run/ambari-metrics-collector/",
          "hbase_regionserver_shutdown_timeout" : "30",
          "hbase_log_dir" : "/var/log/ambari-metrics-collector",
          "hbase_regionserver_heapsize" : "768",
          "hbase_classpath_additional" : ""
        }
      }
    },
    {
      "ams-ssl-server" : {
        "properties_attributes" : { },
        "properties" : {
          "ssl.server.truststore.location" : "/etc/security/serverKeys/all.jks",
          "ssl.server.truststore.reload.interval" : "10000",
          "ssl.server.truststore.type" : "jks",
          "ssl.server.keystore.location" : "/etc/security/serverKeys/keystore.jks",
          "ssl.server.keystore.type" : "jks"
        }
      }
    },
    {
      "hbase-logsearch-conf" : {
        "properties_attributes" : { },
        "properties" : {
          "component_mappings" : "HBASE_MASTER:hbase_master;HBASE_REGIONSERVER:hbase_regionserver;PHOENIX_QUERY_SERVER:hbase_phoenix_server",
          "content" : "\n{\n  \"input\":[\n    {\n      \"type\":\"hbase_master\",\n      \"rowtype\":\"service\",\n      \"path\":\"{{default('/configurations/hbase-env/hbase_log_dir', '/var/log/hbase')}}/hbase-*-master-*.log\"\n    },\n    {\n      \"type\":\"hbase_regionserver\",\n      \"rowtype\":\"service\",\n      \"path\":\"{{default('/configurations/hbase-env/hbase_log_dir', '/var/log/hbase')}}/hbase-*-regionserver-*.log\"\n    },\n    {\n      \"type\":\"hbase_phoenix_server\",\n      \"rowtype\":\"service\",\n      \"path\":\"{{default('/configurations/hbase-env/hbase_log_dir', '/var/log/hbase')}}/phoenix-*-server.log\"\n    }\n   ],\n  \"filter\":[\n    {\n      \"filter\":\"grok\",\n      \"conditions\":{\n        \"fields\":{\n          \"type\":[\n            \"hbase_master\",\n            \"hbase_regionserver\"\n          ]\n         }\n       },\n      \"log4j_format\":\"%d{ISO8601} %-5p [%t] %c{2}: %m%n\",\n      \"multiline_pattern\":\"^(%{TIMESTAMP_ISO8601:logtime})\",\n      \"message_pattern\":\"(?m)^%{TIMESTAMP_ISO8601:logtime}%{SPACE}%{LOGLEVEL:level}%{SPACE}\\\\[%{DATA:thread_name}\\\\]%{SPACE}%{JAVACLASS:logger_name}:%{SPACE}%{GREEDYDATA:log_message}\",\n      \"post_map_values\":{\n        \"logtime\":{\n          \"map_date\":{\n            \"target_date_pattern\":\"yyyy-MM-dd HH:mm:ss,SSS\"\n          }\n         }\n       }\n     },\n    {\n      \"filter\":\"grok\",\n      \"conditions\":{\n        \"fields\":{\n          \"type\":[\n            \"hbase_phoenix_server\"\n          ]\n         }\n      },\n      \"log4j_format\":\"%d{ISO8601} %-5p [%t] %c{2}: %m%n\",\n      \"multiline_pattern\":\"^(%{TIMESTAMP_ISO8601:logtime})\",\n      \"message_pattern\":\"(?m)^%{TIMESTAMP_ISO8601:logtime}%{SPACE}%{LOGLEVEL:level}%{SPACE}%{JAVACLASS:logger_name}:%{SPACE}%{GREEDYDATA:log_message}\",\n      \"post_map_values\":{\n        \"logtime\":{\n          \"map_date\":{\n            \"target_date_pattern\":\"yyyy-MM-dd HH:mm:ss,SSS\"\n          }\n         }\n       }\n     }\n   ]\n }",
          "service_name" : "HBase"
        }
      }
    },
    {
      "ams-hbase-log4j" : {
        "properties_attributes" : { },
        "properties" : {
          "ams_hbase_log_maxfilesize" : "256",
          "content" : "\n# Licensed to the Apache Software Foundation (ASF) under one\n# or more contributor license agreements.  See the NOTICE file\n# distributed with this work for additional information\n# regarding copyright ownership.  The ASF licenses this file\n# to you under the Apache License, Version 2.0 (the\n# \"License\"); you may not use this file except in compliance\n# with the License.  You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\n\n# Define some default values that can be overridden by system properties\nhbase.root.logger=INFO,console\nhbase.security.logger=INFO,console\nhbase.log.dir=.\nhbase.log.file=hbase.log\n\n# Define the root logger to the system property \"hbase.root.logger\".\nlog4j.rootLogger=${hbase.root.logger}\n\n# Logging Threshold\nlog4j.threshold=ALL\n\n#\n# Daily Rolling File Appender\n#\nlog4j.appender.DRFA=org.apache.log4j.DailyRollingFileAppender\nlog4j.appender.DRFA.File=${hbase.log.dir}/${hbase.log.file}\n\n# Rollver at midnight\nlog4j.appender.DRFA.DatePattern=.yyyy-MM-dd\n\n# 30-day backup\n#log4j.appender.DRFA.MaxBackupIndex=30\nlog4j.appender.DRFA.layout=org.apache.log4j.PatternLayout\n\n# Pattern format: Date LogLevel LoggerName LogMessage\nlog4j.appender.DRFA.layout.ConversionPattern=%d{ISO8601} %-5p [%t] %c{2}: %m%n\n\n# Rolling File Appender properties\nhbase.log.maxfilesize={{ams_hbase_log_maxfilesize}}MB\nhbase.log.maxbackupindex={{ams_hbase_log_maxbackupindex}}\n\n# Rolling File Appender\nlog4j.appender.RFA=org.apache.log4j.RollingFileAppender\nlog4j.appender.RFA.File=${hbase.log.dir}/${hbase.log.file}\n\nlog4j.appender.RFA.MaxFileSize=${hbase.log.maxfilesize}\nlog4j.appender.RFA.MaxBackupIndex=${hbase.log.maxbackupindex}\n\nlog4j.appender.RFA.layout=org.apache.log4j.PatternLayout\nlog4j.appender.RFA.layout.ConversionPattern=%d{ISO8601} %-5p [%t] %c{2}: %m%n\n\n#\n# Security audit appender\n#\nhbase.security.log.file=SecurityAuth.audit\nhbase.security.log.maxfilesize={{ams_hbase_security_log_maxfilesize}}MB\nhbase.security.log.maxbackupindex={{ams_hbase_security_log_maxbackupindex}}\nlog4j.appender.RFAS=org.apache.log4j.RollingFileAppender\nlog4j.appender.RFAS.File=${hbase.log.dir}/${hbase.security.log.file}\nlog4j.appender.RFAS.MaxFileSize=${hbase.security.log.maxfilesize}\nlog4j.appender.RFAS.MaxBackupIndex=${hbase.security.log.maxbackupindex}\nlog4j.appender.RFAS.layout=org.apache.log4j.PatternLayout\nlog4j.appender.RFAS.layout.ConversionPattern=%d{ISO8601} %p %c: %m%n\nlog4j.category.SecurityLogger=${hbase.security.logger}\nlog4j.additivity.SecurityLogger=false\n#log4j.logger.SecurityLogger.org.apache.hadoop.hbase.security.access.AccessController=TRACE\n\n#\n# Null Appender\n#\nlog4j.appender.NullAppender=org.apache.log4j.varia.NullAppender\n\n#\n# console\n# Add \"console\" to rootlogger above if you want to use this\n#\nlog4j.appender.console=org.apache.log4j.ConsoleAppender\nlog4j.appender.console.target=System.err\nlog4j.appender.console.layout=org.apache.log4j.PatternLayout\nlog4j.appender.console.layout.ConversionPattern=%d{ISO8601} %-5p [%t] %c{2}: %m%n\n\n# Custom Logging levels\n\nlog4j.logger.org.apache.zookeeper=INFO\n#log4j.logger.org.apache.hadoop.fs.FSNamesystem=DEBUG\nlog4j.logger.org.apache.hadoop.hbase=INFO\n# Make these two classes INFO-level. Make them DEBUG to see more zk debug.\nlog4j.logger.org.apache.hadoop.hbase.zookeeper.ZKUtil=INFO\nlog4j.logger.org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher=INFO\n#log4j.logger.org.apache.hadoop.dfs=DEBUG\n# Set this class to log INFO only otherwise its OTT\n# Enable this to get detailed connection error/retry logging.\n# log4j.logger.org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation=TRACE\n\n\n# Uncomment this line to enable tracing on _every_ RPC call (this can be a lot of output)\n#log4j.logger.org.apache.hadoop.ipc.HBaseServer.trace=DEBUG\n\n# Uncomment the below if you want to remove logging of client region caching'\n# and scan of .META. messages\n# log4j.logger.org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation=INFO\n# log4j.logger.org.apache.hadoop.hbase.client.MetaScanner=INFO",
          "ams_hbase_log_maxbackupindex" : "20",
          "ams_hbase_security_log_maxbackupindex" : "20",
          "ams_hbase_security_log_maxfilesize" : "256"
        }
      }
    },
    {
      "ssl-client" : {
        "properties_attributes" : { },
        "properties" : {
          "ssl.client.truststore.reload.interval" : "10000",
          "ssl.client.keystore.location" : "/etc/security/clientKeys/keystore.jks",
          "ssl.client.truststore.location" : "/etc/security/clientKeys/all.jks",
          "ssl.client.truststore.type" : "jks",
          "ssl.client.keystore.type" : "jks"
        }
      }
    },
    {
      "ranger-hbase-audit" : {
        "properties_attributes" : { },
        "properties" : { }
      }
    },
    {
      "hive-atlas-application.properties" : {
        "properties_attributes" : { },
        "properties" : {
          "atlas.hook.hive.maxThreads" : "5",
          "atlas.hook.hive.keepAliveTime" : "10",
          "atlas.hook.hive.synchronous" : "false",
          "atlas.hook.hive.minThreads" : "5",
          "atlas.hook.hive.numRetries" : "3",
          "atlas.hook.hive.queueSize" : "1000"
        }
      }
    },
    {
      "ranger-kafka-plugin-properties" : {
        "properties_attributes" : { },
        "properties" : { }
      }
    },
    {
      "ams-hbase-policy" : {
        "properties_attributes" : { },
        "properties" : {
          "security.masterregion.protocol.acl" : "*",
          "security.admin.protocol.acl" : "*",
          "security.client.protocol.acl" : "*"
        }
      }
    },
    {
      "ranger-hbase-plugin-properties" : {
        "properties_attributes" : { },
        "properties" : { }
      }
    },
    {
      "ranger-hdfs-security" : {
        "properties_attributes" : { },
        "properties" : { }
      }
    },
    {
      "nifi-properties" : {
        "properties_attributes" : { },
        "properties" : {
          "nifi.remote.input.http.transaction.ttl" : "30 sec",
          "nifi.flow.configuration.archive.max.storage" : "500 MB",
          "nifi.content.claim.max.appendable.size" : "1 MB",
          "nifi.sensitive.props.provider" : "BC",
          "nifi.cluster.node.protocol.max.threads" : "",
          "nifi.content.repository.archive.enabled" : "true",
          "nifi.flow.configuration.archive.dir" : "{{nifi_internal_dir}}/archive/",
          "nifi.security.keystore" : "{{nifi_keystore}}",
          "nifi.web.http.host" : "{{nifi_node_nonssl_host}}",
          "nifi.flowservice.writedelay.interval" : "500 ms",
          "nifi.remote.input.secure" : "{{nifi_ssl_enabled}}",
          "nifi.provenance.repository.max.storage.time" : "24 hours",
          "nifi.swap.in.period" : "5 sec",
          "nifi.web.https.network.interface.default" : "",
          "nifi.bored.yield.duration" : "10 millis",
          "nifi.variable.registry.properties" : "",
          "nifi.provenance.repository.query.threads" : "2",
          "nifi.swap.in.threads" : "1",
          "nifi.cluster.node.protocol.threads" : "10",
          "nifi.ui.banner.text" : "",
          "nifi.flow.configuration.archive.max.time" : "30 days",
          "nifi.security.keyPasswd" : "{{nifi_keyPasswd}}",
          "nifi.security.ocsp.responder.url" : "",
          "nifi.provenance.repository.compress.on.rollover" : "true",
          "nifi.kerberos.spnego.principal" : "",
          "nifi.flowcontroller.graceful.shutdown.period" : "10 sec",
          "nifi.cluster.node.event.history.size" : "25",
          "nifi.provenance.repository.implementation" : "org.apache.nifi.provenance.PersistentProvenanceRepository",
          "nifi.provenance.repository.rollover.size" : "100 MB",
          "nifi.cluster.flow.election.max.wait.time" : "5 mins",
          "nifi.components.status.repository.implementation" : "org.apache.nifi.controller.status.history.VolatileComponentStatusRepository",
          "nifi.content.repository.archive.max.retention.period" : "12 hours",
          "nifi.flow.configuration.archive.max.count" : "",
          "nifi.cluster.flow.election.max.candidates" : "{{nifi_num_nodes}}",
          "nifi.provenance.repository.encryption.key.provider.implementation" : "",
          "nifi.web.jetty.threads" : "200",
          "nifi.provenance.repository.rollover.time" : "30 secs",
          "nifi.cluster.protocol.heartbeat.interval" : "5 sec",
          "nifi.provenance.repository.max.storage.size" : "1 GB",
          "nifi.h2.url.append" : ";LOCK_TIMEOUT=25000;WRITE_DELAY=0;AUTO_SERVER=FALSE",
          "nifi.provenance.repository.debug.frequency" : "1_000_000",
          "nifi.sensitive.props.additional.keys" : "",
          "nifi.security.ocsp.responder.certificate" : "",
          "nifi.cluster.node.connection.timeout" : "5 sec",
          "nifi.components.status.snapshot.frequency" : "1 min",
          "nifi.security.identity.mapping.pattern.kerb" : "",
          "nifi.web.http.network.interface.default" : "",
          "nifi.cluster.is.node" : "{{nifi_is_node}}",
          "nifi.security.needClientAuth" : "{{nifi_needClientAuth}}",
          "nifi.flowfile.repository.partitions" : "256",
          "nifi.provenance.repository.indexed.attributes" : "",
          "nifi.provenance.repository.index.shard.size" : "500 MB",
          "nifi.state.management.embedded.zookeeper.start" : "false",
          "nifi.security.keystoreType" : "{{nifi_keystoreType}}",
          "nifi.state.management.provider.local" : "local-provider",
          "nifi.provenance.repository.encryption.key.provider.location" : "",
          "nifi.flow.configuration.file" : "{{nifi_flow_config_dir}}/flow.xml.gz",
          "nifi.nar.working.directory" : "{{nifi_internal_dir}}/work/nar",
          "nifi.authorizer.configuration.file" : "{{nifi_config_dir}}/authorizers.xml",
          "nifi.templates.directory" : "{{nifi_internal_dir}}/templates",
          "nifi.state.management.provider.cluster" : "zk-provider",
          "nifi.zookeeper.root.node" : "{{nifi_znode}}",
          "nifi.security.keystorePasswd" : "{{nifi_keystorePasswd}}",
          "nifi.security.truststoreType" : "{{nifi_truststoreType}}",
          "nifi.content.viewer.url" : "../nifi-content-viewer/",
          "nifi.provenance.repository.encryption.key.id" : "",
          "nifi.zookeeper.session.timeout" : "3 secs",
          "nifi.content.repository.archive.max.usage.percentage" : "50%",
          "nifi.nar.library.directory" : "{{nifi_install_dir}}/lib",
          "nifi.swap.manager.implementation" : "org.apache.nifi.controller.FileSystemSwapManager",
          "nifi.cluster.node.address" : "{{nifi_node_host}}",
          "nifi.flow.configuration.archive.enabled" : "true",
          "nifi.provenance.repository.journal.count" : "16",
          "nifi.provenance.repository.buffer.size" : "100000",
          "nifi.kerberos.krb5.file" : "",
          "nifi.queue.swap.threshold" : "20000",
          "nifi.sensitive.props.key" : "{{nifi_sensitive_props_key}}",
          "nifi.components.status.repository.buffer.size" : "1440",
          "nifi.security.identity.mapping.value.kerb" : "",
          "nifi.content.repository.directory.default" : "{{nifi_content_repo_dir_default}}",
          "nifi.kerberos.service.principal" : "",
          "nifi.flowfile.repository.implementation" : "org.apache.nifi.controller.repository.WriteAheadFlowFileRepository",
          "nifi.state.management.embedded.zookeeper.properties" : "{{nifi_config_dir}}/zookeeper.properties",
          "nifi.web.war.directory" : "{{nifi_install_dir}}/lib",
          "nifi.swap.out.period" : "5 sec",
          "nifi.kerberos.spnego.authentication.expiration" : "12 hours",
          "nifi.documentation.working.directory" : "{{nifi_internal_dir}}/work/docs/components",
          "nifi.remote.input.socket.port" : "",
          "nifi.web.https.host" : "{{nifi_node_ssl_host}}",
          "nifi.web.jetty.working.directory" : "{{nifi_internal_dir}}/work/jetty",
          "nifi.security.identity.mapping.pattern.dn" : "",
          "nifi.zookeeper.connect.timeout" : "3 secs",
          "nifi.flowfile.repository.checkpoint.interval" : "2 mins",
          "nifi.cluster.node.read.timeout" : "5 sec",
          "nifi.administrative.yield.duration" : "30 sec",
          "nifi.sensitive.props.algorithm" : "PBEWITHMD5AND256BITAES-CBC-OPENSSL",
          "nifi.content.repository.always.sync" : "false",
          "nifi.provenance.repository.indexed.fields" : "EventType, FlowFileUUID, Filename, ProcessorID, Relationship",
          "nifi.provenance.repository.index.threads" : "1",
          "nifi.provenance.repository.encryption.key" : "",
          "nifi.swap.out.threads" : "4",
          "nifi.cluster.protocol.is.secure" : "{{nifi_ssl_enabled}}",
          "nifi.web.http.port" : "{{nifi_node_port}}",
          "nifi.remote.input.host" : "",
          "nifi.content.claim.max.flow.files" : "100",
          "nifi.flowcontroller.autoResumeState" : "true",
          "nifi.provenance.repository.max.attribute.length" : "65536",
          "nifi.security.user.authorizer" : "{{nifi_authorizer}}",
          "nifi.kerberos.spnego.keytab.location" : "",
          "nifi.zookeeper.connect.string" : "{{zookeeper_quorum}}",
          "nifi.flowfile.repository.always.sync" : "false",
          "nifi.provenance.repository.directory.default" : "{{nifi_provenance_repo_dir_default}}",
          "nifi.state.management.configuration.file" : "{{nifi_config_dir}}/state-management.xml",
          "nifi.web.https.port" : "{{nifi_node_ssl_port}}",
          "nifi.security.user.login.identity.provider" : "",
          "nifi.content.repository.implementation" : "org.apache.nifi.controller.repository.FileSystemRepository",
          "nifi.flowfile.repository.directory" : "{{nifi_flowfile_repo_dir}}",
          "nifi.login.identity.provider.configuration.file" : "{{nifi_config_dir}}/login-identity-providers.xml",
          "nifi.provenance.repository.always.sync" : "false",
          "nifi.kerberos.service.keytab.location" : "",
          "nifi.cluster.node.protocol.port" : "{{nifi_node_protocol_port}}",
          "nifi.security.truststorePasswd" : "{{nifi_truststorePasswd}}",
          "nifi.ui.autorefresh.interval" : "30 sec",
          "nifi.security.identity.mapping.value.dn" : "",
          "nifi.security.truststore" : "{{nifi_truststore}}",
          "nifi.remote.input.http.enabled" : "true",
          "nifi.database.directory" : "{{nifi_database_dir}}"
        }
      }
    },
    {
      "kafka-logsearch-conf" : {
        "properties_attributes" : { },
        "properties" : {
          "component_mappings" : "KAFKA_BROKER:kafka_server,kafka_request,kafka_logcleaner,kafka_controller,kafka_statechange",
          "content" : "\n{\n  \"input\":[\n    {\n      \"type\":\"kafka_controller\",\n      \"rowtype\":\"service\",\n      \"path\":\"{{default('/configurations/kafka-env/kafka_log_dir', '/var/log/kafka')}}/controller.log\"\n    },\n    {\n      \"type\":\"kafka_request\",\n      \"rowtype\":\"service\",\n      \"path\":\"{{default('/configurations/kafka-env/kafka_log_dir', '/var/log/kafka')}}/kafka-request.log\"\n    },\n    {\n      \"type\":\"kafka_logcleaner\",\n      \"rowtype\":\"service\",\n      \"path\":\"{{default('/configurations/kafka-env/kafka_log_dir', '/var/log/kafka')}}/log-cleaner.log\"\n    },\n    {\n      \"type\":\"kafka_server\",\n      \"rowtype\":\"service\",\n      \"path\":\"{{default('/configurations/kafka-env/kafka_log_dir', '/var/log/kafka')}}/server.log\"\n    },\n    {\n      \"type\":\"kafka_statechange\",\n      \"rowtype\":\"service\",\n      \"path\":\"{{kafka_log_dir}}/state-change.log\"\n    }\n   ],\n  \"filter\":[\n    {\n      \"filter\":\"grok\",\n      \"conditions\":{\n        \"fields\":{\n          \"type\":[\n            \"kafka_controller\",\n            \"kafka_request\",\n            \"kafka_logcleaner\"\n          ]\n         }\n       },\n      \"log4j_format\":\"[%d] %p %m (%c)%n\",\n      \"multiline_pattern\":\"^(\\\\[%{TIMESTAMP_ISO8601:logtime}\\\\])\",\n      \"message_pattern\":\"(?m)^\\\\[%{TIMESTAMP_ISO8601:logtime}\\\\]%{SPACE}%{LOGLEVEL:level}%{SPACE}\\\\[%{DATA:thread_name}\\\\]%{SPACE}%{GREEDYDATA:log_message}\",\n      \"post_map_values\":{\n        \"logtime\":{\n          \"map_date\":{\n            \"target_date_pattern\":\"yyyy-MM-dd HH:mm:ss,SSS\"\n          }\n         }\n       }\n     },\n    {\n      \"filter\":\"grok\",\n      \"comment\":\"Suppose to be same log4j pattern as other kafka processes, but some reason thread is not printed\",\n      \"conditions\":{\n        \"fields\":{\n          \"type\":[\n            \"kafka_server\",\n            \"kafka_statechange\"\n          ]\n         }\n       },\n      \"log4j_format\":\"[%d] %p %m (%c)%n\",\n      \"multiline_pattern\":\"^(\\\\[%{TIMESTAMP_ISO8601:logtime}\\\\])\",\n      \"message_pattern\":\"(?m)^\\\\[%{TIMESTAMP_ISO8601:logtime}\\\\]%{SPACE}%{LOGLEVEL:level}%{SPACE}%{GREEDYDATA:log_message}\",\n      \"post_map_values\":{\n        \"logtime\":{\n          \"map_date\":{\n            \"target_date_pattern\":\"yyyy-MM-dd HH:mm:ss,SSS\"\n          }\n         }\n       }\n     }\n   ]\n }",
          "service_name" : "Kafka"
        }
      }
    },
    {
      "logfeeder-grok" : {
        "properties_attributes" : { },
        "properties" : {
          "default_grok_patterns" : "# Licensed to the Apache Software Foundation (ASF) under one or more\n# contributor license agreements.  See the NOTICE file distributed with\n# this work for additional information regarding copyright ownership.\n# The ASF licenses this file to You under the Apache License, Version 2.0\n# (the \"License\"); you may not use this file except in compliance with\n# the License.  You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\n#Updated JAVACLASS to be same as JAVAFILE. Because if class doesn't have package, then it doesn't work.\nJAVACLASS (?:[A-Za-z$0-9_. -]+)\n#JAVACLASS (?:[a-zA-Z$_][a-zA-Z$_0-9]*\\.)*[a-zA-Z$_][a-zA-Z$_0-9]*\n#JAVACLASS (?:[a-zA-Z0-9-]+\\.)+[A-Za-z0-9$]+\n\n#Space is an allowed character to match special cases like 'Native Method' or 'Unknown Source'\nJAVAFILE (?:[A-Za-z0-9_. -]+)\n#Allow special <init> or <clinit> method\nJAVAMETHOD (?:(<init>)|(<clinit>)|[a-zA-Z$_][a-zA-Z$_0-9]*)\n#Line number is optional in special cases 'Native method' or 'Unknown source'\nJAVASTACKTRACEPART %{SPACE}at %{JAVACLASS:class}\\.%{JAVAMETHOD:method}\\(%{JAVAFILE:file}(?::%{NUMBER:line})?\\)\n# Java Logs\nJAVATHREAD (?:[A-Z]{2}-Processor[\\d]+)\n\nJAVASTACKTRACEPART at %{JAVACLASS:class}\\.%{WORD:method}\\(%{JAVAFILE:file}:%{NUMBER:line}\\)\nJAVALOGMESSAGE (.*)\n# MMM dd, yyyy HH:mm:ss eg: Jan 9, 2014 7:13:13 AM\nCATALINA_DATESTAMP %{MONTH} %{MONTHDAY}, 20%{YEAR} %{HOUR}:?%{MINUTE}(?::?%{SECOND}) (?:AM|PM)\n# yyyy-MM-dd HH:mm:ss,SSS ZZZ eg: 2014-01-09 17:32:25,527 -0800\nTOMCAT_DATESTAMP 20%{YEAR}-%{MONTHNUM}-%{MONTHDAY} %{HOUR}:?%{MINUTE}(?::?%{SECOND}) %{ISO8601_TIMEZONE}\nCATALINALOG %{CATALINA_DATESTAMP:timestamp} %{JAVACLASS:class} %{JAVALOGMESSAGE:logmessage}\n# 2014-01-09 20:03:28,269 -0800 | ERROR | com.example.service.ExampleService - something compeletely unexpected happened...\nTOMCATLOG %{TOMCAT_DATESTAMP:timestamp} \\| %{LOGLEVEL:level} \\| %{JAVACLASS:class} - %{JAVALOGMESSAGE:logmessage}\n\nUSERNAME [a-zA-Z0-9._-]+\nUSER %{USERNAME}\nEMAILLOCALPART [a-zA-Z][a-zA-Z0-9_.+-=:]+\nEMAILADDRESS %{EMAILLOCALPART}@%{HOSTNAME}\nHTTPDUSER %{EMAILADDRESS}|%{USER}\nINT (?:[+-]?(?:[0-9]+))\nBASE10NUM (?<![0-9.+-])(?>[+-]?(?:(?:[0-9]+(?:\\.[0-9]+)?)|(?:\\.[0-9]+)))\nNUMBER (?:%{BASE10NUM})\nBASE16NUM (?<![0-9A-Fa-f])(?:[+-]?(?:0x)?(?:[0-9A-Fa-f]+))\nBASE16FLOAT \\b(?<![0-9A-Fa-f.])(?:[+-]?(?:0x)?(?:(?:[0-9A-Fa-f]+(?:\\.[0-9A-Fa-f]*)?)|(?:\\.[0-9A-Fa-f]+)))\\b\n\nPOSINT \\b(?:[1-9][0-9]*)\\b\nNONNEGINT \\b(?:[0-9]+)\\b\nWORD \\b\\w+\\b\nNOTSPACE \\S+\nSPACE \\s*\nDATA .*?\nGREEDYDATA .*\nQUOTEDSTRING (?>(?<!\\\\)(?>\"(?>\\\\.|[^\\\\\"]+)+\"|\"\"|(?>'(?>\\\\.|[^\\\\']+)+')|''|(?>`(?>\\\\.|[^\\\\`]+)+`)|``))\nUUID [A-Fa-f0-9]{8}-(?:[A-Fa-f0-9]{4}-){3}[A-Fa-f0-9]{12}\n\n# Networking\nMAC (?:%{CISCOMAC}|%{WINDOWSMAC}|%{COMMONMAC})\nCISCOMAC (?:(?:[A-Fa-f0-9]{4}\\.){2}[A-Fa-f0-9]{4})\nWINDOWSMAC (?:(?:[A-Fa-f0-9]{2}-){5}[A-Fa-f0-9]{2})\nCOMMONMAC (?:(?:[A-Fa-f0-9]{2}:){5}[A-Fa-f0-9]{2})\nIPV6 ((([0-9A-Fa-f]{1,4}:){7}([0-9A-Fa-f]{1,4}|:))|(([0-9A-Fa-f]{1,4}:){6}(:[0-9A-Fa-f]{1,4}|((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3})|:))|(([0-9A-Fa-f]{1,4}:){5}(((:[0-9A-Fa-f]{1,4}){1,2})|:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3})|:))|(([0-9A-Fa-f]{1,4}:){4}(((:[0-9A-Fa-f]{1,4}){1,3})|((:[0-9A-Fa-f]{1,4})?:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){3}(((:[0-9A-Fa-f]{1,4}){1,4})|((:[0-9A-Fa-f]{1,4}){0,2}:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){2}(((:[0-9A-Fa-f]{1,4}){1,5})|((:[0-9A-Fa-f]{1,4}){0,3}:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){1}(((:[0-9A-Fa-f]{1,4}){1,6})|((:[0-9A-Fa-f]{1,4}){0,4}:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(:(((:[0-9A-Fa-f]{1,4}){1,7})|((:[0-9A-Fa-f]{1,4}){0,5}:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:)))(%.+)?\nIPV4 (?<![0-9])(?:(?:[0-1]?[0-9]{1,2}|2[0-4][0-9]|25[0-5])[.](?:[0-1]?[0-9]{1,2}|2[0-4][0-9]|25[0-5])[.](?:[0-1]?[0-9]{1,2}|2[0-4][0-9]|25[0-5])[.](?:[0-1]?[0-9]{1,2}|2[0-4][0-9]|25[0-5]))(?![0-9])\nIP (?:%{IPV6}|%{IPV4})\nHOSTNAME \\b(?:[0-9A-Za-z][0-9A-Za-z-]{0,62})(?:\\.(?:[0-9A-Za-z][0-9A-Za-z-]{0,62}))*(\\.?|\\b)\nIPORHOST (?:%{IP}|%{HOSTNAME})\nHOSTPORT %{IPORHOST}:%{POSINT}\n\n# paths\nPATH (?:%{UNIXPATH}|%{WINPATH})\nUNIXPATH (/([\\w_%!$@:.,~-]+|\\\\.)*)+\nTTY (?:/dev/(pts|tty([pq])?)(\\w+)?/?(?:[0-9]+))\nWINPATH (?>[A-Za-z]+:|\\\\)(?:\\\\[^\\\\?*]*)+\nURIPROTO [A-Za-z]+(\\+[A-Za-z+]+)?\nURIHOST %{IPORHOST}(?::%{POSINT:port})?\n# uripath comes loosely from RFC1738, but mostly from what Firefox\n# doesn't turn into %XX\nURIPATH (?:/[A-Za-z0-9$.+!*'(){},~:;=@#%_\\-]*)+\n#URIPARAM \\?(?:[A-Za-z0-9]+(?:=(?:[^&]*))?(?:&(?:[A-Za-z0-9]+(?:=(?:[^&]*))?)?)*)?\nURIPARAM \\?[A-Za-z0-9$.+!*'|(){},~@#%&/=:;_?\\-\\[\\]<>]*\nURIPATHPARAM %{URIPATH}(?:%{URIPARAM})?\nURI %{URIPROTO}://(?:%{USER}(?::[^@]*)?@)?(?:%{URIHOST})?(?:%{URIPATHPARAM})?\n\n# Months: January, Feb, 3, 03, 12, December\nMONTH \\b(?:Jan(?:uary|uar)?|Feb(?:ruary|ruar)?|M(?:a|ä)?r(?:ch|z)?|Apr(?:il)?|Ma(?:y|i)?|Jun(?:e|i)?|Jul(?:y)?|Aug(?:ust)?|Sep(?:tember)?|O(?:c|k)?t(?:ober)?|Nov(?:ember)?|De(?:c|z)(?:ember)?)\\b\nMONTHNUM (?:0?[1-9]|1[0-2])\nMONTHNUM2 (?:0[1-9]|1[0-2])\nMONTHDAY (?:(?:0[1-9])|(?:[12][0-9])|(?:3[01])|[1-9])\n\n# Days: Monday, Tue, Thu, etc...\nDAY (?:Mon(?:day)?|Tue(?:sday)?|Wed(?:nesday)?|Thu(?:rsday)?|Fri(?:day)?|Sat(?:urday)?|Sun(?:day)?)\n\n# Years?\nYEAR (?>\\d\\d){1,2}\nHOUR (?:2[0123]|[01]?[0-9])\nMINUTE (?:[0-5][0-9])\n# '60' is a leap second in most time standards and thus is valid.\nSECOND (?:(?:[0-5]?[0-9]|60)(?:[:.,][0-9]+)?)\nTIME (?!<[0-9])%{HOUR}:%{MINUTE}(?::%{SECOND})(?![0-9])\n# datestamp is YYYY/MM/DD-HH:MM:SS.UUUU (or something like it)\nDATE_US %{MONTHNUM}[/-]%{MONTHDAY}[/-]%{YEAR}\nDATE_EU %{MONTHDAY}[./-]%{MONTHNUM}[./-]%{YEAR}\nDATE_EU2 %{YEAR}[./-]%{MONTHNUM}[./-]%{MONTHDAY}\nISO8601_TIMEZONE (?:Z|[+-]%{HOUR}(?::?%{MINUTE}))\nISO8601_SECOND (?:%{SECOND}|60)\nTIMESTAMP_ISO8601 %{YEAR}-%{MONTHNUM}-%{MONTHDAY}[T ]%{HOUR}:?%{MINUTE}(?::?%{SECOND})?%{ISO8601_TIMEZONE}?\nDATE %{DATE_US}|%{DATE_EU}|%{DATE_EU2}\nDATESTAMP %{DATE}[- ]%{TIME}\nTZ (?:[PMCE][SD]T|UTC)\nDATESTAMP_RFC822 %{DAY} %{MONTH} %{MONTHDAY} %{YEAR} %{TIME} %{TZ}\nDATESTAMP_RFC2822 %{DAY}, %{MONTHDAY} %{MONTH} %{YEAR} %{TIME} %{ISO8601_TIMEZONE}\nDATESTAMP_OTHER %{DAY} %{MONTH} %{MONTHDAY} %{TIME} %{TZ} %{YEAR}\nDATESTAMP_EVENTLOG %{YEAR}%{MONTHNUM2}%{MONTHDAY}%{HOUR}%{MINUTE}%{SECOND}\nHTTPDERROR_DATE %{DAY} %{MONTH} %{MONTHDAY} %{TIME} %{YEAR}\n\n# Syslog Dates: Month Day HH:MM:SS\nSYSLOGTIMESTAMP %{MONTH} +%{MONTHDAY} %{TIME}\nPROG [\\x21-\\x5a\\x5c\\x5e-\\x7e]+\nSYSLOGPROG %{PROG:program}(?:\\[%{POSINT:pid}\\])?\nSYSLOGHOST %{IPORHOST}\nSYSLOGFACILITY <%{NONNEGINT:facility}.%{NONNEGINT:priority}>\nHTTPDATE %{MONTHDAY}/%{MONTH}/%{YEAR}:%{TIME} %{INT}\n\n# Shortcuts\nQS %{QUOTEDSTRING}\n\n# Log formats\nSYSLOGBASE %{SYSLOGTIMESTAMP:timestamp} (?:%{SYSLOGFACILITY} )?%{SYSLOGHOST:logsource} %{SYSLOGPROG}:\nCOMMONAPACHELOG %{IPORHOST:clientip} %{HTTPDUSER:ident} %{USER:auth} \\[%{HTTPDATE:timestamp}\\] \"(?:%{WORD:verb} %{NOTSPACE:request}(?: HTTP/%{NUMBER:httpversion})?|%{DATA:rawrequest})\" %{NUMBER:response} (?:%{NUMBER:bytes}|-)\nCOMBINEDAPACHELOG %{COMMONAPACHELOG} %{QS:referrer} %{QS:agent}\nHTTPD20_ERRORLOG \\[%{HTTPDERROR_DATE:timestamp}\\] \\[%{LOGLEVEL:loglevel}\\] (?:\\[client %{IPORHOST:clientip}\\] ){0,1}%{GREEDYDATA:errormsg}\nHTTPD24_ERRORLOG \\[%{HTTPDERROR_DATE:timestamp}\\] \\[%{WORD:module}:%{LOGLEVEL:loglevel}\\] \\[pid %{POSINT:pid}:tid %{NUMBER:tid}\\]( \\(%{POSINT:proxy_errorcode}\\)%{DATA:proxy_errormessage}:)?( \\[client %{IPORHOST:client}:%{POSINT:clientport}\\])? %{DATA:errorcode}: %{GREEDYDATA:message}\nHTTPD_ERRORLOG %{HTTPD20_ERRORLOG}|%{HTTPD24_ERRORLOG}\n\n\n# Log Levels\nLOGLEVEL ([Aa]lert|ALERT|[Tt]race|TRACE|[Dd]ebug|DEBUG|[Nn]otice|NOTICE|[Ii]nfo|INFO|[Ww]arn?(?:ing)?|WARN?(?:ING)?|[Ee]rr?(?:or)?|ERR?(?:OR)?|[Cc]rit?(?:ical)?|CRIT?(?:ICAL)?|[Ff]atal|FATAL|[Ss]evere|SEVERE|EMERG(?:ENCY)?|[Ee]merg(?:ency)?)\n\n\n# Log specific patterns\nUSER_SYNC_DATE %{MONTHDAY} %{MONTH} %{YEAR} %{TIME}\nSPARK_DATESTAMP %{YEAR}[/-]%{MONTHNUM2}[/-]%{MONTHDAY} %{TIME}\nCUSTOM_DATESTAMP %{MONTHDAY} %{MONTH} %{YEAR} %{TIME}\nCUSTOM_SEPARATOR %{SPACE}\\|%{SPACE}",
          "custom_grok_patterns" : ""
        }
      }
    },
    {
      "yarn-log4j" : {
        "properties_attributes" : { },
        "properties" : {
          "yarn_rm_summary_log_max_backup_size" : "256",
          "yarn_rm_summary_log_number_of_backup_files" : "20",
          "content" : "\n#Relative to Yarn Log Dir Prefix\nyarn.log.dir=.\n#\n# Job Summary Appender\n#\n# Use following logger to send summary to separate file defined by\n# hadoop.mapreduce.jobsummary.log.file rolled daily:\n# hadoop.mapreduce.jobsummary.logger=INFO,JSA\n#\nhadoop.mapreduce.jobsummary.logger=${hadoop.root.logger}\nhadoop.mapreduce.jobsummary.log.file=hadoop-mapreduce.jobsummary.log\nlog4j.appender.JSA=org.apache.log4j.DailyRollingFileAppender\n# Set the ResourceManager summary log filename\nyarn.server.resourcemanager.appsummary.log.file=hadoop-mapreduce.jobsummary.log\n# Set the ResourceManager summary log level and appender\nyarn.server.resourcemanager.appsummary.logger=${hadoop.root.logger}\n#yarn.server.resourcemanager.appsummary.logger=INFO,RMSUMMARY\n\n# To enable AppSummaryLogging for the RM,\n# set yarn.server.resourcemanager.appsummary.logger to\n# LEVEL,RMSUMMARY in hadoop-env.sh\n\n# Appender for ResourceManager Application Summary Log\n# Requires the following properties to be set\n#    - hadoop.log.dir (Hadoop Log directory)\n#    - yarn.server.resourcemanager.appsummary.log.file (resource manager app summary log filename)\n#    - yarn.server.resourcemanager.appsummary.logger (resource manager app summary log level and appender)\nlog4j.appender.RMSUMMARY=org.apache.log4j.RollingFileAppender\nlog4j.appender.RMSUMMARY.File=${yarn.log.dir}/${yarn.server.resourcemanager.appsummary.log.file}\nlog4j.appender.RMSUMMARY.MaxFileSize={{yarn_rm_summary_log_max_backup_size}}MB\nlog4j.appender.RMSUMMARY.MaxBackupIndex={{yarn_rm_summary_log_number_of_backup_files}}\nlog4j.appender.RMSUMMARY.layout=org.apache.log4j.PatternLayout\nlog4j.appender.RMSUMMARY.layout.ConversionPattern=%d{ISO8601} %p %c{2}: %m%n\nlog4j.appender.JSA.layout=org.apache.log4j.PatternLayout\nlog4j.appender.JSA.layout.ConversionPattern=%d{yy/MM/dd HH:mm:ss} %p %c{2}: %m%n\nlog4j.appender.JSA.DatePattern=.yyyy-MM-dd\nlog4j.appender.JSA.layout=org.apache.log4j.PatternLayout\nlog4j.logger.org.apache.hadoop.yarn.server.resourcemanager.RMAppManager$ApplicationSummary=${yarn.server.resourcemanager.appsummary.logger}\nlog4j.additivity.org.apache.hadoop.yarn.server.resourcemanager.RMAppManager$ApplicationSummary=false\n\n# Appender for viewing information for errors and warnings\nyarn.ewma.cleanupInterval=300\nyarn.ewma.messageAgeLimitSeconds=86400\nyarn.ewma.maxUniqueMessages=250\nlog4j.appender.EWMA=org.apache.hadoop.yarn.util.Log4jWarningErrorMetricsAppender\nlog4j.appender.EWMA.cleanupInterval=${yarn.ewma.cleanupInterval}\nlog4j.appender.EWMA.messageAgeLimitSeconds=${yarn.ewma.messageAgeLimitSeconds}\nlog4j.appender.EWMA.maxUniqueMessages=${yarn.ewma.maxUniqueMessages}\n\n# Audit logging for ResourceManager\nrm.audit.logger=${hadoop.root.logger}\nlog4j.logger.org.apache.hadoop.yarn.server.resourcemanager.RMAuditLogger=${rm.audit.logger}\nlog4j.additivity.org.apache.hadoop.yarn.server.resourcemanager.RMAuditLogger=false\nlog4j.appender.RMAUDIT=org.apache.log4j.DailyRollingFileAppender\nlog4j.appender.RMAUDIT.File=${yarn.log.dir}/rm-audit.log\nlog4j.appender.RMAUDIT.layout=org.apache.log4j.PatternLayout\nlog4j.appender.RMAUDIT.layout.ConversionPattern=%d{ISO8601} %p %c{2}: %m%n\nlog4j.appender.RMAUDIT.DatePattern=.yyyy-MM-dd\n\n# Audit logging for NodeManager\nnm.audit.logger=${hadoop.root.logger}\nlog4j.logger.org.apache.hadoop.yarn.server.nodemanager.NMAuditLogger=${nm.audit.logger}\nlog4j.additivity.org.apache.hadoop.yarn.server.nodemanager.NMAuditLogger=false\nlog4j.appender.NMAUDIT=org.apache.log4j.DailyRollingFileAppender\nlog4j.appender.NMAUDIT.File=${yarn.log.dir}/nm-audit.log\nlog4j.appender.NMAUDIT.layout=org.apache.log4j.PatternLayout\nlog4j.appender.NMAUDIT.layout.ConversionPattern=%d{ISO8601} %p %c{2}: %m%n\nlog4j.appender.NMAUDIT.DatePattern=.yyyy-MM-dd"
        }
      }
    },
    {
      "mapred-env" : {
        "properties_attributes" : { },
        "properties" : {
          "jobhistory_heapsize" : "900",
          "mapred_user_nofile_limit" : "32768",
          "mapred_user" : "mapred",
          "mapred_user_nproc_limit" : "65536",
          "mapred_pid_dir_prefix" : "/var/run/hadoop-mapreduce",
          "mapred_log_dir_prefix" : "/var/log/hadoop-mapreduce",
          "content" : "\n# export JAVA_HOME=/home/y/libexec/jdk1.6.0/\n\nexport HADOOP_JOB_HISTORYSERVER_HEAPSIZE={{jobhistory_heapsize}}\n\nexport HADOOP_MAPRED_ROOT_LOGGER=INFO,RFA\n\n#export HADOOP_JOB_HISTORYSERVER_OPTS=\n#export HADOOP_MAPRED_LOG_DIR=\"\" # Where log files are stored.  $HADOOP_MAPRED_HOME/logs by default.\n#export HADOOP_JHS_LOGGER=INFO,RFA # Hadoop JobSummary logger.\n#export HADOOP_MAPRED_PID_DIR= # The pid files are stored. /tmp by default.\n#export HADOOP_MAPRED_IDENT_STRING= #A string representing this instance of hadoop. $USER by default\n#export HADOOP_MAPRED_NICENESS= #The scheduling priority for daemons. Defaults to 0."
        }
      }
    },
    {
      "ranger-kafka-security" : {
        "properties_attributes" : { },
        "properties" : { }
      }
    },
    {
      "hive-env" : {
        "properties_attributes" : { },
        "properties" : {
          "hive_database" : "New MySQL Database",
          "hcat_log_dir" : "/var/log/webhcat",
          "hive_exec_orc_storage_strategy" : "SPEED",
          "webhcat_user" : "hcat",
          "hive.exec.orc.storage.strategy" : "SPEED",
          "hive_log_dir" : "/var/log/hive",
          "hive_user" : "hive",
          "hive_security_authorization" : "None",
          "hive_user_nproc_limit" : "16000",
          "hive.metastore.heapsize" : "3999",
          "content" : "\n if [ \"$SERVICE\" = \"cli\" ]; then\n   if [ -z \"$DEBUG\" ]; then\n     export HADOOP_OPTS=\"$HADOOP_OPTS -XX:NewRatio=12 -XX:MaxHeapFreeRatio=40 -XX:MinHeapFreeRatio=15 -XX:+UseNUMA -XX:+UseParallelGC -XX:-UseGCOverheadLimit\"\n   else\n     export HADOOP_OPTS=\"$HADOOP_OPTS -XX:NewRatio=12 -XX:MaxHeapFreeRatio=40 -XX:MinHeapFreeRatio=15 -XX:-UseGCOverheadLimit\"\n   fi\n fi\n\n# The heap size of the jvm stared by hive shell script can be controlled via:\n\nif [ \"$SERVICE\" = \"metastore\" ]; then\n  export HADOOP_HEAPSIZE={{hive_metastore_heapsize}} # Setting for HiveMetastore\nelse\n  export HADOOP_HEAPSIZE={{hive_heapsize}} # Setting for HiveServer2 and Client\nfi\n\nexport HADOOP_CLIENT_OPTS=\"$HADOOP_CLIENT_OPTS  -Xmx${HADOOP_HEAPSIZE}m\"\n\n# Larger heap size may be required when running queries over large number of files or partitions.\n# By default hive shell scripts use a heap size of 256 (MB).  Larger heap size would also be\n# appropriate for hive server (hwi etc).\n\n\n# Set HADOOP_HOME to point to a specific hadoop install directory\nHADOOP_HOME=${HADOOP_HOME:-{{hadoop_home}}}\n\n# Hive Configuration Directory can be controlled by:\nexport HIVE_CONF_DIR={{hive_config_dir}}\n\n# Folder containing extra libraries required for hive compilation/execution can be controlled by:\nif [ \"${HIVE_AUX_JARS_PATH}\" != \"\" ]; then\n  if [ -f \"${HIVE_AUX_JARS_PATH}\" ]; then\n    export HIVE_AUX_JARS_PATH=${HIVE_AUX_JARS_PATH}\n  elif [ -d \"/usr/lib/hive/hcatalog/share\" ]; then\n    export HIVE_AUX_JARS_PATH=/usr/lib/hive/hcatalog/share/hcatalog/hive-hcatalog-core*.jar\n  fi\nelif [ -d \"/usr/lib/hive/hcatalog/share\" ]; then\n  export HIVE_AUX_JARS_PATH=/usr/lib/hive/hcatalog/share/hcatalog/hive-hcatalog-core*.jar\nfi\n\nexport METASTORE_PORT={{hive_metastore_port}}\n\n{% if sqla_db_used or lib_dir_available %}\nexport LD_LIBRARY_PATH=\"$LD_LIBRARY_PATH:{{jdbc_libs_dir}}\"\nexport JAVA_LIBRARY_PATH=\"$JAVA_LIBRARY_PATH:{{jdbc_libs_dir}}\"\n{% endif %}",
          "hive_timeline_logging_enabled" : "true",
          "hive.atlas.hook" : "true",
          "hive_txn_acid" : "off",
          "hive.client.heapsize" : "1024",
          "hive.heapsize" : "11998",
          "hive_database_name" : "hive",
          "hive_database_type" : "mysql",
          "hive_user_nofile_limit" : "32000",
          "hive_pid_dir" : "/var/run/hive",
          "cost_based_optimizer" : "Off",
          "hcat_user" : "hcat",
          "hcat_pid_dir" : "/var/run/webhcat"
        }
      }
    },
    {
      "flume-conf" : {
        "properties_attributes" : { },
        "properties" : {
          "content" : "\n# Flume agent config"
        }
      }
    },
    {
      "ranger-hive-security" : {
        "properties_attributes" : { },
        "properties" : { }
      }
    }
  ],
  "host_groups" : [
    {
      "components" : [
        {
          "name" : "NODEMANAGER"
        },
        {
          "name" : "HIVE_SERVER"
        },
        {
          "name" : "SPARK2_CLIENT"
        },
        {
          "name" : "HIVE_METASTORE"
        },
        {
          "name" : "TEZ_CLIENT"
        },
        {
          "name" : "SPARK2_JOBHISTORYSERVER"
        },
        {
          "name" : "KAFKA_BROKER"
        },
        {
          "name" : "SECONDARY_NAMENODE"
        },
        {
          "name" : "SLIDER"
        },
        {
          "name" : "OOZIE_CLIENT"
        },
        {
          "name" : "HBASE_REGIONSERVER"
        },
        {
          "name" : "NIFI_MASTER"
        },
        {
          "name" : "LIVY2_SERVER"
        },
        {
          "name" : "METRICS_GRAFANA"
        },
        {
          "name" : "HDFS_CLIENT"
        },
        {
          "name" : "HISTORYSERVER"
        },
        {
          "name" : "LOGSEARCH_SERVER"
        },
        {
          "name" : "ZEPPELIN_MASTER"
        },
        {
          "name" : "GIRAPH_MASTER"
        },
        {
          "name" : "AMBARI_SERVER"
        },
        {
          "name" : "HBASE_CLIENT"
        },
        {
          "name" : "LOGSEARCH_LOGFEEDER"
        },
        {
          "name" : "APP_TIMELINE_SERVER"
        },
        {
          "name" : "FLUME_HANDLER"
        },
        {
          "name" : "RESOURCEMANAGER"
        },
        {
          "name" : "METRICS_MONITOR"
        },
        {
          "name" : "HBASE_THRIFT_SERVER"
        },
        {
          "name" : "INFRA_SOLR_CLIENT"
        },
        {
          "name" : "HBASE_MASTER"
        },
        {
          "name" : "ATLAS_SERVER"
        },
        {
          "name" : "ZOOKEEPER_CLIENT"
        },
        {
          "name" : "HCAT"
        },
        {
          "name" : "WEBHCAT_SERVER"
        },
        {
          "name" : "ZOOKEEPER_SERVER"
        },
        {
          "name" : "KAFKA_MANAGER"
        },
        {
          "name" : "METRICS_COLLECTOR"
        },
        {
          "name" : "PHOENIX_QUERY_SERVER"
        },
        {
          "name" : "MAHOUT"
        },
        {
          "name" : "YARN_CLIENT"
        },
        {
          "name" : "SQOOP"
        },
        {
          "name" : "MYSQL_SERVER"
        },
        {
          "name" : "SPARK2_THRIFTSERVER"
        },
        {
          "name" : "NAMENODE"
        },
        {
          "name" : "PIG"
        },
        {
          "name" : "HTTPFS"
        },
        {
          "name" : "MAPREDUCE2_CLIENT"
        },
        {
          "name" : "ATLAS_CLIENT"
        },
        {
          "name" : "DATANODE"
        },
        {
          "name" : "INFRA_SOLR"
        },
        {
          "name" : "OOZIE_SERVER"
        },
        {
          "name" : "HIVE_CLIENT"
        }
      ],
      "configurations" : [ ],
      "name" : "host_group_1",
      "cardinality" : "1"
    }
  ],
  "settings" : [
    {
      "recovery_settings" : [
        {
          "recovery_enabled" : "true"
        }
      ]
    },
    {
      "service_settings" : [
        {
          "name" : "LOGSEARCH",
          "credential_store_enabled" : "true"
        },
        {
          "recovery_enabled" : "true",
          "name" : "AMBARI_METRICS"
        }
      ]
    },
    {
      "component_settings" : [
        {
          "recovery_enabled" : "true",
          "name" : "METRICS_COLLECTOR"
        }
      ]
    }
  ],
  "Blueprints" : {
    "stack_name" : "ADH",
    "stack_version" : "1.6"
  }
}