blob: 9217c5d3694970f6286f190a3d5062d94499653e [file] [log] [blame]
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1" />
<title>Apache Ignite 2.5: Scaling to 1000s Nodes Clusters</title>
<link rel="stylesheet" href="/js/vendor/hystmodal/hystmodal.min.css?ver=0.9" />
<link rel="stylesheet" href="/css/utils.css?ver=0.9" />
<link rel="stylesheet" href="/css/site.css?ver=0.9" />
<link rel="stylesheet" href="../css/blog.css?ver=0.9" />
<link rel="stylesheet" href="/css/media.css?ver=0.9" media="only screen and (max-width:1199px)" />
<link rel="icon" type="image/png" href="/img/favicon.png" />
<!-- Global site tag (gtag.js) - Google Analytics -->
<script async src="https://www.googletagmanager.com/gtag/js?id=UA-61232409-1"></script>
<script>
window.dataLayer = window.dataLayer || [];
function gtag() {
dataLayer.push(arguments);
}
gtag('js', new Date());
gtag('config', 'UA-61232409-1');
</script>
<!-- Yandex.Metrika counter -->
<script type="text/javascript">
(function (m, e, t, r, i, k, a) {
m[i] =
m[i] ||
function () {
(m[i].a = m[i].a || []).push(arguments);
};
m[i].l = 1 * new Date();
(k = e.createElement(t)), (a = e.getElementsByTagName(t)[0]), (k.async = 1), (k.src = r), a.parentNode.insertBefore(k, a);
})(window, document, 'script', 'https://mc.yandex.ru/metrika/tag.js', 'ym');
ym(72949126, 'init', {
clickmap: true,
trackLinks: true,
accurateTrackBounce: true,
webvisor: true,
});
</script>
<noscript
><div><img src="https://mc.yandex.ru/watch/72949126" style="position: absolute; left: -9999px" alt="" /></div
></noscript>
<!-- /Yandex.Metrika counter -->
</head>
<body>
<!-- MOBILE MENU START -->
<div class="hystmodal" id="jsMenuModal" aria-hidden="true">
<div class="hystmodal__wrap">
<div class="hystmodal__window mobmenu" role="dialog" aria-modal="true">
<button data-hystclose class="hystmodal__close">Close</button>
<div class="mobmenu__wrap">
<a href="/" class="mobmenu__logo"><img src="/img/logo.svg" alt="Logo" /></a>
<div class="mobmenu__menu">
<ul>
<li>
<a href="/docs/latest/">Quick Start</a>
</li>
<li>
<a href="/resources.html#learning">Learning resources</a>
</li>
<li>
<a href="/resources.html#training">Training and Courses</a>
</li>
<li>
<a href="/faq.html">FAQ</a>
</li>
<li>
<span class="mobmenu__parent"> <a href="/use-cases.html">Use Cases</a><button class="mobmenu__opener"></button> </span>
<ul>
<li>
<a href="/use-cases/in-memory-cache.html">In-Memory Cache</a>
</li>
<li>
<a href="/use-cases/in-memory-data-grid.html">In-Memory Data Grid</a>
</li>
<li>
<a href="/use-cases/in-memory-database.html">In-Memory Database</a>
</li>
<li>
<a href="/use-cases/key-value-store.html">Key-Value Store</a>
</li>
<li>
<a href="/use-cases/high-performance-computing.html">High Performance Computing</a>
</li>
<li>
<a href="/use-cases/digital-integration-hub.html">Digital Integration Hub</a>
</li>
<li>
<a href="/use-cases/spark-acceleration.html">Spark Acceleration</a>
</li>
<li>
<a href="/use-cases/hadoop-acceleration.html">Hadoop Acceleration</a>
</li>
<li>
<a href="/use-cases.html">View All</a>
</li>
</ul>
</li>
<li>
<span class="mobmenu__parent"> <a href="/features/">Features</a><button class="mobmenu__opener"></button> </span>
<ul>
<li>
<a href="/arch/multi-tier-storage.html">Multi-Tier Storage</a>
</li>
<li>
<a href="/arch/native-persistence.html">Native Persistence</a>
</li>
<li>
<a href="/features/sql.html">Distributed SQL</a>
</li>
<li>
<a href="/features/key-value-apis.html">Key-Value APIs</a>
</li>
<li>
<a href="/features/acid-transactions.html">ACID Transactions</a>
</li>
<li>
<a href="/features/compute-apis.html">Compute APIs</a>
</li>
<li>
<a href="/features/service-apis.html">Services</a>
</li>
<li>
<a href="/features/machinelearning.html">Machine Learning</a>
</li>
<li>
<a href="/features/streaming.html">Real-Time Streaming APIs</a>
</li>
<li>
<a href="/docs/latest/messaging">Messaging</a>
</li>
<li>
<a href="/docs/latest/key-value-api/continuous-queries">Continuous Queries</a>
</li>
<li>
<a href="/features/index.html">View All</a>
</li>
</ul>
</li>
<li>
<a href="/community.html">Community</a>
<ul class="isdefault">
<li><a href="/community.html">Project Info</a></li>
<li><a href="/events.html">Events</a></li>
</ul>
</li>
<li>
<a href="/use-cases/provenusecases.html">Powered by</a>
</li>
<li>
<a href="/resources.html">Resources</a>
</li>
<li>
<a href="/blog/">Blog</a>
</li>
<li>
<a href="/docs/latest/">Docs</a>
</li>
</ul>
<a href="/download.cgi" class="button mobmenu__button">Download Ignite 2.11</a>
</div>
<!-- //mobmenu__menu -->
</div>
<!-- //mobmenu__wrap -->
</div>
<!-- //mobmenu -->
</div>
</div>
<!-- MOBILE MENU END -->
<header class="hdr hdr__white jsHdrBase">
<div class="jsHdrLine">
<div id="promotion-bar">
<a
href="https://ignite-summit.org/2023-june/?utm_medium=website-direct&amp;utm_source=apache_ignite&amp;utm_term=ignite-summit&amp;utm_content=event-hosted&amp;utm_campaign=2023-06-06-ignite-summit-nam"
target="_blank"
title="Ignite Summit — June 6, 2023 — Join virtually!"
rel="noopener noreferrer"
><span><img class="ignite-summit-logo" src="/images/promos/summit-lime.svg" /></span>Ignite Summit — June 6, 2023 —<strong>&nbsp;Register now</strong>&nbsp;<span class="more d-none d-lg-block"
><img src="/images/promos/arrow-white.svg" /></span
></a>
</div>
<div class="hdr__wrap flexi">
<button class="hdr__burger" data-menumodal="#jsMenuModal"><img src="/img/menu.svg" alt="" /></button
><a class="hdr__logo" href="/"><img class="hdr__logoimg hdr__logo--white" src="/img/logo-white.svg" alt="" /><img class="hdr__logoimg hdr__logo--black" src="/img/logo.svg" alt="" /></a
><a class="button hdr__button" href="/download.cgi">Download Ignite 2.15.0</a>
<nav class="hdrmenu">
<ul class="flexi">
<li class="js-hasdrop"><a class="hdrmenu--expanded" href="/" data-panel="getStarted">Get Started</a></li>
<li class="js-hasdrop"><a class="hdrmenu--expanded" href="/features" data-panel="features">Features</a></li>
<li class="js-hasdrop"><a class="hdrmenu--expanded" href="/community.html" data-panel="community">Community</a></li>
<li><a href="/use-cases/provenusecases.html" data-panel="">Powered By</a></li>
<li class="js-hasdrop"><a class="hdrmenu--expanded" href="/resources.html" data-panel="resources">Resources</a></li>
<li><a href="///ignite.apache.org/docs/latest/" data-panel="">Docs</a></li>
</ul>
</nav>
<div class="dropmenu">
<div class="dropmenu__panel" data-menupanel="getStarted">
<div class="container dropmenu1__grid">
<div class="dropmenu1__buttonwrap">&nbsp;</div>
<div class="dropmenu__box dropmenu__box--buttonin">
<a class="dropmenu__redbutton" href="https://ignite.apache.org/docs/latest/"> <img src="/img/menu/icon-red-rocket.svg" alt="" /><span>Quick Start Guide</span></a>
<ul class="dropmenu__menu">
<li>
<a class="dropmenu__iconitem" href="/resources.html#learning"><span>Learning resources</span></a>
</li>
<li>
<a class="dropmenu__iconitem" href="/resources.html#training"><span>Training and Courses</span></a>
</li>
<li>
<a class="dropmenu__iconitem" href="/faq.html"><span>FAQ</span></a>
</li>
</ul>
</div>
<div class="dropmenu__box">
<p class="capstext"><a class="dropmenu__capslink" href="/use-cases.html">USE CASES</a></p>
<ul class="dropmenu__menu">
<li>
<a class="dropmenu__iconitem" href="/use-cases/in-memory-cache.html"><img src="/img/menu/icon-folder.svg" alt="" /><span>In-Memory Cache</span></a>
</li>
<li>
<a class="dropmenu__iconitem" href="/use-cases/in-memory-data-grid.html"><img src="/img/menu/icon-folder.svg" alt="" /><span>In-Memory Data Grid</span></a>
</li>
<li>
<a class="dropmenu__iconitem" href="/use-cases/in-memory-database.html"><img src="/img/menu/icon-folder.svg" alt="" /><span>In-Memory Database</span></a>
</li>
<li>
<a class="dropmenu__iconitem" href="/use-cases/key-value-store.html"><img src="/img/menu/icon-folder.svg" alt="" /><span>Key-Value Store</span></a>
</li>
</ul>
</div>
<div class="dropmenu__box no-border">
<ul class="dropmenu__menu">
<li>
<a class="dropmenu__iconitem" href="/use-cases/high-performance-computing.html"><img src="/img/menu/icon-folder.svg" alt="" /><span>High-Performance Computing</span></a>
</li>
<li>
<a class="dropmenu__iconitem" href="/use-cases/digital-integration-hub.html"><img src="/img/menu/icon-folder.svg" alt="" /><span>Digital Integration Hub</span></a>
</li>
<li>
<a class="dropmenu__iconitem" href="/use-cases/spark-acceleration.html"><img src="/img/menu/icon-folder.svg" alt="" /><span>Spark Acceleration</span></a>
</li>
<li>
<a class="dropmenu__iconitem" href="/use-cases/hadoop-acceleration.html"><img src="/img/menu/icon-folder.svg" alt="" /><span>Hadoop Acceleration</span></a>
</li>
</ul>
</div>
</div>
<!-- /.dropmenu1__grid-->
<div class="panelmorelinkwrap panelmorelinkwrap--end container"><a class="panellink" href="/use-cases.html">View all</a></div>
</div>
<!-- /.dropmenu__panel-->
<div class="dropmenu__panel" data-menupanel="features">
<div class="container dropmenu2__grid">
<div class="dropmenu__box">
<div class="capstext">MULTI-TIER STORAGE</div>
<ul class="dropmenu__menu">
<li>
<a class="dropmenu__iconitem" href="/arch/multi-tier-storage.html"><img src="/img/menu/icon-db.svg" alt="" /><span>Multi-Tier Storage</span></a>
</li>
<li>
<a class="dropmenu__iconitem" href="/arch/native-persistence.html"><img src="/img/menu/icon-db.svg" alt="" /><span>Native Persistence</span></a>
</li>
</ul>
</div>
<div class="dropmenu__box">
<div class="capstext">ESSENTIAL Developer APIs</div>
<ul class="dropmenu__menu">
<li>
<a class="dropmenu__iconitem" href="/features/sql.html"><img src="/img/menu/icon-cube.svg" alt="" /><span>Distributed SQL</span></a>
</li>
<li>
<a class="dropmenu__iconitem" href="/features/key-value-apis.html"><img src="/img/menu/icon-cube.svg" alt="" /><span>Key-Value APIs</span></a>
</li>
<li>
<a class="dropmenu__iconitem" href="/features/acid-transactions.html"><img src="/img/menu/icon-cube.svg" alt="" /><span>ACID Transactions</span></a>
</li>
</ul>
</div>
<div class="dropmenu__box">
<div class="capstext">High-Performance <br />Computing APIs</div>
<ul class="dropmenu__menu">
<li>
<a class="dropmenu__iconitem" href="/features/compute-apis.html"><img src="/img/menu/icon-cube.svg" alt="" /><span>Compute APIs</span></a>
</li>
<li>
<a class="dropmenu__iconitem" href="/features/service-apis.html"><img src="/img/menu/icon-cube.svg" alt="" /><span>Services</span></a>
</li>
<li>
<a class="dropmenu__iconitem" href="/features/machinelearning.html"><img src="/img/menu/icon-cube.svg" alt="" /><span>Machine Learning</span></a>
</li>
</ul>
</div>
<div class="dropmenu__box">
<div class="capstext">Real-Streaming APIs</div>
<ul class="dropmenu__menu">
<li>
<a class="dropmenu__iconitem" href="/features/streaming.html"><img src="/img/menu/icon-cube.svg" alt="" /><span>Real-Time Streaming APIs</span></a>
</li>
<li>
<a class="dropmenu__iconitem" href="https://ignite.apache.org/docs/latest/messaging"><img src="/img/menu/icon-cube.svg" alt="" /><span>Messaging</span></a>
</li>
<li>
<a class="dropmenu__iconitem" href="https://ignite.apache.org/docs/latest/key-value-api/continuous-queries"><img src="/img/menu/icon-cube.svg" alt="" /><span>Continuous Queries</span></a>
</li>
</ul>
</div>
</div>
<!-- /.dropmenu2__grid-->
<div class="panelmorelinkwrap"><a class="panellink" href="/features/">View all</a></div>
</div>
<!-- /.dropmenu__panel-2-->
<div class="dropmenu__panel" data-menupanel="community">
<div class="container dropmenu3__grid">
<div class="dropmenu__box">
<div class="capstext"><a class="dropmenu__capslink" href="/community.html">Project Info</a></div>
<ul class="dropmenu__menu">
<li>
<a class="dropmenu__iconitem" href="/community.html#story"><img src="/img/menu/icon-clip.svg" alt="" /><span>Apache Ignite Story</span></a>
</li>
<li>
<a class="dropmenu__iconitem" href="/community.html#community"><img src="/img/menu/icon-comment.svg" alt="" /><span>Meet The Community</span></a>
</li>
</ul>
</div>
<div class="dropmenu__box no-border">
<div class="capstext">&nbsp;</div>
<ul class="dropmenu__menu">
<li>
<a class="dropmenu__iconitem" href="/community.html#contributing"><img src="/img/menu/icon-puzzle.svg" alt="" /><span>Start Contributing</span></a>
</li>
<li>
<a class="dropmenu__iconitem" href="/community.html#faq"><img src="/img/menu/icon-question.svg" alt="" /><span>Ask Questions</span></a>
</li>
</ul>
</div>
<div class="dropmenu__box">
<div class="capstext"><a class="dropmenu__capslink" href="/events.html">Events</a></div>
<ul class="dropmenu__menu">
<li>
<a class="dropmenu__iconitem" href="/events.html#summit"><img src="/img/menu/icon-calendar.svg" alt="" /><span>Apache Ignite Summit</span></a>
</li>
<li>
<a class="dropmenu__iconitem" href="/events.html#meetups"><img src="/img/menu/icon-calendar.svg" alt="" /><span>Meetups</span></a>
</li>
</ul>
</div>
<div class="dropmenu__box no-border">
<div class="capstext">&nbsp;</div>
<ul class="dropmenu__menu">
<li>
<a class="dropmenu__iconitem" href="/events.html#upcoming"><img src="/img/menu/icon-calendar.svg" alt="" /><span>Upcoming Events</span></a>
</li>
<li>
<a class="dropmenu__iconitem" href="/events.html#past"><img src="/img/menu/icon-calendar.svg" alt="" /><span>Past Events</span></a>
</li>
</ul>
</div>
</div>
<!-- /.dropmenu3__grid-->
</div>
<!-- /.dropmenu__panel-->
<div class="dropmenu__panel" data-menupanel="resources">
<div class="container dropmenu1__grid">
<div class="dropmenu1__buttonwrap">&nbsp;</div>
<div class="dropmenu__box dropmenu__box--buttonin">
<a class="dropmenu__redbutton blog" href="/blog/"><img src="/img/menu/icon-blog.svg" alt="" /><span>Blog</span></a>
<ul class="dropmenu__menu">
<li>
<a class="dropmenu__iconitem" href="/resources.html#technical"><span>Technical resources</span></a>
</li>
<li>
<a class="dropmenu__iconitem" href="/resources.html#learning"><span>Learning resources</span></a>
</li>
</ul>
</div>
<div class="dropmenu__box blog">
<ul class="dropmenu__menu">
<li>
<a class="dropmenu__iconitem" href="/resources.html#training"><span>Training and Courses</span></a>
</li>
<li>
<a class="dropmenu__iconitem" href="/resources.html#book"><span>Apache Ignite Book</span></a>
</li>
<li>
<a class="dropmenu__iconitem" href="/resources.html#mail"><span>Mailing Lists, Forums And Discussion Archives</span></a>
</li>
<li>
<a class="dropmenu__iconitem" href="/faq.html"><span>FAQ</span></a>
</li>
</ul>
</div>
</div>
<!-- /.dropmenu1__grid-->
</div>
<!-- /.dropmenu__panel-->
</div>
<!-- /.dropmeu-->
</div>
</div>
</header>
<div class="dropmenu__back"></div>
<header class="hdrfloat hdr__white jsHdrFloatBase"></header>
<div class="container blog">
<section class="blog__header post_page__header">
<a href="/blog/">← Apache Ignite Blog</a>
<h1>Apache Ignite 2.5: Scaling to 1000s Nodes Clusters</h1>
<p>
May 31, 2018 by <strong>Denis Magda: </strong><a href="http://www.facebook.com/sharer.php?u=https://ignite.apache.org/blog/undefined">Facebook</a><span>, </span
><a href="http://twitter.com/home?status=Apache Ignite 2.5: Scaling to 1000s Nodes Clusters%20https://ignite.apache.org/blog/undefined">Twitter</a>
</p>
</section>
<div class="blog__content">
<main class="blog_main">
<section class="blog__posts">
<article class="post">
<div>
<p>
Apache Ignite was always appreciated by its users for two primary things it delivers - scalability and performance. Throughout the lifetime many distributed systems tend to do performance optimizations from a release to
release while making scalability related improvements just a couple of times. It&apos;s not because the scalability is of no interest. Usually, scalability requirements are set and solved once by a distributed system and
don&apos;t require significant additional interventions by engineers.
</p>
<p>
However, Apache Ignite grew to the point when the community decided to revisit its discovery subsystem that influences how well and far Ignite scales out. The goal was pretty clear - Ignite has to scale to 1000s of nodes
as good as it scales to 100s now.
</p>
<p>
It took many months to get the task implemented. So, please join me in welcoming Apache Ignite 2.5 that now can be scaled easily to 1000s of nodes and goes with other exciting capabilities. Let&apos;s check out the most
prominent ones.
</p>
<!-- end -->
<h3>Massive Scalability</h3>
There are two components of Ignite that were modified in Ignite 2.5 to improve its scalability capabilities. The first one is related to 1000s nodes clusters while the other is related to the way we train machine learning
(ML) models in Ignite. Let&apos;s start with the first.
<h4>Marrying Apache Ignite and ZooKeeper</h4>
<p></p>
<p>Right, that 1000s nodes scalability goal was solved with the help of Apache ZooKeeper. Why did we turn to it?</p>
<p>
Apache Ignite default TCP/IP Discovery organizes cluster nodes into a ring-topology form that has its advantages and disadvantages. For instance, on topologies with hundreds of cluster nodes, it can take many seconds why a
system message traverse through all the nodes. As a result, necessary processing of events such as joining of new nodes or detecting of failed ones can take a while affecting overall cluster responsiveness and performance.
That is a big deal if you&apos;d like to run 1000s nodes clusters.
</p>
<p>
The new ZooKeeper Discovery uses ZooKeeper as a single point of synchronization where Ignite nodes are exchanging discovery events through it. It solved the issue with long-to-be-processed discovery messages and, as a
result, allowed Ignite scaling to large cluster topologies.
</p>
<p><a href="https://apacheignite.readme.io/docs/zookeeper-discovery"></a></p>
<div style="text-align: center">
<a href="https://apacheignite.readme.io/docs/zookeeper-discovery"><img src="/img/blog/4b80632d-232d-4e4f-bd5e-9d91f0bc550f.png" width="450" /></a>
</div>
<p></p>
<p>
As a rule of thumb, keep using default <a href="https://apacheignite.readme.io/docs/tcpip-discovery" target="_blank">TCP/IP Discovery</a> if it&apos;s unlikely that your Ignite cluster scales beyond 300s nodes and switch
to <a href="https://apacheignite.readme.io/docs/zookeeper-discovery" target="_blank">ZooKeeper Discovery</a> if that&apos;s the case.
</p>
<p></p>
<h4>Machine Learning: Partition-Based Datasets</h4>
<p></p>
<p>
That&apos;s the second prominent feature of Ignite 2.5 that improves the way of how far you can scale your Ignite clusters to train ML models over terabytes or petabytes of data. The
<a href="https://apacheignite.readme.io/docs/ml-partition-based-dataset" target="_blank">partition-based datasets</a> moved us closer to the implementation of Zero-ETL concept which implies that Ignite can be used as a
single storage where ML models and algorithms are being improved iteratively and online without ETLing data back and forth between Ignite and another storage.
</p>
<p>Read more about the datasets from <a href="https://apacheignite.readme.io/docs/ml-partition-based-dataset" target="_blank">this</a> documentation page.</p>
<p></p>
<h3>Genetic Algorithms</h3>
Ignite&apos;s ML component is ramping up and in the version 2.5 it accepted a contribution of genetic algorithms (GAs) which help to solve optimization problems by simulating the process of biological evolution. GAs are
excellent for searching through large and complex data sets for an optimal solution. Real world applications of GAs include automotive design, computer gaming, robotics, investments, traffic/shipment routing and more.
<p></p>
<p>Refer to excessive articles of my community-mates Turik Campbell and Akmal B. Chaudhri which cover main benefits of GAs:</p>
<ul>
<li><a href="https://www.linkedin.com/pulse/travel-like-macgyver-solve-knapsack-problem-ga-grid-turik-campbell/" target="_blank">Travel Like MacGyver: Solve Knapsack Problem with GA Grid</a></li>
<li><a href="https://www.gridgain.com/resources/blog/genetic-algorithms-apacher-ignitetm" target="_blank">Genetic Algorithms with Apache&reg; Ignite</a></li>
</ul>
<p></p>
<p></p>
<h3>Continuous Self-Healing and Consistency Checks</h3>
It&apos;s a known fact that many companies and businesses trusted Ignite its mission-critical deployments and solutions. As a result, sometimes Ignite doesn&apos;t even have a right to &quot;misfire&quot; and should be able
to handle critical or unpredictable situations automatically or provide facilities to do deal with them manually.
<p></p>
<p>
With Ignite 2.5, we&apos;ve kicked off the realization of continuous self-healing concept that implies that no matter what happens with Ignite in production it should be able to tolerate unexpected failures and stay up and
running. The following was done in 2.5:
</p>
<ul>
<li><a href="https://apacheignite.readme.io/docs/critical-failures-handling" target="_blank">Critical Failures Handling</a></li>
<li><a href="https://apacheignite.readme.io/docs/transactions#section-long-running-transactions-termination" target="_blank">Long running transactions monitoring and termination</a></li>
<li><a href="https://apacheignite.readme.io/docs/consistency-check-facilities" target="_blank">Data Consistency Check Facilities</a></li>
</ul>
<p></p>
<p></p>
<h3>SQL: Security and Fast Data Loading</h3>
<p></p>
<p>
The community stays strong and determined in its goal of making Ignite SQL engine undistinguishable from SQL engines of famous and mature SQL database. What&apos;s the purpose? We want to make it easy for you to migrate
from a relational database to Ignite, so that you can reuse all your skills gained before. Overall, this is what our SQL engine got in 2.5:
</p>
<p></p>
<ul>
<li>
Fast data loading with <a href="https://apacheignite-sql.readme.io/docs/copy" target="_blank">COPY</a> command and
<a href="https://apacheignite-sql.readme.io/docs/jdbc-driver#section-streaming" target="_blank">streaming mode</a> using SQL APIs.
</li>
<li><a href="https://apacheignite.readme.io/docs/transactions#section-long-running-transactions-termination" target="_blank">Long running transactions monitoring and termination</a></li>
<li>Secured Ignite cluster. Use <a href="https://apacheignite-sql.readme.io/docs/ddl" target="_blank">CREATE USER, DROP USER and ALTER USER</a> commands to manage who is allowed to connect to your clusters.</li>
</ul>
<p></p>
<p></p>
<h3>In-place Execution of Spark DataFrame Queries</h3>
<p></p>
<p>
Apache Spark users can applaud because the <a href="https://issues.apache.org/jira/owse/IGNITE-7077" target="_blank">following ticket</a> got merged in 2.5. In short, it means that from now on Ignite will be able to
execute as many DataFrames SQL queries as it can in-place on Ignite servers side avoiding data movement from Ignite to Spark. The performance of your DataFrames queries should boost significantly. Enjoy!
</p>
<p></p>
<h3>DEB and RPM packages</h3>
<p></p>
<p>
Last but not least, if you&apos;re a Linux user, now you can install the latest Ignite versions directly from DEB and RPM repositories. Refer to
<a href="https://apacheignite.readme.io/docs/getting-started#section-rpm-deb-packages-installation" target="_blank">how-to</a> and share your feedback with us.
</p>
<p>Finally, I have no more paper left to cover other optimizations and improvements. So, go ahead and check out our <a href="https://ignite.apache.org/releases/2.5.0/release_notes.html" target="_blank">release notes</a>.</p>
</div>
</article>
<section class="blog__footer">
<ul class="pagination post_page">
<li><a href="/blog/apache">apache</a></li>
<li><a href="/blog/database">database</a></li>
<li><a href="/blog/ignite">ignite</a></li>
<li><a href="/blog/spark">spark</a></li>
<li><a href="/blog/sql">sql</a></li>
</ul>
</section>
</section>
</main>
<aside class="blog__sidebar">
<ul>
<li><a href="/blog/database">database</a></li>
<li><a href="/blog/ignite">ignite</a></li>
<li><a href="/blog/linq">linq</a></li>
<li><a href="/blog/.NET">.NET</a></li>
<li><a href="/blog/SQL">SQL</a></li>
<li><a href="/blog/performance">performance</a></li>
<li><a href="/blog/csharp">csharp</a></li>
<li><a href="/blog/in">in</a></li>
<li><a href="/blog/memory">memory</a></li>
<li><a href="/blog/open">open</a></li>
<li><a href="/blog/source">source</a></li>
<li><a href="/blog/release">release</a></li>
<li><a href="/blog/in-memory">in-memory</a></li>
<li><a href="/blog/open-source">open-source</a></li>
<li><a href="/blog/log4j2">log4j2</a></li>
<li><a href="/blog/bigdata">bigdata</a></li>
<li><a href="/blog/computing">computing</a></li>
<li><a href="/blog/two">two</a></li>
<li><a href="/blog/learning">learning</a></li>
<li><a href="/blog/machine">machine</a></li>
<li><a href="/blog/apache">apache</a></li>
<li><a href="/blog/spark">spark</a></li>
<li><a href="/blog/sql">sql</a></li>
<li><a href="/blog/data">data</a></li>
<li><a href="/blog/fast">fast</a></li>
<li><a href="/blog/nodal">nodal</a></li>
<li><a href="/blog/meltdown">meltdown</a></li>
<li><a href="/blog/security">security</a></li>
<li><a href="/blog/spectre">spectre</a></li>
<li><a href="/blog/key-value">key-value</a></li>
<li><a href="/blog/store">store</a></li>
<li><a href="/blog/meetup">meetup</a></li>
<li><a href="/blog/biodata">biodata</a></li>
<li><a href="/blog/rdbms">rdbms</a></li>
<li><a href="/blog/grid">grid</a></li>
<li><a href="/blog/imdb">imdb</a></li>
</ul>
</aside>
</div>
</div>
<footer class="footer">
<div class="container footer__top">
<section class="footer1">
<a class="footer__title" href="/features/">Features</a>
<ul class="footer__menu">
<li><a href="/arch/multi-tier-storage.html">Multi-Tier Storage</a></li>
<li><a href="/arch/native-persistence.html">Native Persistence</a></li>
<li><a href="/features/sql.html">Distributed SQL</a></li>
<li><a href="/features/acid-transactions.html">ACID Transactions</a></li>
<li><a href="/features/key-value-apis.html">Key Value APIs</a></li>
<li><a href="/features/compute-apis.html">Compute APIs</a></li>
<li><a href="/features/machinelearning.html">Machine Learning</a></li>
<li><a href="/features/service-apis.html">Services</a></li>
<li><a href="/features/streaming.html">Real-Streaming APIs</a></li>
<li><a href="https://ignite.apache.org/docs/latest/key-value-api/continuous-queries">Continuous Queries</a></li>
<li><a href="https://ignite.apache.org/docs/latest/messaging">Messaging</a></li>
</ul>
</section>
<section class="footer2">
<a class="footer__title" href="/use-cases/">Use Cases</a>
<ul class="footer__menu">
<li><a href="/use-cases/in-memory-cache.html">In-Memory Cache</a></li>
<li><a href="/use-cases/in-memory-data-grid.html">In-Memory Data Grid</a></li>
<li><a href="/use-cases/in-memory-database.html">In-Memory Database</a></li>
<li><a href="/use-cases/high-performance-computing.html">High-Performance Computing</a></li>
<li><a href="/use-cases/digital-integration-hub.html">Digital Integration Hub</a></li>
<li><a href="/use-cases/key-value-store.html">Key-Value Store</a></li>
<li><a href="/use-cases/spark-acceleration.html">Apache Spark Acceleration</a></li>
<li><a href="/use-cases/hadoop-acceleration.html">Apache Hadoop Acceleration</a></li>
</ul>
</section>
<section class="footer3"><a class="footer__title" href="/our-community.html">Community</a><a class="footer__title" href="/resources.html">Resources</a><a class="footer__title" href="/events.html">Events</a></section>
<section class="footer4">
<div class="footer4__item">Join Our <a href="mailto:dev@ignite.apache.org">Dev Mailing List</a></div>
<div class="footer4__item pt-2">Or write your question</div>
<div class="footer4__item pt-1">user@ignite.apache.org</div>
<div class="footer4__item pt-5">Follow Us:</div>
<div class="footer4__socwrap flexi pt-2">
<a class="footer4__soc" href="https://github.com/apache/ignite" target="_blank"><img src="/img/icon-github.svg" alt="" /></a
><a class="footer4__soc" href="https://www.linkedin.com/showcase/apache-ignite/" target="_blank"><img src="/img/icon-linkedin.svg" alt="" /></a
><a class="footer4__soc" href="https://twitter.com/apacheignite" target="_blank"><img src="/img/icon-twitter.svg" alt="" /></a
><a class="footer4__soc" href="https://www.meetup.com/Apache-Ignite-Virtual-Meetup/" target="_blank"><img src="/img/icon-meetup-black.png" alt="" /></a>
</div>
<a class="footer4__button button" href="https://ignite.apache.org/docs/latest/index">Start Using Apache Ignite </a>
</section>
</div>
<div class="container footer__bot">
<p>© 2015 - 2023 <a href="http://www.apache.org/">The Apache Software Foundation.</a></p>
<p class="pt-1x">Apache, Apache Ignite, the Apache feather and the Apache Ignite logo are either registered trademarks or trademarks of The Apache Software Foundation</p>
<p class="pt-1x"><a href="http://apache.org/foundation/policies/privacy.html">Privacy Policy</a></p>
</div>
</footer>
<a class="scrollTop" href="#"
><svg class="feather feather-chevron-up" xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewbox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
<polyline points="18 15 12 9 6 15"></polyline></svg
></a>
<script src="/js/vendor/hystmodal/hystmodal.min.js"></script>
<script src="/js/vendor/smoothscroll.js"></script>
<script src="/js/main.js?ver=0.9"></script>
</body>
</html>