<!DOCTYPE html>

<html lang="en-US" prefix="og: http://ogp.me/ns#" ng-app="hortonWorksApp"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><style type="text/css">@charset "UTF-8";[ng\:cloak],[ng-cloak],[data-ng-cloak],[x-ng-cloak],.ng-cloak,.x-ng-cloak,.ng-hide:not(.ng-hide-animate){display:none !important;}ng\:form{display:block;}.ng-animate-shim{visibility:hidden;}.ng-anchor{position:absolute;}</style>
        
        <meta name="viewport" content="width=device-width, height=device-height, initial-scale=1.0, user-scalable=0, minimum-scale=1.0, maximum-scale=1.0">
        <link rel="profile" href="http://gmpg.org/xfn/11">
        <title>Apache Metron About</title>

        <style type="text/css">
            img.wp-smiley,
            img.emoji {
                display: inline !important;
                border: none !important;
                box-shadow: none !important;
                height: 1em !important;
                width: 1em !important;
                margin: 0 .07em !important;
                vertical-align: -0.1em !important;
                background: none !important;
                padding: 0 !important;
            }
        </style>

    <script>
        (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
                    (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
                m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
        })(window,document,'script','https://www.google-analytics.com/analytics.js','ga');

        ga('create', 'UA-78972211-1', 'auto');
        ga('send', 'pageview');

    </script>

    <link rel="stylesheet" id="default-css" href="/css/default.css" type="text/css" media="all">
    <link rel="stylesheet" id="legacy-css" href="/css/legacy.css" type="text/css" media="all">
    <link rel="stylesheet" id="gravityforms-css" href="/css/gravityforms.css" type="text/css" media="all">
    <link rel="stylesheet" id="selectboxit-css" href="/css/selectBoxIt.css" type="text/css" media="all">
    <link href='http://fonts.googleapis.com/css?family=Roboto%20Condensed' rel='stylesheet' type='text/css'>

    <script type="text/javascript" src="/js/jquery.js"></script>
    <script type="text/javascript" src="/js/jquery-migrate.min.js"></script>
    <script type="text/javascript" src="/js/jquery.mobile.custom.min.js"></script>
    <script type="text/javascript" src="/js/isotope.pkgd.min.js"></script>
    <script type="text/javascript" src="/js/navigation.js"></script>
    <script type="text/javascript" src="/js/slider.js"></script>
    <script type="text/javascript" src="/js/jquery.classyloader.js"></script>
    <script type="text/javascript" src="/js/hero-slider.js"></script>
    <script type="text/javascript" src="/js/footer.js"></script>
    <script type="text/javascript" src="/js/top-form.js"></script>
    <script type="text/javascript" src="/js/local6.js"></script>
    <script type="text/javascript" src="/js/select-list.js"></script>
    <script type="text/javascript" src="/js/legacy.js"></script>
    <script type="text/javascript" src="/js/paralax-scroll.js"></script>
    <script type="text/javascript" src="/js/jquery-ui.min.js"></script>
    <script type="text/javascript" src="/js/jquery.selectBoxIt.min.js"></script>
    <script type="text/javascript" src="/js/scroll-slider.js"></script>
    <script type="text/javascript" src="/js/charts-animate.js"></script>
    <script type="text/javascript" src="/js/dotdotdot.js"></script>
    <script type="text/javascript" src="/js/products_scroll.js"></script>
    <script type="text/javascript" src="/js/parallax.min.js"></script>
    <script type="text/javascript" src="/js/parallax.js"></script>
    <script type="text/javascript" src="/js/shb0wjr.js"></script>

    <script>
    window.lsfDataLayer = window.lsfDataLayer || [];
    </script>
    
    <style>
      body {
        font-family: "roboto-condensed", sans-serif;
      }
    </style>

    <!-- Angular js files -->
    <script src="/js/angular.min.js"></script>
    <script src="/js/angular-animate.min.js"></script>
    <script src="/js/app.js"></script>
    <script src="/js/pressReleaseController.js"></script>
    <script src="/js/eventCtrl.js"></script>
    <!-- End Angular js files -->
    <link rel="stylesheet" type="text/css" href="/css/prettify.css">
    <script type="text/javascript" async="" src="/js/munchkin-beta.js"></script>
    <link type="text/css" href="/css/jquery-ui-insightera-custom-1.8.css" rel="stylesheet">
    <style id="style-1-cropbar-clipper">
    /* Copyright 2014 Evernote Corporation. All rights reserved. */
    
    .en-markup-crop-options {
        top: 18px !important;
        left: 50% !important;
        margin-left: -100px !important;
        width: 200px !important;
        border: 2px rgba(255, 255, 255, .38) solid !important;
        border-radius: 4px !important;
    }
    
    .en-markup-crop-options div div:first-of-type {
        margin-left: 0px !important;
    }
    </style>
</head>


<body class="wrap">
  <header>
    <div class="main-navigation" style="height: 85px;">
        <div class="main-nav fixed">
            <div class="wrapper">
                <div class="logo">
                    <a href=""><img src="/img/logo.png" alt="Logo"></a>
                </div>
                <nav>
                    <div class="toggle">
                        <span></span>
                        <span></span>
                        <span></span>
                    </div>
                    <div class="menu-wrapper" style="height: auto; display: block;">
                        <ul class="main-menu">
    <li class="products-menu"><a href="/">Home</a>
    </li>
    <li class="solutions-menu"><a href="/about/">About</a>
    </li>
    <li class="services-menu"><a href="/documentation/">Documentation</a>
    </li>
    <li class="services-menu"><a href="/community/">Community</a>
    </li>
    <li class="training-menu"><a href="/news/">News</a>
    </li>
    <li>
        <button class="button-default button-green" style="line-height:43px;"> <a>Download </a></button>
    </li>
</ul>

                    </div>
                </nav>
            </div>
        </div>
    </div>
</header>


  <section class="hero-second-level no-padding">
    <div class="bg-img">
        <img src="/img/metron_datacenter.jpg" alt="UNLOCK THE POWER OF YOUR DATA" style="width: 100%; left: 0px;" />
    </div>
    <div class="v-middle-wrapper">
        <div class="v-middle-inner">
            <div class="v-middle">
              <h1>real-time big data security </h1>
            </div>
        </div>
    </div>
</section>

<section class="no-padding">
      <div class="fixed-anchor" style="min-height: 99px;">
        <div class="fixed-links" style="top: 63px; transition: top 0.5s ease;">
            <ul>
                <li class="active"><a href="#evolution">Evolution</a></li>
                <li class=""><a href="#architecture">Architecture</a></li>
                <li class=""><a href="#corecapabilities">Core Capabilities </a></li>
                <li class="" style="min-width:220px"><a href="#functionalThemes">Functional Themes</a></li>
                <li class=""><a href="#license">License</a></li>
            </ul>
        </div>
    </div>  
</section>

<section class="events-section darken" id="evolution">
    <div class="text-center">
        <h2>Evolution</h2>
    </div>
    <div>
        <img class="img82" src="/img/metron_evolution.png" alt="What Apache Metron Does" style="margin:0 auto;left: 0px;display:block;" />
    </div>
    <div class="hover-btn text-center">
            <a class="button-default" href="https://cwiki.apache.org/confluence/display/METRON/Evolution+of+Apache+Metron" target="new">LEARN MORE</a>
    </div>
</section>

<section class="events-section feature" id="architecture">
    <div class="wrapper">
        <div class="text-center">
            <h2>Architecture</h2>
        </div>
        <div class="three-col-row architecture">
            <div class="col-three" style="cursor:default">
                <div class="v-middle-wrapper">
                    <div class="v-middle-inner">
                        <div class="v-middle">
                            <div>
                                <h5 class="bold blue-text">Multi-vendor Sensor Support</h5>
                                <h6>Supports events ingestion from a variety of sources</h6>
                            </div>
                        </div>
                    </div>
                </div>
            </div>
            <div class="col-three" style="cursor:default">
                <div class="v-middle-wrapper">
                    <div class="v-middle-inner">
                        <div class="v-middle">
                            <div>
                                <h5 class="bold blue-text">Leverages the Apache Big Data Ecosystem</h5>
                                <h6>Jump to the right row with indexes including minimum, maximum, and bloom filters for each column.</h6>
                            </div>
                        </div>
                    </div>
                </div>
            </div>
            <div class="col-three" style="cursor:default">
                <div class="v-middle-wrapper">
                    <div class="v-middle-inner">
                        <div class="v-middle">
                            <div>
                                <h5 class="bold blue-text">Interactive Visualization and alerting</h5>
                                <h6>Visualize alerts and notify parties involved</h6>
                            </div>
                        </div>
                    </div>
                </div>
            </div>
        </div>
        <div class="hover-btn text-center">
			<a class="button-default" href="https://cwiki.apache.org/confluence/display/METRON/Metron+Architecture" target="_blank">LEARN MORE</a>
		</div>
    </div>
</section>

<section class="events-section darken" id="corecapabilities">
    <div class="text-center">
        <h2>Core Capabilities</h2>
    </div>
    <div>
        <img class="img82" src="/img/metron_core_capabilities.png" alt="Metron Core Capabilities" style="margin:0 auto;left: 0px;display:block;" />
    </div>
    <div class="hover-btn text-center">
        <a class="button-default" href="https://cwiki.apache.org/confluence/display/METRON/Metron+Core+Capabilities+and+Functional+Themes#MetronCoreCapabilitiesandFunctionalThemes-CoreFunctionalCapabilites" target="_new">LEARN MORE</a>
    </div>
</section>

<section class="events-section" id="functionalThemes">
    <div class="text-center">
        <h2>Functional Themes</h2>
    </div>
    <div>
        <img class="img82" src="/img/metron_functional_themes.png" alt="Metron Functional Themes" style="margin:0 auto;left: 0px;display:block;" />
    </div>
    <div class="hover-btn text-center">
            <a class="button-default" href="https://cwiki.apache.org/confluence/display/METRON/Metron+Core+Capabilities+and+Functional+Themes#MetronCoreCapabilitiesandFunctionalThemes-CoreFunctionalThemes" target="new">LEARN MORE</a>
    </div>
</section>

<section class="events-section darken" id="license">
    <div class="text-center">
        <h2>License</h2>
    </div>
    <div class="content-960 hover-btn text-center downloads">
        Metron is distributed under <a class="externalLink" href="http://www.apache.org/licenses/LICENSE-2.0" target="new">Apache License</a>
    </div>
</section>



  </section>
<section class="intro-block darken" id="docshome">
    <div class="content-960 hover-btn text-center disclaimer">
        <p>Copyright © 2018, The Apache Software Foundation. Licensed under the <a class="white" href="https://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a>.</p>
        <p>Apache Metron and its logo are trademarks of The Apache Software Foundation.</p>
    </div>
</section>

  <script>
  var anchorForId = function (id) {
    var anchor = document.createElement("a");
    anchor.className = "header-link";
    anchor.href      = "#" + id;
    anchor.innerHTML = "<span class=\"sr-only\">Permalink</span><i class=\"fa fa-link\"></i>";
    anchor.title = "Permalink";
    return anchor;
  };

  var linkifyAnchors = function (level, containingElement) {
    var headers = containingElement.getElementsByTagName("h" + level);
    for (var h = 0; h < headers.length; h++) {
      var header = headers[h];

      if (typeof header.id !== "undefined" && header.id !== "") {
        header.appendChild(anchorForId(header.id));
      }
    }
  };

  document.onreadystatechange = function () {
    if (this.readyState === "complete") {
      var contentBlock = document.getElementsByClassName("docs")[0] || document.getElementsByClassName("news")[0];
      if (!contentBlock) {
        return;
      }
      for (var level = 1; level <= 6; level++) {
        linkifyAnchors(level, contentBlock);
      }
    }
  };
</script>


</body>
</html>
