Hadoop之Storm基礎


1、離線計算是什么
  離線計算:批量獲取數據,批量傳輸數據,周期性批量計算數據,數據展示
  代表技術:sqoop批量導入數據,hdfs批量存儲數據,mapreduce批量計算數據,hive批量計算數據,***任務調度

2、流式就算是什么
  流式計算:數據實時產生,數據實時傳輸,數據實時計算,實時展示
  代表技術:flume實時獲取數據,kafka實時數據存儲,storm/jstorm實時數據計算,redies實時結果緩存
  ----將源源不斷的數據實時收集,並實時計算,盡可能得到計算結果

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

4、storm和hadoop的區別
  1)storm用於實時計算,hadoop用於離線計算
  2)storm處理的數據保存在內存中,源源不斷,hadoop處理的數據保存在文件系統中,一批一批
  3)storm的數據通過網絡傳輸進來,hadoop的數據保存在磁盤中
  storm hadoop
  應用名稱 topology job
  編程接口 spout/bolt Mapper/Reducer

5、storm應用場景及行業案例
  運用場景
  日志分析 管道系統 消息轉化器
  典型案例
    1、一淘-實時分析系統:實時分析用戶的屬性,並反饋給搜索引擎
    2、攜程-網站性能監控:實時分析系統監控攜程網的網站性能
    3、阿里媽媽-用戶畫像:實時計算用戶的興趣數據

6、Storm的核心組件
  1、Nimbus:負責資源分配和任務調度,對任務監控
  2、Superviser:當前物理機的管理者,負責接受nimbus分配的任務,啟動和停止屬於自己管理的worker進程
    worker的數量是根據端口來的 ----通過配置文件設置當前superviser上啟動多少個worker
  3、worker:執行具體任務的組件,任務類型有兩種,spout任務,bolt任務,一個worker
    中可能同時存在 運行具體處理組件邏輯進程
  4、task:worker中每一個spout/bolt的線程稱為一個task ,每個線程默認叫做executor

7、Storm編程模型
  1、topology:storm中運行的一個實例應用程序的名稱。
  2、spout:在一個topology中獲取源數據流的文件
    通常情況下spout會從外部數據源中讀取數據,然后轉換為topology內部源數據
  3、bolt:接受數據然后執行處理的組件,用戶可以在其中執行自己想要的邏輯
  4、tuple:一次消息傳遞的基本單元,理解為一組消息就是一個tuple
  5、stream:表示數據的流向

8、編程模型
  datasource:外部數據源
  spout:接收外部數據源的組件,將外部數據源轉化為storm的內部數據源
      以tuple為基本的傳輸單元下發給bolt
  bolt:接收spout發送的數據,或者上游的bolt的發送數據,根據業務邏輯自行處理,發送給下一個bolt
    或者是存儲在某種介質上,介質可以是redis或者mysql。。
  tuple:storm內部中數據傳輸的基本單元,里面封裝了一個list對象,用來保存數據
    streamgrouping:數據分組策略
    7種,shufflegrouping(random函數),non grouping(random函數),fieldgrouping(hash取模)
    local or shufflegrouping 本地或者隨機,優先本地

9、並發度
  用戶指定的一個任務,可以被多個線程執行,並發度的數量等於線程的數量
  一個任務的多個線程,,會被運行在多個worker(jvm)上,類似於一種平均算法的負載均衡策略
  盡可能減少網絡io,和hadoop中mapreduce中的本地計算道理是一樣的

10、架構
  nimbus;任務分配
  superviser:接收任務,並啟動管理worker,worker的數量是根據端口號決定的
  worker:執行任務的具體組件(其實就是一個jvm),可以執行兩種類型的任務,spout或者bolt任務
  task:task=線程=executor ,一個task屬於一個spout或者bolt並發任務
  zookeeper:保存任務的信息

11、流式計算的一般架構
  網站系統——Flume集群(獲取數據)——kafka集群(用來臨時保存數據)——storm集群(用來計算數據)——Redis集群(內存數據庫,保存數據)


12、Storm常用命令
  有許多簡單且有用的命令可以用來管理拓撲,它們可以提交、殺死、禁用、再平衡拓撲。
  1)、提交任務命令格式:storm jar 【jar路徑】 【拓撲包名.拓撲類名】 【拓撲名稱】
    bin/storm jar examples/storm-starter/storm-starter-topologies-0.10.0.jar storm.starter.WordCountTopology wordcount
  2)、殺死任務命令格式:storm kill 【拓撲名稱】 -w 10(執行kill命令時可以通過-w [等待秒數]指定拓撲停用以后的等待時間)
    storm kill topology-name -w 10
  3)、 停用任務命令格式:storm deactivte 【拓撲名稱】
    storm deactivte topology-name
    我們能夠掛起或停用運行中的拓撲。當停用拓撲時,所有已分發的元組都會得到處理,但是spouts的nextTuple方法
    不會被調用。銷毀一個拓撲,可以使用kill命令。它會以一種安全的方式銷毀一個拓撲,首先停用拓撲,
    在等待拓撲消息的時間段內允許拓撲完成當前的數據流。
  4)、啟用任務命令格式:storm activate【拓撲名稱】
    storm activate topology-name
  5)、 重新部署任務命令格式:storm rebalance 【拓撲名稱】
    storm rebalance topology-name
    再平衡使你重分配集群任務。這是個很強大的命令。比如,你向一個運行中的集群增加了節點。再平衡命令將會
    停用拓撲,然后在相應超時時間之后重分配工人,並重啟拓撲。

13、查看日志信息
  查看nimbus的日志信息
    在nimbus的服務器上
    cd /export/servers/storm/logs
    tail -100f /export/servers/storm/logs/nimbus.log
  查看ui運行日志信息
    在ui的服務器上,一般和nimbus一個服務器
    cd /export/servers/storm/logs
    tail -100f /export/servers/storm/logs/ui.log
  查看supervisor運行日志信息
    在supervisor服務上
    cd /export/servers/storm/logs
    tail -100f /export/servers/storm/logs/supervisor.log
  查看supervisor上worker運行日志信息
    在supervisor服務上
    cd /export/servers/storm/logs
    tail -100f /export/servers/storm/logs/worker-6702.log





免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM