日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

大数据实战项目必备技能三:storm

發(fā)布時間:2024/3/13 编程问答 63 豆豆
生活随笔 收集整理的這篇文章主要介紹了 大数据实战项目必备技能三:storm 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

導讀:?Storm是一個分布式計算框架,主要使用Clojure與Java語言編寫,最初是由Nathan Marz帶領Backtype公司團隊創(chuàng)建,在Backtype公司被Twitter公司收購后進行開源。最初的版本是在2011年9月17日發(fā)行,版本號0.5.0。

2013年9月,Apache基金會開始接管并孵化Storm項目。Apache Storm是在Eclipse Public License下進行開發(fā)的,它提供給大多數企業(yè)使用。經過1年多時間,2014年9月,Storm項目成為Apache的頂級項目。目前,Storm的最新版本1.1.0。

Storm是一個免費開源的分布式實時計算系統(tǒng)。Storm能輕松可靠地處理無界的數據流,就像Hadoop對數據進行批處理;

Storm與Hadoop的區(qū)別

Storm用于實時計算,Hadoop用于離線計算。

Storm處理的數據保存在內存中,源源不斷;Hadoop處理的數據保存在文件系統(tǒng)中,一批一批處理。

Storm的數據通過網絡傳輸進來;Hadoop的數據保存在磁盤中。

Storm與Hadoop的編程模型相似

Storm hadoop 角色 Nimbus JobTracker Supervisor TaskTracker Worker Child 應用名稱 Topology Job 編程接口 Spout/Bolt Mapper/Reducer hadoop的相關名稱

Job:任務名稱

JobTracker:項目經理(JobTracker對應于NameNode;JobTracker是一個master服務,軟件啟動之后JobTracker接收Job,負責調度Job的每一個子任務task運行于TaskTracker上,并監(jiān)控它們,如果發(fā)現(xiàn)有失敗的task就重新運行它。)

TaskTracker:開發(fā)組長(TaskTracker對應于DataNode;TaskTracker是運行在多個節(jié)點上的slaver服務。TaskTracker主動與JobTracker通信,接收作業(yè),并負責直接執(zhí)行每一個任務。)

Child:負責開發(fā)的人員

Mapper/Reduce:開發(fā)人員中的兩種角色,一種是服務器開發(fā)、一種是客戶端開發(fā)

storm相關名稱

Topology:任務名稱

Nimbus:項目經理

Supervisor:開組長

Worker:開人員

Spout/Bolt:開人員中的兩種角色,一種是服務器開發(fā)、一種是客戶端開發(fā)

Storm應用場景

Storm用來實時計算源源不斷產生的數據,如同流水線生產,Storm能用到很多場景中,包括:實時分析、在線機器學習、連續(xù)計算等。

推薦系統(tǒng):實時推薦,根據下單或加入購物車推薦相關商品

金融系統(tǒng):實時分析股票信息數據

預警系統(tǒng):根據實時采集數據,判斷是否到了預警閾值。

網站統(tǒng)計:實時銷量、流量統(tǒng)計,如淘寶雙11效果圖

Sotrm特點

適用場景廣泛:Storm可以適用實時處理消息、更新數據庫、持續(xù)計算等場景。

可伸縮性高:Storm的可伸縮性可以讓Storm每秒處理的消息量達到很高。擴展一個實時計算任務,你所需要做的就是加機器并且提高這個計算任務的并行度。Storm使用Zookeeper來協(xié)調機器內的各種配置使得Storm的集群可以很容易的擴展。

保證無數據丟失:Storm保證所有的數據都被處理。

異常健壯:Storm集群非常容易管理,輪流重啟節(jié)點不影響應用。

容錯性好:在消息處理過程中出現(xiàn)異常,Storm會進行重試。

Storm編程模型

storm01.png

元組(Tuple

元組(Tuple),是消息傳遞的基本單元,是一個命名的值列表,元組中的字段可以是任何類型的對象。Storm使用元組作為其數據模型,元組支持所有的基本類型、字符串和字節(jié)數組作為字段值,只要實現(xiàn)類型的序列化接口就可以使用該類型的對象。元組本來應該是一個key-value的Map,但是由于各個組件間傳遞的元組的字段名稱已經事先定義好,所以只要按序把元組填入各個value即可,所以元組是一個value的List。

流(Stream)

流是Storm的核心抽象,是一個無界的元組系列,源源不斷傳遞的元組就組成了流,在分布式環(huán)境中并行地進行創(chuàng)建和處理

水龍頭(Spout)

Spout是拓撲的流的來源,是一個拓撲中產生源數據流的組件。通常情況下,Spout會從外部數據源中讀取數據,然后轉換為拓撲內部的源數據。

Spout可以是可靠的,也可以是不可靠的。如果Storm處理元組失敗,可靠的Spout能夠重新發(fā)射,而不可靠的Spout就盡快忘記發(fā)出的元組。

Spout可以發(fā)出超過一個流。

Spout的主要方法是nextTuple()。NextTuple()會發(fā)出一個新的Tuple到拓撲,如果沒有新的元組發(fā)出,則簡單返回。

Spout的其他方法是ack()和fail()。當Storm檢測到一個元組從Spout發(fā)出時,ack()和fail()會被調用,要么成功完成通過拓撲,要么未能完成。Ack()和fail()僅被可靠的Spout調用。IRichSpout是Spout必須實現(xiàn)的接口。

轉接頭(Bolt)

在拓撲中所有處理都在Bolt中完成,Bolt是流的處理節(jié)點,從一個拓撲接收數據,然后執(zhí)行進行處理的組件。Bolt可以完成過濾、業(yè)務處理、連接運算、連接與訪問數據庫等任何操作。

Bolt是一個被動的角色,七接口中有一個execute()方法,在接收到消息后會調用此方法,用戶可以在其中執(zhí)行自己希望的操作。

Bolt可以完成簡單的流的轉換,而完成復雜的流的轉換通常需要多個步驟,因此需要多個Bolt。

Bolt可以發(fā)出超過一個的流。

拓撲(Topology)

拓撲(Topology)是Storm中運行的一個實時應用程序,因為各個組件間的消息流動而形成邏輯上的拓撲結構。

把實時應用程序的運行邏輯打成jar包后提交到Storm的拓撲(Topology)。Storm的拓撲類似于MapReduce的作業(yè)(Job)。其主要的區(qū)別是,MapReduce的作業(yè)最終會完成,而一個拓撲永遠都在運行直到它被殺死。一個拓撲是一個圖的Spout和Bolt的連接流分組。

Storm核心組件

nimbus是整個集群的控管核心,負責topology的提交、運行狀態(tài)監(jiān)控、任務重新分配等工作。

zk就是一個管理者,監(jiān)控者。

總體描述:nimbus下命令(分配任務),zk監(jiān)督執(zhí)行(心跳監(jiān)控,worker、supurvisor的心跳都歸它管),supervisor領旨(下載代碼),招募人馬(創(chuàng)建worker和線程等),worker、executor就給我干活!task就是具體要干的活。

主控節(jié)點與工作節(jié)點

Storm集群中有兩類節(jié)點:主控節(jié)點(Master Node)和工作節(jié)點(Worker Node)。其中,主控節(jié)點只有一個,而工作節(jié)點可以有多個。

Nimbus進程與Supervisor進程

主控節(jié)點運行一個稱為Nimbus的守護進程類似于Hadoop的JobTracker。Nimbus負責在集群中分發(fā)代碼,對節(jié)點分配任務,并監(jiān)視主機故障。

每個工作節(jié)點運行一個稱為Supervisor的守護進程。Supervisor監(jiān)聽其主機上已經分配的主機的作業(yè),啟動和停止Nimbus已經分配的工作進程。

流分組(Stream grouping)

流分組,是拓撲定義中的一部分,為每個Bolt指定應該接收哪個流作為輸入。流分組定義了流/元組如何在Bolt的任務之間進行分發(fā)。Storm內置了8種流分組方式。

工作進程(Worker)

Worker是Spout/Bolt中運行具體處理邏輯的進程。一個worker就是一個進程,進程里面包含一個或多個線程。

執(zhí)行器(Executor)

一個線程就是一個executor,一個線程會處理一個或多個任務。

任務(Task)

一個任務就是一個task。

實時計算常用架構圖

后臺系統(tǒng) -->Flume集群-->Kafka集群-->Storm集群-->Redis集群

Flume獲取數據。

Kafka臨時保存數據。

Strom計算數據。

Redis是個內存數據庫,用來保存數據。

Storm的核心概念

Storm 計算結構中的幾個核心概念為?topology,stream,spout,bolt,下面我們將依次介紹。

1.Topology

Topology 是 storm 中最核心的概念,其是運行在 storm 集群上的一個實時計算應用,相當于 hadoop 中的一個 job,區(qū)別于 job 的時,job 會有明確的開始和結束,而 topology 由于實時的流式計算的特殊性,從啟動的那一刻起會永遠的運行下去,直到手動停止。

Topology 由 stream,spouts,bolts 組成,可以描述為一個有向無環(huán)圖,如下:

圖一 topology 示例

2.Stream

Stream 是 storm 中對數據流的抽象,是由無限制的 tuple 組成的序列。Tuple 可以理解為包含一個或多個鍵值對的 hash。Tuples 在 stream 中流經 bolts,被逐步處理,最終得到預設的結果。

Stream 可比作一條源源不絕的河流,tuple 就是組成這條河流的無數水滴。每一個 stream 在 storm 中都有一個唯一標示的 id。

3.Spout

從圖一可以看出,spout 是一個 topology 的數據源,負責連接數據源,并將數據轉化為 tuple emit 到 topology中,經由 bolts 處理。

Spout 提供了一對核心方法來保障 storm 在數據沒有被正確處理的情況下,不會被丟棄,仍能被重新處理,當然這是可選的,我們也可以不關心 tuple 是否被正確的處理,只負責向topology 中 emit 數據(在某些場景下可能不需要)。具體實現(xiàn)原理在后文會詳細介紹。

Storm + Kakfa 是很常見的組合,storm提供了storm-kafka擴展,封裝了多個可用的 kafka spouts 供直接使用,相關文檔可以參考這里

4.Bolt

Bolt 是 topology 中的數據處理單元,每個 bolt 都會對 stream 中的 tuple 進行數據處理。復雜的數據處理邏輯一般拆分成多個簡單的處理邏輯交由每個 Bolt 負責。

Bolt 可以執(zhí)行豐富的數據處理邏輯,如過濾,聚合,鏈接,數據庫操作等等。

Bolt 可以接受任意個數據流中的 tuples,并在對數據進行處理后選擇性的輸出到多個流中。也就是說,bolt 可以訂閱任意數量的spouts 或其他 bolts emit 的數據流,這樣最終形成了復雜的數據流處理網絡,如圖一。

書籍介紹

內容簡介 · · · · · ·

本書由基礎知識、安裝與部署、研發(fā)與維護、進階知識、企業(yè)應用5個模塊構成,并細分為20個章節(jié),其中“基礎知識”6章、“安裝與部署”4章、“研發(fā)與維護”4章、“進階知識”5章、“企業(yè)應用”1章,分別介紹了Storm的安裝與配置、Storm的基本原理、Topology組件、Spout組件、Bolt組件、ZooKeeper集群、實戰(zhàn)環(huán)節(jié)等內容,包括理論基礎、環(huán)境搭建、研發(fā)準備、應用案例等。

本書理論聯(lián)系實際,通過大量實例分析,讓讀者在較短的時間內掌握Storm的使用,搭建并研發(fā)出自己的基于Storm的大數據處理平臺。

本書適合所有大數據處理、實時流數據處理、Storm的開發(fā)者或愛好者,也適合高等院校和培訓學校相關專業(yè)的師生參考使用

內容簡介:

微軟搜索技術部門高級研發(fā)工程師實戰(zhàn)經驗分享

從源代碼的角度深入剖析Storm設計與實現(xiàn)

學習如何實現(xiàn)和高效利用“實時的Hadoop”

大數據處理是當前計算機科技的熱點,而流式實時大數據處理更是這皇冠上璀璨的明珠。實時流數據處理在搜索引擎、社交網絡、電商網站、廣告平臺等領域有著相當廣泛的應用。Storm是極其高效、靈活、高擴展的流式數據處理平臺。它被Twitter、Taobao、Yahoo、Groupon等公司采用。

本書由微軟公司互聯(lián)網工程院經驗豐富的一線程序員操刀編寫,包含很多實戰(zhàn)經驗和使用心得,很好地結合了代碼分析和應用實例。本書對于進行流式數據處理的研究、Storm的深入理解以及實際應用都有很好的參考價值。

內容簡介:《Storm分布式實時計算模式》全書分為10章:

第1章介紹使用Storm建立一個分布式流式計算應用所涉及的核心概念,包括Storm的數據結構、開發(fā)環(huán)境的搭建,以及Storm程序的開發(fā)和調試技術等;

第2章詳細講解Storm集群環(huán)境的安裝和搭建,以及如何將topology部署到分布式環(huán)境中;

第3章通過傳感器數據實例詳細介紹Trident topology;T

第4章講解如何使用Storm和Trident進行實時趨勢分析;

第5章介紹如何使用Storm進行圖形分析,將數據持久化存儲在圖形數據庫中,并且查詢數據來發(fā)現(xiàn)其中潛在的聯(lián)系;;

第6章講解如何在Storm上使用遞歸實現(xiàn)一個典型的人工智能算法;

第7章演示集成Storm和非事務型系統(tǒng)的復雜性,通過集成Strom和開源探索性分析架構Druid,實現(xiàn)一個可配置的實時系統(tǒng)來分析金融事件。

第8章探討Lambda體系結構的實現(xiàn)方法,講解如何將批處理機制和實時處理引擎結合起來構建一個可糾錯的分析系統(tǒng);

第9章 講解如何將Pig腳本轉化為topology并且使用Storm-YARN部署topology,將批處理系統(tǒng)轉化為實時系統(tǒng);

第10章 介紹如何在云服務提供商提供的主機環(huán)境下部署和運行Storm。

今天就分享到這里,如果大家覺得這些內容有用的話,希望大家多多關注,最后,送大家一碗雞湯,我先干為敬:

總有許多事,需要你一個人扛。別畏懼孤獨,它能幫你劃清內心的清濁,是你無法拒絕的命運歷程;

別躲避困苦,莫讓冷世的塵埃,冰封你的笑容,遲滯你的步履。走得越久,時光越老,人心越淡。

忘不掉昨天,它就是束縛你的陰影;向往著明天,你才能描繪它的模樣。

對大數據感興趣的朋友可以加我的群? 615997810? 一起交流學習,還有免費資料可以領取?

轉載于:https://my.oschina.net/u/3798384/blog/1837292

總結

以上是生活随笔為你收集整理的大数据实战项目必备技能三:storm的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。