溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

大數(shù)據(jù)處理之流式計(jì)算 storm安裝

發(fā)布時(shí)間:2020-06-19 09:27:35 來(lái)源:網(wǎng)絡(luò) 閱讀:470 作者:KIKI王 欄目:大數(shù)據(jù)
  1. 安裝包準(zhǔn)備

    官網(wǎng)下載最新穩(wěn)定版本,題主下載的是apache-storm-0.9.5.tar.gz

  2. 角色分配

主機(jī)名IP角色
hadoop001192.168.0.1Nimbus
hadoop002192.168.0.2Supervisor
hadoop003192.168.0.2Supervisor
3. 安裝步驟

   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ú)法正常工作



向AI問(wèn)一下細(xì)節(jié)

免責(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)容。

AI