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重啓,再手動執行,居然執行成功了。