<!DOCTYPE html>
<!--
 | Generated by Apache Maven Doxia Site Renderer 1.8 from src/site/twiki/HighAvailability.twiki at 2018-09-06
 | Rendered using Apache Maven Fluido Skin 1.7
-->
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <meta name="Date-Revision-yyyymmdd" content="20180906" />
    <meta http-equiv="Content-Language" content="en" />
    <title>Apache Atlas &#x2013; Fault Tolerance and High Availability Options</title>
    <link rel="stylesheet" href="./css/apache-maven-fluido-1.7.min.css" />
    <link rel="stylesheet" href="./css/site.css" />
    <link rel="stylesheet" href="./css/print.css" media="print" />
    <script type="text/javascript" src="./js/apache-maven-fluido-1.7.min.js"></script>
  </head>
  <body class="topBarEnabled">
    <div id="topbar" class="navbar navbar-fixed-top ">
      <div class="navbar-inner">
            <div class="container" style="width: 68%;"><div class="nav-collapse">
            <ul class="nav">
      <li class="dropdown">
        <a href="#" class="dropdown-toggle" data-toggle="dropdown">Apache Atlas <b class="caret"></b></a>
        <ul class="dropdown-menu">
            <li><a href="index.html" title="Overview">Overview</a></li>
            <li><a href="license.html" title="License">License</a></li>
            <li><a href="http://atlas.apache.org/#/Downloads" target="_blank" title="Downloads">Downloads</a></li>
            <li><a href="https://cwiki.apache.org/confluence/display/ATLAS" title="Wiki">Wiki</a></li>
            <li><a href="https://git-wip-us.apache.org/repos/asf/atlas.git" title="Git">Git</a></li>
            <li><a href="https://issues.apache.org/jira/browse/ATLAS" title="Jira">Jira</a></li>
            <li><a href="https://reviews.apache.org/groups/atlas/?sort=-time_added" title="Review Board">Review Board</a></li>
        </ul>
      </li>
      <li class="dropdown">
        <a href="#" class="dropdown-toggle" data-toggle="dropdown">Project Information <b class="caret"></b></a>
        <ul class="dropdown-menu">
            <li><a href="project-info.html" title="Summary">Summary</a></li>
            <li><a href="mail-lists.html" title="Mailing Lists">Mailing Lists</a></li>
            <li><a href="team-list.html" title="Team">Team</a></li>
            <li><a href="issue-tracking.html" title="Issue Tracking">Issue Tracking</a></li>
            <li><a href="source-repository.html" title="Source Repository">Source Repository</a></li>
        </ul>
      </li>
      <li class="dropdown">
        <a href="#" class="dropdown-toggle" data-toggle="dropdown">Downloads <b class="caret"></b></a>
        <ul class="dropdown-menu">
            <li><a href="http://atlas.apache.org/#/Downloads" target="_blank" title="1.1.0">1.1.0</a></li>
            <li><a href="http://atlas.apache.org/#/Downloads" target="_blank" title="1.0.0">1.0.0</a></li>
            <li><a href="http://atlas.apache.org/#/Downloads" target="_blank" title="0.8.2">0.8.2</a></li>
            <li><a href="http://atlas.apache.org/#/Downloads" target="_blank" title="0.8.1">0.8.1</a></li>
            <li><a href="http://atlas.apache.org/#/Downloads" target="_blank" title="0.8-incubating">0.8-incubating</a></li>
            <li><a href="http://atlas.apache.org/#/Downloads" target="_blank" title="0.7.1-incubating">0.7.1-incubating</a></li>
            <li><a href="http://atlas.apache.org/#/Downloads" target="_blank" title="0.7-incubating">0.7-incubating</a></li>
            <li><a href="http://atlas.apache.org/#/Downloads" target="_blank" title="0.6-incubating">0.6-incubating</a></li>
            <li><a href="http://atlas.apache.org/#/Downloads" target="_blank" title="0.5-incubating">0.5-incubating</a></li>
        </ul>
      </li>
      <li class="dropdown">
        <a href="#" class="dropdown-toggle" data-toggle="dropdown">Documentation <b class="caret"></b></a>
        <ul class="dropdown-menu">
            <li><a href="../index.html" title="latest">latest</a></li>
            <li><a href="../1.1.0/index.html" title="1.1.0">1.1.0</a></li>
            <li><a href="../1.0.0/index.html" title="1.0.0">1.0.0</a></li>
            <li><a href="../0.8.2/index.html" title="0.8.2">0.8.2</a></li>
            <li><a href="../0.8.1/index.html" title="0.8.1">0.8.1</a></li>
            <li><a href="../0.8.0-incubating/index.html" title="0.8-incubating">0.8-incubating</a></li>
            <li><a href="../0.7.1-incubating/index.html" title="0.7.1-incubating">0.7.1-incubating</a></li>
            <li><a href="../0.7.0-incubating/index.html" title="0.7-incubating">0.7-incubating</a></li>
            <li><a href="../0.6.0-incubating/index.html" title="0.6-incubating">0.6-incubating</a></li>
            <li><a href="../0.5.0-incubating/index.html" title="0.5-incubating">0.5-incubating</a></li>
        </ul>
      </li>
      <li class="dropdown">
        <a href="#" class="dropdown-toggle" data-toggle="dropdown">ASF <b class="caret"></b></a>
        <ul class="dropdown-menu">
            <li><a href="http://www.apache.org/foundation/how-it-works.html" title="How Apache Works">How Apache Works</a></li>
            <li><a href="https://www.apache.org/events/current-event" title="Events">Events</a></li>
            <li><a href="https://www.apache.org/licenses/" title="License">License</a></li>
            <li><a href="http://www.apache.org/foundation/" title="Foundation">Foundation</a></li>
            <li><a href="http://www.apache.org/foundation/sponsorship.html" title="Sponsoring Apache">Sponsoring Apache</a></li>
            <li><a href="http://www.apache.org/foundation/thanks.html" title="Thanks">Thanks</a></li>
        </ul>
      </li>
            </ul>
<form id="search-form" action="https://www.google.com/search" method="get"  class="navbar-search pull-right" >
  <input value="http://atlas.apache.org" name="sitesearch" type="hidden"/>
  <input class="search-query" name="q" id="query" type="text" />
</form>
<script type="text/javascript">asyncJs( 'https://cse.google.com/brand?form=search-form' )</script>
    <iframe src="https://www.facebook.com/plugins/like.php?href=http://atlas.apache.org/atlas-docs&send=false&layout=button_count&show-faces=false&action=like&colorscheme=dark"
        scrolling="no" frameborder="0"
        style="border:none; width:100px; height:20px; margin-top: 10px;"  class="pull-right" ></iframe>
    <script type="text/javascript">asyncJs( 'https://apis.google.com/js/plusone.js' )</script>
    <ul class="nav pull-right"><li style="margin-top: 10px;">
    <div class="g-plusone" data-href="http://atlas.apache.org/atlas-docs" data-size="medium"  width="60px" align="right" ></div>
    </li></ul>
            </div>
        </div>
      </div>
    </div>
    <div class="container">
      <div id="banner">
        <div class="pull-left"><a href=".." id="bannerLeft"><img src="images/atlas-logo.png"  alt="Apache Atlas" width="200px" height="45px"/></a></div>
        <div class="pull-right"></div>
        <div class="clear"><hr/></div>
      </div>

      <div id="breadcrumbs">
        <ul class="breadcrumb">
      <li class=""><a href="http://www.apache.org" class="externalLink" title="Apache">Apache</a><span class="divider">/</span></li>
      <li class=""><a href="index.html" title="Atlas">Atlas</a><span class="divider">/</span></li>
    <li class="active ">Fault Tolerance and High Availability Options</li>
        <li id="publishDate" class="pull-right"><span class="divider">|</span> Last Published: 2018-09-18</li>
          <li id="projectVersion" class="pull-right">Version: 1.1.0</li>
        </ul>
      </div>
        <div id="bodyColumn" >
<div class="section">
<h2><a name="Fault_Tolerance_and_High_Availability_Options"></a>Fault Tolerance and High Availability Options</h2></div>
<div class="section">
<h3><a name="Introduction"></a>Introduction</h3>
<p>Apache Atlas uses and interacts with a variety of systems to provide metadata management and data lineage to data administrators. By choosing and configuring these dependencies appropriately, it is possible to achieve a high degree of service availability with Atlas. This document describes the state of high availability support in Atlas, including its capabilities and current limitations, and also the configuration required for achieving this level of high availability.</p>
<p><a href="./Architecture.html">The architecture page</a> in the wiki gives an overview of the various components that make up Atlas. The options mentioned below for various components derive context from the above page, and would be worthwhile to review before proceeding to read this page.</p></div>
<div class="section">
<h3><a name="Atlas_Web_Service"></a>Atlas Web Service</h3>
<p>Currently, the Atlas Web Service has a limitation that it can only have one active instance at a time. In earlier releases of Atlas, a backup instance could be provisioned and kept available. However, a manual failover was required to make this backup instance active.</p>
<p>From this release, Atlas will support multiple instances of the Atlas Web service in an active/passive configuration with automated failover. This means that users can deploy and start multiple instances of the Atlas Web Service on different physical hosts at the same time. One of these instances will be automatically selected as an 'active' instance to service user requests. The others will automatically be deemed 'passive'. If the 'active' instance becomes unavailable either because it is deliberately stopped, or due to unexpected failures, one of the other instances will automatically be elected as an 'active' instance and start to service user requests.</p>
<p>An 'active' instance is the only instance that can respond to user requests correctly. It can create, delete, modify or respond to queries on metadata objects. A 'passive' instance will accept user requests, but will redirect them using HTTP redirect to the currently known 'active' instance. Specifically, a passive instance will not itself respond to any queries on metadata objects. However, all instances (both active and passive), will respond to admin requests that return information about that instance.</p>
<p>When configured in a High Availability mode, users can get the following operational benefits:</p>
<p></p>
<ul>
<li><b>Uninterrupted service during maintenance intervals</b>: If an active instance of the Atlas Web Service needs to be brought down for maintenance, another instance would automatically become active and can service requests.</li>
<li><b>Uninterrupted service in event of unexpected failures</b>: If an active instance of the Atlas Web Service fails due to software or hardware errors, another instance would automatically become active and can service requests.</li></ul>
<p>In the following sub-sections, we describe the steps required to setup High Availability for the Atlas Web Service. We also describe how the deployment and client can be designed to take advantage of this capability. Finally, we describe a few details of the underlying implementation.</p></div>
<div class="section">
<h4><a name="Setting_up_the_High_Availability_feature_in_Atlas"></a>Setting up the High Availability feature in Atlas</h4>
<p>The following pre-requisites must be met for setting up the High Availability feature.</p>
<p></p>
<ul>
<li>Ensure that you install Apache Zookeeper on a cluster of machines (a minimum of 3 servers is recommended for production).</li>
<li>Select 2 or more physical machines to run the Atlas Web Service instances on. These machines define what we refer to as a 'server ensemble' for Atlas.</li></ul>
<p>To setup High Availability in Atlas, a few configuration options must be defined in the <tt>atlas-application.properties</tt> file. While the complete list of configuration items are defined in the <a href="./Configuration.html">Configuration Page</a>, this section lists a few of the main options.</p>
<p></p>
<ul>
<li>High Availability is an optional feature in Atlas. Hence, it must be enabled by setting the configuration option <tt>atlas.server.ha.enabled</tt> to true.</li>
<li>Next, define a list of identifiers, one for each physical machine you have selected for the Atlas Web Service instance. These identifiers can be simple strings like <tt>id1</tt>, <tt>id2</tt> etc. They should be unique and should not contain a comma.</li>
<li>Define a comma separated list of these identifiers as the value of the option <tt>atlas.server.ids</tt>.</li>
<li>For each physical machine, list the IP Address/hostname and port as the value of the configuration <tt>atlas.server.address.id</tt>, where <tt>id</tt> refers to the identifier string for this physical machine.
<ul>
<li>For e.g., if you have selected 2 machines with hostnames <tt>host1.company.com</tt> and <tt>host2.company.com</tt>, you can define the configuration options as below:</li></ul></li></ul>
<div class="source"><pre class="prettyprint">
      atlas.server.ids=id1,id2
      atlas.server.address.id1=host1.company.com:21000
      atlas.server.address.id2=host2.company.com:21000

</pre></div>
<p></p>
<ul>
<li>Define the Zookeeper quorum which will be used by the Atlas High Availability feature.</li></ul>
<div class="source"><pre class="prettyprint">
      atlas.server.ha.zookeeper.connect=zk1.company.com:2181,zk2.company.com:2181,zk3.company.com:2181

</pre></div>
<p></p>
<ul>
<li>You can review other configuration options that are defined for the High Availability feature, and set them up as desired in the <tt>atlas-application.properties</tt> file.</li>
<li>For production environments, the components that Atlas depends on must also be set up in High Availability mode. This is described in detail in the following sections. Follow those instructions to setup and configure them.</li>
<li>Install the Atlas software on the selected physical machines.</li>
<li>Copy the <tt>atlas-application.properties</tt> file created using the steps above to the configuration directory of all the machines.</li>
<li>Start the dependent components.</li>
<li>Start each instance of the Atlas Web Service.</li></ul>
<p>To verify that High Availability is working, run the following script on each of the instances where Atlas Web Service is installed.</p>
<div class="source"><pre class="prettyprint">
$ATLAS_HOME/bin/atlas_admin.py -status

</pre></div>
<p>This script can print one of the values below as response:</p>
<p></p>
<ul>
<li><b>ACTIVE</b>: This instance is active and can respond to user requests.</li>
<li><b>PASSIVE</b>: This instance is PASSIVE. It will redirect any user requests it receives to the current active instance.</li>
<li><b>BECOMING_ACTIVE</b>: This would be printed if the server is transitioning to become an ACTIVE instance. The server cannot service any metadata user requests in this state.</li>
<li><b>BECOMING_PASSIVE</b>: This would be printed if the server is transitioning to become a PASSIVE instance. The server cannot service any metadata user requests in this state.</li></ul>
<p>Under normal operating circumstances, only one of these instances should print the value <b>ACTIVE</b> as response to the script, and the others would print <b>PASSIVE</b>.</p></div>
<div class="section">
<h4><a name="Configuring_clients_to_use_the_High_Availability_feature"></a>Configuring clients to use the High Availability feature</h4>
<p>The Atlas Web Service can be accessed in two ways:</p>
<p></p>
<ul>
<li><b>Using the Atlas Web UI</b>: This is a browser based client that can be used to query the metadata stored in Atlas.</li>
<li><b>Using the Atlas REST API</b>: As Atlas exposes a RESTful API, one can use any standard REST client including libraries in other applications. In fact, Atlas ships with a client called AtlasClient that can be used as an example to build REST client access.</li></ul>
<p>In order to take advantage of the High Availability feature in the clients, there are two options possible.</p></div>
<div class="section">
<h5><a name="Using_an_intermediate_proxy"></a>Using an intermediate proxy</h5>
<p>The simplest solution to enable highly available access to Atlas is to install and configure some intermediate proxy that has a capability to transparently switch services based on status. One such proxy solution is <a class="externalLink" href="http://www.haproxy.org/">HAProxy</a>.</p>
<p>Here is an example HAProxy configuration that can be used. Note this is provided for illustration only, and not as a recommended production configuration. For that, please refer to the HAProxy documentation for appropriate instructions.</p>
<div class="source"><pre class="prettyprint">
frontend atlas_fe
  bind *:41000
  default_backend atlas_be

backend atlas_be
  mode http
  option httpchk get /api/atlas/admin/status
  http-check expect string ACTIVE
  balance roundrobin
  server host1_21000 host1:21000 check
  server host2_21000 host2:21000 check backup

listen atlas
  bind localhost:42000

</pre></div>
<p>The above configuration binds HAProxy to listen on port 41000 for incoming client connections. It then routes the connections to either of the hosts host1 or host2 depending on a HTTP status check. The status check is done using a HTTP GET on the REST URL <tt>/api/atlas/admin/status</tt>, and is deemed successful only if the HTTP response contains the string ACTIVE.</p></div>
<div class="section">
<h5><a name="Using_automatic_detection_of_active_instance"></a>Using automatic detection of active instance</h5>
<p>If one does not want to setup and manage a separate proxy, then the other option to use the High Availability feature is to build a client application that is capable of detecting status and retrying operations. In such a setting, the client application can be launched with the URLs of all Atlas Web Service instances that form the ensemble. The client should then call the REST URL <tt>/api/atlas/admin/status</tt> on each of these to determine which is the active instance. The response from the Active instance would be of the form <tt>{Status:ACTIVE}</tt>. Also, when the client faces any exceptions in the course of an operation, it should again determine which of the remaining URLs is active and retry the operation.</p>
<p>The AtlasClient class that ships with Atlas can be used as an example client library that implements the logic for working with an ensemble and selecting the right Active server instance.</p>
<p>Utilities in Atlas, like <tt>quick_start.py</tt> and <tt>import-hive.sh</tt> can be configured to run with multiple server URLs. When launched in this mode, the AtlasClient automatically selects and works with the current active instance. If a proxy is set up in between, then its address can be used when running quick_start.py or import-hive.sh.</p></div>
<div class="section">
<h4><a name="Implementation_Details_of_Atlas_High_Availability"></a>Implementation Details of Atlas High Availability</h4>
<p>The Atlas High Availability work is tracked under the master JIRA <a class="externalLink" href="https://issues.apache.org/jira/browse/ATLAS-510">ATLAS-510</a>. The JIRAs filed under it have detailed information about how the High Availability feature has been implemented. At a high level the following points can be called out:</p>
<p></p>
<ul>
<li>The automatic selection of an Active instance, as well as automatic failover to a new Active instance happen through a leader election algorithm.</li>
<li>For leader election, we use the <a class="externalLink" href="http://curator.apache.org/curator-recipes/leader-latch.html">Leader Latch Recipe</a> of <a class="externalLink" href="http://curator.apache.org">Apache Curator</a>.</li>
<li>The Active instance is the only one which initializes, modifies or reads state in the backend stores to keep them consistent.</li>
<li>Also, when an instance is elected as Active, it refreshes any cached information from the backend stores to get up to date.</li>
<li>A servlet filter ensures that only the active instance services user requests. If a passive instance receives these requests, it automatically redirects them to the current active instance.</li></ul></div>
<div class="section">
<h3><a name="Metadata_Store"></a>Metadata Store</h3>
<p>As described above, Atlas uses <a href="./JanusGraph.html">JanusGraph</a> to store the metadata it manages. By default, Atlas uses a standalone HBase instance as the backing store for <a href="./JanusGraph.html">JanusGraph</a>. In order to provide HA for the metadata store, we recommend that Atlas be configured to use distributed HBase as the backing store for <a href="./JanusGraph.html">JanusGraph</a>.  Doing this implies that you could benefit from the HA guarantees HBase provides. In order to configure Atlas to use HBase in HA mode, do the following:</p>
<p></p>
<ul>
<li>Choose an existing HBase cluster that is set up in HA mode to configure in Atlas (OR) Set up a new HBase cluster in <a class="externalLink" href="http://hbase.apache.org/book.html#quickstart_fully_distributed">HA mode</a>.
<ul>
<li>If setting up HBase for Atlas, please following instructions listed for setting up HBase in the <a href="./InstallationSteps.html">Installation Steps</a>.</li></ul></li>
<li>We recommend using more than one HBase masters (at least 2) in the cluster on different physical hosts that use Zookeeper for coordination to provide redundancy and high availability of HBase.
<ul>
<li>Refer to the <a href="./Configuration.html">Configuration page</a> for the options to configure in atlas.properties to setup Atlas with HBase.</li></ul></li></ul></div>
<div class="section">
<h3><a name="Index_Store"></a>Index Store</h3>
<p>As described above, Atlas indexes metadata through <a href="./JanusGraph.html">JanusGraph</a> to support full text search queries. In order to provide HA for the index store, we recommend that Atlas be configured to use Solr or Elasticsearch as the backing index store for <a href="./JanusGraph.html">JanusGraph</a>.</p></div>
<div class="section">
<h4><a name="Solr"></a>Solr</h4>
<p>In order to configure Atlas to use Solr in HA mode, do the following:</p>
<p></p>
<ul>
<li>Choose an existing SolrCloud cluster setup in HA mode to configure in Atlas (OR) Set up a new <a class="externalLink" href="https://cwiki.apache.org/confluence/display/solr/SolrCloud">SolrCloud cluster</a>.
<ul>
<li>Ensure Solr is brought up on at least 2 physical hosts for redundancy, and each host runs a Solr node.</li>
<li>We recommend the number of replicas to be set to at least 2 for redundancy.</li></ul></li>
<li>Create the SolrCloud collections required by Atlas, as described in <a href="./InstallationSteps.html">Installation Steps</a></li>
<li>Refer to the <a href="./Configuration.html">Configuration page</a> for the options to configure in atlas.properties to setup Atlas with Solr.</li></ul></div>
<div class="section">
<h4><a name="Elasticsearch__.28Tech_Preview.29"></a>Elasticsearch  (Tech Preview)</h4>
<p>In order to configure Atlas to use Elasticsearch in HA mode, do the following:</p>
<p></p>
<ul>
<li>Choose an existing Elasticsearch cluster setup, (OR) setup a new cluster <a class="externalLink" href="https://www.elastic.co/guide/en/elasticsearch/reference/5.6/setup.html">Elasticsearch cluster</a>.
<ul>
<li>Ensure that Elasticsearch is brought up on at least five physical hosts for redundancy.</li>
<li>A replica count of 3 is recommended</li></ul></li>
<li>Refer to the <a href="./Configuration.html">Configuration page</a> for the options to configure in atlas.properties to setup Atlas with Elasticsearch.</li></ul></div>
<div class="section">
<h3><a name="Notification_Server"></a>Notification Server</h3>
<p>Metadata notification events from Hooks are sent to Atlas by writing them to a Kafka topic called <b>ATLAS_HOOK</b>. Similarly, events from Atlas to other integrating components like Ranger, are written to a Kafka topic called <b>ATLAS_ENTITIES</b>. Since Kafka persists these messages, the events will not be lost even if the consumers are down as the events are being sent. In addition, we recommend Kafka is also setup for fault tolerance so that it has higher availability guarantees. In order to configure Atlas to use Kafka in HA mode, do the following:</p>
<p></p>
<ul>
<li>Choose an existing Kafka cluster set up in HA mode to configure in Atlas (OR) Set up a new Kafka cluster.</li>
<li>We recommend that there are more than one Kafka brokers in the cluster on different physical hosts that use Zookeeper for coordination to provide redundancy and high availability of Kafka.
<ul>
<li>Setup at least 2 physical hosts for redundancy, each hosting a Kafka broker.</li></ul></li>
<li>Set up Kafka topics for Atlas usage:
<ul>
<li>The number of partitions for the ATLAS topics should be set to 1 (numPartitions)</li>
<li>Decide number of replicas for Kafka topic: Set this to at least 2 for redundancy.</li>
<li>Run the following commands:</li></ul></li></ul>
<div class="source"><pre class="prettyprint">
      $KAFKA_HOME/bin/kafka-topics.sh --create --zookeeper &lt;list of zookeeper host:port entries&gt; --topic ATLAS_HOOK --replication-factor &lt;numReplicas&gt; --partitions 1
      $KAFKA_HOME/bin/kafka-topics.sh --create --zookeeper &lt;list of zookeeper host:port entries&gt; --topic ATLAS_ENTITIES --replication-factor &lt;numReplicas&gt; --partitions 1
      Here KAFKA_HOME points to the Kafka installation directory.

</pre></div>
<p></p>
<ul>
<li>In atlas-application.properties, set the following configuration:</li></ul>
<div class="source"><pre class="prettyprint">
     atlas.notification.embedded=false
     atlas.kafka.zookeeper.connect=&lt;comma separated list of servers forming Zookeeper quorum used by Kafka&gt;
     atlas.kafka.bootstrap.servers=&lt;comma separated list of Kafka broker endpoints in host:port form&gt; - Give at least 2 for redundancy.

</pre></div></div>
<div class="section">
<h3><a name="Known_Issues"></a>Known Issues</h3>
<p></p>
<ul>
<li>If the HBase region servers hosting the Atlas table are down, Atlas would not be able to store or retrieve metadata from HBase until they are brought back online.</li></ul></div>
        </div>
    </div>
    <hr/>
    <footer>
      <div class="container">
        <div class="row">
<p><a href="https://www.apache.org/foundation/contributing"><img src="https://www.apache.org/images/SupportApache-small.png" alt="Support the ASF" id="asf-logo" height="20" width="20" /></a>Copyright © 2011-2018 The Apache Software Foundation. Licensed under the <a href="https://www.apache.org/licenses/">Apache License, Version 2.0</a>.<br/>
Apache Atlas, Atlas, Apache, the Apache feather logo are trademarks of the <a href="https://www.apache.org">Apache Software Foundation</a>.<br/>
All other marks mentioned may be trademarks or registered trademarks of their respective owners.</p>
        </div>
        <p id="poweredBy" class="pull-right"><a href="http://maven.apache.org/" title="Built by Maven" class="poweredBy"><img class="builtBy" alt="Built by Maven" src="./images/logos/maven-feather.png" /></a>
</p>
      </div>
    </footer>
  </body>
</html>
