91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

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

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

CentOS 6.8如何安裝并使用JStorm集群

發布時間:2022-02-08 09:27:49 來源:億速云 閱讀:133 作者:iii 欄目:開發技術

這篇文章主要介紹“CentOS 6.8如何安裝并使用JStorm集群”的相關知識,小編通過實際案例向大家展示操作過程,操作方法簡單快捷,實用性強,希望這篇“CentOS 6.8如何安裝并使用JStorm集群”文章能幫助大家解決問題。

JStorm 是參考 Apache Storm 實現的實時流式計算框架,在網絡IO、線程模型、資源調度、可用性及穩定性上做了持續改進,已被越來越多企業使用。

CentOS 6.8如何安裝并使用JStorm集群

從應用的角度,JStorm應用是一種遵守某種編程規范的分布式應用。從系統角度, JStorm是一套類似MapReduce的調度系統。 從數據的角度,JStorm是一套基于流水線的消息處理機制。

實時計算現在是大數據領域中最火爆的一個方向,因為人們對數據的要求越來越高,實時性要求也越來越快,傳統的Hadoop MapReduce,逐漸滿足不了需求,因此在這個領域需求不斷。

Storm組件和Hadoop組件對比

JStormHadoop
角色NimbusJobTracker
SupervisorTaskTracker
WorkerChild
應用名稱TopologyJob
編程接口Spout/BoltMapper/Reducer

優點

在Storm和JStorm出現以前,市面上出現很多實時計算引擎,但自Storm和JStorm出現后,基本上可以說一統江湖: 究其優點:

  • 開發非常迅速:接口簡單,容易上手,只要遵守Topology、Spout和Bolt的編程規范即可開發出一個擴展性極好的應用,底層RPC、Worker之間冗余,數據分流之類的動作完全不用考慮
  • 擴展性極好:當一級處理單元速度,直接配置一下并發數,即可線性擴展性能
  • 健壯強:當Worker失效或機器出現故障時, 自動分配新的Worker替換失效Worker
  • 數據準確性:可以采用Ack機制,保證數據不丟失。 如果對精度有更多一步要求,采用事務機制,保證數據準確。
  • 實時性高: JStorm 的設計偏向單行記錄,因此,在時延較同類產品更低

應用場景

JStorm處理數據的方式是基于消息的流水線處理, 因此特別適合無狀態計算,也就是計算單元的依賴的數據全部在接受的消息中可以找到, 并且最好一個數據流不依賴另外一個數據流。

因此,常常用于:

  • 日志分析,從日志中分析出特定的數據,并將分析的結果存入外部存儲器如數據庫。目前,主流日志分析技術就使用JStorm或Storm
  • 管道系統, 將一個數據從一個系統傳輸到另外一個系統, 比如將數據庫同步到Hadoop
  • 消息轉化器, 將接受到的消息按照某種格式進行轉化,存儲到另外一個系統如消息中間件
  • 統計分析器, 從日志或消息中,提煉出某個字段,然后做count或sum計算,最后將統計值存入外部存儲器。中間處理過程可能更復雜。
  • 實時推薦系統, 將推薦算法運行在jstorm中,達到秒級的推薦效果

基本概念

首先,JStorm有點類似于Hadoop的MR(Map-Reduce),但是區別在于,hadoop的MR,提交到hadoop的MR job,執行完就結束了,進程就退出了,而一個JStorm任務(JStorm中稱為topology),是7*24小時永遠在運行的,除非用戶主動kill。

JStorm組件

接下來是一張比較經典的Storm的大致的結構圖(跟JStorm一樣):

CentOS 6.8如何安裝并使用JStorm集群

圖中的水龍頭(好吧,有點俗)就被稱作spout,閃電被稱作bolt。

在JStorm的topology中,有兩種組件:spout和bolt。

# spout

spout代表輸入的數據源,這個數據源可以是任意的,比如說kafaka,DB,HBase,甚至是HDFS等,JStorm從這個數據源中不斷地讀取數據,然后發送到下游的bolt中進行處理。

# bolt

bolt代表處理邏輯,bolt收到消息之后,對消息做處理(即執行用戶的業務邏輯),處理完以后,既可以將處理后的消息繼續發送到下游的bolt,這樣會形成一個處理流水線(pipeline,不過更精確的應該是個有向圖);也可以直接結束。

通常一個流水線的最后一個bolt,會做一些數據的存儲工作,比如將實時計算出來的數據寫入DB、HBase等,以供前臺業務進行查詢和展現。

組件的接口

JStorm框架對spout組件定義了一個接口:nextTuple,顧名思義,就是獲取下一條消息。執行時,可以理解成JStorm框架會不停地調這個接口,以從數據源拉取數據并往bolt發送數據。

同時,bolt組件定義了一個接口:execute,這個接口就是用戶用來處理業務邏輯的地方。

每一個topology,既可以有多個spout,代表同時從多個數據源接收消息,也可以多個bolt,來執行不同的業務邏輯。

調度和執行

接下來就是topology的調度和執行原理,對一個topology,JStorm最終會調度成一個或多個worker,每個worker即為一個真正的操作系統執行進程,分布到一個集群的一臺或者多臺機器上并行執行。

而每個worker中,又可以有多個task,分別代表一個執行線程。每個task就是上面提到的組件(component)的實現,要么是spout要么是bolt。

用戶在提交一個topology的時候,會指定以下的一些執行參數:

#總worker數

即總的進程數。舉例來說,我提交一個topology,指定worker數為3,那么最后可能會有3個進程在執行。之所以是可能,是因為根據配置,JStorm有可能會添加內部的組件,如_acker或者__topology_master(這兩個組件都是特殊的bolt),這樣會導致最終執行的進程數大于用戶指定的進程數。我們默認是如果用戶設置的worker數小于10個,那么__topology_master 只是作為一個task存在,不獨占worker;如果用戶設置的worker數量大于等于10個,那么__topology_master作為一個task將獨占一個worker

#每個component的并行度

上面提到每個topology都可以包含多個spout和bolt,而每個spout和bolt都可以單獨指定一個并行度(parallelism),代表同時有多少個線程(task)來執行這個spout或bolt。

JStorm中,每一個執行線程都有一個task id,它從1開始遞增,每一個component中的task id是連續的。

還是上面這個topology,它包含一個spout和一個bolt,spout的并行度為5,bolt并行度為10。那么我們最終會有15個線程來執行:5個spout執行線程,10個bolt執行線程。

這時spout的task id可能是1~5,bolt的task id可能是6~15,之所以是可能,是因為JStorm在調度的時候,并不保證task id一定是從spout開始,然后到bolt的。但是同一個component中的task id一定是連續的。

#每個component之間的關系

即用戶需要去指定一個特定的spout發出的數據應該由哪些bolt來處理,或者說一個中間的bolt,它發出的數據應該被下游哪些bolt處理。

還是以上面的topology為例,它們會分布在3個進程中。JStorm使用了一種均勻的調度算法,因此在執行的時候,你會看到,每個進程分別都各有5個線程在執行。當然,由于spout是5個線程,不能均勻地分配到3個進程中,會出現一個進程只有1個spout線程的情況;同樣地,也會出現一個進程中有4個bolt線程的情況。

在一個topology的運行過程中,如果一個進程(worker)掛掉了,JStorm檢測到之后,會不斷嘗試重啟這個進程,這就是7*24小時不間斷執行的概念。

消息的通信

上面提到,spout的消息會發送給特定的bolt,bolt也可以發送給其他的bolt,那這之間是如何通信的呢?

首先,從spout發送消息的時候,JStorm會計算出消息要發送的目標task id列表,然后看目標task id是在本進程中,還是其他進程中,如果是本進程中,那么就可以直接走進程內部通信(如直接將這個消息放入本進程中目標task的執行隊列中);如果是跨進程,那么JStorm會使用netty來將消息發送到目標task中。

實時計算結果輸出

JStorm是7*24小時運行的,外部系統如果需要查詢某個特定時間點的處理結果,并不會直接請求JStorm(當然,DRPC可以支持這種需求,但是性能并不是太好)。一般來說,在JStorm的spout或bolt中,都會有一個定時往外部存儲寫計算結果的邏輯,這樣數據可以按照業務需求被實時或者近實時地存儲起來,然后直接查詢外部存儲中的計算結果即可。

以上內容直接粘貼JStorm官網,切勿吐槽

二、 Jstorm 集群安裝

1、系統環境準備

# OS: CentOS 6.8 mininal# host.ip: 10.1.1.78 aniutv-1# host.ip: 10.1.1.80 aniutv-2# host.ip: 10.1.1.97 aniutv-5

2、安裝目錄自定義

jstorm : /opt/jstorm (源碼安裝);

zookeeper : /opt/zookeeper(源碼安裝);

java : /usr/java/jdk1.7.0_79 (rpm包安裝)

3、zookeeper 集群安裝

zookeeper 集群參考(http://blog.csdn.net/wh311212/article/details/56014983)

4、zeromq 安裝

zeromq下載地址:http://zeromq.org/area:download/

下載zeromq-4.2.1.tar.gz 到/usr/local/src

cd /usr/local/src && tar -zxf zeromq-4.2.1.tar.gz -C /opt

cd /opt/zeromq-4.2.1 && ./configure && make && sudo make install && sudo ldconfig

5、jzmq安裝

cd /opt && git clone  https://github.com/nathanmarz/jzmq.git

./autogen.sh && ./configure && make && make install

6、JStorm安裝

wget https://github.com/alibaba/jstorm/releases/download/2.1.1/jstorm-2.1.1.zip -P /usr/local/srccd /usr/local/src && unzip jstorm-2.1.1.zip -d /optcd /opt && mv jstorm-2.1.1 jstorm# mkdir /opt/jstorm/jstorm_dataecho '# jstorm env' >> ~/.bashrcecho 'export JSTORM_HOME=/opt/jstorm' >> ~/.bashrcecho 'export PATH=$PATH:$JSTORM_HOME/bin' >> ~/.bashrcsource ~/.bashrc

# JStorm 配置

sed -i /'storm.zookeeper.servers:/a\ - "10.1.1.78"' /opt/jstorm/conf/storm.yaml
sed -i /'storm.zookeeper.servers:/a\ - "10.1.1.80"' /opt/jstorm/conf/storm.yaml
sed -i /'storm.zookeeper.servers:/a\ - "10.1.1.97"' /opt/jstorm/conf/storm.yaml
sed -i /'storm.zookeeper.root/a\ nimbus.host: "10.1.1.78"' /opt/jstorm/conf/storm.yaml

配置項:

storm.zookeeper.servers: 表示zookeeper 的地址;

nimbus.host: 表示nimbus的地址;

storm.zookeeper.root: 表示JStorm在zookeeper中的根目錄,當多個JStorm共享一個zookeeper時,需要設置該選項,默認即為“/jstorm”;

storm.local.dir: 表示JStorm臨時數據存放目錄,需要保證JStorm程序對該目錄有寫權限;

java.library.path: Zeromq 和java zeromq library的安裝目錄,默認”/usr/local/lib:/opt/local/lib:/usr/lib”;

supervisor.slots.ports: 表示Supervisor 提供的端口Slot列表,注意不要和其他端口發生沖突,默認是68xx,而Storm的是67xx;

topology.enable.classloader: false, 默認關閉classloader,如果應用的jar與JStorm的依賴的jar發生沖突,比如應用使用thrift9,但jstorm使用thrift7時,就需要打開classloader。建議在集群級別上默認關閉,在具體需要隔離的topology上打開這個選項。

# 下面命令只需要在安裝 jstorm_ui 和提交jar節點的機器上面執行即可

mkdir ~/.jstorm
cp -f $JSTORM_HOME/conf/storm.yaml ~/.jstorm

7、安裝JStorm Web UI

強制使用tomcat7.0或以上版本,切記拷貝**~/.jstorm/storm.yaml,** Web UI 可以和Nimbus在同一個節點上

mkdir ~/.jstorm
cp -f $JSTORM_HOME/conf/storm.yaml ~/.jstorm
下載tomcat 7.x (以apache-tomcat-7.0.37 為例)
tar -xzf apache-tomcat-7.0.75.tar.gzcd apache-tomcat-7.0.75cd webapps
cp $JSTORM_HOME/jstorm-ui-2.1.1.war ./
mv ROOT ROOT.old
ln -s jstorm-ui-2.1.1 ROOT   # 另外不是 ln -s jstorm-ui-2.1.1.war ROOT 這個要小心cd ../bin
./startup.sh

8、JStorm啟動

1.在nimbus 節點(10.1.1.78)上執行 “nohup jstorm nimbus &”, 查看$JSTORM_HOME/logs/nimbus.log檢查有無錯誤

2.在supervisor節點(10.1.1.78,10.1.1.80,10.1.1.97)上執行 “nohup jstorm supervisor &”, 查看$JSTORM_HOME/logs/supervisor.log檢查有無錯誤

關于“CentOS 6.8如何安裝并使用JStorm集群”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識,可以關注億速云行業資訊頻道,小編每天都會為大家更新不同的知識點。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

牟定县| 云安县| 正镶白旗| 平乐县| 左云县| 达拉特旗| 芜湖市| 河北省| 邵阳市| 汉寿县| 赤峰市| 英山县| 潼南县| 洛扎县| 涿鹿县| 阿鲁科尔沁旗| 武隆县| 天水市| 蒲城县| 陕西省| 雅江县| 镇原县| 施秉县| 康马县| 宁陵县| 繁昌县| 容城县| 湘西| 资中县| 东阳市| 房山区| 钦州市| 博兴县| 乌拉特前旗| 涿鹿县| 镇安县| 龙泉市| 宣威市| 新疆| 和硕县| 峡江县|