Storm入門簡介

  • 目錄
  • 前言:
    • 1、Storm簡介
    • 2、Storm與Hadoop的區別
    • 3、Storm核心組件
    • 4、Storm編程模型
    • 5、流式計算一般架構圖(重要)
    • 總結:

目錄

前言:

在介紹Storm之前,先介紹下離線計算。
離線計算:批量獲取數據、批量傳輸數據、周期性批量計算數據、數據展示
代表技術:Sqoop批量導入數據、HDFS批量存儲數據、MapReduce批量計算數據、Hive批量計算數據、azkaban任務調度
與之對應的就是流式計算即Storm的應用場景——流式計算。那么流式計算是什么呢?
流式計算:數據實時產生、數據實時傳輸、數據實時計算、實時展示。
代表技術:Flume實時采集數據、kafka實時數據存儲、Storm實時計算數據、redius實時結果緩存、持久化存儲(Mysql)。
一句話總結:將源源不斷產生的數據實時收集并實時計算,盡可能快的得到計算結果。

1、Storm簡介

Storm用來實時處理數據,特點:低延遲、高可用、分布式、可擴展、數據不丟失。提供簡單容易理解的接口,便于開發。

2、Storm與Hadoop的區別

? Storm處理的數據保存在內存中源源不斷Hadoop處理的數據保存在文件系統中,一批一批
? Storm的數據通過網絡傳輸進來;Hadoop的數據保存在磁盤中。
? Storm與Hadoop的編程模型相似

這里寫圖片描述

3、Storm核心組件

這里寫圖片描述
? Nimbus:負責資源分配和任務調度。
? Supervisor:負責接受nimbus分配的任務,啟動和停止屬于自己管理的worker進程。—通過配置文件設置當前supervisor上啟動多少個worker。
? Worker:運行具體處理組件邏輯的進程。Worker運行的任務類型只有兩種,一種是Spout任務,一種是Bolt任務。
? Task:worker中每一個spout或bolt的線程稱為一個task. 在storm0.8之后,task不再與物理線程對應,不同spout/bolt的task可能會共享一個物理線程,該線程稱為executor。Task=線程=executor


補充知識:
Zookeeper:保存任務分配的信息、心跳信息、元數據信息。
并發度:用戶指定的一個任務,可以被多個線程執行,并發度的數量等于線程的數量
Worker與topology:
一個worker只屬于一個topology,每個worker中運行的task只能屬于這個topology。 反之,一個topology包含多個worker,其實就是這個topology運行在多個worker上。
一個topology要求的worker數量如果不被滿足,集群在任務分配時,根據現有的worker先運行topology。如果當前集群中worker數量為0,那么最新提交的topology將只會被標識active,不會運行,只有當集群有了空閑資源之后,才會被運行。

4、Storm編程模型

這里寫圖片描述
? Topology:Storm中運行的一個實時應用程序的名稱。(拓撲)
? Spout:在一個topology中獲取源數據流的組件。接受外部數據源的組件,將外部數據源轉化成Storm內部的數據,以Tuple為基本的傳輸單元下發給Bolt
? Bolt:接受數據然后執行處理的組件,用戶可以在其中執行自己想要的操作。接受Spout發送的數據,或上游的bolt的發送的數據。根據業務邏輯進行處理。發送給下一個Bolt或者是存儲到某種介質上。介質可以是Redis可以是mysql,或者其他。
? Tuple:一次消息傳遞的基本單元,里面封裝了一個List對象,用來保存數據,理解為一組消息就是一個Tuple。
? Stream:表示數據的流向。
? 通常情況下spout會從外部數據源中讀取數據,然后轉換為topology內部的源數據。

5、流式計算一般架構圖(重要)

這里寫圖片描述
其中

  • flume用來獲取數據。
  • Kafka用來臨時保存數據。
  • Strom用來計算數據。
  • Redis是個內存數據庫,用來保存數據。

總結:

對于Storm來說首先你要了解以下幾個知識點:
1、離線計算和流式計算是什么以及對應的區別。
2、Storm是什么以及是干什么用的。
3、Storm與Hadoop的區別。
4、Storm的核心組件。(重點)
5、Storm的編程模型。(在新的文章中詳細介紹)
6、流式計算的一般架構圖。(重點)
7、Storm的應用場景及行業案例。
了解了以上的知識點,你就算是和博主一樣剛剛入門。下面將會圍繞上面的一些重要的知識點就行詳細的介紹(如編程模型以及對應的WC案例的分析:詳見:https://blog.csdn.net/qq_16633405/article/details/79835012)

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/456701.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/456701.shtml
英文地址,請注明出處:http://en.pswp.cn/news/456701.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

項目完成

完成示例項目 現在還需要的代碼包括三個方面,三個方面順序不分先后。 1.定義視圖2.定義URLconf3.定義模板 定義視圖 編寫booktest/views.py文件如下: from django.shortcuts import render from booktest.models import BookInfo#首頁,展…

前端模板預編譯技術

什么是前端模板預編譯 前端模板預編譯通過預編譯技術讓前端模板突破瀏覽器限制,實現后端模板一樣的同步“文件”加載能力。它采用目錄來組織維護前端模板,從而讓前端模板實現工程化管理,最終保證前端模板在復雜單頁 web 應用下的可維護性。同…

Python如何生成windows可執行的exe文件

打包工具 pyinstaller 安裝pyinstaller 如果你的網絡穩定,通常直接使用下面的命令安裝即可: pip install pyinstaller 當然了,你也可以下載pyinstaller源碼包,然后進入包目錄執行下面的命令,同樣可以安裝&#xff…

招商銀行信用卡中心華泰證券暑期實習軟開筆試小結

白菜自動化小碩一枚,18屆,下學期就正式要找工作了,沒有實習經驗,感覺心慌慌。現在學校里已經開始各種提前招實習,內推了,so暑假想提前試試水,投一投暑期實習。 看到心水的單位就投一投&#xff…

理想的程序猿

出處 | http://guoze.me 最近看到的一篇不錯的文章,分享一下。 我算是靠坑蒙拐騙進了程序員的門,然后一路狂奔。26歲之前幾乎沒有任何寫代碼的經驗,研究生畢業卻意外選擇了一家不可能提供培訓的初創公司,在每日擔憂公司倒閉、害…

node08-express

目錄:node01-創建服務器 node02-util node03-events node04-buffer node05-fs node06-path node07-http node08-express node09-cookie express模塊: 1 /*2 * express是一個應用框架3 * 1、路由4 * 2、中間件5 * 3、模板引擎6 * */7 8 var express requ…

【python】1. 兩數之和

給定一個整數數組 nums 和一個目標值 target,請你在該數組中找出和為目標值的那 兩個 整數,并返回他們的數組下標。 你可以假設每種輸入只會對應一個答案。但是,你不能重復利用這個數組中同樣的元素。 示例: 給定 nums [2, 7, 11, 15], t…

The user specified as a definer (#39;root#39;@#39;%#39;) does not exist

通常是因為root用戶對全局host無訪問權限。因此僅僅要給root用戶加入一個訪問權限就可以。解決的方法: 登陸mysql 。運行 mysql -u root -pPasswd mysql >grant all privileges on *.* to root"%" identified by "Passwd…

Java基礎常見筆試題總結

以下是自己總結的一些Java常見的基礎知識題,答案僅供參考,如有異議請指出。一直保持更新狀態。 1.什么是Java虛擬機?為什么Java被稱作是“平臺無關的編程語言”? Java虛擬機是一個可以執行Java字節碼的虛擬機進程。Java源文件被編…

ThreadLocal的練習代碼

場景: 有三個小孩兒,買了一個變形金剛玩具(Transformer).... 三個小孩都爭著玩這個玩具....沒有一個人可以玩... 第一種方式:每個人各玩一會.... 第二種方式:再買兩個玩具,一個人玩一個. 每個小孩都當成一個線程.三個小孩就有三個線程. Child.java 2 3 import java.util.Random…

nginx+uwsgi部署Django

本篇文章主要介紹了解決nginxuwsgi部署Django的所有問題(小結),小編覺得挺不錯的,現在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧 最近,自己暑假寫的小項目也算完畢了,想著投放到自己云服務器上&#xff0…

$(document).scrollTop()與$(window).scrollTop()

$(document).scrollTop() 獲取垂直滾動的距離 即當前滾動的地方的窗口頂端到整個頁面頂端的距離 要獲取頂端 只需要獲取到scrollTop()0的時候 就是頂端了 要獲取底端 只要獲取$(document).scrollTop()>(document).height()?(window).height() 就可以知道已經…

各種機器學習開源項目精選TOP30

8800個機器學習開源項目為你精選TOP30! 授權自AI科技大本營(ID: rgznai100) 本文共圖文結合,建議閱讀5分鐘。 本文為大家帶來了30個廣受好評的機器學習開源項目。 最近,Mybridge發布了一篇文章,對比了過去一年中機…

Python中is與==的使用區別詳解

>>> a 1000 >>> b 1000 >>> print(id(a),id(b)) 2689566689904 2689566688880 >>> a ,b 1000,1000 >>> print(id(a),id(b)) 2689566689968 2689566689968 一行執行的用一個id地址 分行執行用兩個地址

解決:Please specify a different SDK name--PyCharm報錯

這個問題出現的原因是因為PyCharm中存在相同名字的虛擬環境變量。 本人的出錯原因是,一直使用PyCharm的默認設置來建立工程,所以每個工程都建立了自己獨立的虛擬環境。 我個人刪除了一些工程后,又建立相同名字的工程。所以才會出現存在相同…

Tomcat控制臺輸出到文件

為什么80%的碼農都做不了架構師?>>> 修改startup.bat call "%EXECUTABLE%" start %CMD_LINE_ARGS% 為 call "%EXECUTABLE%" run %CMD_LINE_ARGS% >> ..\logs\test.log 轉載于:https://my.oschina.net/cccyb/blog/886047

常見算法詳解(原理及代碼實現Python版本)

文章目錄前言1、冒泡排序2、選擇排序3、插入排序4、希爾排序5、快速排序6、歸并排序7、二分法查找總結前言 最近復習了下常見的算法,在這里手動再寫一遍,權當加深自己的印象。代碼實現用的是python3.6版本。 1、冒泡排序 原理: 冒泡排序&a…

解決:pycharm運行程序時在Python console窗口中運行 ?????????????1?????

解決:pycharm運行程序時在Python c 問題: 在pycharm中右鍵點擊run運行程序,發現沒有打開run窗口運行,而是在Python console窗口中運行的。 解決方法: 打開菜單欄 run->edit configurations, 把下圖中的…

Autowire異常

Autowire異常主要由三個情況發生的 1. 你的ServiceImpl必須以Service或Component注解才行。 2. 自動寫入的時候把接口寫成實現類了,例如 Autowired private BrandServiceImpl brandServiceImpl; 應該是 Autowired private BrandService brandService; 3. 在Dao 類上…

[轉載] 全方位提升網站打開速度:前端、后端、新的技術

原文地址:Building a Shop with Sub-Second Page Loads: Lessons Learned原文作者:Erik Witt譯文出自:掘金翻譯計劃譯者:luoyaqifei校對者:Romeo0906,L9m全方位提升網站打開速度:前端、后端、新…