Apache - Storm
生活随笔
收集整理的這篇文章主要介紹了
Apache - Storm
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
一、Apache Storm
Storm是一個分布式的,可靠的,容錯的數據流處理系統。Storm集群的輸入流由一個被稱作spout的組件管理,spout把數據傳遞給bolt,bolt要么把數據保存到某種存儲器,要么把數據傳遞給其它的bolt。一個Storm集群就是在一連串的bolt之間轉換spout傳過來的數據。
1、Storm組件
2、Zookeeper
Zookeeper是完成Supervisor和Nimbus之間協調的服務。而應用程序實現實時的邏輯則被封裝進Storm中的“topology”。topology則是一組由Spouts(數據源)和Bolts(數據操作)通過Stream Groupings進行連接的圖。3、Spout
Spout從來源處讀取數據并放入topology。Spout分成可靠和不可靠兩種;當Storm接收失敗時,可靠的Spout會對tuple(元組,數據項組成的列表)進行重發;而不可靠的Spout不會考慮接收成功與否只發射一次。而Spout中最主要的方法就是nextTuple(),該方法會發射一個新的tuple到topology,如果沒有新tuple發射則會簡單的返回。4、Bolt
Topology中所有的處理都由Bolt完成。Bolt從Spout中接收數據并進行處理,如果遇到復雜流的處理也可能將tuple發送給另一個Bolt進行處理。而Bolt中最重要的方法是execute(),以新的tuple作為參數接收。不管是Spout還是Bolt,如果將tuple發射成多個流,這些流都可以通過declareStream()來聲明。5、Stream Groupings
Stream Grouping定義了一個流在Bolt任務中如何被切分。Shuffle grouping:隨機分發tuple到Bolt的任務,保證每個任務獲得相等數量的tuple。 Fields grouping:根據指定字段分割數據流,并分組。例如,根據“user-id”字段,相同“user-id”的元組總是分發到同一個任務,不同“user-id”的元組可能分發到不同的任務。 Partial Key grouping:根據指定字段分割數據流,并分組。類似Fields grouping。 All grouping:tuple被復制到bolt的所有任務。這種類型需要謹慎使用。 Global grouping:全部流都分配到bolt的同一個任務。明確地說,是分配給ID最小的那個task。 None grouping:無需關心流是如何分組。目前,無分組等效于隨機分組。但最終,Storm將把無分組的Bolts放到Bolts或Spouts訂閱它們的同一線程去執行(如果可能)。 Direct grouping:這是一個特別的分組類型。元組生產者決定tuple由哪個元組處理者任務接收。 Local or shuffle grouping:如果目標bolt有一個或多個任務在同一工作進程,tuples 會打亂這些進程內的任務。否則,這就像一個正常的 Shuffle grouping。二、Apache-strom 必須要求Python 2.6以上
1、升級 Python 官方下載地址:
wget http://www.python.org/ftp/python/2.7.6/Python-2.7.6.tgz wget https://www.python.org/ftp/python/3.6.0/Python-3.6.0.tgz # tar -xf Python-3.6.0.tgz # mv Python-3.6.0 /usr/local/python # cd /usr/local/python # ./configure --prefix=/usr/local/python # make # make install # mv /usr/bin/python /usr/bin/python_old # ln -s /usr/local/python/bin/python3.6 /usr/bin/python # python -V
2、如發現yum 異常則, 編輯 /usr/bin/yum 文件
將文件頭部的 #!/usr/bin/python 改為以下:(因為系統默認是2.6) #!/usr/bin/python2.6三、storm 安集群配置;(具體根據線上環境資源進行設置)
系統:Centos6.7 內核:2.6.32-573.el6.x86_64 安裝目錄:/opt/storm 數據日志目錄:/opt/storm/{data,logs} 用戶組權限:deploy 機器hostname需要在hosts里面配置關系映射: zoo1 - 10.207.101.101 zoo2 - 10.207.101.102 zoo3 - 10.207.101.103四、集群說明
主節點(nimbus) zks1 任務節點(supervisor) zks2 zks3 等 注:storm主節點、任務節點安裝配置完全一致。1、下載安裝配置:官方下載地址:
http://mirrors.hust.edu.cn/apache/storm/ http://www-eu.apache.org/dist/storm/apache-storm-1.0.3/apache-storm-1.0.3.tar.gz http://mirrors.hust.edu.cn/apache/storm/apache-storm-1.0.2/apache-storm-1.0.2.tar.gz # tar -xf apache-storm-1.0.2.tar.gz # cd apache-storm# cat apache-storm-0.9.6/conf/storm.yaml |grep -v ^# |grep -v ^$storm.zookeeper.servers: - "10.207.101.101" - "10.207.101.102" - "10.207.101.103" nimbus.host: "10.207.101.101" storm.zookeeper.port: 2181 ui.port: 8090 storm.local.dir: "/opt/apache-storm-0.9.6/data" supervisor.slots.ports: - 6700 - 6701 - 6702 - 6703 - 6704 worker.childopts: "-Xmx2g"# worker.heap.memory.mb: 2048 /** 調整分配給每個 worker 的內存,關于內存的調節,上文已有描述 */logviewer.port: 18090 topology.max.spout.pending: 1000 topology.message.timeout.secs: 300 storm.messaging.netty.server_worker_threads: 102、主節點啟動測驗:
啟動nimbus # nohup ./bin/storm nimbus >/dev/null 2>&1 & 啟動 UI # nohup ./bin/storm ui >/dev/null 2>&1 &3、任務節點啟動腳步
# cat supervisor_logviewer.shnohup ./bin/storm supervisor >/dev/null 2>&1 & nohup ./bin/storm logviewer >/dev/null 2>&1 &4、進程檢測
# ps -ef|grep storm # netstat -ano |grep 8090wKioL1j7QCmz-bBgAAEEFLYWMiA134.jpg-wh_50
轉載于:https://www.cnblogs.com/sharesdk/p/8794461.html
總結
以上是生活随笔為你收集整理的Apache - Storm的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 封装一个jquery库
- 下一篇: python 进程间通信(上)