{"id":79930,"date":"2021-11-22T10:52:04","date_gmt":"2021-11-22T16:22:04","guid":{"rendered":"https:\/\/www.whizlabs.com\/blog\/?p=79930"},"modified":"2021-11-22T10:54:44","modified_gmt":"2021-11-22T16:24:44","slug":"apache-storm-introduction","status":"publish","type":"post","link":"https:\/\/www.whizlabs.com\/blog\/apache-storm-introduction\/","title":{"rendered":"APACHE STORM (2.2.0) &#8211; A Complete Guide"},"content":{"rendered":"<p><span style=\"font-weight: 400;\">Apache Storm is a free and open source distributed real-time computation system. It<\/span><span style=\"font-weight: 400;\">\u00a0makes everything simple to process unbounded streams of data in a reliable manner. It is easy to use and works with any programming language.\u00a0<\/span><span style=\"font-weight: 400;\">Written mainly in the \u2018Clojure\u2019 and \u2018Java\u2019 programming languages, it makes use of \u2018Spouts\u2019 and \u2018Bolts\u2019 to run application-specific logic.<\/span><\/p>\n<p><em><span style=\"font-weight: 400;\">The latest stable version is \u20182.2.0\u2019 which is a June 2020 release.<\/span><\/em><\/p>\n<p><span style=\"font-weight: 400;\">Originally created by \u2018Nathan Marz\u2019 and team at \u2018Backtype\u2019, it was open sourced after being acquired by Twitter.\u00a0<\/span><span style=\"font-weight: 400;\">It is scalable, fast, fault-tolerant, guarantees that the data is processed and easy to set up and operate.\u00a0<\/span><span style=\"font-weight: 400;\">It has a record of processing a million tuples per second per node.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Storm joined the Apache Software Foundation as an incubator project delivering high-end applications. Since then, Apache Storm has been meeting the demands of Big Data Analytics.<\/span><\/p>\n<div id=\"ez-toc-container\" class=\"ez-toc-v2_0_76 ez-toc-wrap-left counter-hierarchy ez-toc-counter ez-toc-custom ez-toc-container-direction\">\n<div class=\"ez-toc-title-container\">\n<p class=\"ez-toc-title\" style=\"cursor:inherit\">Table of Contents<\/p>\n<span class=\"ez-toc-title-toggle\"><a href=\"#\" class=\"ez-toc-pull-right ez-toc-btn ez-toc-btn-xs ez-toc-btn-default ez-toc-toggle\" aria-label=\"Toggle Table of Content\"><span class=\"ez-toc-js-icon-con\"><span class=\"\"><span class=\"eztoc-hide\" style=\"display:none;\">Toggle<\/span><span class=\"ez-toc-icon-toggle-span\"><svg style=\"fill: #ea7e02;color:#ea7e02\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" class=\"list-377408\" width=\"20px\" height=\"20px\" viewBox=\"0 0 24 24\" fill=\"none\"><path d=\"M6 6H4v2h2V6zm14 0H8v2h12V6zM4 11h2v2H4v-2zm16 0H8v2h12v-2zM4 16h2v2H4v-2zm16 0H8v2h12v-2z\" fill=\"currentColor\"><\/path><\/svg><svg style=\"fill: #ea7e02;color:#ea7e02\" class=\"arrow-unsorted-368013\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"10px\" height=\"10px\" viewBox=\"0 0 24 24\" version=\"1.2\" baseProfile=\"tiny\"><path d=\"M18.2 9.3l-6.2-6.3-6.2 6.3c-.2.2-.3.4-.3.7s.1.5.3.7c.2.2.4.3.7.3h11c.3 0 .5-.1.7-.3.2-.2.3-.5.3-.7s-.1-.5-.3-.7zM5.8 14.7l6.2 6.3 6.2-6.3c.2-.2.3-.5.3-.7s-.1-.5-.3-.7c-.2-.2-.4-.3-.7-.3h-11c-.3 0-.5.1-.7.3-.2.2-.3.5-.3.7s.1.5.3.7z\"\/><\/svg><\/span><\/span><\/span><\/a><\/span><\/div>\n<nav><ul class='ez-toc-list ez-toc-list-level-1 ' ><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-1\" href=\"https:\/\/www.whizlabs.com\/blog\/apache-storm-introduction\/#Its_applications_include\" >Its applications include:<\/a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-2\" href=\"https:\/\/www.whizlabs.com\/blog\/apache-storm-introduction\/#Some_major_organisations_using_Apache_Storms_are\" >Some major organisations using Apache Storms are:<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-3\" href=\"https:\/\/www.whizlabs.com\/blog\/apache-storm-introduction\/#Advantages_Apache_Storm_offers\" >Advantages Apache Storm offers:<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-4\" href=\"https:\/\/www.whizlabs.com\/blog\/apache-storm-introduction\/#Topology\" >Topology:<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-5\" href=\"https:\/\/www.whizlabs.com\/blog\/apache-storm-introduction\/#Storm_Cluster\" >Storm Cluster:<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-6\" href=\"https:\/\/www.whizlabs.com\/blog\/apache-storm-introduction\/#Running_a_Topology\" >Running a Topology:<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-7\" href=\"https:\/\/www.whizlabs.com\/blog\/apache-storm-introduction\/#Streams\" >Streams:\u00a0<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-8\" href=\"https:\/\/www.whizlabs.com\/blog\/apache-storm-introduction\/#Data_Model\" >Data Model:<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-9\" href=\"https:\/\/www.whizlabs.com\/blog\/apache-storm-introduction\/#Tuple\" >Tuple:\u00a0\u00a0<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-10\" href=\"https:\/\/www.whizlabs.com\/blog\/apache-storm-introduction\/#Stream_Groupings\" >Stream Groupings:<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-11\" href=\"https:\/\/www.whizlabs.com\/blog\/apache-storm-introduction\/#Trident\" >Trident\u00a0<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-12\" href=\"https:\/\/www.whizlabs.com\/blog\/apache-storm-introduction\/#Distributed_RPC\" >Distributed RPC<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-13\" href=\"https:\/\/www.whizlabs.com\/blog\/apache-storm-introduction\/#Conclusion\" >Conclusion\u00a0<\/a><\/li><\/ul><\/li><\/ul><\/nav><\/div>\n<h2><span class=\"ez-toc-section\" id=\"Its_applications_include\"><\/span><span style=\"font-weight: 400;\">Its applications include:<\/span><span class=\"ez-toc-section-end\"><\/span><\/h2>\n<ul>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">Real-time Analytics<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">Online Machine Learning<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">Continuous Computation<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">Distributed RPC\u00a0<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">ETL<\/span><\/li>\n<\/ul>\n<p><span style=\"font-weight: 400;\">It is integrated with <a href=\"https:\/\/www.whizlabs.com\/blog\/learning-hadoop-for-beginners\/\">Hadoop<\/a> to maximise throughput and can work with any programming language. It is scalable and ensures that the data is processed. It is simple to set up and get in action.\u00a0<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Apache Storm integrates with the existing queueing and database technology. An Apache Storm topology consumes data streams and processes them in arbitrarily complex ways, repartitioning the streams as needed between stages of computation.\u00a0<\/span><\/p>\n<h3><span class=\"ez-toc-section\" id=\"Some_major_organisations_using_Apache_Storms_are\"><\/span><span style=\"font-weight: 400;\">Some major organisations using Apache Storms are:<\/span><span class=\"ez-toc-section-end\"><\/span><\/h3>\n<ul>\n<li aria-level=\"1\"><b>Twitter- <\/b><span style=\"font-weight: 400;\">Twitter uses Apache Storm for its \u201cPublisher Analytics products.\u201d Every tweet and click on the Twitter Platform is processed by \u201cPublisher Analytics Products\u201d. Twitter\u2019s infrastructure is deeply integrated with Apache Storm.\u00a0<\/span><\/li>\n<li aria-level=\"1\"><b>NaviSite- <\/b><span style=\"font-weight: 400;\">Storm is NaviSite\u2019s event log monitoring\/Auditing system. Every log generated by the system will be processed by Storm. Storm will compare the message to the configured set of regular expressions, and if a match is found, the message will be saved to the database.\u00a0<\/span><\/li>\n<li aria-level=\"1\"><b>Wego- <\/b><span style=\"font-weight: 400;\">Wego is a Singapore-based travel metasearch engine. Travel-related data is gathered from a variety of sources around the world at varying times. Storm assists Wego in searching real-time data, resolving concurrency issues, and determining the best match for the end user.\u00a0<\/span><\/li>\n<\/ul>\n<h3><span class=\"ez-toc-section\" id=\"Advantages_Apache_Storm_offers\"><\/span><b>Advantages <a href=\"https:\/\/www.whizlabs.com\/blog\/apache-storm-vs-apache-spark\/\">Apache Storm<\/a> offers:<\/b><span class=\"ez-toc-section-end\"><\/span><\/h3>\n<ul>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">Real-time stream processing is possible and equipped with operational intelligence.\u00a0<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">Storm is extremely fast because it has humongous data processing power.\u00a0<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">Storm can maintain performance even under increasing load by adding resources in a linear fashion.<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">Storm refreshes data and provides end-to-end delivery responses in seconds or minutes, depending on the problem. It has extremely low latency.\u00a0<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">Storm guarantees data processing even if any of the cluster\u2019s connected nodes fail or messages are lost.\u00a0<\/span><\/li>\n<\/ul>\n<h3><span class=\"ez-toc-section\" id=\"Topology\"><\/span><b>Topology:<\/b><span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p><span style=\"font-weight: 400;\">A topology is a graph of computation.<\/span><span style=\"font-weight: 400;\">Topologies are created to perform real-time computations on Storm. E<\/span><span style=\"font-weight: 400;\">ach node herein contains processing logic, and links between nodes suggest how data should be passed between them.<\/span><\/p>\n<h3><span class=\"ez-toc-section\" id=\"Storm_Cluster\"><\/span><b>Storm Cluster:<\/b><span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p><span style=\"font-weight: 400;\">A Storm cluster is slightly similar to a Hadoop cluster. While on Hadoop, you run \u201cMapReduce jobs\u201d, on Storm \u201ctopologies\u201d are run. And where a\u00a0 MapReduce job eventually finishes, a topology processes messages indefinitely or until you kill it.\u00a0<\/span><\/p>\n<p><span style=\"font-weight: 400;\">On a Storm cluster, there are two types of nodes:<\/span><\/p>\n<ol>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">Master nodes, and<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">Worker nodes.<\/span><\/li>\n<\/ol>\n<p><span style=\"font-weight: 400;\">The master node runs a \u201cNimbus\u201d daemon, which is similar to Hadoop\u2019s \u201cJobTracker.\u201d Nimbus is in charge of distributing code throughout the cluster, assigning tasks to machines, and monitoring for failures.\u00a0<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Each worker node runs the \u201cSupervisor\u201d daemon. The supervisor listens for work assigned to its machine and initiates and terminates worker processes as needed based on what Nimbus has assigned to it.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">A running topology is made up of many worker processes distributed across multiple machines and each worker process executes a subset of topology.\u00a0<\/span><span style=\"font-weight: 400;\">All communication between Nimbus and the Supervisors takes place via a Zookeeper cluster. Furthermore, the Nimbus and Supervisor daemons are fail-safe and stateless. All state is stored in Zookeeper or on a local disc. This means that even if you kill -9 Nimbus or the Supervisors, they will restart as if nothing happened.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Storm clusters are extremely stable as a result of this design.\u00a0<\/span><\/p>\n<p><img decoding=\"async\" class=\" wp-image-79932 aligncenter\" src=\"https:\/\/www.whizlabs.com\/blog\/wp-content\/uploads\/2021\/11\/images.png\" alt=\"storm cluster\" width=\"485\" height=\"317\" \/><\/p>\n<h3><span class=\"ez-toc-section\" id=\"Running_a_Topology\"><\/span><b>Running a Topology:<\/b><span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p><span style=\"font-weight: 400;\">Running a Topology is simple.<\/span><\/p>\n<ol>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">Package all the code and dependencies into a single jar<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">Execute the following command<\/span><\/li>\n<\/ol>\n<p><em><span style=\"font-weight: 400;\">\u2018storm jar all-my-code.jar org.apache.storm.MyTopology arg1 arg2\u2019<\/span><\/em><\/p>\n<p><span style=\"font-weight: 400;\">This invokes the class org.apache.storm.MyTopology with the arguments \u2018arg1\u2019 and \u2018arg2\u2019. The primary function of the class that defines the topology and submits it to Nimbus. The storm jar connects to Nimbus and uploads the jar.\u00a0<\/span><span style=\"font-weight: 400;\">This is the simplest way of running it via a JVM based language.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Since Nimbus is a thrift service, topologies can be created and submitted using any programming language.<\/span><\/p>\n<h3><span class=\"ez-toc-section\" id=\"Streams\"><\/span><b>Streams:<\/b><b>\u00a0<\/b><span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p><span style=\"font-weight: 400;\">A Stream is an unbounded sequence of tuples.\u00a0<\/span><span style=\"font-weight: 400;\">Stream is the core abstraction in Storm.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Storm provides the basis for transforming an existing stream into a new stream in a distributed and dependable manner. You could, for example, turn a stream of tweets into a stream of trending topics.\u00a0<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Storm\u2019s basic primitives for performing stream transformation are \u201cspouts\u201d and \u201cbolts.\u201d Spouts and bolts have interfaces that could be used to implement application-specific logic.\u00a0<\/span><\/p>\n<p><span style=\"font-weight: 400;\">A Spout is a stream source. A Spout, for example, could read tuples from a Kestrel queue and emit them as a stream. A Spout could also connect to the Twitter API and send out a stream of tweets.\u00a0<\/span><\/p>\n<p><span style=\"font-weight: 400;\">A Bolt takes in a number of input streams, processes them, and may emit new streams. Complex stream transformations, such as generating a stream of trending topics from a stream of tweets, necessitate multiple steps and, as a result, multiple bolts. Bolts can filter tuples, perform streaming aggregations, carry out streaming joins, communicate with databases, run functions and much more.\u00a0<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Spout and Bolt networks are packaged into a \u201ctopology,\u201d which is the top-level abstraction that you provide to Storm clusters to run. A topology is a graph of stream transformations, with each node representing either a spout or a bolt. The graph\u2019s edges show the bolts subscribed to respective streams. When a spout or bolt emits a tuple to a stream, the tuple is sent to every bolt that has subscribed to that stream.\u00a0<\/span><\/p>\n<p><span style=\"font-weight: 400;\">The connections between your topology\u2019s nodes indicate how tuples should be passed around. For instance, if there exists a link between Spout A and Bolt B, a link between Spout A and Bolt C, and a link between Bolt B and Bolt C, then whenever Spout A emits a tuple, it will be sent to both Bolt B and Bolt C. Moreover, all of Bolt B\u2019s output tuples will be sent to Bolt C.\u00a0<\/span><\/p>\n<p><span style=\"font-weight: 400;\">In a Storm topology, every node executes in parallel. You can specify the amount of parallelism you want for each node in your topology, and Storm will spawn that number of threads across the cluster to execute the code. A topology exists indefinitely, or until terminated. Any failed tasks will be reassigned automatically by Storm.\u00a0<\/span><\/p>\n<p><span style=\"font-weight: 400;\">These features were part of Storm\u2019s reliability API, which describes how Storm ensures that every message that comes off a spout is fully processed. Information on how this works and what you need to do as a user to take advantage of Storm\u2019s reliability capabilities, see Guaranteeing message processing.\u00a0<\/span><\/p>\n<p><img decoding=\"async\" class=\" wp-image-79933 aligncenter\" src=\"https:\/\/www.whizlabs.com\/blog\/wp-content\/uploads\/2021\/11\/Figure-1-Basic-Stream-Processing-Diagram-of-Apache-Storm-2-300x134.png\" alt=\"steams in apache storm\" width=\"636\" height=\"284\" srcset=\"https:\/\/www.whizlabs.com\/blog\/wp-content\/uploads\/2021\/11\/Figure-1-Basic-Stream-Processing-Diagram-of-Apache-Storm-2-300x134.png 300w, https:\/\/www.whizlabs.com\/blog\/wp-content\/uploads\/2021\/11\/Figure-1-Basic-Stream-Processing-Diagram-of-Apache-Storm-2.png 589w\" sizes=\"(max-width: 636px) 100vw, 636px\" \/><\/p>\n<h3><span class=\"ez-toc-section\" id=\"Data_Model\"><\/span><b>Data Model:<\/b><span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p><span style=\"font-weight: 400;\">Storm makes use of Tuples as its data model.<\/span><\/p>\n<h3><span class=\"ez-toc-section\" id=\"Tuple\"><\/span><b>Tuple:<\/b><b>\u00a0\u00a0<\/b><span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p><span style=\"font-weight: 400;\">A Tuple is a named list of values and a field in any Tuple could be an Object of any type.\u00a0<\/span><span style=\"font-weight: 400;\">Storm supports all the primitive types, string and byte arrays as Tuple field values.<\/span><\/p>\n<h3><span class=\"ez-toc-section\" id=\"Stream_Groupings\"><\/span><b>Stream Groupings:<\/b><span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p><span style=\"font-weight: 400;\">A Stream grouping tells a topology how to send tuples between two components.<\/span><\/p>\n<p><img decoding=\"async\" class=\"wp-image-79931 aligncenter\" src=\"https:\/\/www.whizlabs.com\/blog\/wp-content\/uploads\/2021\/11\/unnamed-4-300x224.png\" alt=\"Apache Storm\" width=\"513\" height=\"383\" srcset=\"https:\/\/www.whizlabs.com\/blog\/wp-content\/uploads\/2021\/11\/unnamed-4-300x224.png 300w, https:\/\/www.whizlabs.com\/blog\/wp-content\/uploads\/2021\/11\/unnamed-4-80x60.png 80w, https:\/\/www.whizlabs.com\/blog\/wp-content\/uploads\/2021\/11\/unnamed-4-100x75.png 100w, https:\/\/www.whizlabs.com\/blog\/wp-content\/uploads\/2021\/11\/unnamed-4-180x135.png 180w, https:\/\/www.whizlabs.com\/blog\/wp-content\/uploads\/2021\/11\/unnamed-4-238x178.png 238w, https:\/\/www.whizlabs.com\/blog\/wp-content\/uploads\/2021\/11\/unnamed-4.png 320w\" sizes=\"(max-width: 513px) 100vw, 513px\" \/><\/p>\n<p><b>Ensuring Message Processing:<\/b><\/p>\n<h3><span class=\"ez-toc-section\" id=\"Trident\"><\/span><b>Trident\u00a0<\/b><span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p><span style=\"font-weight: 400;\">Storm ensures that every message is routed via the topology at least once. A frequently asked question is \u201cOn top of Storm, how do you do things like count? Will you not overestimate?\u201d. Trident is a higher-level API in Storm that allows you to achieve exactly-once messaging semantics for most computations.\u00a0<\/span><\/p>\n<h3><span class=\"ez-toc-section\" id=\"Distributed_RPC\"><\/span><b>Distributed RPC<\/b><span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p><span style=\"font-weight: 400;\">Storm\u2019s primitives can be used for a variety of other purposes. Distributed RPC is one of the Storm\u2019s most fascinating applications, in which you parallelize the computation of intensive functions on the go.\u00a0<\/span><\/p>\n<h3><span class=\"ez-toc-section\" id=\"Conclusion\"><\/span><b>Conclusion\u00a0<\/b><span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p><span style=\"font-weight: 400;\">The Apache Storm provides various functions and services for computations. With its integrated queueing system and database system, everything becomes easy. It is a distributed, fault-tolerant, open-source computation system which can process streams of a variety of data in real-time. It provides guaranteed processing of data, which provides the ability to replay data that was not successful the first time it was processed.\u00a0<\/span><\/p>\n<p><span style=\"font-weight: 400;\">You can use multiple languages in Storm like Python and you can also use it in some situations such as Internet of Things (IoT), Fraud detection, Social analytics, Extraction, Transformation and Loading\u00a0 (ETL), Network monitoring, Search, and Mobile engagement from multiple platforms.<\/span><\/p>\n<p>Also read:<\/p>\n<p><a href=\"https:\/\/www.whizlabs.com\/blog\/docker-architecture-in-detail\/\">Docker Architecture in Detail<\/a><\/p>\n<p><a href=\"https:\/\/www.whizlabs.com\/blog\/understanding-mapreduce-in-hadoop-know-how-to-get-started\/\">Understanding MapReduce in Hadoop<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Apache Storm is a free and open source distributed real-time computation system. It\u00a0makes everything simple to process unbounded streams of data in a reliable manner. It is easy to use and works with any programming language.\u00a0Written mainly in the \u2018Clojure\u2019 and \u2018Java\u2019 programming languages, it makes use of \u2018Spouts\u2019 and \u2018Bolts\u2019 to run application-specific logic. The latest stable version is \u20182.2.0\u2019 which is a June 2020 release. Originally created by \u2018Nathan Marz\u2019 and team at \u2018Backtype\u2019, it was open sourced after being acquired by Twitter.\u00a0It is scalable, fast, fault-tolerant, guarantees that the data is processed and easy to set up [&hellip;]<\/p>\n","protected":false},"author":220,"featured_media":79935,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_uag_custom_page_level_css":"","site-sidebar-layout":"default","site-content-layout":"","ast-site-content-layout":"default","site-content-style":"default","site-sidebar-style":"default","ast-global-header-display":"","ast-banner-title-visibility":"","ast-main-header-display":"","ast-hfb-above-header-display":"","ast-hfb-below-header-display":"","ast-hfb-mobile-header-display":"","site-post-title":"","ast-breadcrumbs-content":"","ast-featured-img":"","footer-sml-layout":"","theme-transparent-header-meta":"","adv-header-id-meta":"","stick-header-meta":"","header-above-stick-meta":"","header-main-stick-meta":"","header-below-stick-meta":"","astra-migrate-meta-layouts":"default","ast-page-background-enabled":"default","ast-page-background-meta":{"desktop":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"ast-content-background-meta":{"desktop":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"footnotes":""},"categories":[1862],"tags":[4749,4748],"class_list":["post-79930","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-devops","tag-apache-storm-latest-version","tag-understanding-apache-storm"],"uagb_featured_image_src":{"full":["https:\/\/www.whizlabs.com\/blog\/wp-content\/uploads\/2021\/11\/Introduction-to-Apatche-Storm.png",560,315,false],"thumbnail":["https:\/\/www.whizlabs.com\/blog\/wp-content\/uploads\/2021\/11\/Introduction-to-Apatche-Storm-150x150.png",150,150,true],"medium":["https:\/\/www.whizlabs.com\/blog\/wp-content\/uploads\/2021\/11\/Introduction-to-Apatche-Storm-300x169.png",300,169,true],"medium_large":["https:\/\/www.whizlabs.com\/blog\/wp-content\/uploads\/2021\/11\/Introduction-to-Apatche-Storm.png",560,315,false],"large":["https:\/\/www.whizlabs.com\/blog\/wp-content\/uploads\/2021\/11\/Introduction-to-Apatche-Storm.png",560,315,false],"1536x1536":["https:\/\/www.whizlabs.com\/blog\/wp-content\/uploads\/2021\/11\/Introduction-to-Apatche-Storm.png",560,315,false],"2048x2048":["https:\/\/www.whizlabs.com\/blog\/wp-content\/uploads\/2021\/11\/Introduction-to-Apatche-Storm.png",560,315,false],"profile_24":["https:\/\/www.whizlabs.com\/blog\/wp-content\/uploads\/2021\/11\/Introduction-to-Apatche-Storm.png",24,14,false],"profile_48":["https:\/\/www.whizlabs.com\/blog\/wp-content\/uploads\/2021\/11\/Introduction-to-Apatche-Storm.png",48,27,false],"profile_96":["https:\/\/www.whizlabs.com\/blog\/wp-content\/uploads\/2021\/11\/Introduction-to-Apatche-Storm.png",96,54,false],"profile_150":["https:\/\/www.whizlabs.com\/blog\/wp-content\/uploads\/2021\/11\/Introduction-to-Apatche-Storm.png",150,84,false],"profile_300":["https:\/\/www.whizlabs.com\/blog\/wp-content\/uploads\/2021\/11\/Introduction-to-Apatche-Storm.png",300,169,false],"tptn_thumbnail":["https:\/\/www.whizlabs.com\/blog\/wp-content\/uploads\/2021\/11\/Introduction-to-Apatche-Storm-250x250.png",250,250,true],"web-stories-poster-portrait":["https:\/\/www.whizlabs.com\/blog\/wp-content\/uploads\/2021\/11\/Introduction-to-Apatche-Storm.png",560,315,false],"web-stories-publisher-logo":["https:\/\/www.whizlabs.com\/blog\/wp-content\/uploads\/2021\/11\/Introduction-to-Apatche-Storm.png",96,54,false],"web-stories-thumbnail":["https:\/\/www.whizlabs.com\/blog\/wp-content\/uploads\/2021\/11\/Introduction-to-Apatche-Storm.png",150,84,false]},"uagb_author_info":{"display_name":"Aditi Malhotra","author_link":"https:\/\/www.whizlabs.com\/blog\/author\/aditi\/"},"uagb_comment_info":714,"uagb_excerpt":"Apache Storm is a free and open source distributed real-time computation system. It\u00a0makes everything simple to process unbounded streams of data in a reliable manner. It is easy to use and works with any programming language.\u00a0Written mainly in the \u2018Clojure\u2019 and \u2018Java\u2019 programming languages, it makes use of \u2018Spouts\u2019 and \u2018Bolts\u2019 to run application-specific logic.&hellip;","_links":{"self":[{"href":"https:\/\/www.whizlabs.com\/blog\/wp-json\/wp\/v2\/posts\/79930","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.whizlabs.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.whizlabs.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.whizlabs.com\/blog\/wp-json\/wp\/v2\/users\/220"}],"replies":[{"embeddable":true,"href":"https:\/\/www.whizlabs.com\/blog\/wp-json\/wp\/v2\/comments?post=79930"}],"version-history":[{"count":4,"href":"https:\/\/www.whizlabs.com\/blog\/wp-json\/wp\/v2\/posts\/79930\/revisions"}],"predecessor-version":[{"id":79938,"href":"https:\/\/www.whizlabs.com\/blog\/wp-json\/wp\/v2\/posts\/79930\/revisions\/79938"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.whizlabs.com\/blog\/wp-json\/wp\/v2\/media\/79935"}],"wp:attachment":[{"href":"https:\/\/www.whizlabs.com\/blog\/wp-json\/wp\/v2\/media?parent=79930"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.whizlabs.com\/blog\/wp-json\/wp\/v2\/categories?post=79930"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.whizlabs.com\/blog\/wp-json\/wp\/v2\/tags?post=79930"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}