1. 程式人生 > >Storm1.1.0 版本安裝過程總結

Storm1.1.0 版本安裝過程總結

首先還是要自我檢討一下,最近太懶了,關於Storm的書雖然看了不少,可是時間久了,加之沒有機會實戰,很多知識都忘記了。以至於現在回想起來,很多都猶如新知識,不禁身出冷汗,作為一個技術狗,這樣怎可了得,故此這周開始再厲學習,咱們的老祖宗,朱熹(宋)說得好啊“學習知之愈明,則行之愈篤。行之愈篤,則知之益明。” 俗話也說 “有知識的人不實踐,等於一隻蜜蜂不釀蜜。”

這Storm看似簡單的部署,可是折騰了我好半天,安裝配置過程也真是苦盡甘來,借鑑了網上很多細心的人,安裝過程足夠詳盡,可是到了自己這裡還是各種問題,以致於用了兩天時間才徹底搞定Storm叢集部署。還是記錄下來一些踩過的“坑”,一來加深印象,二來也是感激那些細心的人,前人栽樹,後人乘涼!

由於本次安裝完全是基於一套純淨的Linux Redhat 64bit機器,很多基礎元件都沒有,所以稍顯麻煩,但是這也驗證了能夠執行Storm需要的基礎元件都有哪些。我的本地是一臺MacBook Pro,也需要安裝一些元件來才能完成目標機器上Storm的安裝部署。那就先從本地機器裝起吧!!!

因為我需要向遠端的三臺Linux 機器傳輸下載的安裝包,那麼最簡單的辦法是利用scp命令,這是一個Linux平臺的遠端傳輸工具,相信大家都很熟悉,但如果在本地命令終端視窗輸入scp命令,提示的是:
-bash: scp: command not found。 而你簡單的認為yum install scp 那就錯了,結果會提示:
No package scp available.
 由上可見提供的軟體包一定不是叫scp
, 一般情況下伺服器都有scp ,可以找一臺以前有scp 的機器檢視一下 此命令由哪個軟體包提供
,

[[email protected] ~]# which scp
/usr/bin/scp


[[email protected] ~]# rpm -qf /usr/bin/scp
openssh-clients-5.3p1-94.el6.x86_64


於是可見scp這東西應該屬於openssh-clients這個包。那麼你需要執行:
yum install openssh-clients -y


再執行scp就可以了,再次執行:
如果輸入密碼後又再次提示:
bash: scp: command not found
。那可能就是你的目標主機也要安裝一下了,如果沒有安裝的話
在目標主機也同樣安裝一下openssh-clients,問題就可以解決了。

(1)上面的步驟完成後,基本我們就具備了遠端傳輸功能,這個功能還是比較方便的,建議在部署前將這個工具安裝好。接下來我們移師到目標機器上,我們需要

#ssh [email protected] address 到目標機器上,然後建立一個一般賬戶並將其加入root 組。具體我參考了這個文章:

如果你執意用root安裝那就可以跳過這個步驟。但是生產環境,一起操作需要謹慎,因此還是建議大家用一般賬戶完成部署。

(2) 上傳,安裝JDK

 切換到JDK安裝包所在的路徑,通過scp命令上傳。

#scp jdk-7u80-linux-x64.tar.gz [email protected] address:/usr/henry/

具體安裝過程可以借鑑,但切記要測試,確保java 版本是1.7:

(3)安裝telnet 元件

telnet元件會在測試zookeeper安裝部署後,用來測試,telnet也只是一種測試手段,其實,你也可以用zookeeper自帶的zkCli 來測試,後面我會具體講到。那麼具體安裝telnet可以參考:

(4)安裝部署 Zookeeper

其實安裝部署Zookeeper是挺簡單的,網上搜羅安裝部署步驟非常多,隨便點一兩個就可以完成,那麼我在安裝部署遇到的問題是什麼?

其實我打算安裝的目標機器,之前竟然已經有人安裝過zookeeper,而且加到預設啟動項了,安裝部署Zookeeper之前,我並沒檢視埠使用情況,因此在啟動過程中,用zkServer.sh start命令,它竟然顯示啟動成功,我錯以為一切都是正常的,但是用telnet和zkCli -server ip address:2181總是失敗,後來嘗試改變Zookeeper預設的埠號為2180,結果還是不行,用zkServer.sh status 命令檢視狀態,也還是提示,即便使用net stats|grep 2180 發現埠沒有佔用,正常監聽也不行,因為zookeepr的程序已經啟動在哪裡,所以無論如何你都不可能在一臺機器上啟動多個zookeeper程序。

[[email protected] bin]# ./zkServer.sh status
ZooKeeper JMX enabled by default
Using config: /home/hadoop/softwares/zookeeper-3.4.9/bin/../conf/zoo.cfg
Error contacting service. It is probably not running.

直到輸入命令出現如下資訊,才表示Zookeeper是ok的。

[[email protected] bin]# ./zkServer.sh status
ZooKeeper JMX enabled by default
Using config: /home/hadoop/softwares/zookeeper-3.4.9/bin/../conf/zoo.cfg
Mode: follower

過程中我還修改了主機名,在Zookeeper的zoo.cfg中都是用機器名關聯,各人覺得使用機器名可以避免DNS解析的一些問題。

接下來進入Storm的安裝

(1)下載穩定版的Storm(http://storm.apache.org/downloads.html):我下載的是apache-storm-1.1.0.tar.gz,沒什麼好說的,根據你的喜好下載就好了,我比較喜歡新鮮的,但是後面發現,從0.9版本以後,經過了一些調整,原來ZeroMQ和JMQ,只作為可選元件,不是必選元件,訊息處理繼承了Netty作為訊息傳輸時設定成了backtype.storm.messaging.netty,Context.   其中引數zmq.threads,在Storm0.9.0.1 也支援基於ZMQ的訊息傳遞機制,預設是不開啟的。建議使用預設值。因此整個安裝過程只需要JAVA1.7和Python2.6 的支援,這其實大大減少了安裝過程的複雜性, 但是需要注意的是,Strom的配置檔案為yaml檔案,它位於storm壓縮包中的conf 目錄下,配置項前後都必須跟一個空格才能跟配置值!!切記!!!!!

要部署Storm,需要部署以下幾個相關元件。
JDK:可以到Oracle官網下載並部署,設定環境變數(JAVA_HOME、PATH和CLASSPATH)並使之生效;JDK部署完成後通過java -version命令可以檢視到對應的JDK版本。

ZooKeeper:Storm本身重度依賴於ZooKeeper,同時在我們線上的環境中還有其他依賴於ZooKeeper的服務,因此單獨部署一個專門用於流式計算的ZooKeeper是非常有必要的。
Storm:Storm可以從其官方地址http://storm.apache.org/下載。
http://www.apache.org/dyn/closer.lua/storm/apache-storm-1.1.0/apache-storm-1.1.0.tar.gz
若部署0.9版本之前的Storm,還需要安裝ZMQ和JZMQ(除非作為研究之用,否則不推薦)。Storm在0.9之前使用的訊息傳輸機制是 ZMQ,從0.9開始引入Netty(也還支援ZMQ)。相比ZMQ的C實現,純Java實現的Netty能夠提供更好的效能和可管理性(ZMQ不能通過 -Xmx等對記憶體進行管理)。
在Yahoo!中執行著一個超過250個節點的Storm叢集,雅虎改進了Storm對ZooKeeper的依賴,使得0.9.2版本時一個ZooKeeper叢集已經能夠支援2000個節點,而他們的目標是到2015年一個Storm叢集支援超過4000個節點。

如下是我的Storm.yaml配置,需要空格的地方我標識出來了,大家在對應修改的時候請參看空格的位置。

<萬惡的空格> storm.zookeeper.servers:
     - <萬惡的空格>"hdp036184"
     -<萬惡的空格> "hdp036185"
     - <萬惡的空格>"hdp036186"

<萬惡的空格> storm.zookeeper.port:
     - <萬惡的空格>2181

<萬惡的空格> storm.local.dir: <萬惡的空格>"/usr/henry/components/apache-storm-1.1.0/workdir"
 <萬惡的空格>nimbus.host:<萬惡的空格> "hdp036184"
 <萬惡的空格>nimbus.seeds<萬惡的空格> ["hdp036184",<萬惡的空格> "hdp036185", <萬惡的空格>"hdp036186"]
 <萬惡的空格>supervisor.slots.ports:
     - <萬惡的空格>6700
     -<萬惡的空格> 6701
     - <萬惡的空格>6702
     - <萬惡的空格>6703

完成以上步驟,我們就可以啟動Storm了,進入Storm安裝目標的bin目錄中,依次執行如下命令:在沒有執行任務時,我們必須應該要看到5個程序:QuorumPeerMain、nimbus、core、Jps、supervisor。否則就需要檢查是否正確地啟動,如果啟動之後沒有過多久就停止了,我們就需要檢視~/storm-1.1.0/logs下面的對應的log檔案,檢視引起異常的原因是什麼,然後解決後再次啟動。

[[email protected] bin]# ls
flight.bash  storm  storm.cmd  storm-config.cmd  storm-local  storm.py
# 啟動nimbus
[[email protected] bin]# ./storm nimbus >/dev/null 2>&1 &
[1] 49953
# 啟動supervisor
[[email protected] bin]# ./storm supervisor >/dev/null 2>&1 &
[2] 49978
# 啟動 stormUI
[[email protected] bin]# ./storm ui >/dev/null 2>&1 &
[3] 50051

同時,我們可以在虛擬機器瀏覽器中輸入http://localhost:8080來進入Storm UI的介面,可以檢視Storm執行期間的相關資訊。

通過jps 命令可以檢視程序是否啟動成功

  Storm 啟動後進程對應關係
  core   對應的程序是Storm UI 341

  Jps     對應的程序是Java jps

  nimbus 對應的程序是Storm nimbus

 supervisor 對應的程序是Storm supervisor 

 worker 對應的執行緒,所以你要想執行15個worker,那麼Storm main函式裡面設定 的 conf.setNumWorkers(15) ,

QuorumPeerMain對應的程序是zkServer.sh  其中在nimbus上nimbus、 core和QuorumPeerMain這三個程序必須啟動,如果啟動失敗,需要研究一下日誌中失敗的原因,按照上述的順序再啟動一次。否則會導致下一步的topology提交失敗,切記。

錯誤記錄:
這裡在啟動numbus時候,遇到一個錯誤,
java.lang.RuntimeException: Something wrong with network/dnsconfig, host cant figure out its name 需要修改hostname 
需要修改兩處:一處是/etc/sysconfig/network,另一處是/etc/hosts,只修改任一處會導致系統啟動異常。首先切換到root使用者。 
/etc/sysconfig/network
用任一款你喜愛的編輯器開啟該檔案,裡面有一行 HOSTNAME=localhost.localdomain (如果是預設的話),修改 localhost.localdomain 為你的主機名。 
/etc/hosts
開啟該檔案,會有一行 127.0.0.1 localhost.localdomainlocalhost 。其中 127.0.0.1 是本地環路地址, localhost.localdomain 是主機名(hostname),也就是你待修改的。localhost 是主機名的別名(alias),它會出現在Konsole的提示符下。將第二項修改為你的主機名,第三項可選。
將上面兩個檔案修改完後,並不能立刻生效。如果要立刻生效的話,可以用 hostname your-hostname 作臨時修改,它只是臨時地修改主機名,系統重啟後會恢復原樣的。但修改上面兩個檔案是永久的,重啟系統會得到新的主機名。

關閉防火牆

systemctl stop firewalld.service #停止 systemctl disable firewalld.service #禁用

相關推薦

Storm1.1.0 版本安裝過程總結

首先還是要自我檢討一下,最近太懶了,關於Storm的書雖然看了不少,可是時間久了,加之沒有機會實戰,很多知識都忘記了。以至於現在回想起來,很多都猶如新知識,不禁身出冷汗,作為一個技術狗,這樣怎可了得,故此這周開始再厲學習,咱們的老祖宗,朱熹(宋)說得好啊“學習知之愈明,則行

Jumpserver v0.4.0 版本安裝詳細過程

sqlite3環境系統: CentOS 6.5 x86_64 miniPython: 版本 3.6 大部分功能兼容 2.7安裝目錄/opt/jumpserver/opt/coco一. 環境準備1.1 安裝基本工具和庫$ yum -y install sqlite-devel git epel-release

redis安裝1.0版本

redisyum install gccwget http://download.redis.io/releases/redis-3.2.6.tar.gztar xzf redis-3.2.6.tar.gzcd redis-3.2.6make MALLOC=libcmake install cp redis.

NFS安裝1.0版本

nfs服務端yum install nfs-utils rpcbind -y#####rpm -qa nfs-utils rpcbind#####id nfsnobody/etc/init.d/rpcbind start#####/etc/init.d/rpcbind status netstat -tnul

tengine-2.1.0安裝編譯過程

目錄 1 先上傳壓縮包 2 解壓縮 tar -xf不看過程,tar -zxvf有詳細過程 3 檢視安裝步驟 3.1 cd tengine-2.1.0進入解壓後的資料夾 3.2  ls 發現README.txt檔案 3.3 vi README 4 按照上

SBT 1.0.3安裝與配置

-m export home 添加 pre ref images ima com 下載SBT 解壓並且移動到/software目錄 tar -zxvf sbt-1.0.3.tgz mv sbt /software/sbt 在/etc/profile文件中添加: export

influxDB 1.2版本安裝

influxdb 1.2 web 客戶端 安裝 InfluxDB從1.3開始取消自帶的web頁面,這給很多人帶來不便,尤其是剛接觸InfluxDB的同學。 這裏提供在CentOS上基於rpm的安裝方式。 版本 InfluxDB 1.2.4 CentOS 7 1、下載RPM包 wget

Xamarin.Forms 3.1.0+版本 Android 原生支持底部導航欄

toolbar ott 支持 cor for aml otto nfx XML Xamarin.Forms 3.1.0+版本 Android 原生支持底部導航欄 Xamarin.Forms 3.1.0以上版本終於支持Android底部導航欄啦,可以不用第三方的支持庫了。 h

Ubuntu 18.04 打不開1.1.0版本網易雲音樂的解決方法匯總

amp http desktop 繼承 pin ica 關閉 分享圖片 系統監視 Ubuntu自古以來的問題吧。。。。。據說是因為deepin沒問題所以網易雲音樂數次更新都沒有解決這個bug 法0:--no-sandbox (繼承自以往版本的Ubuntu) 在終端輸入

HGDB 4.1.1 企業版安裝過程中選擇不執行指令碼導致報錯的問題

目錄 環境 症狀 問題原因 解決方案 環境 系統平臺:Linux x86-64 Red Hat Enterprise Linux 7 版本:4.1.1 症狀 HGDB 4.1.1 企業版安裝到如下步驟時,選擇不執行指令碼啟動資料庫,即點選cancel:

RHEL 7.1操作系統安裝過程說明

小寫 設置 就是 輸入 fff 分享 ces 標準分區 image 1、選擇【Install Reh Hat Enterprise linux 7.1】2、根據提示敲回車鍵3、選擇安裝過程語言,註意:是安裝過程語言而不是系統語言4、選擇系統支持語言默認只選擇了中文勾選英文的

tensorflow從1.0版本切換到1.3

1.先解除安裝之前的版本   sudo pip3 uninstall tensorflow-gpu 2.安裝新的tf     sudo pip3 install tensorflow-gpu==1.3 3.tensorflow1.3需要

Tensorflow 低版本程式碼自動升級為1.0版本

TensorFlow 1.0 中的 API 有所變化,引數位置發現變化,造成在 TensorFlow 0.n 上執行的 TensorFlow 程式無法在 TensorFlow 1.0 上執行。 自動將程式碼移植到 1.0,有一個轉換工具。 GitHub工具包地址:https://github

tf.reshape()的Tensorflow 1.0 版本問題報錯

tf.reverse tf.reverse之前會用一維 bool 張量控制要顛倒哪些維度。現在我們使用軸索引張量。 例如,tf.reverse(a, [True, False, True]) 現在必須是 tf.reve

spring原始碼學習(5.1.0版本)——Bean的初始化(中)

目錄   前言 createBean 有自定義TargetSource代理類的生成 resolveBeforeInstantiation applyBeanPostProcessorsBeforeInstantiation postProcessBeforeIn

spring原始碼學習(5.1.0版本)——Bean的初始化(上)

目錄   前言 源頭 preInstantiateSingletons方法 getBean(String beanName) doGetBean getObjectForBeanInstance getObjectFromFactoryBean doGe

elasticsearch 5 0 版本安裝head外掛

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!        

Hive 2.1.0叢集安裝

Hive 2.1.0叢集安裝 1.配置伺服器 1個主節點:master(192.168.20.191),2個(從)子節點, node1(192.168.20.192), node2(192.168.20.193) 2.將jdbc的jar包放到$HIVE_HOME下 cd

webpack 3.10.0版本安裝教程

前提電腦有安裝node.js(自帶npm)! 在dos命令框中: 全域性安裝:npm install [email protected] -g 本地安裝:npm install --save-dev [email protected] 打包成bundle.js

sysbench-1.0原始碼安裝

文章目錄 sysbench-1.0原始碼安裝 一、下載原始碼 二、原始碼編譯 sysbench-1.0原始碼安裝 一、下載原始碼 wget https://codeload.github.com/akopyt