http://git-wip-us.apache.org/repos/asf/incubator-hawq/blob/bc0904ab/depends/libhdfs3/test/data/function-secure.xml ---------------------------------------------------------------------- diff --git a/depends/libhdfs3/test/data/function-secure.xml b/depends/libhdfs3/test/data/function-secure.xml new file mode 100644 index 0000000..ed8921d --- /dev/null +++ b/depends/libhdfs3/test/data/function-secure.xml @@ -0,0 +1,43 @@ +<configuration> + + <property> + <name>dfs.default.uri</name> + <value>hdfs://localhost:9000</value> + </property> + + <property> + <name>hadoop.security.authentication</name> + <value>kerberos</value> + </property> + + <property> + <name>dfs.nameservices</name> + <value>gphd-cluster</value> + </property> + + <property> + <name>dfs.ha.namenodes.gphd-cluster</name> + <value>nn1,nn2</value> + </property> + + <property> + <name>dfs.namenode.rpc-address.gphd-cluster.nn1</name> + <value>smdw:9000</value> + </property> + + <property> + <name>dfs.namenode.rpc-address.gphd-cluster.nn2</name> + <value>mdw:9000</value> + </property> + + <property> + <name>dfs.namenode.http-address.gphd-cluster.nn1</name> + <value>smdw:50070</value> + </property> + + <property> + <name>dfs.namenode.http-address.gphd-cluster.nn2</name> + <value>mdw:50070</value> + </property> + +</configuration>
http://git-wip-us.apache.org/repos/asf/incubator-hawq/blob/bc0904ab/depends/libhdfs3/test/data/function-secure.xml.sample ---------------------------------------------------------------------- diff --git a/depends/libhdfs3/test/data/function-secure.xml.sample b/depends/libhdfs3/test/data/function-secure.xml.sample new file mode 100644 index 0000000..ed8921d --- /dev/null +++ b/depends/libhdfs3/test/data/function-secure.xml.sample @@ -0,0 +1,43 @@ +<configuration> + + <property> + <name>dfs.default.uri</name> + <value>hdfs://localhost:9000</value> + </property> + + <property> + <name>hadoop.security.authentication</name> + <value>kerberos</value> + </property> + + <property> + <name>dfs.nameservices</name> + <value>gphd-cluster</value> + </property> + + <property> + <name>dfs.ha.namenodes.gphd-cluster</name> + <value>nn1,nn2</value> + </property> + + <property> + <name>dfs.namenode.rpc-address.gphd-cluster.nn1</name> + <value>smdw:9000</value> + </property> + + <property> + <name>dfs.namenode.rpc-address.gphd-cluster.nn2</name> + <value>mdw:9000</value> + </property> + + <property> + <name>dfs.namenode.http-address.gphd-cluster.nn1</name> + <value>smdw:50070</value> + </property> + + <property> + <name>dfs.namenode.http-address.gphd-cluster.nn2</name> + <value>mdw:50070</value> + </property> + +</configuration> http://git-wip-us.apache.org/repos/asf/incubator-hawq/blob/bc0904ab/depends/libhdfs3/test/data/function-test.xml ---------------------------------------------------------------------- diff --git a/depends/libhdfs3/test/data/function-test.xml b/depends/libhdfs3/test/data/function-test.xml new file mode 100644 index 0000000..d6800b9 --- /dev/null +++ b/depends/libhdfs3/test/data/function-test.xml @@ -0,0 +1,117 @@ +<configuration> + + <property> + <name>dfs.default.uri</name> + <value>hdfs://localhost:9000</value> + </property> + + <property> + <name>hadoop.security.authentication</name> + <value>simple</value> + </property> + + <property> + <name>dfs.nameservices</name> + <value>phdcluster</value> + </property> + + <property> + <name>dfs.default.replica</name> + <value>3</value> + </property> + + <property> + <name>dfs.client.log.severity</name> + <value>INFO</value> + </property> + + <property> + <name>dfs.client.read.shortcircuit</name> + <value>true</value> + </property> + + <property> + <name>input.localread.blockinfo.cachesize</name> + <value>10</value> + </property> + + <property> + <name>dfs.client.read.shortcircuit.streams.cache.size</name> + <value>10</value> + </property> + + <property> + <name>dfs.client.use.legacy.blockreader.local</name> + <value>true</value> + </property> + + <property> + <name>output.replace-datanode-on-failure</name> + <value>false</value> + </property> + + <property> + <name>input.localread.mappedfile</name> + <value>true</value> + </property> + + <property> + <name>dfs.domain.socket.path</name> + <value>/var/lib/hadoop-hdfs/hdfs_domain__PORT</value> + </property> + + <property> + <name>dfs.ha.namenodes.phdcluster</name> + <value>nn1,nn2</value> + </property> + + <property> + <name>dfs.namenode.rpc-address.phdcluster.nn1</name> + <value>mdw:9000</value> + </property> + + <property> + <name>dfs.namenode.rpc-address.phdcluster.nn2</name> + <value>smdw:9000</value> + </property> + + <property> + <name>dfs.namenode.http-address.phdcluster.nn1</name> + <value>mdw:50070</value> + </property> + + <property> + <name>dfs.namenode.http-address.phdcluster.nn2</name> + <value>smdw:50070</value> + </property> + + <property> + <name>rpc.socekt.linger.timeout</name> + <value>20</value> + </property> + + <property> + <name>rpc.max.idle</name> + <value>100</value> + </property> + + <property> + <name>test.get.conf</name> + <value>success</value> + </property> + + <property> + <name>test.get.confint32</name> + <value>10</value> + </property> + + <property> + <name>dfs.client.socketcache.expiryMsec</name> + <value>3000</value> + </property> + + <property> + <name>dfs.client.socketcache.capacity</name> + <value>1</value> + </property> +</configuration> http://git-wip-us.apache.org/repos/asf/incubator-hawq/blob/bc0904ab/depends/libhdfs3/test/data/function-test.xml.sample ---------------------------------------------------------------------- diff --git a/depends/libhdfs3/test/data/function-test.xml.sample b/depends/libhdfs3/test/data/function-test.xml.sample new file mode 100644 index 0000000..df8de7c --- /dev/null +++ b/depends/libhdfs3/test/data/function-test.xml.sample @@ -0,0 +1,107 @@ +<configuration> + + <property> + <name>dfs.default.uri</name> + <value>hdfs://localhost:9000</value> + </property> + + <property> + <name>hadoop.security.authentication</name> + <value>simple</value> + </property> + + <property> + <name>dfs.nameservices</name> + <value>phdcluster</value> + </property> + + <property> + <name>dfs.default.replica</name> + <value>3</value> + </property> + + <property> + <name>dfs.client.log.severity</name> + <value>INFO</value> + </property> + + <property> + <name>dfs.client.read.shortcircuit</name> + <value>true</value> + </property> + + <property> + <name>input.localread.blockinfo.cachesize</name> + <value>10</value> + </property> + + <property> + <name>dfs.client.read.shortcircuit.streams.cache.size</name> + <value>10</value> + </property> + + <property> + <name>dfs.client.use.legacy.blockreader.local</name> + <value>false</value> + </property> + + <property> + <name>output.replace-datanode-on-failure</name> + <value>false</value> + </property> + + <property> + <name>input.localread.mappedfile</name> + <value>true</value> + </property> + + <property> + <name>dfs.domain.socket.path</name> + <value>/var/lib/hadoop-hdfs/hdfs_domain__PORT</value> + </property> + + <property> + <name>dfs.ha.namenodes.phdcluster</name> + <value>nn1,nn2</value> + </property> + + <property> + <name>dfs.namenode.rpc-address.phdcluster.nn1</name> + <value>mdw:9000</value> + </property> + + <property> + <name>dfs.namenode.rpc-address.phdcluster.nn2</name> + <value>smdw:9000</value> + </property> + + <property> + <name>dfs.namenode.http-address.phdcluster.nn1</name> + <value>mdw:50070</value> + </property> + + <property> + <name>dfs.namenode.http-address.phdcluster.nn2</name> + <value>smdw:50070</value> + </property> + + <property> + <name>rpc.socekt.linger.timeout</name> + <value>20</value> + </property> + + <property> + <name>rpc.max.idle</name> + <value>100</value> + </property> + + <property> + <name>test.get.conf</name> + <value>success</value> + </property> + + <property> + <name>test.get.confint32</name> + <value>10</value> + </property> +</configuration> http://git-wip-us.apache.org/repos/asf/incubator-hawq/blob/bc0904ab/depends/libhdfs3/test/data/hdfs-default.xml ---------------------------------------------------------------------- diff --git a/depends/libhdfs3/test/data/hdfs-default.xml b/depends/libhdfs3/test/data/hdfs-default.xml new file mode 100644 index 0000000..76f5d7a --- /dev/null +++ b/depends/libhdfs3/test/data/hdfs-default.xml @@ -0,0 +1,1136 @@ +<?xml version="1.0"?> +<?xml-stylesheet type="text/xsl" href="configuration.xsl"?> + +<!-- Licensed to the Apache Software Foundation (ASF) under one or more contributor + license agreements. See the NOTICE file distributed with this work for additional + information regarding copyright ownership. The ASF licenses this file to + You under the Apache License, Version 2.0 (the "License"); you may not use + this file except in compliance with the License. You may obtain a copy of + the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required + by applicable law or agreed to in writing, software distributed under the + License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS + OF ANY KIND, either express or implied. See the License for the specific + language governing permissions and limitations under the License. --> + +<!-- Do not modify this file directly. Instead, copy entries that you --> +<!-- wish to modify from this file into hdfs-site.xml and change them --> +<!-- there. If hdfs-site.xml does not already exist, create it. --> + +<configuration> + + <property> + <name>hadoop.hdfs.configuration.version</name> + <value>1</value> + <description>version of this configuration file</description> + </property> + + <property> + <name>dfs.namenode.logging.level</name> + <value>info</value> + <description> + The logging level for dfs namenode. Other values are "dir" (trace + namespace mutations), "block" (trace block under/over replications + and block creations/deletions), or "all". + </description> + </property> + + <property> + <name>dfs.namenode.secondary.http-address</name> + <value>0.0.0.0:50090</value> + <description> + The secondary namenode http server address and port. + If the port is 0 then the server will start on a free port. + </description> + </property> + + <property> + <name>dfs.datanode.address</name> + <value>0.0.0.0:50010</value> + <description> + The datanode server address and port for data transfer. + If the port is 0 then the server will start on a free port. + </description> + </property> + + <property> + <name>dfs.datanode.http.address</name> + <value>0.0.0.0:50075</value> + <description> + The datanode http server address and port. + If the port is 0 then the server will start on a free port. + </description> + </property> + + <property> + <name>dfs.datanode.ipc.address</name> + <value>0.0.0.0:50020</value> + <description> + The datanode ipc server address and port. + If the port is 0 then the server will start on a free port. + </description> + </property> + + <property> + <name>dfs.datanode.handler.count</name> + <value>10</value> + <description>The number of server threads for the datanode. + </description> + </property> + + <property> + <name>dfs.namenode.http-address</name> + <value>0.0.0.0:50070</value> + <description> + The address and the base port where the dfs namenode web ui will listen + on. + If the port is 0 then the server will start on a free port. + </description> + </property> + + <property> + <name>dfs.https.enable</name> + <value>false</value> + <description>Decide if HTTPS(SSL) is supported on HDFS + </description> + </property> + + <property> + <name>dfs.client.https.need-auth</name> + <value>false</value> + <description>Whether SSL client certificate authentication is required + </description> + </property> + + <property> + <name>dfs.https.server.keystore.resource</name> + <value>ssl-server.xml</value> + <description>Resource file from which ssl server keystore + information will be extracted + </description> + </property> + + <property> + <name>dfs.client.https.keystore.resource</name> + <value>ssl-client.xml</value> + <description>Resource file from which ssl client keystore + information will be extracted + </description> + </property> + + <property> + <name>dfs.datanode.https.address</name> + <value>0.0.0.0:50475</value> + <description>The datanode secure http server address and port. + </description> + </property> + + <property> + <name>dfs.namenode.https-address</name> + <value>0.0.0.0:50470</value> + <description>The namenode secure http server address and port. + </description> + </property> + + <property> + <name>dfs.datanode.dns.interface</name> + <value>default</value> + <description>The name of the Network Interface from which a data node + should + report its IP address. + </description> + </property> + + <property> + <name>dfs.datanode.dns.nameserver</name> + <value>default</value> + <description>The host name or IP address of the name server (DNS) + which a DataNode should use to determine the host name used by the + NameNode for communication and display purposes. + </description> + </property> + + <property> + <name>dfs.namenode.backup.address</name> + <value>0.0.0.0:50100</value> + <description> + The backup node server address and port. + If the port is 0 then the server will start on a free port. + </description> + </property> + + <property> + <name>dfs.namenode.backup.http-address</name> + <value>0.0.0.0:50105</value> + <description> + The backup node http server address and port. + If the port is 0 then the server will start on a free port. + </description> + </property> + + <property> + <name>dfs.namenode.replication.considerLoad</name> + <value>true</value> + <description>Decide if chooseTarget considers the target's load or not + </description> + </property> + <property> + <name>dfs.default.chunk.view.size</name> + <value>32768</value> + <description>The number of bytes to view for a file on the browser. + </description> + </property> + + <property> + <name>dfs.datanode.du.reserved</name> + <value>0</value> + <description>Reserved space in bytes per volume. Always leave this + much space free for non dfs use. + </description> + </property> + + <property> + <name>dfs.namenode.name.dir</name> + <value>file://${hadoop.tmp.dir}/dfs/name</value> + <description>Determines where on the local filesystem the DFS name + node + should store the name table(fsimage). If this is a comma-delimited list + of directories then the name table is replicated in all of the + directories, for redundancy. + </description> + </property> + + <property> + <name>dfs.namenode.name.dir.restore</name> + <value>false</value> + <description>Set to true to enable NameNode to attempt recovering a + previously failed dfs.namenode.name.dir. When enabled, a recovery of + any + failed directory is attempted during checkpoint. + </description> + </property> + + <property> + <name>dfs.namenode.fs-limits.max-component-length</name> + <value>0</value> + <description>Defines the maximum number of characters in each + component + of a path. A value of 0 will disable the check. + </description> + </property> + + <property> + <name>dfs.namenode.fs-limits.max-directory-items</name> + <value>0</value> + <description>Defines the maximum number of items that a directory may + contain. A value of 0 will disable the check. + </description> + </property> + + <property> + <name>dfs.namenode.edits.dir</name> + <value>${dfs.namenode.name.dir}</value> + <description>Determines where on the local filesystem the DFS name + node + should store the transaction (edits) file. If this is a comma-delimited + list + of directories then the transaction file is replicated in all of the + directories, for redundancy. Default value is same as + dfs.namenode.name.dir + </description> + </property> + + <property> + <name>dfs.namenode.shared.edits.dir</name> + <value></value> + <description>A directory on shared storage between the multiple + namenodes + in an HA cluster. This directory will be written by the active and read + by the standby in order to keep the namespaces synchronized. This + directory + does not need to be listed in dfs.namenode.edits.dir above. It should be + left empty in a non-HA cluster. + </description> + </property> + + <property> + <name>dfs.permissions.enabled</name> + <value>true</value> + <description> + If "true", enable permission checking in HDFS. + If "false", permission checking is turned off, + but all other behavior is unchanged. + Switching from one parameter value to the other does not change the mode, + owner or group of files or directories. + </description> + </property> + + <property> + <name>dfs.permissions.superusergroup</name> + <value>supergroup</value> + <description>The name of the group of super-users.</description> + </property> + <!-- <property> <name>dfs.cluster.administrators</name> <value>ACL for the + admins</value> <description>This configuration is used to control who can + access the default servlets in the namenode, etc. </description> </property> --> + + <property> + <name>dfs.block.access.token.enable</name> + <value>false</value> + <description> + If "true", access tokens are used as capabilities for accessing + datanodes. + If "false", no access tokens are checked on accessing datanodes. + </description> + </property> + + <property> + <name>dfs.block.access.key.update.interval</name> + <value>600</value> + <description> + Interval in minutes at which namenode updates its access keys. + </description> + </property> + + <property> + <name>dfs.block.access.token.lifetime</name> + <value>600</value> + <description>The lifetime of access tokens in minutes.</description> + </property> + + <property> + <name>dfs.datanode.data.dir</name> + <value>file://${hadoop.tmp.dir}/dfs/data</value> + <description>Determines where on the local filesystem an DFS data node + should store its blocks. If this is a comma-delimited + list of directories, then data will be stored in all named + directories, typically on different devices. + Directories that do not exist are ignored. + </description> + </property> + + <property> + <name>dfs.datanode.data.dir.perm</name> + <value>700</value> + <description>Permissions for the directories on on the local + filesystem where + the DFS data node store its blocks. The permissions can either be octal + or + symbolic. + </description> + </property> + + <property> + <name>dfs.replication</name> + <value>1</value> + <description>Default block replication. + The actual number of replications can be specified when the file is + created. + The default is used if replication is not specified in create time. + </description> + </property> + + <property> + <name>dfs.replication.max</name> + <value>512</value> + <description>Maximal block replication. + </description> + </property> + + <property> + <name>dfs.namenode.replication.min</name> + <value>1</value> + <description>Minimal block replication. + </description> + </property> + + <property> + <name>dfs.blocksize</name> + <value>67108864</value> + <description> + The default block size for new files, in bytes. + You can use the following suffix (case insensitive): + k(kilo), m(mega), g(giga), t(tera), p(peta), e(exa) to specify the size (such + as 128k, 512m, 1g, etc.), + Or provide complete size in bytes (such as 134217728 for 128 MB). + </description> + </property> + + <property> + <name>dfs.client.block.write.retries</name> + <value>3</value> + <description>The number of retries for writing blocks to the data + nodes, + before we signal failure to the application. + </description> + </property> + + <property> + <name>dfs.client.block.write.replace-datanode-on-failure.enable</name> + <value>true</value> + <description> + If there is a datanode/network failure in the write pipeline, + DFSClient will try to remove the failed datanode from the pipeline + and then continue writing with the remaining datanodes. As a result, + the number of datanodes in the pipeline is decreased. The feature is + to add new datanodes to the pipeline. + + This is a site-wide property to enable/disable the feature. + + When the cluster size is extremely small, e.g. 3 nodes or less, cluster + administrators may want to set the policy to NEVER in the default + configuration file or disable this feature. Otherwise, users may + experience an unusually high rate of pipeline failures since it is + impossible to find new datanodes for replacement. + + See also dfs.client.block.write.replace-datanode-on-failure.policy + </description> + </property> + + <property> + <name>dfs.client.block.write.replace-datanode-on-failure.policy</name> + <value>DEFAULT</value> + <description> + This property is used only if the value of + dfs.client.block.write.replace-datanode-on-failure.enable is true. + + ALWAYS: always add a new datanode when an existing datanode is + removed. + + NEVER: never add a new datanode. + + DEFAULT: + Let r be the replication number. + Let n be the number of existing datanodes. + Add a new datanode only if r is greater than or equal to 3 and either + (1) floor(r/2) is greater than or equal to n; or + (2) r is greater than n and the block is hflushed/appended. + </description> + </property> + + <property> + <name>dfs.blockreport.intervalMsec</name> + <value>21600000</value> + <description>Determines block reporting interval in milliseconds. + </description> + </property> + + <property> + <name>dfs.blockreport.initialDelay</name> + <value>0</value> + <description>Delay for first block report in seconds.</description> + </property> + + <property> + <name>dfs.datanode.directoryscan.interval</name> + <value>21600</value> + <description>Interval in seconds for Datanode to scan data directories + and + reconcile the difference between blocks in memory and on the disk. + </description> + </property> + + <property> + <name>dfs.datanode.directoryscan.threads</name> + <value>1</value> + <description>How many threads should the threadpool used to compile + reports + for volumes in parallel have. + </description> + </property> + + <property> + <name>dfs.heartbeat.interval</name> + <value>3</value> + <description>Determines datanode heartbeat interval in seconds. + </description> + </property> + + <property> + <name>dfs.namenode.handler.count</name> + <value>10</value> + <description>The number of server threads for the namenode. + </description> + </property> + + <property> + <name>dfs.namenode.safemode.threshold-pct</name> + <value>0.999f</value> + <description> + Specifies the percentage of blocks that should satisfy + the minimal replication requirement defined by + dfs.namenode.replication.min. + Values less than or equal to 0 mean not to wait for any particular + percentage of blocks before exiting safemode. + Values greater than 1 will make safe mode permanent. + </description> + </property> + + <property> + <name>dfs.namenode.safemode.min.datanodes</name> + <value>0</value> + <description> + Specifies the number of datanodes that must be considered alive + before the name node exits safemode. + Values less than or equal to 0 mean not to take the number of live + datanodes into account when deciding whether to remain in safe mode + during startup. + Values greater than the number of datanodes in the cluster + will make safe mode permanent. + </description> + </property> + + <property> + <name>dfs.namenode.safemode.extension</name> + <value>30000</value> + <description> + Determines extension of safe mode in milliseconds + after the threshold level is reached. + </description> + </property> + + <property> + <name>dfs.datanode.balance.bandwidthPerSec</name> + <value>1048576</value> + <description> + Specifies the maximum amount of bandwidth that each datanode + can utilize for the balancing purpose in term of + the number of bytes per second. + </description> + </property> + + <property> + <name>dfs.hosts</name> + <value></value> + <description>Names a file that contains a list of hosts that are + permitted to connect to the namenode. The full pathname of the file + must be specified. If the value is empty, all hosts are + permitted. + </description> + </property> + + <property> + <name>dfs.hosts.exclude</name> + <value></value> + <description>Names a file that contains a list of hosts that are + not permitted to connect to the namenode. The full pathname of the + file must be specified. If the value is empty, no hosts are + excluded. + </description> + </property> + + <property> + <name>dfs.namenode.max.objects</name> + <value>0</value> + <description>The maximum number of files, directories and blocks + dfs supports. A value of zero indicates no limit to the number + of objects that dfs supports. + </description> + </property> + + <property> + <name>dfs.namenode.decommission.interval</name> + <value>30</value> + <description>Namenode periodicity in seconds to check if decommission + is + complete. + </description> + </property> + + <property> + <name>dfs.namenode.decommission.nodes.per.interval</name> + <value>5</value> + <description>The number of nodes namenode checks if decommission is + complete + in each dfs.namenode.decommission.interval. + </description> + </property> + + <property> + <name>dfs.namenode.replication.interval</name> + <value>3</value> + <description>The periodicity in seconds with which the namenode + computes + repliaction work for datanodes. + </description> + </property> + + <property> + <name>dfs.namenode.accesstime.precision</name> + <value>3600000</value> + <description>The access time for HDFS file is precise upto this value. + The default value is 1 hour. Setting a value of 0 disables + access times for HDFS. + </description> + </property> + + <property> + <name>dfs.datanode.plugins</name> + <value></value> + <description>Comma-separated list of datanode plug-ins to be + activated. + </description> + </property> + + <property> + <name>dfs.namenode.plugins</name> + <value></value> + <description>Comma-separated list of namenode plug-ins to be + activated. + </description> + </property> + + <property> + <name>dfs.stream-buffer-size</name> + <value>4096</value> + <description>The size of buffer to stream files. + The size of this buffer should probably be a multiple of hardware + page size (4096 on Intel x86), and it determines how much data is + buffered during read and write operations. + </description> + </property> + + <property> + <name>dfs.bytes-per-checksum</name> + <value>512</value> + <description>The number of bytes per checksum. Must not be larger than + dfs.stream-buffer-size + </description> + </property> + + <property> + <name>dfs.client-write-packet-size</name> + <value>65536</value> + <description>Packet size for clients to write</description> + </property> + + <property> + <name>dfs.namenode.checkpoint.dir</name> + <value>file://${hadoop.tmp.dir}/dfs/namesecondary</value> + <description>Determines where on the local filesystem the DFS + secondary + name node should store the temporary images to merge. + If this is a comma-delimited list of directories then the image is + replicated in all of the directories for redundancy. + </description> + </property> + + <property> + <name>dfs.namenode.checkpoint.edits.dir</name> + <value>${dfs.namenode.checkpoint.dir}</value> + <description>Determines where on the local filesystem the DFS + secondary + name node should store the temporary edits to merge. + If this is a comma-delimited list of directoires then teh edits is + replicated in all of the directoires for redundancy. + Default value is same as dfs.namenode.checkpoint.dir + </description> + </property> + + <property> + <name>dfs.namenode.checkpoint.period</name> + <value>3600</value> + <description>The number of seconds between two periodic checkpoints. + </description> + </property> + + <property> + <name>dfs.namenode.checkpoint.txns</name> + <value>40000</value> + <description>The Secondary NameNode or CheckpointNode will create a + checkpoint + of the namespace every 'dfs.namenode.checkpoint.txns' transactions, + regardless + of whether 'dfs.namenode.checkpoint.period' has expired. + </description> + </property> + + <property> + <name>dfs.namenode.checkpoint.check.period</name> + <value>60</value> + <description>The SecondaryNameNode and CheckpointNode will poll the + NameNode + every 'dfs.namenode.checkpoint.check.period' seconds to query the number + of uncheckpointed transactions. + </description> + </property> + + <property> + <name>dfs.namenode.num.checkpoints.retained</name> + <value>2</value> + <description>The number of image checkpoint files that will be + retained by + the NameNode and Secondary NameNode in their storage directories. All + edit + logs necessary to recover an up-to-date namespace from the oldest + retained + checkpoint will also be retained. + </description> + </property> + + <property> + <name>dfs.namenode.num.extra.edits.retained</name> + <value>1000000</value> + <description>The number of extra transactions which should be retained + beyond what is minimally necessary for a NN restart. This can be + useful for + audit purposes or for an HA setup where a remote Standby Node may have + been offline for some time and need to have a longer backlog of + retained + edits in order to start again. + Typically each edit is on the order of a few hundred bytes, so the default + of 1 million edits should be on the order of hundreds of MBs or low + GBs. + </description> + </property> + + <property> + <name>dfs.namenode.delegation.key.update-interval</name> + <value>86400000</value> + <description>The update interval for master key for delegation tokens + in the namenode in milliseconds. + </description> + </property> + + <property> + <name>dfs.namenode.delegation.token.max-lifetime</name> + <value>604800000</value> + <description>The maximum lifetime in milliseconds for which a + delegation + token is valid. + </description> + </property> + + <property> + <name>dfs.namenode.delegation.token.renew-interval</name> + <value>86400000</value> + <description>The renewal interval for delegation token in + milliseconds. + </description> + </property> + + <property> + <name>dfs.datanode.failed.volumes.tolerated</name> + <value>0</value> + <description>The number of volumes that are allowed to + fail before a datanode stops offering service. By default + any volume failure will cause a datanode to shutdown. + </description> + </property> + + <property> + <name>dfs.image.compress</name> + <value>false</value> + <description>Should the dfs image be compressed? + </description> + </property> + + <property> + <name>dfs.image.compression.codec</name> + <value>org.apache.hadoop.io.compress.DefaultCodec</value> + <description>If the dfs image is compressed, how should they be + compressed? + This has to be a codec defined in io.compression.codecs. + </description> + </property> + + <property> + <name>dfs.image.transfer.bandwidthPerSec</name> + <value>0</value> + <description> + Specifies the maximum amount of bandwidth that can be utilized for image + transfer in term of the number of bytes per second. + A default value of 0 indicates that throttling is disabled. + </description> + </property> + + <property> + <name>dfs.namenode.support.allow.format</name> + <value>true</value> + <description>Does HDFS namenode allow itself to be formatted? + You may consider setting this to false for any production + cluster, to avoid any possibility of formatting a running DFS. + </description> + </property> + + <property> + <name>dfs.datanode.max.transfer.threads</name> + <value>4096</value> + <description> + Specifies the maximum number of threads to use for transferring data + in and out of the DN. + </description> + </property> + + <property> + <name>dfs.datanode.readahead.bytes</name> + <value>4193404</value> + <description> + While reading block files, if the Hadoop native libraries are available, + the datanode can use the posix_fadvise system call to explicitly + page data into the operating system buffer cache ahead of the current + reader's position. This can improve performance especially when + disks are highly contended. + + This configuration specifies the number of bytes ahead of the current + read position which the datanode will attempt to read ahead. This + feature may be disabled by configuring this property to 0. + + If the native libraries are not available, this configuration has no + effect. + </description> + </property> + + <property> + <name>dfs.datanode.drop.cache.behind.reads</name> + <value>false</value> + <description> + In some workloads, the data read from HDFS is known to be significantly + large enough that it is unlikely to be useful to cache it in the + operating system buffer cache. In this case, the DataNode may be + configured to automatically purge all data from the buffer cache + after it is delivered to the client. This behavior is automatically + disabled for workloads which read only short sections of a block + (e.g HBase random-IO workloads). + + This may improve performance for some workloads by freeing buffer + cache spage usage for more cacheable data. + + If the Hadoop native libraries are not available, this configuration + has no effect. + </description> + </property> + + <property> + <name>dfs.datanode.drop.cache.behind.writes</name> + <value>false</value> + <description> + In some workloads, the data written to HDFS is known to be + significantly + large enough that it is unlikely to be useful to cache it in the + operating system buffer cache. In this case, the DataNode may be + configured to automatically purge all data from the buffer cache + after it is written to disk. + + This may improve performance for some workloads by freeing buffer + cache spage usage for more cacheable data. + + If the Hadoop native libraries are not available, this configuration + has no effect. + </description> + </property> + + <property> + <name>dfs.datanode.sync.behind.writes</name> + <value>false</value> + <description> + If this configuration is enabled, the datanode will instruct the + operating system to enqueue all written data to the disk immediately + after it is written. This differs from the usual OS policy which + may wait for up to 30 seconds before triggering writeback. + + This may improve performance for some workloads by smoothing the + IO profile for data written to disk. + + If the Hadoop native libraries are not available, this configuration + has no effect. + </description> + </property> + + <property> + <name>dfs.client.failover.max.attempts</name> + <value>15</value> + <description> + Expert only. The number of client failover attempts that should be + made before the failover is considered failed. + </description> + </property> + + <property> + <name>dfs.client.failover.sleep.base.millis</name> + <value>500</value> + <description> + Expert only. The time to wait, in milliseconds, between failover + attempts increases exponentially as a function of the number of + attempts made so far, with a random factor of +/- 50%. This option + specifies the base value used in the failover calculation. The + first failover will retry immediately. The 2nd failover attempt + will delay at least dfs.client.failover.sleep.base.millis + milliseconds. And so on. + </description> + </property> + + <property> + <name>dfs.client.failover.sleep.max.millis</name> + <value>15000</value> + <description> + Expert only. The time to wait, in milliseconds, between failover + attempts increases exponentially as a function of the number of + attempts made so far, with a random factor of +/- 50%. This option + specifies the maximum value to wait between failovers. + Specifically, the time between two failover attempts will not + exceed +/- 50% of dfs.client.failover.sleep.max.millis + milliseconds. + </description> + </property> + + <property> + <name>dfs.client.failover.connection.retries</name> + <value>0</value> + <description> + Expert only. Indicates the number of retries a failover IPC client + will make to establish a server connection. + </description> + </property> + + <property> + <name>dfs.client.failover.connection.retries.on.timeouts</name> + <value>0</value> + <description> + Expert only. The number of retry attempts a failover IPC client + will make on socket timeout when establishing a server connection. + </description> + </property> + + <property> + <name>dfs.nameservices</name> + <value></value> + <description> + Comma-separated list of nameservices. + </description> + </property> + + <property> + <name>dfs.nameservice.id</name> + <value></value> + <description> + The ID of this nameservice. If the nameservice ID is not + configured or more than one nameservice is configured for + dfs.nameservices it is determined automatically by + matching the local node's address with the configured address. + </description> + </property> + + <property> + <name>dfs.ha.namenodes.EXAMPLENAMESERVICE</name> + <value></value> + <description> + The prefix for a given nameservice, contains a comma-separated + list of namenodes for a given nameservice (eg EXAMPLENAMESERVICE). + </description> + </property> + + <property> + <name>dfs.ha.namenode.id</name> + <value></value> + <description> + The ID of this namenode. If the namenode ID is not configured it + is determined automatically by matching the local node's address + with the configured address. + </description> + </property> + + <property> + <name>dfs.ha.log-roll.period</name> + <value>120</value> + <description> + How often, in seconds, the StandbyNode should ask the active to + roll edit logs. Since the StandbyNode only reads from finalized + log segments, the StandbyNode will only be as up-to-date as how + often the logs are rolled. Note that failover triggers a log roll + so the StandbyNode will be up to date before it becomes active. + </description> + </property> + + <property> + <name>dfs.ha.tail-edits.period</name> + <value>60</value> + <description> + How often, in seconds, the StandbyNode should check for new + finalized log segments in the shared edits log. + </description> + </property> + + <property> + <name>dfs.ha.automatic-failover.enabled</name> + <value>false</value> + <description> + Whether automatic failover is enabled. See the HDFS High + Availability documentation for details on automatic HA + configuration. + </description> + </property> + + <property> + <name>dfs.support.append</name> + <value>true</value> + <description> + Does HDFS allow appends to files? + </description> + </property> + + <property> + <name>dfs.client.use.datanode.hostname</name> + <value>false</value> + <description>Whether clients should use datanode hostnames when + connecting to datanodes. + </description> + </property> + + <property> + <name>dfs.datanode.use.datanode.hostname</name> + <value>false</value> + <description>Whether datanodes should use datanode hostnames when + connecting to other datanodes for data transfer. + </description> + </property> + + <property> + <name>dfs.client.local.interfaces</name> + <value></value> + <description>A comma separated list of network interface names to use + for data transfer between the client and datanodes. When creating + a connection to read from or write to a datanode, the client + chooses one of the specified interfaces at random and binds its + socket to the IP of that interface. Individual names may be + specified as either an interface name (eg "eth0"), a subinterface + name (eg "eth0:0"), or an IP address (which may be specified using + CIDR notation to match a range of IPs). + </description> + </property> + + <property> + <name>dfs.namenode.kerberos.internal.spnego.principal</name> + <value>${dfs.web.authentication.kerberos.principal}</value> + </property> + + <property> + <name>dfs.secondary.namenode.kerberos.internal.spnego.principal</name> + <value>${dfs.web.authentication.kerberos.principal}</value> + </property> + + <property> + <name>dfs.namenode.invalidate.work.pct.per.iteration</name> + <value>0.32f</value> + <description> + *Note*: Advanced property. Change with caution. + This determines the percentage amount of block + invalidations (deletes) to do over a single DN heartbeat + deletion command. The final deletion count is determined by applying this + percentage to the number of live nodes in the system. + The resultant number is the number of blocks from the deletion list + chosen for proper invalidation over a single heartbeat of a single + DN. + Value should be a positive, non-zero percentage in float notation (X.Yf), + with 1.0f meaning 100%. + </description> + </property> + + <property> + <name>dfs.namenode.replication.work.multiplier.per.iteration</name> + <value>2</value> + <description> + *Note*: Advanced property. Change with caution. + This determines the total amount of block transfers to begin in + parallel at a DN, for replication, when such a command list is being + sent over a DN heartbeat by the NN. The actual number is obtained by + multiplying this multiplier with the total number of live nodes in + the + cluster. The result number is the number of blocks to begin transfers + immediately for, per DN heartbeat. This number can be any positive, + non-zero integer. + </description> + </property> + + <property> + <name>dfs.webhdfs.enabled</name> + <value>false</value> + <description> + Enable WebHDFS (REST API) in Namenodes and Datanodes. + </description> + </property> + + <property> + <name>hadoop.fuse.connection.timeout</name> + <value>300</value> + <description> + The minimum number of seconds that we'll cache libhdfs connection + objects + in fuse_dfs. Lower values will result in lower memory consumption; + higher + values may speed up access by avoiding the overhead of creating new + connection objects. + </description> + </property> + + <property> + <name>hadoop.fuse.timer.period</name> + <value>5</value> + <description> + The number of seconds between cache expiry checks in fuse_dfs. Lower + values + will result in fuse_dfs noticing changes to Kerberos ticket caches more + quickly. + </description> + </property> + + <property> + <name>dfs.metrics.percentiles.intervals</name> + <value></value> + <description> + Comma-delimited set of integers denoting the desired rollover intervals + (in seconds) for percentile latency metrics on the Namenode and + Datanode. + By default, percentile latency metrics are disabled. + </description> + </property> + + <property> + <name>dfs.encrypt.data.transfer</name> + <value>false</value> + <description> + Whether or not actual block data that is read/written from/to HDFS should + be encrypted on the wire. This only needs to be set on the NN and DNs, + clients will deduce this automatically. + </description> + </property> + + <property> + <name>dfs.encrypt.data.transfer.algorithm</name> + <value></value> + <description> + This value may be set to either "3des" or "rc4". If nothing is set, then + the configured JCE default on the system is used (usually 3DES.) It + is + widely believed that 3DES is more cryptographically secure, but RC4 is + substantially faster. + </description> + </property> + + <property> + <name>dfs.datanode.hdfs-blocks-metadata.enabled</name> + <value>false</value> + <description> + Boolean which enables backend datanode-side support for the experimental + DistributedFileSystem#getFileVBlockStorageLocations API. + </description> + </property> + + <property> + <name>dfs.client.file-block-storage-locations.num-threads</name> + <value>10</value> + <description> + Number of threads used for making parallel RPCs in + DistributedFileSystem#getFileBlockStorageLocations(). + </description> + </property> + + <property> + <name>dfs.client.file-block-storage-locations.timeout</name> + <value>60</value> + <description> + Timeout (in seconds) for the parallel RPCs made in + DistributedFileSystem#getFileBlockStorageLocations(). + </description> + </property> + +</configuration> http://git-wip-us.apache.org/repos/asf/incubator-hawq/blob/bc0904ab/depends/libhdfs3/test/data/invalid.xml ---------------------------------------------------------------------- diff --git a/depends/libhdfs3/test/data/invalid.xml b/depends/libhdfs3/test/data/invalid.xml new file mode 100644 index 0000000..22749b7 --- /dev/null +++ b/depends/libhdfs3/test/data/invalid.xml @@ -0,0 +1,6 @@ +<configuration> + + <property> + <name>hadoop.hdfs.configuration.version</name> + <value>1</value> + <description>version of this configuration file</description> \ No newline at end of file http://git-wip-us.apache.org/repos/asf/incubator-hawq/blob/bc0904ab/depends/libhdfs3/test/data/invalidha.xml ---------------------------------------------------------------------- diff --git a/depends/libhdfs3/test/data/invalidha.xml b/depends/libhdfs3/test/data/invalidha.xml new file mode 100644 index 0000000..99014a5 --- /dev/null +++ b/depends/libhdfs3/test/data/invalidha.xml @@ -0,0 +1,29 @@ +<configuration> + <property> + <name>hadoop.security.authentication</name> + <value>kerberos</value> + </property> + <property> + <name>dfs.nameservices</name> + <value>phdcluster</value> + </property> + + <property> + <name>dfs.ha.namenodes.phdcluster</name> + <value>nn1,nn2</value> + </property> + + <property> + <name>dfs.namenode.rpc-address.phdcluster.nn1</name> + <value>mdw:9000</value> + </property> + + <name>dfs.namenode.rpc-address.phdcluster.nn2</name> + <value>smdw:9000</value> + </property> + + <property> + <name>dfs.client.failover.proxy.provider.phdcluster</name> + <value>org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider</value> + </property> +</configuration> \ No newline at end of file http://git-wip-us.apache.org/repos/asf/incubator-hawq/blob/bc0904ab/depends/libhdfs3/test/data/unit-config.xml ---------------------------------------------------------------------- diff --git a/depends/libhdfs3/test/data/unit-config.xml b/depends/libhdfs3/test/data/unit-config.xml new file mode 100644 index 0000000..dbf0ed9 --- /dev/null +++ b/depends/libhdfs3/test/data/unit-config.xml @@ -0,0 +1,83 @@ +<configuration> + + <property> + <name>TestString</name> + <value>TestString</value> + </property> + + <property> + <name>TestInt32</name> + <value>123456</value> + </property> + + <property> + <name>TestInt32Invalid</name> + <value>123a456</value> + </property> + + <property> + <name>TestInt32OverFlow</name> + <value>12345678901</value> + </property> + + <property> + <name>TestInt64</name> + <value>12345678901</value> + </property> + + <property> + <name>TestInt64Invalid</name> + <value>12345a678901</value> + </property> + + <property> + <name>TestInt64OverFlow</name> + <value>123456789011234567890112345678901</value> + </property> + + <property> + <name>TestDouble</name> + <value>123.456</value> + </property> + + <property> + <name>TestDoubleInvalid</name> + <value>123e1234a</value> + </property> + + <property> + <name>TestDoubleOverflow</name> + <value>123e1234</value> + </property> + + <property> + <name>TestDoubleUnderflow</name> + <value>123e-1234</value> + </property> + + <property> + <name>TestTrue1</name> + <value>true</value> + </property> + + <property> + <name>TestTrue2</name> + <value>1</value> + </property> + + <property> + <name>TestFalse1</name> + <value>faLse</value> + </property> + + <property> + <name>TestFalse2</name> + <value>0</value> + </property> + + <property> + <name>TestBoolInvalid</name> + <value>atrue</value> + </property> + +</configuration> http://git-wip-us.apache.org/repos/asf/incubator-hawq/blob/bc0904ab/depends/libhdfs3/test/data/validha.xml ---------------------------------------------------------------------- diff --git a/depends/libhdfs3/test/data/validha.xml b/depends/libhdfs3/test/data/validha.xml new file mode 100644 index 0000000..0e5eb58 --- /dev/null +++ b/depends/libhdfs3/test/data/validha.xml @@ -0,0 +1,35 @@ +<configuration> + <property> + <name>hadoop.security.authentication</name> + <value>kerberos</value> + </property> + <property> + <name>dfs.nameservices</name> + <value>phdcluster</value> + </property> + + <property> + <name>dfs.ha.namenodes.phdcluster</name> + <value>nn1 , nn2</value> + </property> + + <property> + <name>dfs.namenode.rpc-address.phdcluster.nn1</name> + <value> mdw:9000</value> + </property> + + <property> + <name>dfs.namenode.rpc-address.phdcluster.nn2</name> + <value>smdw:9000 </value> + </property> + + <property> + <name>dfs.namenode.http-address.phdcluster.nn1</name> + <value>mdw:50070</value> + </property> + + <property> + <name>dfs.client.failover.proxy.provider.phdcluster</name> + <value>org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider</value> + </property> +</configuration> \ No newline at end of file http://git-wip-us.apache.org/repos/asf/incubator-hawq/blob/bc0904ab/depends/libhdfs3/test/function/CMakeLists.txt ---------------------------------------------------------------------- diff --git a/depends/libhdfs3/test/function/CMakeLists.txt b/depends/libhdfs3/test/function/CMakeLists.txt new file mode 100644 index 0000000..9746e88 --- /dev/null +++ b/depends/libhdfs3/test/function/CMakeLists.txt @@ -0,0 +1,70 @@ +CMAKE_MINIMUM_REQUIRED(VERSION 2.8) + +AUTO_SOURCES(function_SOURCES "*.cpp" "RECURSE" "${CMAKE_CURRENT_SOURCE_DIR}") + +INCLUDE_DIRECTORIES(${gmock_INCLUDE_DIR} ${gtest_INCLUDE_DIR} ${libhdfs3_ROOT_SOURCES_DIR}) + +IF(NEED_BOOST) + INCLUDE_DIRECTORIES(${Boost_INCLUDE_DIR}) +ENDIF(NEED_BOOST) + +INCLUDE_DIRECTORIES(${libhdfs3_ROOT_SOURCES_DIR}) +INCLUDE_DIRECTORIES(${libhdfs3_COMMON_SOURCES_DIR}) +INCLUDE_DIRECTORIES(${CMAKE_CURRENT_BINARY_DIR}) +INCLUDE_DIRECTORIES(${PROTOBUF_INCLUDE_DIRS}) +INCLUDE_DIRECTORIES(${libhdfs3_PLATFORM_HEADER_DIR}) +INCLUDE_DIRECTORIES(${LIBXML2_INCLUDE_DIR}) +INCLUDE_DIRECTORIES(${KERBEROS_INCLUDE_DIRS}) +INCLUDE_DIRECTORIES(${GSASL_INCLUDE_DIR}) +INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/mock) + +PROTOBUF_GENERATE_CPP(libhdfs3_PROTO_SOURCES libhdfs3_PROTO_HEADERS ${libhdfs3_PROTO_FILES}) + +IF(ENABLE_DEBUG STREQUAL ON) + SET(libhdfs3_SOURCES ${libhdfs3_SOURCES} ${libhdfs3_MOCK_SOURCES}) +ENDIF(ENABLE_DEBUG STREQUAL ON) + +IF(NOT HDFS_SUPERUSER) + SET(HDFS_SUPERUSER $ENV{USER}) +ENDIF(NOT HDFS_SUPERUSER) + +ADD_DEFINITIONS(-DHDFS_SUPERUSER="${HDFS_SUPERUSER}") +ADD_DEFINITIONS(-DUSER="$ENV{USER}") + +ADD_EXECUTABLE(function EXCLUDE_FROM_ALL + ${gtest_SOURCES} + ${gmock_SOURCES} + ${libhdfs3_SOURCES} + ${libhdfs3_PROTO_SOURCES} + ${libhdfs3_PROTO_HEADERS} + ${function_SOURCES} +) + +TARGET_LINK_LIBRARIES(function pthread) + +IF(NEED_BOOST) + INCLUDE_DIRECTORIES(${Boost_INCLUDE_DIR}) + SET(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -L${Boost_LIBRARY_DIRS}") + TARGET_LINK_LIBRARIES(function boost_thread) + TARGET_LINK_LIBRARIES(function boost_chrono) + TARGET_LINK_LIBRARIES(function boost_system) + TARGET_LINK_LIBRARIES(function boost_atomic) + TARGET_LINK_LIBRARIES(function boost_iostreams) +ENDIF(NEED_BOOST) + +IF(NEED_GCCEH) + TARGET_LINK_LIBRARIES(function gcc_eh) +ENDIF(NEED_GCCEH) + +IF(OS_LINUX) + TARGET_LINK_LIBRARIES(function ${LIBUUID_LIBRARIES}) + INCLUDE_DIRECTORIES(${LIBUUID_INCLUDE_DIRS}) +ENDIF(OS_LINUX) + +TARGET_LINK_LIBRARIES(function ${PROTOBUF_LIBRARIES}) +TARGET_LINK_LIBRARIES(function ${LIBXML2_LIBRARIES}) +TARGET_LINK_LIBRARIES(function ${KERBEROS_LIBRARIES}) +TARGET_LINK_LIBRARIES(function ${GSASL_LIBRARIES}) + +SET(function_SOURCES ${function_SOURCES} PARENT_SCOPE) + http://git-wip-us.apache.org/repos/asf/incubator-hawq/blob/bc0904ab/depends/libhdfs3/test/function/FunctionTestMain.cpp ---------------------------------------------------------------------- diff --git a/depends/libhdfs3/test/function/FunctionTestMain.cpp b/depends/libhdfs3/test/function/FunctionTestMain.cpp new file mode 100644 index 0000000..b8299de --- /dev/null +++ b/depends/libhdfs3/test/function/FunctionTestMain.cpp @@ -0,0 +1,38 @@ +/******************************************************************** + * Copyright (c) 2013 - 2014, Pivotal Inc. + * All rights reserved. + * + * Author: Zhanwei Wang + ********************************************************************/ +/******************************************************************** + * 2014 - + * open source under Apache License Version 2.0 + ********************************************************************/ +/** + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +#include "gtest/gtest.h" + +int main(int argc, char ** argv) { + ::testing::InitGoogleTest(&argc, argv); +#ifdef DATA_DIR + if (0 != chdir(DATA_DIR)) { + abort(); + } +#endif + return RUN_ALL_TESTS(); +}