您好,登錄后才能下訂單哦!
安裝包準(zhǔn)備
官網(wǎng)下載最新穩(wěn)定版本,題主下載的是apache-storm-0.9.5.tar.gz
角色分配
主機(jī)名 | IP | 角色 |
hadoop001 | 192.168.0.1 | Nimbus |
hadoop002 | 192.168.0.2 | Supervisor |
hadoop003 | 192.168.0.2 | Supervisor |
3.1 安裝Strom集群首先要搭建ZooKeeper集群,由于Zookeeper搭建相對(duì)簡(jiǎn)單,不再介紹,我們這里zookeeper為hadoop001:2181,hadoop002:2181,hadoop003:2181
3.2 解壓安裝包到指定目錄下,這里為/opt下。
3.3 添加環(huán)境變量到/home/you-user-name/.bashrc
export STORM_HOME=/opt/storm
export PATH=$STORM_HOME/bin:$PATH
export CLASSPATH=$STROM_HOME/lib:$CLASSPATH
3.4 修改Storm配置文件
配置項(xiàng) 配置說(shuō)明
storm.zookeeper.servers ZooKeeper服務(wù)器列表
storm.zookeeper.port ZooKeeper連接端口
storm.local.dir storm使用的本地文件系統(tǒng)目錄(必須存在并且storm進(jìn)程可讀寫)
storm.cluster.mode Storm集群運(yùn)行模式([distributed|local])
storm.local.mode.zmq Local模式下是否使用ZeroMQ作消息系統(tǒng),如果設(shè)置為false則使用java消息系統(tǒng)。默認(rèn)為false
storm.zookeeper.root ZooKeeper中Storm的根目錄位置
storm.zookeeper.session.timeout 客戶端連接ZooKeeper超時(shí)時(shí)間
storm.id 運(yùn)行中拓?fù)涞膇d,由storm name和一個(gè)唯一隨機(jī)數(shù)組成。
nimbus.host nimbus服務(wù)器地址
nimbus.thrift.port nimbus的thrift監(jiān)聽(tīng)端口
nimbus.childopts 通過(guò)storm-deploy項(xiàng)目部署時(shí)指定給nimbus進(jìn)程的jvm選項(xiàng)
nimbus.task.timeout.secs 心跳超時(shí)時(shí)間,超時(shí)后nimbus會(huì)認(rèn)為task死掉并重分配給另一個(gè)地址。
nimbus.monitor.freq.secs nimbus檢查心跳和重分配任務(wù)的時(shí)間間隔.注意如果是機(jī)器宕掉nimbus會(huì)立即接管并處理。
nimbus.supervisor.timeout.secs supervisor的心跳超時(shí)時(shí)間,一旦超過(guò)nimbus會(huì)認(rèn)為該supervisor已死并停止為它分發(fā)新任務(wù).
nimbus.task.launch.secs task 啟動(dòng)時(shí)的一個(gè)特殊超時(shí)設(shè)置.在啟動(dòng)后第一次心跳前會(huì)使用該值來(lái)臨時(shí)替代nimbus.task.timeout.secs.
nimbus.reassign 當(dāng)發(fā)現(xiàn)task失敗時(shí)nimbus是否重新分配執(zhí)行。默認(rèn)為真,不建議修改。
nimbus.file.copy.expiration.secs nimbus判斷上傳/下載鏈接的超時(shí)時(shí)間,當(dāng)空閑時(shí)間超過(guò)該設(shè)定時(shí)nimbus會(huì)認(rèn)為鏈接死掉并主動(dòng)斷開(kāi)
ui.port Storm UI的服務(wù)端口
drpc.servers DRPC服務(wù)器列表,以便DRPCSpout知道和誰(shuí)通訊
drpc.port Storm DRPC的服務(wù)端口
supervisor.slots.ports supervisor上能夠運(yùn)行workers的端口列表.每個(gè)worker占用一個(gè)端口,且每個(gè)端口只運(yùn)行一個(gè)worker.通過(guò)這項(xiàng)配置可以調(diào)整每臺(tái)機(jī)器上運(yùn)行的worker數(shù).(調(diào)整slot數(shù)/每機(jī))
supervisor.childopts 在storm-deploy項(xiàng)目中使用,用來(lái)配置supervisor守護(hù)進(jìn)程的jvm選項(xiàng)
supervisor.worker.timeout.secs supervisor中的worker心跳超時(shí)時(shí)間,一旦超時(shí)supervisor會(huì)嘗試重啟worker進(jìn)程.
supervisor.worker.start.timeout.secs supervisor初始啟動(dòng)時(shí),worker的心跳超時(shí)時(shí)間,當(dāng)超過(guò)該時(shí)間supervisor會(huì)嘗試重啟worker。因?yàn)镴VM初始啟動(dòng)和配置會(huì)帶來(lái)的額外消耗,從而使得第一次心跳會(huì)超過(guò)supervisor.worker.timeout.secs的設(shè)定
supervisor.enable supervisor是否應(yīng)當(dāng)運(yùn)行分配給他的workers.默認(rèn)為true,該選項(xiàng)用來(lái)進(jìn)行Storm的單元測(cè)試,一般不應(yīng)修改.
supervisor.heartbeat.frequency.secs supervisor心跳發(fā)送頻率(多久發(fā)送一次)
supervisor.monitor.frequency.secs supervisor檢查worker心跳的頻率
worker.childopts supervisor啟動(dòng)worker時(shí)使用的jvm選項(xiàng).所有的”%ID%”字串會(huì)被替換為對(duì)應(yīng)worker的標(biāo)識(shí)符
worker.heartbeat.frequency.secs worker的心跳發(fā)送時(shí)間間隔
task.heartbeat.frequency.secs task匯報(bào)狀態(tài)心跳時(shí)間間隔
task.refresh.poll.secs task與其他tasks之間鏈接同步的頻率.(如果task被重分配,其他tasks向它發(fā)送消息需要刷新連接).一般來(lái)講,重分配發(fā)生時(shí)其他tasks會(huì)理解得到通知。該配置僅僅為了防止未通知的情況。
topology.debug 如果設(shè)置成true,Storm將記錄發(fā)射的每條信息。
topology.optimize master是否在合適時(shí)機(jī)通過(guò)在單個(gè)線程內(nèi)運(yùn)行多個(gè)task以達(dá)到優(yōu)化topologies的目的.
topology.workers 執(zhí)行該topology集群中應(yīng)當(dāng)啟動(dòng)的進(jìn)程數(shù)量.每個(gè)進(jìn)程內(nèi)部將以線程方式執(zhí)行一定數(shù)目的tasks.topology的組件結(jié)合該參數(shù)和并行度提示來(lái)優(yōu)化性能
topology.ackers topology中啟動(dòng)的acker任務(wù)數(shù).Acker保存由spout發(fā)送的tuples的記錄,并探測(cè)tuple何時(shí)被完全處理.當(dāng)Acker探測(cè)到tuple被處理完畢時(shí)會(huì)向spout發(fā)送確認(rèn)信息.通常應(yīng)當(dāng)根據(jù)topology的吞吐量來(lái)確定acker的數(shù)目,但一般不需要太多.當(dāng)設(shè)置為0時(shí),相當(dāng)于禁用了消息可靠性,storm會(huì)在spout發(fā)送tuples后立即進(jìn)行確認(rèn).
topology.message.timeout.secs topology中spout發(fā)送消息的最大處理超時(shí)時(shí)間.如果一條消息在該時(shí)間窗口內(nèi)未被成功ack,Storm會(huì)告知spout這條消息失敗。而部分spout實(shí)現(xiàn)了失敗消息重播功能。
topology.kryo.register 注冊(cè)到Kryo(Storm底層的序列化框架)的序列化方案列表.序列化方案可以是一個(gè)類名,或者是com.esotericsoftware.kryo.Serializer的實(shí)現(xiàn).
topology.skip.missing.kryo.registrations Storm是否應(yīng)該跳過(guò)它不能識(shí)別的kryo序列化方案.如果設(shè)置為否task可能會(huì)裝載失敗或者在運(yùn)行時(shí)拋出錯(cuò)誤.
topology.max.task.parallelism 在一個(gè)topology中能夠允許的最大組件并行度.該項(xiàng)配置主要用在本地模式中測(cè)試線程數(shù)限制.
topology.max.spout.pending 一個(gè)spout task中處于pending狀態(tài)的最大的tuples數(shù)量.該配置應(yīng)用于單個(gè)task,而不是整個(gè)spouts或topology.
topology.state.synchronization.timeout.secs 組件同步狀態(tài)源的最大超時(shí)時(shí)間(保留選項(xiàng),暫未使用)
topology.stats.sample.rate 用來(lái)產(chǎn)生task統(tǒng)計(jì)信息的tuples抽樣百分比
topology.fall.back.on.java.serialization topology中是否使用java的序列化方案
zmq.threads 每個(gè)worker進(jìn)程內(nèi)zeromq通訊用到的線程數(shù)
zmq.linger.millis 當(dāng)連接關(guān)閉時(shí),鏈接嘗試重新發(fā)送消息到目標(biāo)主機(jī)的持續(xù)時(shí)長(zhǎng).這是一個(gè)不常用的高級(jí)選項(xiàng),基本上可以忽略.
java.library.path JVM啟動(dòng)(如Nimbus,Supervisor和workers)時(shí)的java.library.path設(shè)置.該選項(xiàng)告訴JVM在哪些路徑下定位本地庫(kù).
4.啟動(dòng)
Strom中沒(méi)有在配置中對(duì)角色分配做體現(xiàn),需要我們?cè)趩?dòng)時(shí)指定:
啟動(dòng)Nimbus:"bin/storm nimbus >/dev/null 2>&1 &"
啟動(dòng)Supervisor:"bin/storm supervisor >/dev/null 2>&1 &"
啟動(dòng)UI:"bin/storm ui >/dev/null 2>&1 &"
注意事項(xiàng):UI必須和Nimbus處于同一主機(jī),否則UI無(wú)法正常工作
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。