Jstorm下載安裝步驟及報錯分析

準備:

1) github上下載jstorm安裝包https://github.com/alibaba/jstorm

2) tar -xzvf jstorm-2.1.1.tar.gz

3) vim ~/.bashrc 添加兩行:

export JSTORM_HOME=/home/aegis/tools/jstorm-2.1.1

export PATH=$PATH:$JSTORM_HOME/bin

4) source ~/.bashrc

5) vim /home/aegis/tools/jstorm-2.1.1/conf/storm.yaml

6)修改storm.zookeeper.servers及nimbus.host

7) 安裝jstorm web ui:

如下只在nimbus機器上執(zhí)行,supervisor可省略:

一句話總結:cp jstorm安裝目錄下的jstorm-ui-2.1.1.war到/home/aegis/tools/tomcat-9.0.0/webapps下,建立ROOT軟鏈接,重啟tomcat 。

具體步驟:

必須使用tomcat 7.0 或以上版本, 注意不要忘記拷貝~/.jstorm/storm.yaml

Web UI 可以和Nimbus不在同一個節(jié)點

mkdir ~/.jstorm

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

下載tomcat 7.x (以apache-tomcat-7.0.37 為例)

tar -xzf apache-tomcat-7.0.37.tar.gz

cd apache-tomcat-7.0.37

cd webapps

cp $JSTORM_HOME/jstorm-ui-0.9.6.3.war ./

mv ROOT ROOT.old

ln -s jstorm-ui-0.9.6.3 ROOT? 這個地方可能變化,是根據你的JStorm版本來確定,比如當0.9.6.1時,是ln -s jstorm-0.9.6.1 ROOT

另外不是 ln -s jstorm-ui-0.9.6.3.war ROOT 這個要小心

cd ../bin

./startup.sh

8) cd install-packages; cp?jstorm-core-2.1.1.jar?/home/aegis/tools/jstorm-2.1.1

8.1) 為了避免混亂227機器上修改/home/aegis/tools/jstorm-2.1.1/conf/storm.yaml中的

storm.local.dir: "%JSTORM_HOME%/data227"

并在$JSTORM_HOME目錄下新建data227目錄 mkdir data227;

其他機器上類似新建data228 及data229

9) 在qa-m10-py229.py01上: 執(zhí)行命令 nohup jstorm nimbus & ;

檢查服務是否啟動成功:輸入命令 jps ;顯示有進程 NimbusServer

查看$JSTORM_HOME/logs/nimbus.log檢查有無錯誤,成功應提示如下:

[main] INFO com.alibaba.jstorm.daemon.nimbus.TopologyMetricsRunnable - Successfully init com.alibaba.jstorm.daemon.nimbus.metric.uploader.DefaultMetricUploader

10) 在qa-m10-py228.py01上:執(zhí)行命令??nohup jstorm supervisor & ;

檢查服務是否啟動成功: ?輸入命令 jps ;顯示有進程 Supervisor

查看$JSTORM_HOME/logs/supervisor.log檢查有無錯誤

11) 在qa-m10-py227.py01上:執(zhí)行命令??nohup jstorm supervisor & ;

檢查服務是否啟動成功: ?輸入命令 jps ;顯示有進程 Supervisor

查看$JSTORM_HOME/logs/supervisor.log檢查有無錯誤

12) 檢查拓撲結構:http://XXX.XXX.XXX:8080ip為nimbus的ip地址

報錯問題分析:

1)啟動nimbus報錯1:

/usr/bin/java

Error: Could not find or load main class backtype.storm.command.config_value

Failed to get config nimbus.classpath

None

解決方法:

git clone?git@git.XXXXXX.com:panlinstephanie/install-packages.git

cp?jstorm-core-2.1.1.jar?/home/aegis/tools/jstorm-2.1.1

分析原因:

缺失jar包。

2)啟動nimbus報錯2:

SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder".

SLF4J: Defaulting to no-operation (NOP) logger implementation

SLF4J: See?http://www.slf4j.org/codes.html#StaticLoggerBinder?for further details.

解決方法:

參考http://stackoverflow.com/questions/7421612/slf4j-failed-to-load-class-org-slf4j-impl-staticloggerbinder

下載slf4j-simple-1.6.1.jar 并保存到工程git@git.xiaojukeji.com:panlinstephanie/install-packages.git

以后只需將slf4j-simple-1.6.1.jar 拷貝到/home/aegis/tools/jstorm-2.1.1/lib 即可,和原有的slf4j-api-1.7.5.jar放在一起。

分析原因:

一些函數依賴slf4j jar包的版本較老。

3)啟動nimbus報錯3:


ERROR com.alibaba.jstorm.daemon.nimbus.NimbusCache - Failed to create NimbusCache!

java.lang.RuntimeException: Failed to cleanup rooDir of rocksDB /home/aegis/tools/jstorm-2.1.1/data229/nimbus/rocksdb

解決方法:

根據錯誤提示刪除rocksdb目錄,并用aegis用戶新建rocksdb目錄。

分析原因:

該目錄下文件的權限為root,因此aegis無權限寫覆蓋導致。

4)啟動jstorm后打開網頁http://100.90.XXX.XX:8080/不顯示jstorm的ui界面

解決方法:

參考https://github.com/alibaba/jstorm/wiki/如何安裝#%E5%AE%89%E8%A3%85jstorm-web-ui

首先將 jstorm-ui.war 拷貝到 tomcat/webapps ,當tomcat啟動后, 該war包會自動被解壓到 jstorm-ui 文件夾。

如果你不改這個文件名, 則需要訪問?http://hostname:8080/jstorm-ui/。

建議將解壓出來的文件夾名換成 ROOT , 或者ROOT軟鏈接到該文件夾,則可以通過?http://hostname:8080/直接訪問了。

分析原因:

沒有建立ROOT軟鏈接,所以必須使用網頁http://100.90.XXX.XX:8080/jstorm-ui-2.1.1/打開jstorm的UI界面。

5) sonar無法啟動:

http://stackoverflow.com/questions/12583065/unable-to-access-sonar-through-web

2017.02.08 11:40:22 ERROR web[][o.a.c.c.C.[.[.[/]] Exception sending context initialized event to listener instance of class org.sonar.server.platform.web.PlatformServletContextListener

org.sonar.api.utils.SonarException: Unable to start database

Caused by: org.h2.jdbc.JdbcSQLException: Exception opening port "9092" (port may be in use), cause: "java.net.BindException: Address already in use (Bind failed)" [90061-176]

分析原因:

229機器上的9092端口已經被kafka broker占用了

解決方法:

在9092端口沒有沒占用的機器上啟動sonar服務。


然后發(fā)現仍然無法打開網頁http://100.90.xxx.xx:9000

查看/home/aegis/tools/sonarqube-6.2/logs 沒有ERROR.

排除9000端口不能訪問的問題:在本地執(zhí)行telnet 100.90.xxx.xx 9000 顯示Trying 100.90.xxx.xx... 發(fā)現9000端口可以訪問

在100.90.xxx.xx上執(zhí)行 netstat -anp | grep 9000 端口是在監(jiān)聽中的:

tcp ? ? ? ?0 ? ? ?0 0.0.0.0:9000 ? ? ? ? ? ? ? ?0.0.0.0:* ? ? ? ? ? ? ? ? ? LISTEN ? ? ?-

發(fā)現op對廣州服務進行了端口權限管理,訪問9000端口需要權限申請,流程參考jira:

JIRA Issues Macro: Data cannot be retrieved due to an unexpected error

?,同時說明開通原因。

so, 打算換個端口,把默認的9000換成8080:

修改配置文件: /home/aegis/tools/sonarqube-6.2/conf/sonar.properties

sonar.web.host=100.90.204.58

sonar.web.port=8080

然后用root啟動sonar :

cd?/home/aegis/tools/sonarqube-6.2/bin/linux-x86-64

sh?sonar.sh start

最后終于可以完美訪問了:http://100.90.xxx.xx:8080

---------------------分割線------------------------------------------------

如果要在同一臺機器上同時部署sonar和tomcat的話,

為了防止和tomcat 8080端口沖突,修改配置文件:/home/aegis/tools/sonarqube-6.2/conf/sonar.properties

把sonar web服務端口從原來的9000改為8081:

sonar.web.host=100.90.204.58

sonar.web.port=8080

sonar database數據庫端口從9092改為8082:

sonar.embeddedDatabase.port=8082

同樣可以完美訪問http://100.90.xxx.xx:8081/projects

(完)。

6)Jstorm啟動后拓撲圖報錯

java.lang.RuntimeException:

java.lang.RuntimeException:

org.apache.zookeeper.KeeperException$NoNodeException:

KeeperErrorCode = NoNode for /brokers/topics/SEC_AEGIS_async_req_out/partitions ,

at 2017-02-13 14:15

at storm.kafka.DynamicBrokersReader.getBrokerInfo(DynamicBrokersReader.java:81)

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

友情鏈接更多精彩內容