extend ../_components/base.pug

block pagetitle
    title Apache Hadoop Performance Acceleration
    meta(name="description", content="Achieve the performance acceleration of Hadoop-based systems by deploying Ignite as an in-memory computing platform designated for low-latency, high-throughput and real-time operations while Hadoop continues to be used for long-running OLAP workloads.")
    link(rel="canonical", href="https://ignite.apache.org/use-cases/hadoop-acceleration.html")

    meta(property="og:title", content="Apache Hadoop Performance Acceleration")
    meta(property="og:type", content="article")
    meta(property="og:url", content="https://ignite.apache.org/use-cases/hadoop-acceleration.html")
    meta(property="og:image", content="/img/og-pic.png")
    meta(property="og:description", content="Achieve the performance acceleration of Hadoop-based systems by deploying Ignite as an in-memory computing platform designated for low-latency, high-throughput and real-time operations while Hadoop continues to be used for long-running OLAP workloads.") 

block css 
    link(rel="stylesheet", href="../css/native-persistence.css?ver=" + config.version)
    link(rel="stylesheet", href="../css/compute-apis.css?ver=" + config.version)
    link(rel="stylesheet", href="../css/digital-hub.css?ver=" + config.version)
    link(rel="stylesheet", href="../css/hadoop.css?ver=" + config.version)

  



block main
    - global.pageHref = "usecases"
    - config.hdrClassName = "hdr__blue"
    include ../_components/header.pug


    section.innerhero
        .container.innerhero__cont
            .innerhero__main
                h1.h1.innerhero__h1 Accelerate Existing Hadoop Deployments
                  <br> 
                  span.with-apache  With Apache Ignite
                .innerhero__descr.pt-2.h5.
                    Accelerate the performance of Hadoop-based applications with Ignite <br>as a high-performance data access layer
                .innerhero__action 
                    a.button.innerhero__button(href="https://ignite.apache.org/docs/latest/index") Start Coding
            img.innerhero__pic.innerhero__pic--hadoop(src="/img/usecases/hadoop/hero-image.svg", alt="hero-image")
    // /.innerhero

    
   

    section.compute2
     .container
       .doop2__block
          h2.compute2__h2 Benefits Of Using Apache Ignite
          .compute2__grid.flexi.hub2__grid.doop2__grid 
               .compute2item.hub2item.doop2__item
                 .compute2-points__item.fz20
                 .compute2item__block
                   h3.fz20.compute2item__title Real-time analytics
                   p.compute2__text.base2__text Apache Ignite enables real-time analytics across Apache Hadoop operational and historical data silos.
             
               .compute2item.hub2item.doop2__item
                 .compute2-points__item.fz20
                 .compute2item__block
                   h3.fz20.compute2item__title Low-latency and high-throughput operations
                   p.compute2__text.base2__text Ignite enables low-latency and high-throughput access while Hadoop continues to be used for long-running OLAP workloads.
                   
            
    // /.compute2

    section.doop3
        .container 
           .doop3__block.flexi
              .doop3__info
                 h2.doop3__h2.h5 How Does Apache Ignite Acceleration Work?
                 p.doop3__text To achieve the performance acceleration of Hadoop-based systems, deploy Ignite as a separate distributed storage that maintains the data sets required for your low-latency operations or real-time reports
                 h2.doop3__h2.h5 There are 3 basic steps:
                 .fz20.doop3__number 01
                 p.doop3__subtext Depending on the data volume and available memory capacity, you can enable<a href="/arch/native-persistence.html" target="_blank"> Ignite native persistence</a> to store historical data sets on disk while dedicating a memory space for operational records. 
                 p.doop3__subtext.pt-1 You can continue to use Hadoop as storage for less frequently used data or for long-running and ad-hoc analytical queries.
                 .fz20.doop3__number 02
                 p.doop3__subtext Your applications and services should use Ignite native APIs to process the data residing in the in-memory cluster. Ignite provides SQL, compute (aka. map-reduce), and machine learning APIs for various data processing needs.
                 .fz20.doop3__number 03
                 p.doop3__subtext Consider using Apache Spark DataFrames APIs if an application needs to run federated or cross-database queries across Ignite and Hadoop clusters.
                 p.doop3__subtext.pt-1 Ignite is <a href="/use-cases/spark-acceleration.html" target="_blank">integrated with Spark</a>, which natively supports Hive/Hadoop. Cross-database queries should be considered only for a limited number of scenarios when neither Ignite nor Hadoop contains the entire data set.
              img.doop3__image(src="/img/usecases/hadoop/image.svg", alt="image")
    // /.doop3 
    
    section.doop4
        .container
            h2.doop4__h2.h4 How Can You Split Data And Operations Between Ignite And Hadoop?
            .doop4__block
                .doop4__item
                  p.doop4__text Use Apache Ignite for tasks that require:<br> – Low-latency response time <span class="doop4__grey">(microseconds, milliseconds, seconds)</span>
                  p.doop4__text.pt-1 – High throughput operations <span class="doop4__grey">(thousands and millions of operations per second)</span> <br>– Real-time processing.
                .doop4__item
                  p.doop4__text Continue using Apache Hadoop for: <br>— High-latency operations <span class="doop4__grey">(dozens of seconds, minutes, hours)</span><br>— Batch processing
    // /.doop4

    section.doop5 
        .container
           h2.h4.doop5__h2 5 Steps To Implement The Architecture In Practice
           .doop5__blocks
              .doop5__block
                .doop5__item.post1
                   .doop5__number.h4 01
                   .doop5__title Download and install Apache Ignite to your system.
                .doop5__item.post2
                   .doop5__number.h4 02
                   .doop5__title Select a list of operations for Ignite.
                   p.doop5__text.pt-2 The best operations are those that require low-latency response time, high-throughput, and real-time analytics.
                .doop5__item.post3
                   .doop5__number.h4 03
                   p.doop5__text <span class="doop5__title">Consider enabling Ignite native persistence,</span> or use Ignite as a pure in-memory cache, or in-memory data grid that persists changes to Hadoop or another external database.
                .doop5__item.post4
                   .doop5__number.h4 04
                   .doop5__title Update your applications 
                   p.doop5__text.pt-2 Ensure they use Ignite native APIs to process Ignite data and Spark for federated queries.
                .doop5__item.post5 
                   .doop5__number.h4 05
                   .doop5__titleend If you need to replicate changes between Ignite and Hadoop clusters, use existing change-data-capture solutions:
                   .doop5__part.flexi
                     p Debezium<br>Kafka
                     p.doop5__middle GridGain Data Lake Accelerator<br>Oracle GoldenGate
                     p.doop5__end To write-through changes to Hadoop directly,<br> implement <a href="https://ignite.apache.org/docs/latest/persistence/external-storage" target="_blank">Ignite's CacheStore</a> interface.
                   
                                



    

   
    section.native-bottom.container
        .native-bottom__grid 
            article.nativebotblock
                .h4.nativebotblock__title
                    img(src="/img/features/native-rocket.svg", alt="").nativebotblock__icon
                    span Ready to Start?
                p.nativebotblock__text Discover our quick start guide and build your first<br> application in 5-10 minutes
                a.nativebotblock__link.arrowlink(href="https://ignite.apache.org/docs/latest/", target="_blank") Quick Start Guide
            article.nativebotblock.nativebotblock--learn
                .h4.nativebotblock__title
                    img(src="/img/features/native-docs.svg", alt="").nativebotblock__icon
                    span Want to Learn More?
                p.nativebotblock__text Read the Apache Spark acceleration article
                a.nativebotblock__link.arrowlink(href="/use-cases/spark-acceleration.html") Apache Spark Acceleration Article






