| <?xml version="1.0"?> |
| <?xml-stylesheet type="text/xsl" href="configuration.xsl"?> |
| |
| <configuration> |
| <property> |
| <name>dfs.namenode.http-address</name> |
| <value>${EXTERNAL_LISTEN_HOST}:${HDFS_WEBUI_PORT}</value> |
| </property> |
| |
| <property> |
| <name>dfs.namenode.name.dir</name> |
| <value>file://${NODE_DIR}/data/dfs/nn</value> |
| </property> |
| |
| <property> |
| <name>dfs.datanode.data.dir</name> |
| <value>file://${NODE_DIR}/data/dfs/dn</value> |
| </property> |
| |
| <property> |
| <name>dfs.webhdfs.enabled</name> |
| <value>true</value> |
| </property> |
| |
| <!-- The release of Hadoop we're depending on requires an explicit key to allow erasure |
| coding. --> |
| <property> |
| <name>cloudera.erasure_coding.enabled</name> |
| <value>true</value> |
| </property> |
| |
| <!-- Datanode to listen on all ports to work around issue where it reports |
| its own IP as something other than INTERNAL_LISTEN_HOST. |
| TODO: we can override this with dfs.datanode.dns.interface if we figure out |
| the interface that it should be listening on.--> |
| <property> |
| <name>dfs.datanode.address</name> |
| <value>${EXTERNAL_LISTEN_HOST}:${DATANODE_PORT}</value> |
| </property> |
| |
| <property> |
| <name>dfs.datanode.http.address</name> |
| <value>${EXTERNAL_LISTEN_HOST}:${DATANODE_HTTP_PORT}</value> |
| </property> |
| |
| <property> |
| <name>dfs.datanode.ipc.address</name> |
| <value>${INTERNAL_LISTEN_HOST}:${DATANODE_IPC_PORT}</value> |
| </property> |
| |
| <property> |
| <name>dfs.datanode.https.address</name> |
| <value>${INTERNAL_LISTEN_HOST}:${DATANODE_HTTPS_PORT}</value> |
| </property> |
| |
| <!-- Configuration to enable disk location metadata --> |
| <property> |
| <name>dfs.datanode.hdfs-blocks-metadata.enabled</name> |
| <value>true</value> |
| </property> |
| |
| <property> |
| <name>dfs.client.file-block-storage-locations.timeout</name> |
| <value>3000</value> |
| </property> |
| |
| <property> |
| <name>dfs.client.file-block-storage-locations.timeout.millis</name> |
| <value>5000000</value> |
| </property> |
| |
| <!-- Configurations to enable short circuit reads --> |
| <property> |
| <name>dfs.client.read.shortcircuit</name> |
| <value>true</value> |
| </property> |
| |
| <!-- The HDFS local read socket must be in the same dir for all nodes. All the sockets |
| will be here. Permissions on the parent dirs are strict. --> |
| <property> |
| <name>dfs.domain.socket.path</name> |
| <value>/var/lib/hadoop-hdfs/socket._PORT</value> |
| </property> |
| |
| <property> |
| <name>dfs.client.read.shortcircuit.skip.checksum</name> |
| <value>false</value> |
| </property> |
| |
| <!-- 128MB HDFS block size --> |
| <property> |
| <name>dfs.block.size</name> |
| <value>134217728</value> |
| </property> |
| |
| <!-- Decrease this so we can create mini test files across several blocks --> |
| <property> |
| <name>dfs.namenode.fs-limits.min-block-size</name> |
| <value>1024</value> |
| </property> |
| |
| <!-- Set the max cached memory to ~64kb. This must be less than ulimit -l --> |
| <property> |
| <name>dfs.datanode.max.locked.memory</name> |
| <value>64000</value> |
| </property> |
| |
| <!-- Increase the frequency the NN talks to the DNs to update the caching policy. |
| This is useful to reduce the lag between asking a path to be cached and it actually |
| being cached. --> |
| <property> |
| <name>dfs.namenode.path.based.cache.refresh.interval.ms</name> |
| <value>3000</value> |
| </property> |
| |
| <property> |
| <name>dfs.namenode.acls.enabled</name> |
| <value>true</value> |
| </property> |
| |
| <!-- The default behavior of the namenode is to exclude datanodes with the number of |
| connections 2x higher than the average among all the datanodes from being considered |
| for replication/EC. In the minicluster we have to use every datanode for every block |
| so this should be disabled. --> |
| <property> |
| <name>dfs.namenode.redundancy.considerLoad</name> |
| <value>false</value> |
| </property> |
| |
| <!-- Location of the KMS key provider --> |
| <property> |
| <name>dfs.encryption.key.provider.uri</name> |
| <value>kms://http@${INTERNAL_LISTEN_HOST}:9600/kms</value> |
| </property> |
| |
| |
| <!-- BEGIN Kerberos settings --> |
| <!-- We use the MiniKdc; it generates a keytab and krb5.conf; we point |
| everyone at that one keytab and go to town... --> |
| <property> |
| <name>dfs.block.access.token.enable</name> |
| <value>true</value> |
| </property> |
| |
| <property> |
| <name>dfs.namenode.keytab.file</name> |
| <value>${KRB5_KTNAME}</value> |
| </property> |
| |
| <property> |
| <name>dfs.namenode.kerberos.principal</name> |
| <value>${MINIKDC_PRINC_HDFS}</value> |
| </property> |
| |
| <property> |
| <name>dfs.namenode.kerberos.internal.spnego.principal</name> |
| <value>${MINIKDC_PRINC_HTTP}</value> |
| </property> |
| |
| <property> |
| <name>ignore.secure.ports.for.testing</name> |
| <value>true</value> |
| <!-- This one lets us run the datanode without root! --> |
| </property> |
| |
| <property> |
| <name>dfs.datanode.keytab.file</name> |
| <value>${KRB5_KTNAME}</value> |
| </property> |
| |
| <property> |
| <name>dfs.datanode.kerberos.principal</name> |
| <value>${MINIKDC_PRINC_HDFS}</value> |
| </property> |
| |
| <property> |
| <name>dfs.web.authentication.kerberos.principal</name> |
| <value>${MINIKDC_PRINC_HTTP}</value> |
| </property> |
| |
| <property> |
| <name>dfs.web.authentication.kerberos.keytab</name> |
| <value>${KRB5_KTNAME}</value> |
| </property> |
| <!-- END Kerberos settings --> |
| |
| </configuration> |