accumulo-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From cjno...@apache.org
Subject svn commit: r1660212 - /accumulo/site/trunk/content/1.6/accumulo_user_manual.html
Date Mon, 16 Feb 2015 21:48:40 GMT
Author: cjnolet
Date: Mon Feb 16 21:48:40 2015
New Revision: 1660212

URL: http://svn.apache.org/r1660212
Log:
Updating user manual for 1.6.2 release

Modified:
    accumulo/site/trunk/content/1.6/accumulo_user_manual.html

Modified: accumulo/site/trunk/content/1.6/accumulo_user_manual.html
URL: http://svn.apache.org/viewvc/accumulo/site/trunk/content/1.6/accumulo_user_manual.html?rev=1660212&r1=1660211&r2=1660212&view=diff
==============================================================================
--- accumulo/site/trunk/content/1.6/accumulo_user_manual.html (original)
+++ accumulo/site/trunk/content/1.6/accumulo_user_manual.html Mon Feb 16 21:48:40 2015
@@ -533,93 +533,132 @@ span.icon > [class^="icon-"], span.icon
 <li><a href="#_query_services_layer">10.7. Query Services Layer</a></li>
 </ul>
 </li>
-<li><a href="#_administration">11. Administration</a></li>
+
+<li><a href="#_security">11. SSL</a></li>
+<li>
+<ul class="sectlevel2">
+<li><a href="#_ssl_server_configuration">11.1. Server Configuration</a></li>
+<li><a href="#_ssl_client_configuration">11.2. Client Configuration</a></li>
+<li><a href="#_ssl_generate_ssl_material_openssl">11.3. Generating SSL material using OpenSSL</a></li>
+<li>
+<ul class="sectlevel3">
+<li><a href="#_ssl_generate_ca">11.3.1. Generate a certificate authority</a></li>
+<li><a href="#_ssl_generate_certs">11.3.2. Generate a certificate/keystore per host</a></li>
+</ul>
+</li>
+</ul>
+</li>
+
+<li><a href="#_implementation_details">12. Implementation Details</a></li>
+<li>
+<ul class="sectlevel2">
+<li><a href="#_implementation_fate">12.1. Fault-Tolerant Executor (FATE)</a></li>
+<ul class="sectlevel3">
+<li><a href="#_implementation_fate_overview">12.1.1. Overview</a></li>
+<li><a href="#_implementation_fate_administration">12.1.2. Administration</a></li>
+<li><a href="#_implementation_fate_list_print">12.1.3. List/Print</a></li>
+<li><a href="#_implementation_fate_fail">12.1.3. Fail</a></li>
+<li><a href="#_implementation_fate_delete">12.1.3. Delete</a></li>
+</ul>
+</ul>
+</li>
+
+
+<li><a href="#_administration">13. Administration</a></li>
 <li>
 <ul class="sectlevel2">
-<li><a href="#_hardware">11.1. Hardware</a></li>
-<li><a href="#_network">11.2. Network</a></li>
-<li><a href="#_installation">11.3. Installation</a></li>
-<li><a href="#_dependencies">11.4. Dependencies</a></li>
-<li><a href="#_configuration_2">11.5. Configuration</a></li>
+<li><a href="#_hardware">13.1. Hardware</a></li>
+<li><a href="#_network">13.2. Network</a></li>
+<li><a href="#_installation">13.3. Installation</a></li>
+<li><a href="#_dependencies">13.4. Dependencies</a></li>
+<li><a href="#_configuration_2">12.5. Configuration</a></li>
 <li>
 <ul class="sectlevel3">
-<li><a href="#_edit_conf_accumulo_env_sh">11.5.1. Edit conf/accumulo-env.sh</a></li>
-<li><a href="#_native_map">11.5.2. Native Map</a></li>
-<li><a href="#_cluster_specification">11.5.3. Cluster Specification</a></li>
-<li><a href="#_accumulo_settings">11.5.4. Accumulo Settings</a></li>
-<li><a href="#_deploy_configuration">11.5.5. Deploy Configuration</a></li>
-<li><a href="#_sensitive_configuration_values">11.5.6 Sensitive Configuration Values</a></li>
-<li><a href="#_using_a_javakeystorecredentialprovider_for_storage">11.5.7. Using a JavaKeyStoreCredentialProvider for storage</a></li>
+<li><a href="#_edit_conf_accumulo_env_sh">13.5.1. Edit conf/accumulo-env.sh</a></li>
+<li><a href="#_native_map">13.5.2. Native Map</a></li>
+<li>
+<ul class="sectlevel4">
+<li><a href="#_native_map_building">13.5.2.1 Building</a></li>
+</ul>
+</li>
+<li><a href="#_administration_configuration">13.5.3. Configuration</a></li>
+<li><a href="#_cluster_specification">13.5.4. Cluster Specification</a></li>
+<li><a href="#_accumulo_settings">13.5.5. Accumulo Settings</a></li>
+<li><a href="#_deploy_configuration">13.5.6. Deploy Configuration</a></li>
+<li><a href="#_sensitive_configuration_values">13.5.7 Sensitive Configuration Values</a></li>
+<li><a href="#_using_a_javakeystorecredentialprovider_for_storage">13.5.8. Using a JavaKeyStoreCredentialProvider for storage</a></li>
 </ul>
 </li>
-<li><a href="#_initialization">11.6. Initialization</a></li>
-<li><a href="#_running">11.7. Running</a></li>
+<li><a href="#_initialization">13.6. Initialization</a></li>
+<li><a href="#_running">13.7. Running</a></li>
 <li>
 <ul class="sectlevel3">
-<li><a href="#_starting_accumulo">11.7.1. Starting Accumulo</a></li>
-<li><a href="#_stopping_accumulo">11.7.2. Stopping Accumulo</a></li>
-<li><a href="#_adding_a_node">11.7.3. Adding a Node</a></li>
-<li><a href="#_decomissioning_a_node">11.7.4. Decomissioning a Node</a></li>
+<li><a href="#_starting_accumulo">13.7.1. Starting Accumulo</a></li>
+<li><a href="#_stopping_accumulo">13.7.2. Stopping Accumulo</a></li>
+<li><a href="#_adding_a_node">13.7.3. Adding a Node</a></li>
+<li><a href="#_decomissioning_a_node">13.7.4. Decomissioning a Node</a></li>
+<li><a href="#_restarting_process_on_a_node">13.7.5. Restarting process on a node</a></li>
 </ul>
 </li>
-<li><a href="#_monitoring">11.8. Monitoring</a></li>
-<li><a href="#_tracing">11.9. Tracing</a></li>
+<li><a href="#_monitoring">13.8. Monitoring</a></li>
+<li><a href="#_tracing">13.9. Tracing</a></li>
 <li>
 <ul class="sectlevel3">
-<li><a href="#_tracers">11.9.1. Tracers</a></li>
-<li><a href="#_instrumenting_a_client">11.9.2. Instrumenting a Client</a></li>
-<li><a href="#_viewing_collected_traces">11.9.3. Viewing Collected Traces</a></li>
-<li><a href="#_tracing_from_the_shell">11.9.4. Tracing from the Shell</a></li>
+<li><a href="#_tracers">13.9.1. Tracers</a></li>
+<li><a href="#_instrumenting_a_client">13.9.2. Instrumenting a Client</a></li>
+<li><a href="#_viewing_collected_traces">13.9.3. Viewing Collected Traces</a></li>
+<li><a href="#_tracing_from_the_shell">13.9.4. Tracing from the Shell</a></li>
 </ul>
 </li>
-<li><a href="#_logging">11.10. Logging</a></li>
-<li><a href="#_recovery">11.11. Recovery</a></li>
+<li><a href="#_logging">13.10. Logging</a></li>
+<li><a href="#_recovery">13.11. Recovery</a></li>
+<li><a href="#_migrating_from_non_ha_to_ha">13.12 Migrating Accumulo from non-HA Namenode to HA Namenode</a></li>
 </ul>
 </li>
-<li><a href="#_multi_volume_installations">12. Multi-Volume Installations</a></li>
-<li><a href="#_troubleshooting">13. Troubleshooting</a></li>
+<li><a href="#_multi_volume_installations">14. Multi-Volume Installations</a></li>
+<li><a href="#_troubleshooting">15. Troubleshooting</a></li>
 <li>
 <ul class="sectlevel2">
-<li><a href="#_logs">13.1. Logs</a></li>
-<li><a href="#_monitor_2">13.2. Monitor</a></li>
-<li><a href="#_hdfs">13.3. HDFS</a></li>
-<li><a href="#_zookeeper">13.4. Zookeeper</a></li>
+<li><a href="#_logs">15.1. Logs</a></li>
+<li><a href="#_monitor_2">15.2. Monitor</a></li>
+<li><a href="#_hdfs">15.3. HDFS</a></li>
+<li><a href="#_zookeeper">15.4. Zookeeper</a></li>
 <li>
 <ul class="sectlevel3">
-<li><a href="#_keeping_the_tablet_server_lock">13.4.1. Keeping the tablet server lock</a></li>
+<li><a href="#_keeping_the_tablet_server_lock">15.4.1. Keeping the tablet server lock</a></li>
 </ul>
 </li>
-<li><a href="#_tools">13.5. Tools</a></li>
-<li><a href="#metadata">13.6. System Metadata Tables</a></li>
-<li><a href="#_simple_system_recovery">13.7. Simple System Recovery</a></li>
-<li><a href="#_advanced_system_recovery">13.8. Advanced System Recovery</a></li>
+<li><a href="#_tools">15.5. Tools</a></li>
+<li><a href="#metadata">15.6. System Metadata Tables</a></li>
+<li><a href="#_simple_system_recovery">15.7. Simple System Recovery</a></li>
+<li><a href="#_advanced_system_recovery">15.8. Advanced System Recovery</a></li>
 <li>
 <ul class="sectlevel3">
-<li><a href="#_hdfs_failure">13.8.1. HDFS Failure</a></li>
-<li><a href="#zookeeper_failure">13.8.2. ZooKeeper Failure</a></li>
+<li><a href="#_hdfs_failure">15.8.1. HDFS Failure</a></li>
+<li><a href="#zookeeper_failure">15.8.2. ZooKeeper Failure</a></li>
 </ul>
 </li>
-<li><a href="#_upgrade_issues">13.9. Upgrade Issues</a></li>
-<li><a href="#_file_naming_conventions">13.10. File Naming Conventions</a></li>
+<li><a href="#_upgrade_issues">15.9. Upgrade Issues</a></li>
+<li><a href="#_file_naming_conventions">15.10. File Naming Conventions</a></li>
 </ul>
 </li>
-<li><a href="#configuration">14. Appendix A: Configuration Management</a></li>
+<li><a href="#configuration">16. Appendix A: Configuration Management</a></li>
 <li>
 <ul class="sectlevel2">
-<li><a href="#_configuration_overview">14.1. Configuration Overview</a></li>
+<li><a href="#_configuration_overview">16.1. Configuration Overview</a></li>
 <li>
 <ul class="sectlevel3">
-<li><a href="#_zookeeper_table_properties">14.1.1. Zookeeper table properties</a></li>
-<li><a href="#_zookeeper_system_properties">14.1.2. Zookeeper system properties</a></li>
-<li><a href="#_accumulo_site_xml">14.1.3. accumulo-site.xml</a></li>
-<li><a href="#_default_values">14.1.4. Default Values</a></li>
+<li><a href="#_zookeeper_table_properties">16.1.1. Zookeeper table properties</a></li>
+<li><a href="#_zookeeper_system_properties">16.1.2. Zookeeper system properties</a></li>
+<li><a href="#_accumulo_site_xml">16.1.3. accumulo-site.xml</a></li>
+<li><a href="#_default_values">16.1.4. Default Values</a></li>
 </ul>
 </li>
-<li><a href="#_configuration_in_the_shell">14.2. Configuration in the Shell</a></li>
-<li><a href="#_available_properties">14.3. Available Properties</a></li>
+<li><a href="#_configuration_in_the_shell">16.2. Configuration in the Shell</a></li>
+<li><a href="#_available_properties">16.3. Available Properties</a></li>
 <li>
 <ul class="sectlevel3">
-<li><a href="#RPC_PREFIX">14.3.1. rpc.*</a></li>
+<li><a href="#RPC_PREFIX">16.3.1. rpc.*</a></li>
 <li>
 <ul class="sectlevel4">
 <li><a href="#_rpc_javax_net_ssl_keystore">rpc.javax.net.ssl.keyStore</a></li>
@@ -631,7 +670,7 @@ span.icon > [class^="icon-"], span.icon
 <li><a href="#_rpc_usejsse">rpc.useJsse</a></li>
 </ul>
 </li>
-<li><a href="#INSTANCE_PREFIX">14.3.2. instance.*</a></li>
+<li><a href="#INSTANCE_PREFIX">16.3.2. instance.*</a></li>
 <li>
 <ul class="sectlevel4">
 <li><a href="#_instance_dfs_dir">instance.dfs.dir</a></li>
@@ -648,7 +687,7 @@ span.icon > [class^="icon-"], span.icon
 <li><a href="#_instance_zookeeper_timeout">instance.zookeeper.timeout</a></li>
 </ul>
 </li>
-<li><a href="#GENERAL_PREFIX">14.3.3. general.*</a></li>
+<li><a href="#GENERAL_PREFIX">16.3.3. general.*</a></li>
 <li>
 <ul class="sectlevel4">
 <li><a href="#_general_classpaths">general.classpaths</a></li>
@@ -662,7 +701,7 @@ span.icon > [class^="icon-"], span.icon
 <li><a href="#_general_vfs_classpaths">general.vfs.classpaths</a></li>
 </ul>
 </li>
-<li><a href="#MASTER_PREFIX">14.3.4. master.*</a></li>
+<li><a href="#MASTER_PREFIX">16.3.4. master.*</a></li>
 <li>
 <ul class="sectlevel4">
 <li><a href="#_master_bulk_retries">master.bulk.retries</a></li>
@@ -680,7 +719,7 @@ span.icon > [class^="icon-"], span.icon
 <li><a href="#_master_walog_closer_implementation">master.walog.closer.implementation</a></li>
 </ul>
 </li>
-<li><a href="#TSERV_PREFIX">14.3.5. tserver.*</a></li>
+<li><a href="#TSERV_PREFIX">16.3.5. tserver.*</a></li>
 <li>
 <ul class="sectlevel4">
 <li><a href="#_tserver_archive_walogs">tserver.archive.walogs</a></li>
@@ -726,13 +765,13 @@ span.icon > [class^="icon-"], span.icon
 <li><a href="#_tserver_workq_threads">tserver.workq.threads</a></li>
 </ul>
 </li>
-<li><a href="#LOGGER_PREFIX">14.3.6. logger.*</a></li>
+<li><a href="#LOGGER_PREFIX">16.3.6. logger.*</a></li>
 <li>
 <ul class="sectlevel4">
 <li><a href="#_logger_dir_walog">logger.dir.walog</a></li>
 </ul>
 </li>
-<li><a href="#GC_PREFIX">14.3.7. gc.*</a></li>
+<li><a href="#GC_PREFIX">16.3.7. gc.*</a></li>
 <li>
 <ul class="sectlevel4">
 <li><a href="#_gc_cycle_delay">gc.cycle.delay</a></li>
@@ -742,7 +781,7 @@ span.icon > [class^="icon-"], span.icon
 <li><a href="#_gc_trash_ignore">gc.trash.ignore</a></li>
 </ul>
 </li>
-<li><a href="#MONITOR_PREFIX">14.3.8. monitor.*</a></li>
+<li><a href="#MONITOR_PREFIX">16.3.8. monitor.*</a></li>
 <li>
 <ul class="sectlevel4">
 <li><a href="#_monitor_banner_background">monitor.banner.background</a></li>
@@ -753,7 +792,7 @@ span.icon > [class^="icon-"], span.icon
 <li><a href="#_monitor_port_log4j">monitor.port.log4j</a></li>
 </ul>
 </li>
-<li><a href="#TRACE_PREFIX">14.3.9. trace.*</a></li>
+<li><a href="#TRACE_PREFIX">16.3.9. trace.*</a></li>
 <li>
 <ul class="sectlevel4">
 <li><a href="#_trace_password">trace.password</a></li>
@@ -763,8 +802,8 @@ span.icon > [class^="icon-"], span.icon
 <li><a href="#_trace_user">trace.user</a></li>
 </ul>
 </li>
-<li><a href="#TRACE_TOKEN_PROPERTY_PREFIX">14.3.10. trace.token.property.*</a></li>
-<li><a href="#TABLE_PREFIX">14.3.11. table.*</a></li>
+<li><a href="#TRACE_TOKEN_PROPERTY_PREFIX">16.3.10. trace.token.property.*</a></li>
+<li><a href="#TABLE_PREFIX">16.3.11. table.*</a></li>
 <li>
 <ul class="sectlevel4">
 <li><a href="#_table_balancer">table.balancer</a></li>
@@ -799,29 +838,29 @@ span.icon > [class^="icon-"], span.icon
 <li><a href="#_table_walog_enabled">table.walog.enabled</a></li>
 </ul>
 </li>
-<li><a href="#TABLE_CONSTRAINT_PREFIX">14.3.12. table.constraint.*</a></li>
-<li><a href="#TABLE_ITERATOR_PREFIX">14.3.13. table.iterator.*</a></li>
-<li><a href="#TABLE_LOCALITY_GROUP_PREFIX">14.3.14. table.group.*</a></li>
-<li><a href="#TABLE_COMPACTION_STRATEGY_PREFIX">14.3.15. table.majc.compaction.strategy.opts.*</a></li>
-<li><a href="#VFS_CONTEXT_CLASSPATH_PROPERTY">14.3.16. general.vfs.context.classpath.*</a></li>
+<li><a href="#TABLE_CONSTRAINT_PREFIX">16.3.12. table.constraint.*</a></li>
+<li><a href="#TABLE_ITERATOR_PREFIX">16.3.13. table.iterator.*</a></li>
+<li><a href="#TABLE_LOCALITY_GROUP_PREFIX">16.3.14. table.group.*</a></li>
+<li><a href="#TABLE_COMPACTION_STRATEGY_PREFIX">16.3.15. table.majc.compaction.strategy.opts.*</a></li>
+<li><a href="#VFS_CONTEXT_CLASSPATH_PROPERTY">16.3.16. general.vfs.context.classpath.*</a></li>
 </ul>
 </li>
-<li><a href="#_property_types">14.4. Property Types</a></li>
+<li><a href="#_property_types">16.4. Property Types</a></li>
 <li>
 <ul class="sectlevel3">
-<li><a href="#_duration">14.4.1. duration</a></li>
-<li><a href="#_date_time">14.4.2. date/time</a></li>
-<li><a href="#_memory">14.4.3. memory</a></li>
-<li><a href="#_host_list">14.4.4. host list</a></li>
-<li><a href="#_port">14.4.5. port</a></li>
-<li><a href="#_count">14.4.6. count</a></li>
-<li><a href="#_fraction_percentage">14.4.7. fraction/percentage</a></li>
-<li><a href="#_path">14.4.8. path</a></li>
-<li><a href="#_absolute_path">14.4.9. absolute path</a></li>
-<li><a href="#_java_class">14.4.10. java class</a></li>
-<li><a href="#_string">14.4.11. string</a></li>
-<li><a href="#_boolean">14.4.12. boolean</a></li>
-<li><a href="#_uri">14.4.13. uri</a></li>
+<li><a href="#_duration">16.4.1. duration</a></li>
+<li><a href="#_date_time">16.4.2. date/time</a></li>
+<li><a href="#_memory">16.4.3. memory</a></li>
+<li><a href="#_host_list">16.4.4. host list</a></li>
+<li><a href="#_port">16.4.5. port</a></li>
+<li><a href="#_count">16.4.6. count</a></li>
+<li><a href="#_fraction_percentage">16.4.7. fraction/percentage</a></li>
+<li><a href="#_path">16.4.8. path</a></li>
+<li><a href="#_absolute_path">16.4.9. absolute path</a></li>
+<li><a href="#_java_class">16.4.10. java class</a></li>
+<li><a href="#_string">16.4.11. string</a></li>
+<li><a href="#_boolean">16.4.12. boolean</a></li>
+<li><a href="#_uri">16.4.13. uri</a></li>
 </ul>
 </li>
 </ul>
@@ -3758,11 +3797,263 @@ Authorizations mechanism.</p>
 </div>
 </div>
 </div>
+
 <div class="sect1">
-<h2 id="_administration">11. Administration</h2>
+<h2 id="_ssl">11. SSL</h2>
 <div class="sectionbody">
+<p>
+Accumulo, through Thrift's TSSLTransport, provides the ability to encrypt
+wire communication between Accumulo servers and clients using secure
+sockets layer (SSL). SSL certifcates signed by the same certificate authority
+control the "circle of trust" in which a secure connection can be established.
+Typically, each host running Accumulo processes would be given a certificate
+which identifies itself.
+
+Clients can optionally also be given a certificate, when client-auth is enabled,
+which prevents unwanted clients from accessing the system. The SSL integration
+presently provides no authentication support within Accumulo (an Accumulo username
+and password are still required) and is only used to establish a means for
+secure communication.
+</p>
+</div>
+<div class="sect2">
+<h3 id="_ssl_server_configuration">11.1. Server Configuration</h3>
+
+<div class="paragraph">
+<p>As previously mentioned, the circle of trust is established by the certificate
+authority which created the certificates in use. Because of the tight coupling
+of certificate generation with an organization's policies, Accumulo does not
+provide a method in which to automatically create the necessary SSL components.</p>
+</div>
+
+<div class="paragraph">
+<p>Administrators without existing infrastructure built on SSL are encourage to
+use OpenSSL and the \texttt{keytool} command. An example of these commands are
+included in a section below. Accumulo servers require a certificate and keystore,
+in the form of Java KeyStores, to enable SSL. The following configuration assumes
+these files already exist.</p>
+</div>
+
+<div class="paragraph">
+<p>In <code>$ACCUMULO_CONF_DIR/accumulo-site.xml</code>, the following properties are required:</p>
+</div>
+
+<div class="listingblock">
+<div class="content">
+<pre class="highlight">
+rpc.javax.net.ssl.keyStore=The path on the local filesystem to the keystore containing the server's certificate
+rpc.javax.net.ssl.keyStorePassword=The password for the keystore containing the server's certificate
+rpc.javax.net.ssl.trustStore=The path on the local filesystem to the keystore containing the certificate authority's public key
+rpc.javax.net.ssl.trustStorePassword=The password for the keystore containing the certificate authority's public key
+instance.rpc.ssl.enabled=true
+</pre>
+</div>
+</div>
+
+<div class="paragraph">
+<p>Optionally, SSL client-authentication (two-way SSL) can also be enabled by setting
+<code>instance.rpc.ssl.clientAuth=true</code> in <code>$ACCUMULO_CONF_DIR/accumulo-site.xml</code>.
+This requires that each client has access to  valid certificate to set up a secure connection
+to the servers. By default, Accumulo uses one-way SSL which does not require clients to have
+their own certificate.</p>
+</div>
+</div>
+
+<div class="sect2">
+<h3 id="_ssl_client_configuration">11.2. Client Configuration</h3>
+
+<div class="paragraph">
+<p>To establish a connection to Accumulo servers, each client must also have
+special configuration. This is typically accomplished through the use of
+the client configuration file whose default location is <code>~/.accumulo/config</code>.</p>
+</div>
+
+<div class="paragraph">
+<p>The following properties must be set to connect to an Accumulo instance using SSL:</p>
+</div>
+
+<div class="listingblock">
+<div class="content">
+<pre class="highlight">
+rpc.javax.net.ssl.trustStore=The path on the local filesystem to the keystore containing the certificate authority's public key
+rpc.javax.net.ssl.trustStorePassword=The password for the keystore containing the certificate authority's public key
+instance.rpc.ssl.enabled=true</pre>
+</div>
+</div>
+
+<div class="paragraph">
+<p>If two-way SSL if enabled (\texttt{instance.rpc.ssl.clientAuth=true}) for the instance, the client must also define
+their own certificate and enable client authenticate as well.</p>
+</div>
+
+<div class="listingblock">
+<div class="content">
+<pre class="highlight">
+rpc.javax.net.ssl.keyStore=The path on the local filesystem to the keystore containing the server's certificate
+rpc.javax.net.ssl.keyStorePassword=The password for the keystore containing the server's certificate
+instance.rpc.ssl.clientAuth=true</pre>
+</div>
+</div>
+</div>
+<div class="sect3">
+<h3 id="_ssl_generate_ssl_material_openssl">11.3. Generating SSL material using OpenSSL</h3>
+<div class="paragraph">
+<p>The following is included as an example for generating your own SSL material (certificate authority and server/client
+certificates) using OpenSSL and Java's KeyTool command.</p>
+</div>
+<div class="sect2">
+<h4 id="_ssl_generate_ca">11.3.1. Generating a certificate authority</h3>
+<div class="literalblock">
+<div class="content">
+<pre>
+# Create a private key
+openssl genrsa -des3 -out root.key 4096
+
+# Create a certificate request using the private key
+openssl req -x509 -new -key root.key -days 365 -out root.pem
+
+# Generate a Base64-encoded version of the PEM just created
+openssl x509 -outform der -in root.pem -out root.der
+
+# Import the key into a Java KeyStore
+keytool -import -alias root-key -keystore truststore.jks -file root.der
+
+# Remove the DER formatted key file (as we don't need it anymore)
+rm root.der
+</pre>
+</div>
+</div>
+
+<div class="paragraph">
+<p>The <code>truststore.jks</code> file is the Java keystore which contains the certificate authority's public key.</p>
+</div>
+</div>
 <div class="sect2">
-<h3 id="_hardware">11.1. Hardware</h3>
+<h4 id="_ssl_generate_certs">11.3.2. Generating a certificate/keystore per host</h3>
+<div class="paragraph">
+<p>It's common that each host in the instance is issued its own certificate (notably to ensure that revocation procedures
+can be easily followed). The following steps can be taken for each host.</p>
+</div>
+
+<div class="literalblock">
+<div class="content">
+<pre>
+# Create the private key for our server
+openssl genrsa -out server.key 4096
+
+# Generate a certificate signing request (CSR) with our private key
+openssl req -new -key server.key -out server.csr
+
+# Use the CSR and the CA to create a certificate for the server (a reply to the CSR)
+openssl x509 -req -in server.csr -CA root.pem -CAkey root.key -CAcreateserial \
+    -out server.crt -days 365
+
+# Use the certificate and the private key for our server to create PKCS12 file
+openssl pkcs12 -export -in server.crt -inkey server.key -certfile server.crt \
+    -name 'server-key' -out server.p12
+
+# Create a Java KeyStore for the server using the PKCS12 file (private key)
+keytool -importkeystore -srckeystore server.p12 -srcstoretype pkcs12 -destkeystore \
+    server.jks -deststoretype JKS
+
+# Remove the PKCS12 file as we don't need it
+rm server.p12
+
+# Import the CA-signed certificate to the keystore
+keytool -import -trustcacerts -alias server-crt -file server.crt -keystore server.jks
+</pre>
+</div>
+</div>
+
+<div class="paragraph">
+<p>The <code>server.jks</code> file is the Java keystore containing the certificate for a given host. The above
+methods are equivalent whether the certficate is generate for an Accumulo server or a client.</p>
+</div>
+</div>
+
+<div class="sect1">
+<h2 id="_implementation_details">12. Implementation Details</h2>
+<div class="sectionbody">
+<div class="sect2">
+<h3 id="_implementation_fate">12.1. Fault-Tolerant Executor (FATE)</h3>
+
+<div class="paragraph">
+<p>Accumulo must implement a number of distributed, multi-step operations to support
+the client API. Creating a new table is a simple example of an atomic client call
+which requires multiple steps in the implementation: get a unique table ID, configure
+default table permissions, populate information in ZooKeeper to record the table's
+existence, create directories in HDFS for the table's data, etc. Implementing these
+steps in a way that is tolerant to node failure and other concurrent operations is
+very difficult to achieve. Accumulo includes a Fault-Tolerant Executor (FATE) which
+is widely used server-side to implement the client API safely and correctly.
+
+FATE is the implementation detail which ensures that tables in creation when the
+Master dies will be successfully created when another Master process is started.
+This alleviates the need for any external tools to correct some bad state -- Accumulo can
+undo the failure and self-heal without any external intervention.</p>
+</div>
+
+<div class="sect3">
+<h4 id="_implementation_fate_overview">12.1.1 Overview</h3>
+<div class="paragraph">
+<p>FATE consists of two primary components: a repeatable, persisted operation (REPO), a storage
+layer for REPOs and an execution system to run REPOs. Accumulo uses ZooKeeper as the storage
+layer for FATE and the Accumulo Master acts as the execution system to run REPOs.
+
+The important characteristic of REPOs are that they implemented in a way that is idempotent:
+every operation must be able to undo or replay a partial execution of itself. Requiring the 
+implementation of the operation to support this functional greatly simplifies the execution
+of these operations. This property is also what guarantees safety in light of failure conditions.</P>
+</div>
+<div class="sect3">
+<h4 id="_implementation_fate_administration">12.1.2 Administration</h3>
+<div class="paragraph">
+<p>Sometimes, it is useful to inspect the current FATE operations, both pending and executing.
+For example, a command that is not completing could be blocked on the execution of another
+operation. Accumulo provides an Accumulo shell command to interact with fate.</p>
+</div>
+
+<div class="paragraph">
+<p>The <code>fate</code> shell command accepts a number of arguments for different functionality:
+<code>list</code>/<code>print</code>, <code>fail</code>, <code>delete</code>.</p>
+</div>
+<div class="sect3">
+<h4 id="_implementation_fate_list_print">12.1.3 List/Print</h3>
+<div class="paragraph">
+<p>Without any additional arguments, this command will print all operations that still exist in
+the FATE store (ZooKeeper). This will include active, pending, and completed operations (completed
+operations are lazily removed from the store). Each operation includes a unique "transaction ID", the
+state of the operation (e.g. <code>NEW</code>, <code>IN\_PROGRESS</code>, <code>FAILED</code>), any locks the
+transaction actively holds and any locks it is waiting to acquire.</p>
+</div>
+
+<div class="paragraph">
+<p>This option can also accept transaction IDs which will restrict the list of transactions shown. </p>
+</div>
+<div class="sect3">
+<h4 id="_implementation_fate_fail">12.1.4 Fail</h3>
+<div class="paragraph">
+<p>This command can be used to manually fail a FATE transaction and requires a transaction ID
+as an argument. Failing an operation is not a normal procedure and should only be performed
+by an administrator who understands the implications of why they are failing the operation.</p>
+</div>
+<div class="sect3">
+<h4 id="_implementation_fate_delete">12.1.5 Delete</h3>
+<div class="paragraph">
+<p>This command requires a transaction ID and will delete any locks that the transaction
+holds. Like the fail command, this command should only be used in extreme circumstances
+by an administrator that understands the implications of the command they are about to 
+invoke. It is not normal to invoke this command.</p>
+</div>
+</div>
+</div>
+
+
+<div class="sect1">
+<h2 id="_administration">13. Administration</h2>
+<div class="sectionbody">
+<div class="sect2">
+<h3 id="_hardware">13.1. Hardware</h3>
 <div class="paragraph">
 <p>Because we are running essentially two or three systems simultaneously layered
 across the cluster: HDFS, Accumulo and MapReduce, it is typical for hardware to
@@ -3782,7 +4073,7 @@ processes on a machine.</p>
 </div>
 </div>
 <div class="sect2">
-<h3 id="_network">11.2. Network</h3>
+<h3 id="_network">13.2. Network</h3>
 <div class="paragraph">
 <p>Accumulo communicates via remote procedure calls over TCP/IP for both passing
 data and control messages. In addition, Accumulo uses HDFS clients to
@@ -3861,7 +4152,7 @@ same default ports) on the same hardware
 </div>
 </div>
 <div class="sect2">
-<h3 id="_installation">11.3. Installation</h3>
+<h3 id="_installation">13.3. Installation</h3>
 <div class="paragraph">
 <p>Choose a directory for the Accumulo installation. This directory will be referenced
 by the environment variable <code>$ACCUMULO_HOME</code>. Run the following:</p>
@@ -3878,7 +4169,7 @@ same <code>$ACCUMULO_HOME</code>.</p>
 </div>
 </div>
 <div class="sect2">
-<h3 id="_dependencies">11.4. Dependencies</h3>
+<h3 id="_dependencies">13.4. Dependencies</h3>
 <div class="paragraph">
 <p>Accumulo requires HDFS and ZooKeeper to be configured and running
 before starting. Password-less SSH should be configured between at least the
@@ -3888,14 +4179,14 @@ sync, which can cause problems with auto
 </div>
 </div>
 <div class="sect2">
-<h3 id="_configuration_2">11.5. Configuration</h3>
+<h3 id="_configuration_2">13.5. Configuration</h3>
 <div class="paragraph">
 <p>Accumulo is configured by editing several Shell and XML files found in
 <code>$ACCUMULO_HOME/conf</code>. The structure closely resembles Hadoop&#8217;s configuration
 files.</p>
 </div>
 <div class="sect3">
-<h4 id="_edit_conf_accumulo_env_sh">11.5.1. Edit conf/accumulo-env.sh</h4>
+<h4 id="_edit_conf_accumulo_env_sh">13.5.1. Edit conf/accumulo-env.sh</h4>
 <div class="paragraph">
 <p>Accumulo needs to know where to find the software it depends on. Edit accumulo-env.sh
 and specify the following:</p>
@@ -3943,7 +4234,7 @@ within the available memory.</p>
 </div>
 </div>
 <div class="sect3">
-<h4 id="_native_map">11.5.2. Native Map</h4>
+<h4 id="_native_map">13.5.2. Native Map</h4>
 <div class="paragraph">
 <p>The tablet server uses a data structure called a MemTable to store sorted key/value
 pairs in memory when they are first received from the client. When a minor compaction
@@ -3953,6 +4244,8 @@ speed up performance by utilizing the me
 native map also avoids the performance implications brought on by garbage collection
 in the JVM by causing it to pause much less frequently.</p>
 </div>
+<div class="sect4">
+<h5 id="_native_map_building">13.5.2.1 Building</h4>
 <div class="paragraph">
 <p>32-bit and 64-bit Linux and Mac OS X versions of the native map can be built from the
 Accumulo bin package by executing <code>$ACCUMULO_HOME/bin/build_native_library.sh</code>.
@@ -3978,10 +4271,50 @@ in this directory for the map library. I
 target directory, the tablet server may not be able to find it. The system can also
 locate the native maps shared library by setting <code>LD_LIBRARY_PATH</code> (or 
 <code>DYLD_LIBRARY_PATH</code> on Mac OS X) in <code>$ACCUMULO_HOME/conf/accumulo-env.sh</code></p>
+</div>  
+</div>
+
+<div class="sect3">
+<h4 id="_administration_configuration">13.5.3. Configuration</h4>
+<div class="paragraph">
+<p>As mentioned, Accumulo will use the native libraries if they are found in the expected
+location and if it is not configured to ignore them. Using the native maps over JVM
+Maps nets a noticable improvement in ingest rates; however, certain configuration
+variables are important to modify when increasing the size of the native map.</p>
+</div>
+
+<div class="paragraph">
+<p>To adjust the size of the native map, increase the value of <code>tserver.memory.maps.max</code>.
+By default, the maximum size of the native map is 1GB. When increasing this value, it is
+also important to adjust the values of <code>table.compaction.minor.logs.threshold</code> and
+<code>tserver.walog.max.size</code>. <code>table.compaction.minor.logs.threshold</code> is the maximum
+number of write-ahead log files that a tablet can reference before they will be automatically
+minor compacted. <code>tserver.walog.max.size</code> is the maximum size of a write-ahead log.</p>
+</div>
+
+<div class="paragraph">
+<p>The maximum size of the native maps for a server should be less than the product
+of the write-ahead log maximum size and minor compaction threshold for log files:</p>
+</div>
+
+<pre>(table.compaction.minor.logs.threshold * tserver.walog.max.size >= tserver.memory.maps.max)</pre>
+
+<div class="paragraph">
+<p>This formula ensures that minor compactions won't be automatically triggered before the native
+maps can be completely saturated.</p>
+</div>
+
+<div class="paragraph">
+<p>Subsequently, when increasing the size of the write-ahead logs, it can also be important
+to increase the HDFS block size that Accumulo uses when creating the files for the write-ahead log.
+This is controlled via <code>tserver.wal.blocksize</code>. A basic recommendation is that when
+<code>tserver.walog.max.size</code> is larger than 2GB in size, set <code>tserver.wal.blocksize</code>
+to 2GB. Increasing the block size to a value larger than 2GB can result in decreased write
+performance to the write-ahead log file which will slow ingest.</p>
 </div>
 </div>
 <div class="sect3">
-<h4 id="_cluster_specification">11.5.3. Cluster Specification</h4>
+<h4 id="_cluster_specification">13.5.4. Cluster Specification</h4>
 <div class="paragraph">
 <p>On the machine that will serve as the Accumulo master:</p>
 </div>
@@ -4002,7 +4335,7 @@ of errors.</p>
 </div>
 </div>
 <div class="sect3">
-<h4 id="_accumulo_settings">11.5.4. Accumulo Settings</h4>
+<h4 id="_accumulo_settings">13.5.5. Accumulo Settings</h4>
 <div class="paragraph">
 <p>Specify appropriate values for the following settings in
 <code>$ACCUMULO_HOME/conf/accumulo-site.xml</code> :</p>
@@ -4041,7 +4374,7 @@ some settings require a process restart
 </div>
 </div>
 <div class="sect3">
-<h4 id="_deploy_configuration">11.5.5. Deploy Configuration</h4>
+<h4 id="_deploy_configuration">13.5.6. Deploy Configuration</h4>
 <div class="paragraph">
 <p>Copy the masters, slaves, accumulo-env.sh, and if necessary, accumulo-site.xml
 from the <code>$ACCUMULO_HOME/conf/</code> directory on the master to all the machines
@@ -4049,7 +4382,7 @@ specified in the slaves file.</p>
 </div>
 </div>
 <div class="sect3">
-<h4 id="_sensitive_configuration_values">11.5.6. Sensitive Configuration Values</h4>
+<h4 id="_sensitive_configuration_values">13.5.7. Sensitive Configuration Values</h4>
 <div class="paragraph">
 <p>Accumulo has a number of properties that can be specified via the accumulo-site.xml
 file which are sensitive in nature, instance.secret and trace.token.property.password
@@ -4070,11 +4403,11 @@ when the Configuration object for accumu
 </div>
 </div>
 <div class="sect3">
-<h4 id="_using_a_javakeystorecredentialprovider_for_storage">11.5.7. Using a JavaKeyStoreCredentialProvider for storage</h4>
+<h4 id="_using_a_javakeystorecredentialprovider_for_storage">13.5.8. Using a JavaKeyStoreCredentialProvider for storage</h4>
 <div class="paragraph">
 <p>One of the implementations provided in Hadoop-2.6.0 is a Java KeyStore CredentialProvider.
 Each entry in the KeyStore is the Accumulo Property key name. For example, to store the
-\texttt{instance.secret}, the following command can be used:</p>
+<code>instance.secret</code>, the following command can be used:</p>
 </div>
 <div class="literalblock">
 <div class="content">
@@ -4113,7 +4446,7 @@ will expect the KeyStore in the same loc
 </div>
 </div>
 <div class="sect2">
-<h3 id="_initialization">11.6. Initialization</h3>
+<h3 id="_initialization">13.6. Initialization</h3>
 <div class="paragraph">
 <p>Accumulo must be initialized to create the structures it uses internally to locate
 data across the cluster. HDFS is required to be configured and running before
@@ -4132,9 +4465,9 @@ initialized it can be started.</p>
 </div>
 </div>
 <div class="sect2">
-<h3 id="_running">11.7. Running</h3>
+<h3 id="_running">13.7. Running</h3>
 <div class="sect3">
-<h4 id="_starting_accumulo">11.7.1. Starting Accumulo</h4>
+<h4 id="_starting_accumulo">13.7.1. Starting Accumulo</h4>
 <div class="paragraph">
 <p>Make sure Hadoop is configured on all of the machines in the cluster, including
 access to a shared HDFS instance. Make sure HDFS and ZooKeeper are running.
@@ -4149,7 +4482,7 @@ tables via reading the metadata tables.<
 </div>
 </div>
 <div class="sect3">
-<h4 id="_stopping_accumulo">11.7.2. Stopping Accumulo</h4>
+<h4 id="_stopping_accumulo">13.7.2. Stopping Accumulo</h4>
 <div class="paragraph">
 <p>To shutdown cleanly, run <code>bin/stop-all.sh</code> and the master will orchestrate the
 shutdown of all the tablet servers. Shutdown waits for all minor compactions to finish, so it may
@@ -4157,7 +4490,7 @@ take some time for particular configurat
 </div>
 </div>
 <div class="sect3">
-<h4 id="_adding_a_node">11.7.3. Adding a Node</h4>
+<h4 id="_adding_a_node">13.7.3. Adding a Node</h4>
 <div class="paragraph">
 <p>Update your <code>$ACCUMULO_HOME/conf/slaves</code> (or <code>$ACCUMULO_CONF_DIR/slaves</code>) file to account for the addition.</p>
 </div>
@@ -4181,14 +4514,14 @@ but in practice it&#8217;s good to ensur
 </div>
 </div>
 <div class="sect3">
-<h4 id="_decomissioning_a_node">11.7.4. Decomissioning a Node</h4>
+<h4 id="_decomissioning_a_node">13.7.4. Decomissioning a Node</h4>
 <div class="paragraph">
 <p>If you need to take a node out of operation, you can trigger a graceful shutdown of a tablet
 server. Accumulo will automatically rebalance the tablets across the available tablet servers.</p>
 </div>
 <div class="literalblock">
 <div class="content">
-<pre>$ACCUMULO_HOME/bin/accumulo admin stop &lt;host(s)&gt; {&lt;host&gt; ...}</pre>
+<pre>$ACCUMULO_HOME/bin/accumulo admin stop &lt;host[:port]&gt; {&lt;host[:port]&gt; ...}</pre>
 </div>
 </div>
 <div class="paragraph">
@@ -4206,9 +4539,37 @@ slaves file automatically, so it will re
 recommended that you restart the monitor so that the node list is up to date.</p>
 </div>
 </div>
+<div class="sect3">
+<h4 id="_restarting_process_on_a_node">13.7.5. Restarting process on a node</h4>
+<div class="paragraph">
+<p>Occasionally, it might be necessary to restart the processes on a specific node. In addition
+to the <code>start-all.sh</code> and <code>stop-all.sh</code> scripts, Accumulo contains scripts to start/stop all processes
+on a node and start/stop a given process on a node.</p>
+</div>
+
+<div class="paragraph">
+<p><code>start-here.sh</code> and <code>stop-here.sh</code> will start/stop all Accumulo processes on the current node. The
+necessary processes to start/stop are determined via the "hosts" files (e.g. slaves, masters, etc).
+These scripts expect no arguments.</p>
+</div>
+
+<div class="paragraph">
+<p><code>start-server.sh</code> can also be useful in starting a given process on a host.
+The first argument to the process is the hostname of the machine. Use the same host that 
+you specified in hosts file (if you specified FQDN in the masters file, use the FQDN, not
+the shortname). The second argument is the name of the process to start (e.g. master, tserver).</>
+</div>
+
+<div class="paragraph">
+<p>The steps described to decomission a node can also be used (without removal of the host
+from the <code>$ACCUMULO_HOME/conf/slaves</code> file) to gracefully stop a node. This will
+ensure that the tabletserver is cleanly stopped and recovery will not need to be performed
+when the tablets are re-hosted.</p>
+</div>
 </div>
+
 <div class="sect2">
-<h3 id="_monitoring">11.8. Monitoring</h3>
+<h3 id="_monitoring">13.8. Monitoring</h3>
 <div class="paragraph">
 <p>The Accumulo Master provides an interface for monitoring the status and health of
 Accumulo components. This interface can be accessed by pointing a web browser to
@@ -4216,7 +4577,7 @@ Accumulo components. This interface can
 </div>
 </div>
 <div class="sect2">
-<h3 id="_tracing">11.9. Tracing</h3>
+<h3 id="_tracing">13.9. Tracing</h3>
 <div class="paragraph">
 <p>It can be difficult to determine why some operations are taking longer
 than expected. For example, you may be looking up items with very low
@@ -4242,7 +4603,7 @@ other table.</p>
 <a href="http://research.google.com/pubs/pub36356.html">Google&#8217;s Dapper</a>.</p>
 </div>
 <div class="sect3">
-<h4 id="_tracers">11.9.1. Tracers</h4>
+<h4 id="_tracers">13.9.1. Tracers</h4>
 <div class="paragraph">
 <p>To collect traces, Accumulo needs at least one server listed in
  <code>$ACCUMULO_HOME/conf/tracers</code>. The server collects traces
@@ -4258,7 +4619,7 @@ trace.token.property.password</pre>
 </div>
 </div>
 <div class="sect3">
-<h4 id="_instrumenting_a_client">11.9.2. Instrumenting a Client</h4>
+<h4 id="_instrumenting_a_client">13.9.2. Instrumenting a Client</h4>
 <div class="paragraph">
 <p>Tracing can be used to measure a client operation, such as a scan, as
 the operation traverses the distributed system. To enable tracing for
@@ -4337,7 +4698,7 @@ data.</p>
 </div>
 </div>
 <div class="sect3">
-<h4 id="_viewing_collected_traces">11.9.3. Viewing Collected Traces</h4>
+<h4 id="_viewing_collected_traces">13.9.3. Viewing Collected Traces</h4>
 <div class="paragraph">
 <p>To view collected traces, use the "Recent Traces" link on the Monitor
 UI. You can also programmatically access and print traces using the
@@ -4345,7 +4706,7 @@ UI. You can also programmatically access
 </div>
 </div>
 <div class="sect3">
-<h4 id="_tracing_from_the_shell">11.9.4. Tracing from the Shell</h4>
+<h4 id="_tracing_from_the_shell">13.9.4. Tracing from the Shell</h4>
 <div class="paragraph">
 <p>You can enable tracing for operations run from the shell by using the
 <code>trace on</code> and <code>trace off</code> commands.</p>
@@ -4372,14 +4733,14 @@ Time  Start  Service@Location       Name
 </div>
 </div>
 <div class="sect2">
-<h3 id="_logging">11.10. Logging</h3>
+<h3 id="_logging">13.10. Logging</h3>
 <div class="paragraph">
 <p>Accumulo processes each write to a set of log files. By default these are found under
 <code>$ACCUMULO/logs/</code>.</p>
 </div>
 </div>
 <div class="sect2">
-<h3 id="_recovery">11.11. Recovery</h3>
+<h3 id="_recovery">13.11. Recovery</h3>
 <div class="paragraph">
 <p>In the event of TabletServer failure or error on shutting Accumulo down, some
 mutations may not have been minor compacted to HDFS properly. In this case,
@@ -4401,10 +4762,86 @@ cases clients will be able to continue p
 throwing an exception.</p>
 </div>
 </div>
+<h3 id="_migrating_from_non_ha_to_ha">12.12. Migrating Accumulo from non-HA Namenode to HA Namenode</h3>
+<div class="paragraph"><p>
+The following steps will allow a non-HA instance to be migrated to an HA instance. Consider an HDFS URL
+<code>hdfs://namenode.example.com:8020</code> which is going to be moved to <code>hdfs://nameservice1</code>.</p>
+</div>
+<div class="paragraph"><p>
+Before moving HDFS over to the HA namenode, use <code>$ACCUMULO_HOME/bin/accumulo admin volumes</code> to confirm
+that the only volume displayed is the volume from the current namenode's HDFS URL.</p>
+</div>  
+<div class="listingblock">
+<div class="content">
+<pre>
+Listing volumes referenced in zookeeper
+        Volume : hdfs://namenode.example.com:8020/accumulo
+
+Listing volumes referenced in accumulo.root tablets section
+        Volume : hdfs://namenode.example.com:8020/accumulo
+Listing volumes referenced in accumulo.root deletes section (volume replacement occurrs at deletion time)
+
+Listing volumes referenced in accumulo.metadata tablets section
+        Volume : hdfs://namenode.example.com:8020/accumulo
+
+Listing volumes referenced in accumulo.metadata deletes section (volume replacement occurrs at deletion time)
+</pre>
+</div>
+</div>
+<div class="paragraph"><p>
+After verifying the current volume is correct, shut down the cluster and transition HDFS to the HA nameservice.
+
+Edit <code>$ACCUMULO_HOME/conf/accumulo-site.xml</code> to notify accumulo that a volume is being replaced. First,
+add the new nameservice volume to the <code>instance.volumes</code> property. Next, add the
+<code>instance.volumes.replacements</code> property in the form of <code>old new</code>. It's important to not include
+the volume that's being replaced in <code>instance.volumes</code>, otherwise it's possible accumulo could continue
+to write to the volume.</p>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre class="highlight"><code class="xml language-xml">&lt;!-- instance.dfs.uri and instance.dfs.dir should not be set--&gt;
+&lt;property&gt;
+  &lt;name&gt;instance.volumes&lt;/name&gt;
+  &lt;value&gt;hdfs://nameservice1/accumulo&lt;/value&gt;
+&lt;/property&gt;
+&lt;property&gt;
+  &lt;name>instance.volumes.replacements&lt;/name&gt;
+  &lt;value>hdfs://namenode.example.com:8020/accumulo hdfs://nameservice1/accumulo&lt;/value&gt;
+&lt;/property>
+</code></pre>
+</div>
+</div>
+<div class="paragraph">
+<p>Run <code>$ACCUMULO_HOME/bin/accumulo init --add-volumes</code> and start up the accumulo cluster. Verify that the
+new nameservice volume shows up with <code>$ACCUMULO_HOME/bin/accumulo admin volumes</code>.</p>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre>
+Listing volumes referenced in zookeeper
+        Volume : hdfs://namenode.example.com:8020/accumulo
+        Volume : hdfs://nameservice1/accumulo
+
+Listing volumes referenced in accumulo.root tablets section
+        Volume : hdfs://namenode.example.com:8020/accumulo
+        Volume : hdfs://nameservice1/accumulo
+Listing volumes referenced in accumulo.root deletes section (volume replacement occurrs at deletion time)
+
+Listing volumes referenced in accumulo.metadata tablets section
+        Volume : hdfs://namenode.example.com:8020/accumulo
+        Volume : hdfs://nameservice1/accumulo
+Listing volumes referenced in accumulo.metadata deletes section (volume replacement occurrs at deletion time)
+
+</pre>
+</div>
+</div>
+<div class="paragraph"><p>
+Some erroneous GarbageCollector messages may still be seen for a small period while data is transitioning to
+the new volumes. This is expected and can usually be ignored.</p>
 </div>
 </div>
 <div class="sect1">
-<h2 id="_multi_volume_installations">12. Multi-Volume Installations</h2>
+<h2 id="_multi_volume_installations">13. Multi-Volume Installations</h2>
 <div class="sectionbody">
 <div class="paragraph">
 <p>This is an advanced configuration setting for very large clusters
@@ -4487,10 +4924,10 @@ NameNode.</p>
 </div>
 </div>
 <div class="sect1">
-<h2 id="_troubleshooting">13. Troubleshooting</h2>
+<h2 id="_troubleshooting">14. Troubleshooting</h2>
 <div class="sectionbody">
 <div class="sect2">
-<h3 id="_logs">13.1. Logs</h3>
+<h3 id="_logs">14.1. Logs</h3>
 <div class="paragraph">
 <p><strong>Q</strong>: The tablet server does not seem to be running!? What happened?</p>
 </div>
@@ -4518,7 +4955,7 @@ options, files or permissions, messages
 </div>
 </div>
 <div class="sect2">
-<h3 id="_monitor_2">13.2. Monitor</h3>
+<h3 id="_monitor_2">14.2. Monitor</h3>
 <div class="paragraph">
 <p><strong>Q</strong>: Accumulo is not working, what&#8217;s wrong?</p>
 </div>
@@ -4576,7 +5013,7 @@ master is down.</p>
 </div>
 </div>
 <div class="sect2">
-<h3 id="_hdfs">13.3. HDFS</h3>
+<h3 id="_hdfs">14.3. HDFS</h3>
 <div class="paragraph">
 <p>Accumulo reads and writes to the Hadoop Distributed File System.
 Accumulo needs this file system available at all times for normal operations.</p>
@@ -4624,7 +5061,7 @@ system issues on those nodes.</p>
 </div>
 </div>
 <div class="sect2">
-<h3 id="_zookeeper">13.4. Zookeeper</h3>
+<h3 id="_zookeeper">14.4. Zookeeper</h3>
 <div class="paragraph">
 <p><strong>Q</strong>: <code>accumulo init</code> is hanging.  It says something about talking to zookeeper.</p>
 </div>
@@ -4706,7 +5143,7 @@ already.</p>
 zookeeper.</p>
 </div>
 <div class="sect3">
-<h4 id="_keeping_the_tablet_server_lock">13.4.1. Keeping the tablet server lock</h4>
+<h4 id="_keeping_the_tablet_server_lock">14.4.1. Keeping the tablet server lock</h4>
 <div class="paragraph">
 <p><strong>Q</strong>: My tablet server lost its lock.  Why?</p>
 </div>
@@ -4791,7 +5228,7 @@ messages to zookeeper.</p>
 </div>
 </div>
 <div class="sect2">
-<h3 id="_tools">13.5. Tools</h3>
+<h3 id="_tools">14.5. Tools</h3>
 <div class="paragraph">
 <p>The accumulo script can be used to run classes from the command line.
 This section shows how a few of the utilities work, but there are many
@@ -5025,7 +5462,7 @@ INFO : Using ZooKeepers localhost:2181
 </div>
 </div>
 <div class="sect2">
-<h3 id="metadata">13.6. System Metadata Tables</h3>
+<h3 id="metadata">14.6. System Metadata Tables</h3>
 <div class="paragraph">
 <p>Accumulo tracks information about tables in metadata tables. The metadata for
 most tables is contained within the metadata table in the accumulo namespace,
@@ -5172,7 +5609,7 @@ so it has no prev-row (or end row).</p>
 </div>
 </div>
 <div class="sect2">
-<h3 id="_simple_system_recovery">13.7. Simple System Recovery</h3>
+<h3 id="_simple_system_recovery">14.7. Simple System Recovery</h3>
 <div class="paragraph">
 <p><strong>Q</strong>: One of my Accumulo processes died. How do I bring it back?</p>
 </div>
@@ -5219,9 +5656,9 @@ processes should be stable on the order
 </div>
 </div>
 <div class="sect2">
-<h3 id="_advanced_system_recovery">13.8. Advanced System Recovery</h3>
+<h3 id="_advanced_system_recovery">14.8. Advanced System Recovery</h3>
 <div class="sect3">
-<h4 id="_hdfs_failure">13.8.1. HDFS Failure</h4>
+<h4 id="_hdfs_failure">14.8.1. HDFS Failure</h4>
 <div class="paragraph">
 <p><strong>Q</strong>: I had disasterous HDFS failure.  After bringing everything back up, several tablets refuse to go online.</p>
 </div>
@@ -5406,7 +5843,7 @@ resolved. Rebuild the metadata table if
 </div>
 </div>
 <div class="sect3">
-<h4 id="zookeeper_failure">13.8.2. ZooKeeper Failure</h4>
+<h4 id="zookeeper_failure">14.8.2. ZooKeeper Failure</h4>
 <div class="paragraph">
 <p><strong>Q</strong>: I lost my ZooKeeper quorum (hardware failure), but HDFS is still intact. How can I recover my Accumulo instance?</p>
 </div>
@@ -5478,7 +5915,7 @@ omission of new data.</p>
 </div>
 </div>
 <div class="sect2">
-<h3 id="_upgrade_issues">13.9. Upgrade Issues</h3>
+<h3 id="_upgrade_issues">14.9. Upgrade Issues</h3>
 <div class="paragraph">
 <p><strong>Q</strong>: I upgrade from 1.4 to 1.5 to 1.6 but still have some WAL files on local disk. Do I have any way
 to recover them?</p>
@@ -5496,7 +5933,7 @@ invoked as follows:</p>
 </div>
 </div>
 <div class="sect2">
-<h3 id="_file_naming_conventions">13.10. File Naming Conventions</h3>
+<h3 id="_file_naming_conventions">14.10. File Naming Conventions</h3>
 <div class="paragraph">
 <p><strong>Q</strong>: Why are files named like they are? Why do some start with <code>C</code> and others with <code>F</code>?</p>
 </div>
@@ -5549,10 +5986,10 @@ is struggling to keep up with ingest vs
 </div>
 </div>
 <div class="sect1">
-<h2 id="configuration">14. Appendix A: Configuration Management</h2>
+<h2 id="configuration">15. Appendix A: Configuration Management</h2>
 <div class="sectionbody">
 <div class="sect2">
-<h3 id="_configuration_overview">14.1. Configuration Overview</h3>
+<h3 id="_configuration_overview">15.1. Configuration Overview</h3>
 <div class="paragraph">
 <p>All accumulo properties have a default value in the source code.  Properties can also be set
 in accumulo-site.xml and in zookeeper on per-table or system-wide basis.  If properties are set in more than one location,
@@ -5560,7 +5997,7 @@ accumulo will choose the property with t
 below (from highest to lowest):</p>
 </div>
 <div class="sect3">
-<h4 id="_zookeeper_table_properties">14.1.1. Zookeeper table properties</h4>
+<h4 id="_zookeeper_table_properties">15.1.1. Zookeeper table properties</h4>
 <div class="paragraph">
 <p>Table properties are applied to the entire cluster when set in zookeeper using the accumulo API or shell.  While table properties take precedent over system properties, both will override properties set in accumulo-site.xml</p>
 </div>
@@ -5574,7 +6011,7 @@ below (from highest to lowest):</p>
 </div>
 </div>
 <div class="sect3">
-<h4 id="_zookeeper_system_properties">14.1.2. Zookeeper system properties</h4>
+<h4 id="_zookeeper_system_properties">15.1.2. Zookeeper system properties</h4>
 <div class="paragraph">
 <p>System properties are applied to the entire cluster when set in zookeeper using the accumulo API or shell.  System properties consist of all properties with a <code>yes</code> in the <em>Zookeeper Mutable</em> column in the table below.  They are set with the following shell command:</p>
 </div>
@@ -5591,7 +6028,7 @@ below (from highest to lowest):</p>
 </div>
 </div>
 <div class="sect3">
-<h4 id="_accumulo_site_xml">14.1.3. accumulo-site.xml</h4>
+<h4 id="_accumulo_site_xml">15.1.3. accumulo-site.xml</h4>
 <div class="paragraph">
 <p>Accumulo processes (master, tserver, etc) read their local accumulo-site.xml on start up.  Therefore, changes made to accumulo-site.xml must rsynced across the cluster and processes must be restarted to apply changes.</p>
 </div>
@@ -5600,7 +6037,7 @@ below (from highest to lowest):</p>
 </div>
 </div>
 <div class="sect3">
-<h4 id="_default_values">14.1.4. Default Values</h4>
+<h4 id="_default_values">15.1.4. Default Values</h4>
 <div class="paragraph">
 <p>All properties have a default value in the source code.  This value has the lowest precedence and is overriden if set in accumulo-site.xml or zookeeper.</p>
 </div>
@@ -5610,7 +6047,7 @@ below (from highest to lowest):</p>
 </div>
 </div>
 <div class="sect2">
-<h3 id="_configuration_in_the_shell">14.2. Configuration in the Shell</h3>
+<h3 id="_configuration_in_the_shell">15.2. Configuration in the Shell</h3>
 <div class="paragraph">
 <p>The <code>config</code> command in the shell allows you to view the current system configuration.  You can also use the <code>-t</code> option to view a table&#8217;s configuration as below:</p>
 </div>
@@ -5653,13 +6090,13 @@ default  | table.failures.ignore .......
 </div>
 </div>
 <div class="sect2">
-<h3 id="_available_properties">14.3. Available Properties</h3>
+<h3 id="_available_properties">15.3. Available Properties</h3>
 <div class="paragraph">
 <p>Jump to:
 <a href="#RPC_PREFIX">rpc.*</a> | <a href="#INSTANCE_PREFIX">instance.*</a> | <a href="#GENERAL_PREFIX">general.*</a> | <a href="#MASTER_PREFIX">master.*</a> | <a href="#TSERV_PREFIX">tserver.*</a> | <a href="#LOGGER_PREFIX">logger.*</a> | <a href="#GC_PREFIX">gc.*</a> | <a href="#MONITOR_PREFIX">monitor.*</a> | <a href="#TRACE_PREFIX">trace.*</a> | <a href="#TRACE_TOKEN_PROPERTY_PREFIX">trace.token.property.*</a> | <a href="#TABLE_PREFIX">table.*</a> | <a href="#TABLE_CONSTRAINT_PREFIX">table.constraint.*</a> | <a href="#TABLE_ITERATOR_PREFIX">table.iterator.*</a> | <a href="#TABLE_LOCALITY_GROUP_PREFIX">table.group.*</a> | <a href="#TABLE_COMPACTION_STRATEGY_PREFIX">table.majc.compaction.strategy.opts.*</a> | <a href="#VFS_CONTEXT_CLASSPATH_PROPERTY">general.vfs.context.classpath.*</a></p>
 </div>
 <div class="sect3">
-<h4 id="RPC_PREFIX">14.3.1. rpc.*</h4>
+<h4 id="RPC_PREFIX">15.3.1. rpc.*</h4>
 <div class="paragraph">
 <p>Properties in this category related to the configuration of SSL keys for RPC. See also instance.ssl.enabled</p>
 </div>
@@ -5742,7 +6179,7 @@ default  | table.failures.ignore .......
 </div>
 </div>
 <div class="sect3">
-<h4 id="INSTANCE_PREFIX">14.3.2. instance.*</h4>
+<h4 id="INSTANCE_PREFIX">15.3.2. instance.*</h4>
 <div class="paragraph">
 <p>Properties in this category must be consistent throughout a cloud. This is enforced and servers won&#8217;t be able to communicate if these differ.</p>
 </div>
@@ -5880,7 +6317,7 @@ default  | table.failures.ignore .......
 </div>
 </div>
 <div class="sect3">
-<h4 id="GENERAL_PREFIX">14.3.3. general.*</h4>
+<h4 id="GENERAL_PREFIX">15.3.3. general.*</h4>
 <div class="paragraph">
 <p>Properties in this category affect the behavior of accumulo overall, but do not have to be consistent throughout a cloud.</p>
 </div>
@@ -6004,7 +6441,7 @@ $HADOOP_PREFIX/share/hadoop/mapreduce/.*
 </div>
 </div>
 <div class="sect3">
-<h4 id="MASTER_PREFIX">14.3.4. master.*</h4>
+<h4 id="MASTER_PREFIX">15.3.4. master.*</h4>
 <div class="paragraph">
 <p>Properties in this category affect the behavior of the master server</p>
 </div>
@@ -6153,7 +6590,7 @@ $HADOOP_PREFIX/share/hadoop/mapreduce/.*
 </div>
 </div>
 <div class="sect3">
-<h4 id="TSERV_PREFIX">14.3.5. tserver.*</h4>
+<h4 id="TSERV_PREFIX">15.3.5. tserver.*</h4>
 <div class="paragraph">
 <p>Properties in this category affect the behavior of the tablet servers</p>
 </div>
@@ -6610,7 +7047,7 @@ $HADOOP_PREFIX/share/hadoop/mapreduce/.*
 </div>
 </div>
 <div class="sect3">
-<h4 id="LOGGER_PREFIX">14.3.6. logger.*</h4>
+<h4 id="LOGGER_PREFIX">15.3.6. logger.*</h4>
 <div class="paragraph">
 <p>Properties in this category affect the behavior of the write-ahead logger servers</p>
 </div>
@@ -6627,7 +7064,7 @@ $HADOOP_PREFIX/share/hadoop/mapreduce/.*
 </div>
 </div>
 <div class="sect3">
-<h4 id="GC_PREFIX">14.3.7. gc.*</h4>
+<h4 id="GC_PREFIX">15.3.7. gc.*</h4>
 <div class="paragraph">
 <p>Properties in this category affect the behavior of the accumulo garbage collector.</p>
 </div>
@@ -6688,7 +7125,7 @@ $HADOOP_PREFIX/share/hadoop/mapreduce/.*
 </div>
 </div>
 <div class="sect3">
-<h4 id="MONITOR_PREFIX">14.3.8. monitor.*</h4>
+<h4 id="MONITOR_PREFIX">15.3.8. monitor.*</h4>
 <div class="paragraph">
 <p>Properties in this category affect the behavior of the monitor web server.</p>
 </div>
@@ -6760,7 +7197,7 @@ $HADOOP_PREFIX/share/hadoop/mapreduce/.*
 </div>
 </div>
 <div class="sect3">
-<h4 id="TRACE_PREFIX">14.3.9. trace.*</h4>
+<h4 id="TRACE_PREFIX">15.3.9. trace.*</h4>
 <div class="paragraph">
 <p>Properties in this category affect the behavior of distributed tracing.</p>
 </div>
@@ -6821,13 +7258,13 @@ $HADOOP_PREFIX/share/hadoop/mapreduce/.*
 </div>
 </div>
 <div class="sect3">
-<h4 id="TRACE_TOKEN_PROPERTY_PREFIX">14.3.10. trace.token.property.*</h4>
+<h4 id="TRACE_TOKEN_PROPERTY_PREFIX">15.3.10. trace.token.property.*</h4>
 <div class="paragraph">
 <p>The prefix used to create a token for storing distributed traces. For each propetry required by trace.token.type, place this prefix in front of it.</p>
 </div>
 </div>
 <div class="sect3">
-<h4 id="TABLE_PREFIX">14.3.11. table.*</h4>
+<h4 id="TABLE_PREFIX">15.3.11. table.*</h4>
 <div class="paragraph">
 <p>Properties in this category affect tablet server treatment of tablets, but can be configured on a per-table basis. Setting these properties in the site file will override the default globally for all tables and not any specific table. However, both the default and the global setting can be overridden per table using the table operations API or in the shell, which sets the overridden value in zookeeper. Restarting accumulo tablet servers after setting these properties in the site file will cause the global setting to take effect. However, you must use the API or the shell to change properties in zookeeper that are set on a table.</p>
 </div>
@@ -7165,7 +7602,7 @@ CAUTION: If a particular key has an empt
 </div>
 </div>
 <div class="sect3">
-<h4 id="TABLE_CONSTRAINT_PREFIX">14.3.12. table.constraint.*</h4>
+<h4 id="TABLE_CONSTRAINT_PREFIX">15.3.12. table.constraint.*</h4>
 <div class="paragraph">
 <p>Properties in this category are per-table properties that add constraints to a table. These properties start with the category prefix, followed by a number, and their values correspond to a fully qualified Java class that implements the Constraint interface.
 For example:
@@ -7175,7 +7612,7 @@ table.constraint.2 = my.package.constrai
 </div>
 </div>
 <div class="sect3">
-<h4 id="TABLE_ITERATOR_PREFIX">14.3.13. table.iterator.*</h4>
+<h4 id="TABLE_ITERATOR_PREFIX">15.3.13. table.iterator.*</h4>
 <div class="paragraph">
 <p>Properties in this category specify iterators that are applied at various stages (scopes) of interaction with a table. These properties start with the category prefix, followed by a scope (minc, majc, scan, etc.), followed by a period, followed by a name, as in table.iterator.scan.vers, or table.iterator.scan.custom. The values for these properties are a number indicating the ordering in which it is applied, and a class name such as:
  table.iterator.scan.vers = 10,org.apache.accumulo.core.iterators.VersioningIterator
@@ -7184,7 +7621,7 @@ For example, table.iterator.minc.vers.op
 </div>
 </div>
 <div class="sect3">
-<h4 id="TABLE_LOCALITY_GROUP_PREFIX">14.3.14. table.group.*</h4>
+<h4 id="TABLE_LOCALITY_GROUP_PREFIX">15.3.14. table.group.*</h4>
 <div class="paragraph">
 <p>Properties in this category are per-table properties that define locality groups in a table. These properties start with the category prefix, followed by a name, followed by a period, and followed by a property for that group.
 For example table.group.group1=x,y,z sets the column families for a group called group1. Once configured, group1 can be enabled by adding it to the list of groups in the table.groups.enabled property.
@@ -7192,22 +7629,22 @@ Additional group options may be specifie
 </div>
 </div>
 <div class="sect3">
-<h4 id="TABLE_COMPACTION_STRATEGY_PREFIX">14.3.15. table.majc.compaction.strategy.opts.*</h4>
+<h4 id="TABLE_COMPACTION_STRATEGY_PREFIX">15.3.15. table.majc.compaction.strategy.opts.*</h4>
 <div class="paragraph">
 <p>Properties in this category are used to configure the compaction strategy.</p>
 </div>
 </div>
 <div class="sect3">
-<h4 id="VFS_CONTEXT_CLASSPATH_PROPERTY">14.3.16. general.vfs.context.classpath.*</h4>
+<h4 id="VFS_CONTEXT_CLASSPATH_PROPERTY">15.3.16. general.vfs.context.classpath.*</h4>
 <div class="paragraph">
 <p>Properties in this category are define a classpath. These properties start  with the category prefix, followed by a context name. The value is a comma seperated list of URIs. Supports full regex on filename alone. For example, general.vfs.context.classpath.cx1=hdfs://nn1:9902/mylibdir/*.jar. You can enable post delegation for a context, which will load classes from the context first instead of the parent first. Do this by setting general.vfs.context.classpath.&lt;name&gt;.delegation=post, where &lt;name&gt; is your context nameIf delegation is not specified, it defaults to loading from parent classloader first.</p>
 </div>
 </div>
 </div>
 <div class="sect2">
-<h3 id="_property_types">14.4. Property Types</h3>
+<h3 id="_property_types">15.4. Property Types</h3>
 <div class="sect3">
-<h4 id="_duration">14.4.1. duration</h4>
+<h4 id="_duration">15.4.1. duration</h4>
 <div class="paragraph">
 <p>A non-negative integer optionally followed by a unit of time (whitespace disallowed), as in 30s.
 If no unit of time is specified, seconds are assumed. Valid units are <em>ms</em>, <em>s</em>, <em>m</em>, <em>h</em> for milliseconds, seconds, minutes, and hours.
@@ -7217,13 +7654,13 @@ Unless otherwise stated, the max value f
 </div>
 </div>
 <div class="sect3">
-<h4 id="_date_time">14.4.2. date/time</h4>
+<h4 id="_date_time">15.4.2. date/time</h4>
 <div class="paragraph">
 <p>A date/time string in the format: YYYYMMDDhhmmssTTT where TTT is the 3 character time zone</p>
 </div>
 </div>
 <div class="sect3">
-<h4 id="_memory">14.4.3. memory</h4>
+<h4 id="_memory">15.4.3. memory</h4>
 <div class="paragraph">
 <p>A positive integer optionally followed by a unit of memory (whitespace disallowed), as in 2G.
 If no unit is specified, bytes are assumed. Valid units are <em>B</em>, <em>K</em>, <em>M</em>, <em>G</em>, for bytes, kilobytes, megabytes, and gigabytes.
@@ -7233,7 +7670,7 @@ Unless otherwise stated, the max value f
 </div>
 </div>
 <div class="sect3">
-<h4 id="_host_list">14.4.4. host list</h4>
+<h4 id="_host_list">15.4.4. host list</h4>
 <div class="paragraph">
 <p>A comma-separated list of hostnames or ip addresses, with optional port numbers.
 Examples of valid host lists are <em>localhost:2000,www.example.com,10.10.1.1:500</em> and <em>localhost</em>.
@@ -7241,19 +7678,19 @@ Examples of invalid host lists are <em>'
 </div>
 </div>
 <div class="sect3">
-<h4 id="_port">14.4.5. port</h4>
+<h4 id="_port">15.4.5. port</h4>
 <div class="paragraph">
 <p>An positive integer in the range 1024-65535, not already in use or specified elsewhere in the configuration</p>
 </div>
 </div>
 <div class="sect3">
-<h4 id="_count">14.4.6. count</h4>
+<h4 id="_count">15.4.6. count</h4>
 <div class="paragraph">
 <p>A non-negative integer in the range of 0-2147483647</p>
 </div>
 </div>
 <div class="sect3">
-<h4 id="_fraction_percentage">14.4.7. fraction/percentage</h4>
+<h4 id="_fraction_percentage">15.4.7. fraction/percentage</h4>
 <div class="paragraph">
 <p>A floating point number that represents either a fraction or, if suffixed with the <em>%</em> character, a percentage.
 Examples of valid fractions/percentages are <em>10</em>, <em>1000%</em>, <em>0.05</em>, <em>5%</em>, <em>0.2%</em>, <em>0.0005</em>.
@@ -7261,38 +7698,38 @@ Examples of invalid fractions/percentage
 </div>
 </div>
 <div class="sect3">
-<h4 id="_path">14.4.8. path</h4>
+<h4 id="_path">15.4.8. path</h4>
 <div class="paragraph">
 <p>A string that represents a filesystem path, which can be either relative or absolute to some directory. The filesystem depends on the property. The following environment variables will be substituted: [ACCUMULO_HOME, ACCUMULO_CONF_DIR]</p>
 </div>
 </div>
 <div class="sect3">
-<h4 id="_absolute_path">14.4.9. absolute path</h4>
+<h4 id="_absolute_path">15.4.9. absolute path</h4>
 <div class="paragraph">
 <p>An absolute filesystem path. The filesystem depends on the property. This is the same as path, but enforces that its root is explicitly specified.</p>
 </div>
 </div>
 <div class="sect3">
-<h4 id="_java_class">14.4.10. java class</h4>
+<h4 id="_java_class">15.4.10. java class</h4>
 <div class="paragraph">
 <p>A fully qualified java class name representing a class on the classpath.
 An example is <em>java.lang.String</em>, rather than <em>String</em></p>
 </div>
 </div>
 <div class="sect3">
-<h4 id="_string">14.4.11. string</h4>
+<h4 id="_string">15.4.11. string</h4>
 <div class="paragraph">
 <p>An arbitrary string of characters whose format is unspecified and interpreted based on the context of the property to which it applies.</p>
 </div>
 </div>
 <div class="sect3">
-<h4 id="_boolean">14.4.12. boolean</h4>
+<h4 id="_boolean">15.4.12. boolean</h4>
 <div class="paragraph">
 <p>Has a value of either <em>true</em> or <em>false</em></p>
 </div>
 </div>
 <div class="sect3">
-<h4 id="_uri">14.4.13. uri</h4>
+<h4 id="_uri">15.4.13. uri</h4>
 <div class="paragraph">
 <p>A valid URI</p>
 </div>
@@ -7303,7 +7740,7 @@ An example is <em>java.lang.String</em>,
 </div>
 <div id="footer">
 <div id="footer-text">
-Last updated 2014-05-07 17:01:06 PDT
+Last updated 2015-02-16 14:08:06 EST
 </div>
 </div>
 </body>



Mime
View raw message