《Storm企業級應用:實戰、運維和調優》——2.1 環境準備
本節書摘來自華章計算機《Storm企業級應用:實戰、運維和調優》一書中的第2章,第2.1節,作者:馬延輝 陳書美 雷葆華著, 更多章節內容可以訪問雲棲社群“華章計算機”公眾號檢視。
2.1 環境準備
在安裝Storm的之前要做一些準備工作,這涉及作業系統設定、ZooKeeper叢集的管理以及Storm安裝之前的一些依賴庫。下面將介紹Storm的系統配置、協調器ZooKeeper等。
2.1.1 系統配置
在Linux上安裝Storm之前,需要先做如下準備:
安裝JDK 1.6。
安裝SSH服務。
安裝Python 2.6.6直譯器。
1.?安裝JDK 1.6
與Hadoop、HBase相同,Storm也需要JDK 1.6或者更高的版本。下面介紹安裝JDK 1.6的具體步驟。
(1)下載JDK 1.6
從Java的官網,目前是Oracle公司的產品下載JDK,本書使用JDK的SE版本,從http://www.oracle.com/technetwork/java/javase/downloads/
中下載JDK 1.6的安裝包,注意要下載適應當前系統的JDK版本,一般是64位版本的JDK。
JDK 1.6版本的u18以及舊版本,不要下載,這些版本的垃圾回收操作容易遇到JVM碰撞問題。
(2)手動安裝JDK 1.6
進入JDK安裝目錄(假設安裝在/usr/lib/jvm/jdk)後,開始安裝JDK,具體操作程式碼如下:
#修改許可權
sudo chmod u+x jdk-***-linux-i586.bin
#安裝
sudo -s ./jdk-***-linux-i586.bin
(3)配置環境變數
安裝結束後,開始配置環境變數JAVA_HOME和CLASSPATH,修改指令如下:
vi /etc/prof?ile
進入prof?ile檔案後,在檔案下面輸入如下內容:
#set JAVA Environment
export JAVA_HOME=/usr/lib/jvm/jdk
export ClASSPATH=".:$JAVA_HOME/lib:$CASSPATH"
export PATH="$JAVA_HOME:$PATH"
修改完環境變數後,驗證JDK是否安裝成功,輸入如下命令:
java -version
如果出現Java版本資訊,則說明安裝成功。
2.?安裝SSH服務
Storm叢集模式的啟動、關閉以及ZooKeeper叢集需要SSH服務,所以使用的作業系統要安裝此服務。
(1)安裝SSH
確認節點可以連線Internet,執行如下命令檢查SSH服務。
sudo ps –ef |grep ssh
如果沒有ssh程式,則執行如下命令安裝SSH服務。
sudo yum install openssh
(2)檢視安裝情況
執行下面命令檢視SSH安裝的版本。
ssh -version
執行之後如果出現如下資訊,則表明安裝已經成功。
OpenSSH_4.3p2, OpenSSL 0.9.8e-f?ips-rhel5 01 Jul 2008
Bad escape character `sion`.
檢視服務狀態命令如下:
service sshd status
3.?安裝Python 2.6.6
在安裝Python之前,Linux系統中其實已經有了Python直譯器,但如果版本太低,需要重新安裝Python。
Python是Storm最底層的依賴,需要使用下面的命令下載並安裝Python 2.6.6。
wget http:// www.python.org/ftp/python/2.6.6/Python-2.6.6.tar.bz2
tar –jxvf Python-2.6.6.tar.bz2
cd Python-2.6.6
./conf?igure
make
make install
安裝完成後,需要使用命令測試Python 2.6.6是否安裝成功。如果安裝成功,則命令和結果如下:
python -V
Python 2.6.6
2.1.2 安裝ZooKeeper叢集
由於HBase、Kafka和Storm都使用ZooKeeper叢集,大多數情況下,單個節點的ZooKeeper叢集可以單獨勝任這些應用,但是為了確保故障恢復或者部署大規模叢集,可能需要更大規模節點的ZooKeeper叢集,官方推薦的最小節點數為3。所以,本案例使用test1、test2和test3三臺節點部署ZooKeeper,每個節點上都需要安裝,下面介紹具體的安裝部署過程。
1.?下載官方原始碼
從映象網站下載ZooKeeper包,並將其解壓安裝,具體操作程式碼如下:
#下載、解壓
wget http:// mirror.bjtu.edu.cn/apache/zookeeper/zookeeper-3.4.6/zookeeper-3.4.6.tar.gz
mkdir -p /opt/modules
mv zookeeper-3.4.6.tar.gz /opt/modules/
tar -zxvf zookeeper-3.4.6.tar.gz
ln -s /opt/modules/zookeeper-3.4.6 /opt/modules/zookeeper
#日誌路徑,配置檔案用
mkdir -p /var/log/zookeeper
mkdir /tmp/zookeeper
2.?配置ZooKeeper屬性檔案
根據ZooKeeper叢集節點情況,建立ZooKeeper配置檔案conf/zoo.cfg後,將基本配置新增到配置檔案中。
(1)配置伺服器核心屬性
使用複製命令生成配置檔案,程式碼如下:
cd conf
cp zoo_sample.cfg zoo.cfg
然後將下面的程式碼追加到配置檔案zoo.cfg中:
tickTime=2000
clientPort=2181
initLimit=5
syncLimit=2
server.1=test1:2888:3888
server.2=test2:2888:3888
server.3=test3:2888:3888
其中,每項引數的含義如下:
tickTime:這個時間是作為ZooKeeper伺服器之間或客戶端與伺服器之間維持心跳的時間間隔,也就是每隔tickTime時間傳送一個心跳。
clientPort:這個埠就是客戶端連線ZooKeeper伺服器的埠,ZooKeeper會監聽這個埠,接受客戶端的訪問請求。
initLimit:這個配置項用來配置ZooKeeper接受客戶端(這裡所說的客戶端不是使用者連線ZooKeeper伺服器的客戶端,而是ZooKeeper伺服器叢集中連線到Leader的Follower伺服器)初始化連線時最長能忍受多少個心跳時間間隔數。當已經超過5個心跳的時間(也就是tickTime)長度後,ZooKeeper伺服器還沒有收到客戶端的返回資訊,那麼表明這個客戶端連線失敗。總的時間長度就是5×2000ms=10s。
syncLimit:這個配置項標識Leader與Follower之間傳送訊息、請求和應答時間,最長不能超過多少個tickTime的時間長度,總的時間長度就是2×2000ms=4s。
server.A=B:C:D:其中A是一個數字,表示這個是第幾號伺服器;B是這個伺服器的IP地址;C表示這個伺服器與叢集中的Leader伺服器交換資訊的埠;D表示萬一叢集中的Leader伺服器掛了,需要一個埠來重新選舉出一個新的Leader,而這個埠就是用來執行選舉時伺服器相互通訊的埠。如果是偽叢集的配置方式,由於B都是相同的,所以不同的ZooKeeper例項通訊埠號不能相同,要給它們分配不同的埠號。
接下來,新增myid檔案,在dataDir目錄(預設是/tmp/zookeeper)下建立myid檔案,此檔案中只包含一行,且內容為ZooKeeper部署節點對應的server.id中的ID編號。例如,test1、test2和test3分別對應的myid檔案中的值是1、2和3。節點test1的myid檔案的操作程式碼如下:
#建立檔案myid
vi /tmp/zookeeper/myid
#將下面的數字新增到檔案中
1
(2)配置日誌列印屬性
在預設情況下,日誌放到當前目錄下的zookeeper.out檔案中,而在一般情況下需要將日誌輸出到指定的檔案路徑下,以便於檢視收集和日誌。下面的操作都是在ZooKeeper的安裝主目錄下進行。
首先,修改bin/zkEnv.sh,將下面程式碼新增到指令碼主體的開頭部分:
ZOO_LOG_DIR=/var/log/zookeeper
在預設情況下,日誌輸出到CONSOLE,關閉ROLLINGFILE。在生產環境中,需要將日誌輸出到ROLLINGFILE,並修改日誌級別為INFO。這些配置項通過修改conf/log4j.properties實現,具體程式碼如下:
.log.dir=.
zookeeper.tracelog.dir=.
將上面對應的程式碼修改為下面的內容:
zookeeper.log.dir=/var/log/zookeeper
zookeeper.tracelog.dir=/var/log/zookeeper
將下面的程式碼使用#註釋掉:
log4j.rootLogger=${zookeeper.root.logger}
將下面程式碼最前面的#去掉:
#log4j.rootLogger=TRACE, CONSOLE, ROLLINGFILE, TRACEFILE
同時修改檔案的許可權,因為需要用hadoop使用者啟動,將所有ZooKeeper相關的檔案目錄的所有者和組都修改為hadoop:hadoop,程式碼如下:
chown -R hadoop:hadoop /opt/modules/zookeeper*
chown -R hadoop:hadoop /var/log/zookeeper
chown -R hadoop:hadoop /tmp/zookeeper
3.?啟動ZooKeeper叢集
登入test1、test2和test3三個節點,進入ZooKeeper安裝主目錄,執行下面的命令:
su hadoop
bin/zkServer.sh start
使用下面的ZooKeeper客戶端命令可以測試服務是否可用。
bin/zkCli.sh -server 127.0.0.1:2181
如果安裝並啟動成功,則執行上面的命令進入互動終端後,輸入help命令會得到如下的列印資訊:
[zk: 127.0.0.1:2181(CONNECTED) 1] help
ZooKeeper -server host:port cmd args
connect host:port
get path [watch]
ls path [watch]
set path data [version]
rmr path
delquota [-n|-b] path
quit
printwatches on|off
create [-s] [-e] path data acl
stat path [watch]
close
ls2 path [watch]
history
listquota path
setAcl path acl
getAcl path
sync path
redo cmdno
addauth scheme auth
delete path [version]
setquota -n|-b val path
[zk: 127.0.0.1:2181(CONNECTED) 2] ls /
[kafkastorm, consumers, storm, hbase, brokers, zookeeper]
[zk: 127.0.0.1:2181(CONNECTED) 3]
其中,[zk: 127.0.0.1:2181 (CONNECTED) 2]字首表示已經成功連線ZooKeeper,help命令表示檢視當前互動客戶端支援的命令,ls /命令表示檢視當前ZooKeeper的根目錄結構。
在ZooKeeper執行過程中,會在dataDir目錄下生成很多日誌和快照檔案,而ZooKeeper執行程式並不負責定期清理合並這些檔案,導致佔用大量磁碟空間。因此,需要通過Cronjob等方式定期清除過期的日誌和快照檔案。
相關文章
- 《Storm企業級應用:實戰、運維和調優》——2.5 本章小結ORM運維
- 《Storm企業級應用:實戰、運維和調優》——1.6 本章小結ORM運維
- 《Storm企業級應用:實戰、運維和調優》——第2章開始使用StormORM運維
- 《Storm企業級應用:實戰、運維和調優》——3.5 Stream訊息流和StreamGrouping訊息流組ORM運維
- 《Storm企業級應用:實戰、運維和調優》——2.4 建立Topology並向叢集提交任務ORM運維
- 地圖移動應用實戰 —— Django Haystack ElasticSearch 環境準備地圖DjangoElasticsearch
- 企業環境下MySQL5.5調優MySql
- OpenAI Assistants API 企業級應用實戰OpenAIAPI
- 冬季實戰營動手實戰-上雲必備環境準備,動手實操快速搭建LAMP環境LAMP
- Oracle Stream實戰(7)—測試環境準備(六)Oracle
- Oracle Stream實戰(6)—測試環境準備(五)Oracle
- Oracle Stream實戰(5)—測試環境準備(四)Oracle
- Oracle Stream實戰(4)—測試環境準備(三)Oracle
- Oracle Stream實戰(3)—測試環境準備(二)Oracle
- Oracle Stream實戰(2)—測試環境準備(一)Oracle
- Oracle 19C OGG基礎運維-01環境準備Oracle運維
- Linux運維第二課—-Linux發展史、環境準備Linux運維
- HBase 核心元件協調及RegionServer JVM引數調優-OLAP商業環境實戰元件ServerJVM
- 《企業級ios應用開發實戰》一第1章企業應用的話題iOS
- (1)環境準備
- Spark應用程式開發引數調優深入剖析-Spark商業調優實戰Spark
- kafka叢集管理重要操作指令運維兵書-kafka 商業環境實戰Kafka運維
- 企業微信獲客準備,先搞兩種實用的二維碼
- 網易智慧企業 Node.js 實踐(3)| 灰度環境和應用監控Node.js
- Flutter(一) 環境準備Flutter
- 0. 準備環境
- 單機百萬連線調優和Netty應用級別調優Netty
- PB 級大規模 Elasticsearch 叢集運維與調優實踐Elasticsearch運維
- HBase LRUBlockCache與BucketCache二級快取機制原理剖析與引數調優-OLAP商業環境實戰BloC快取
- 複雜網路作業一:環境準備
- 生產環境sql語句調優實戰第二篇SQL
- 生產環境sql語句調優實戰第三篇SQL
- 生產環境sql語句調優實戰第四篇SQL
- 生產環境sql語句調優實戰第五篇SQL
- 生產環境sql語句調優實戰第六篇SQL
- 生產環境sql語句調優實戰第八篇SQL
- 生產環境sql語句調優實戰第九篇SQL
- Oracle安裝——環境準備Oracle