zeus部署

1.下載zeushtml

阿里在github上已經不維護zeus了,在網上找到一個別人貢獻的java

https://github.com/michael8335/zeus2python

下載下來mysql

經過shelllinux

rz命令上傳到服務器git

解壓:> unzip zeus2-master.zipgithub

將解壓的文件夾移動到本身設定的目錄:web

> mv zeus2-master /zeussql

 

2.配置zeusshell

1)切換到zeus目錄,建立日誌目錄

>cd /zeus

>mkdir logs

>mkdir hdfs-upload-dir

>mdir run_job_dir

 

2)修改配置文件antx.properties

目錄:

/zeus/web/src/main/filter/antx.properties

#環境配置,用來標記環境,能夠配合Environment使用
zeus.env=test-env
zeus.loggingRoot=/zeus/logs
zeus.loggingLevel=warn
#任務執行文件夾,每次任務都會在此文件夾下新建一個臨時文件夾
zeus.localdata.dir=/zeus/run_job_dir
#此處必須是hdfs路徑,全部的上傳附件都會存放在下面路徑上
zeus.hdfsLibPath=/zeus/hdfs-upload-dir
#環境配置,若是是在一個集羣中,須要配置城同一個名稱
zeus.schedule.group=test-env
#Scheduler 與 Worker 通訊的端口
zeus.connect.port=9887
#hadoop jobtracker地址,填寫ip+port 或者 domain+port
zeus.jobtracker=192.168.1.166:50030

#zk配置非必選,能夠爲空,此處的zk是用來通知任務的成功失敗事件的
zeus.zookeeper.host=

  

3)將配置文件antx.properties 拷貝到用戶主目錄

> cp antx.properties ~

 

4)配置highcharts的位置,修改/zeus/web/pom.xml文件

>cd /zeus/web/

>vi pom.xml

將local.highcharts修改以下:

<local.highcharts>/zeus/web/libs/highcharts-1.4.0.jar</local.highcharts>

 

5)配置zeus數據庫鏈接信息:persistence.xml

>cd /zeus/web/src/main/resources

>vi persistence.xml

數據庫ip地址、數據庫名、用戶名、密碼改爲本身的

 

6)建立dos2unix命令 
> yum install dos2unix.x86_64 -y

 

7)下載maven。安裝,配置環境變量

 

8)進入zeus目錄

> cd /zeus

>mvn clean:clean 成功

>mvn package -Dmaven.test.skip=true 成功

把/zeus/web/target/zeus-web.war 拷貝到/apache-tomcat/webapps/下

>cd /apache-tomcat/bin

>startup.sh 啓動tomcat

報錯:

Hive Schema version 0.12.0 does not match metastore's schema version 2.3.0 Metastore is not upgraded or corrupt

zeus源碼裏引入的

hive-metastor,hive-exec,hive-common包都是0.12.0版本

想着本身安裝的hive是2.3.4版本

找了maven倉庫沒有2.3.4版本,就把0.12.0改爲2.3.0

再從新打包,啓動

 

報錯:

java.lang.NoClassDefFoundError: org/datanucleus/PersistenceNucleusContext,找不到這個類,就在maven倉庫上找datanucleus的3.2.1版本,jar包下載下來,看了下,確實沒有這個類,看5.0.3仍是5.0.1版本有這個類,就在zeus上把版本改了,從新編譯打包,tomcat部署啓動,

又報錯

org.datanucleus.util.Localiser.getInstance(Ljava/lang/String;Ljava/lang/Clas

意思是Localiser.getInstance沒有這個帶string的構造方法,去剛下載的5.0.1的包看了確實沒有,又去maven 倉庫看了3.x的版本有這個,但卻沒PersistenceNucleusContext類,真是矛盾,好像行不通啊

 

先放下linux這邊

直接在window本地調試下,eclipse中導入zeus源碼,直接在server中加入zeus-web,啓動,不報錯,但在瀏覽器訪問,不行,訪問不了

看了web.xml配置 

<welcome-file-list>
  <welcome-file>platform.html</welcome-file>
</welcome-file-list> 

首頁是 platform.html 

但源碼中沒有找到

先在cmd中進入zeus源碼目錄,clean,package

將zeus2-master/web/target/zeus-web.war

放到tomcat8/webapps下

啓動tomcat

訪問成功

 

那爲何本地可能,同樣的代碼放到linux上編譯打包部署各類錯呢?

仍是把這個代碼關於logs ,run_job_dir,hdfs-upload-dir相關目錄從windows修改爲linux上路徑

繼續放到linux上去編譯打包,都沒問題

tomcat中運行,又報錯

Hive Schema version 0.12.0 does not match metastore's schema version 2.3.0 Metastore is not upgraded or corrupt

仍是同樣的問題

此次在網上搜了下,說是把hive的mysql庫version表中版本由2.3.0改爲我引入包的版本0.12.0

 

SCHEMA_VERSION由原來的2.3.0改爲0.12.0 

重啓tomcat,不報剛纔的錯了,又出現新的錯:

Could not instantiate bean class [com.taobao.zeus.store.CliTableManager]: Constructor threw exception; nested exception is java.lang.NumberFormatException: For input string: "0s"

解決:找到/hive/conf/hdfs-site.xml文件,把裏面配置的參數帶s的,都把s去掉。

 

繼續重啓tomcat,不報錯了,瀏覽器訪問也OK了

 

 

搭建好了,怎麼調度任務呢?

以下圖,在調度中心中建立一些任務分組,分組建立好了,我新建了一個從mysql到hive抽取數據的任務,抽取data_user表,名字就叫data_user,

定時表達式:天天3點執行。

 

腳本:ssh -p 22  root@master sh /dump 1

解釋:經過ssh遠程鏈接執行sh命令

ssh -p 端口 用戶@ip sh 你要執行的命令

我由於zeus和datax,hive,hadoop裝在一臺機器上,直接用機器名master,並且作了免密登陸。

dump是一個shell腳本,去調用datax命令的,而且傳遞參數1表示任務號是1,任務放在/datax/job下 ,1.json任務

#!bash
. /etc/profile

export DATAX_HOME=/datax

if [ $# == 2 ]; then
   today=$2
else
   today=`date -d -1days '+%Y-%m-%d'`
fi
if test $? -ne 0
then
exit 11
fi


cd $DATAX_HOME/bin
python datax.py ../job/$1.json

點擊手動執行任務,結果報錯(日誌在當初安裝部署zeus時建立的日誌目錄裏,我放在/zeus/logs下,zeus部署在/tomcat/webapps下)

 

打日誌調試,發現寫channel裏寫不了,報錯,代碼跟蹤下來,發現從context裏獲取的channel爲空,因此channel.write(sm)報錯了。

 

可是context.setServerChannel(future.getChannel());這裏明明是有值的,不爲空。

 

 斷續查找,發現配置了端口9887

並且分佈式鎖通訊,用到了這個端口

 

因而在服務器上,查看下這個端口

>lsof -i:9887  發現9887這個端口好多,會不會佔用太多了卡住了,一口氣全kill

 

 把日誌什麼的刪除掉,tomcat重啓,再手動執行,居然執行成功了。

相關文章
相關標籤/搜索