大資料流式計算第一課—從Storm開始
## **前言** ##
大資料(Big Data)又稱為巨量資料,指需要新處理模式才能具有更強的決策力、洞察力和流程優化能力的海量、高增長率和多樣化的資訊資産。“大資料”概念最早由維克托·邁爾·舍恩伯格和肯尼斯·庫克耶在編寫《大資料時代》中提出,指不用随機分析法(抽樣調查)的捷徑,而是采用所有資料進行分析處理。大資料有4V特點,即Volume(大量)、Velocity(高速)、Variety(多樣)、Value(價值)——來自互動百科
這幾天在老師指導下,開始對大資料流式計算進行初步接觸了。因為結合着目前大資料發展方向以及常見問題,選擇了研究大資料分布式計算中的實時資料處理方面的内容,有别于基于Hadoop等引領的大資料批量計算,在此主要應用Storm來分析其不能解決的流式計算問題(主要考慮資料的實時性問題)。
流式大資料的主要特征有:
- 實時性
- 易失性
- 無序性
- 突發性
- 無限性
普遍的研究問題無非是,找到一個“低延遲、高吞吐、持續穩定性、彈性可伸縮”的理想模型,在這個基礎上優化各層結構或者算法實作,來實作正确或者是說更加優化的、合理的流式計算結果。當然,大資料分析計算本來就是通過分析和計算資料,擷取大資料得來的價值所在。
Storm采用主從式的系統架構,是一個免費開源、分布式、高容錯的實時計算系統。介紹可參考:[參考](http://xiaoxin2009.github.io/storm--%E6%9C%80%E7%81%AB%E7%9A%84%E6%B5%81%E5%BC%8F%E5%88%86%E5%B8%83%E5%BC%8F%E7%B3%BB%E7%BB%9F.html%20%E2%80%9C%E5%8F%82%E8%80%83%E2%80%9D)
## Storm 環境搭建##
在了解了基本的Storm系統結構及其元件後,我花了幾天時間反複在自己的PC機上倒騰,最後總算勉強搭建好了Storm的基本環境了。Storm系統涉及到本地和叢集模式,這裡是安裝本地示例(單機版)。
首先我的電腦是win10系統,而由于前期學習開發Android及Java等,配置好了java環境。當時的jdk版本為1.8版本的,而後來在網上各種部落格或者網站上逛完之後,發現Storm環境很有可能不相容jdk1.8及以上的,隻有1.7(含)版本以下才可。老師一開始告訴說,我也發現現在Storm叢集環境基本上是全平台相容的,但無奈Windows環境的各種環境變量太過麻煩,嘗試過多次之後選擇了在虛拟機中Linux系統中搭載該環境了。我這裡用的是CentOS 7版本的,若有其他版本的系統自行斟酌,大同小異而已。
特别說明:這裡列出兩種系統環境下搭建Storm環境的參考方法,也感謝兩位的部落格。
win環境下搭載Storm
CentOS環境下搭載Storm
需要安裝的包及工具
- CentOS 7
- JDK 1.7
- Storm 0.9.6
- Zookeeper 3.4.9
- Python 2.7 (CentOS 7預設安裝)
## 安裝java環境 ##
CentOS 7中預設已經安裝好了jdk是1.6及1.7,為了差別其預設安裝的是jdk還是jre,這裡在終端中繼續使用yum指令安裝(普通使用者登入即可)
預設安裝在:/usr/lib/jvm/java-1.7.0-openjdk. 然後我們配置一下JAVA_HOME環境變量,這裡顯然比win下要友善的多:
更改最後一行加入代碼:
export JAVA_HOME=/usr/lib/jvm/java-.-openjdk
如下儲存即可:
接着在終端實作效果,輸入:
source ~/.bashrc
至此Java環境配置完畢,可以輸入用 “java –verion”檢查。
## 安裝Zookeeper ##
進入Apache官網可以下載下傳Zookeeper的官方安裝包(Zookeeper -3.4.9.tar.gz):
http://mirrors.cnnic.cn/apache/zookeeper/stable/
直接在CentOS系統下載下傳,下載下傳後預設儲存,執行如下指令(此處切換回root使用者,切記!!!):
sudo tar -zxf ~/下載下傳/zookeeper-..tar.gz -C -/usr/local ##若有别的版本(如3.4.8)将名字對應更換即可
cd /usr/local
sudo mv zookeeper-* zookeeper
sudo chown -R (括号這裡輸入你的系統普通使用者名即可) ./zookeeper
然後切換回普通使用者,執行:
cd /usr/local/zookeeper
mkdir tmp
cp ./conf/zoo_sample.cfg ./conf/zoo.cfg
vim ./conf/zoo.cfg
我們在這裡将文檔當中的 dataDir=/tmp/zookeeper 路徑更改為 dataDir=/usr/local/zookeeper/tmp .
接着執行:
如果出現如下界面,則表示配置成功:
## 安裝Storm ##
我們下載下傳并安裝Storm,下載下傳位址:
http://www.apache.org/dyn/closer.lua/storm/apache-storm-0.9.6/apache-storm-0.9.6.tar.gz。
下載下傳後執行如下指令進行安裝Storm(此處切換回root使用者):
sudo tar -zxf ~/下載下傳/apache-storm-..tar.gz -C /usr/local
cd /usr/local
sudo mv apache-storm-. storm
sudo chown -R (括号這裡填系統的普通使用者名即可) ./storm #此指令為檔案授權
接着配置Storm(切換回普通使用者):
cd /usr/local/storm
vim ./conf/storm.yaml
打開文檔後,修改其中的 storm.zookeeper.servers 和 nimbus.host 兩項,取消掉注釋且都修改值為 127.0.0.1,如下:
配置完成後,輸入指令啟動Storm。先啟動 nimbus 背景程序:
./bin/storm nimbus
效果:
再打開另一個終端,執行 supervisor 背景程序:
/usr/local/storm/bin/storm supervisor
效果:
此指令啟動後,終端也将被占用。我們用 jps 指令在另一個終端中來檢查是否成功啟動,若成功則如下圖效果。(QuorumPeeMain 是 zookeeper 的背景程序,若顯示 config_value 表明 nimbus 或 supervisor 還在啟動中):
至此,本地Storm環境已經搭建完畢!
Storm環境搭建好以後,就可以執行一些經典執行個體了,而今後的進一步課題研究也将從這裡開始,這裡就不再贅述了,自行尋找在Linux上運作Storm的方式方法。
參考來源:
http://www.powerxing.com/install-storm/
http://xiaoxin2009.github.io/storm–%E6%9C%80%E7%81%AB%E7%9A%84%E6%B5%81%E5%BC%8F%E5%88%86%E5%B8%83%E5%BC%8F%E7%B3%BB%E7%BB%9F.html