從頭學習大數據培訓課程 任務調度工具 oozie(一)oozie 編譯和安裝
1. OOZIE編譯
需要的軟體
修改的配置
由於修改了tomcat版本所以要對/usr/local/oozie-4.3.0-src/distro下的pom.xml文件進行修改
此處修改為tomcat-8
配置不進行test
升級插件讓它支持JDK1.8
環境變數配置
export JAVA_HOME=/usr/java/jdk1.8.0_73set Hadoop Path
export HADOOP_HOME=/usr/local/hadoop
export HADOOP_COMMON_HOME=${HADOOP_HOME}
export HADOOP_HDFS_HOME=${HADOOP_HOME}export HADOOP_MAPRED_HOME=${HADOOP_HOME}export HADOOP_YARN_HOME=${HADOOP_HOME}export HADOOP_CONF_DIR=${HADOOP_HOME}/etc/hadoopexport HDFS_CONF_DIR=${HADOOP_HOME}/etc/hadoopexport YARN_CONF_DIR=${HADOOP_HOME}/etc/hadoopexport LD_LIBRARY_PATH=$HADOOP_HOME/lib/native:/usr/lib64export MAVEN_OPTS=-Xmx1024mexport MAVEN_HOME=/usr/local/maven
export HBASE_HOME=/usr/local/hbase
export HIVE_HOME=/usr/local/hiveexport PIG_HOME=/usr/local/pigexport SPARK_HOME=/usr/local/sparkexport SQOOP_HOME=/usr/local/sqoopexport ZOOKEEPER_HOME=/usr/local/zookeeperexport OOZIE_HOME=/usr/local/oozieexport SCALA_HOME=/usr/local/scalaexport PATH=$PATH:$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$HBASE_HOME/bin:$HIVE_HOME/bin:$ZOOKEEPER_HOME/bin:$PIG_HOME/bin:$SPARK_HOME/bin:$SQOOP_HOME/bin:$OOZIE_HOME/bin:$SCALA_HOME/bin:$MAVEN_HOME/bin儘管打包時不用也順帶把其它軟體都安上,並配置好環境變數包括maven的使用ali的maven源進行安裝,所以要更改maven的配置
編譯命令
nohup /usr/local/oozie/bin/mkdistro.sh -DskipTests -Phadoop-2 -Dhadoop.version=2.7.3 -Dhadoop.auth.version=2.7.3 -Ddistcp.version=2.7.3 -Dhive.version=2.1.1 -Dpig.version=0.16.0 -Dspark.version=2.1.1 -Dsqoop.version=1.4.6 > /tmp/oozie 2>&1 &-DskipTests 跳過測試-Dmaven.test.skip=true 跳過測試且不生成測試jar包編譯中會遇到,缺少幾個maven插件,自行下載並複製到本地的maven倉庫就可以了
/data/maven/repositories/org/apache/maven/doxia/doxia-core/1.0-alpha-9.2y/data/maven/repositories/org/apache/maven/doxia/doxia-module-twiki/1.0-alpha-9.2y
/data/maven/repositories/org/pentaho/pentaho-aggdesigner-algorithm/5.1.5-jhyde
2. OOZIE server安裝
首先要安裝mysql,參考centosu7 linux mysql安裝
解壓編譯好的jar包,位置在/usr/local/oozie-4.3.0-src/distro/target創建軟連接 ln -s /usr/local/oozie-4.3.0 /usr/local/oozie
修改oozie-4.3.0所有者
chown -R hadoop:hadoop /usr/local/oozie-4.3.0
配置好oozie的環節變數
在mysql中創建oozie用的資料庫和oozie用戶
CREATE USER oozie@% IDENTIFIED BY 12345678;在mysql中創建oozie資料庫create database oozie default charset utf8 collate utf8_general_ci;給oozie用戶增加oozie資料庫許可權grant all privileges on oozie.* to oozie@% identified by 12345678;flush privileges;
修改oozie的配置/usr/local/oozie/conf/oozie-site.xml
首先備份配置文件根據自己創建的資料庫信息修改
設置hadoop配置文件的地址,這個根據自己需要什麼軟體就加什麼比如spark,hive
配置OOZIE系統庫,集群上運行任務的依賴庫
修改hadoop的core-site.xml文件
hadoop.proxyuser.[OOZIE_SERVER_USER].hosts[OOZIE_SERVER_HOSTNAME]hadoop.proxyuser.[OOZIE_SERVER_USER].groups[USER_GROUPS_THAT_ALLOW_IMPERSONATION]
其中[OOZIE_SERVER_USER]是安裝使用oozie server的用戶
[OOZIE_SERVER_HOSTNAME]是安裝oozie server的主機名 [USER_GROUPS_THAT_ALLOW_IMPERSONATION]是用戶的所屬組分發配置使用(盡量讓集群中各機器的配置保持一致),
/home//hadoop/hadoop_op1/scp_all.sh /usr/local/hadoop/etc/hadoop/core-site.xml /usr/local/hadoop/etc/hadoop/執行以下兩個命令,也可以採用重啟集群的方式
hdfs dfsadmin -refreshSuperUserGroupsConfigurationyarn rmadmin -refreshSuperUserGroupsConfiguration在oozie目錄下創建libext文件夾
將Hadoop下的所有jar包複製到libext目錄中:find -name *.jar |xargs -t -i cp {} /usr/local/oozie/libext
將libext中的hsqldb-2.0.0.jar刪掉,否則會引起jar包衝突。
rm -rf /usr/local/oozie/libext/hsqldb-2.0.0.jar上轉ext和mysql驅動到oozie的libext目錄
將ext2.2.0.zip、hadoop的相關jar包、以及mysql-connector-java-<版本>.jar、htrace-core-<版本>.jar、avro-<版本>.jar 打進新war包里
首先刪除war包中的這個jar包否則會出現
vv
然後使用命令:/usr/local/oozie/bin/addtowar.sh -inputwar /usr/local/oozie/oozie.war -outputwar /usr/local/oozie/oozie-server/webapps/oozie.war -hadoop 2.7.3 /usr/local/hadoop/ -extjs /usr/local/oozie/libext/ext-2.2.zip -jars /usr/local/oozie/libext/mysql-connector-java-5.1.35.jar:/usr/local/oozie/libext/htrace-core-3.1.0-incubating.jar:/usr/local/oozie/libext/avro-1.7.4.jar初始化資料庫信息
命令/usr/local/oozie/bin/ooziedb.sh create -sqlfile oozie.sql -run查看oozie資料庫,如果產生了以下的表,就說明該步驟成功
安裝oozie-sharelib。
tar xzf oozie-sharelib-4.3.0.tar.gz將mysql-connector-java-5.1.35.jar複製到/usr/local/oozie/share/lib/sqoop目錄中。如果沒有這個jar,sqoop將不能從mysql將數據導入或導出。
上傳share到hdfs上:hadoop fs -put /usr/local/oozie/share /user/hadoop因為要與oozie-site.xml中的設置oozie.service.WorkflowAppService.system.libpath的值保持一致,所以必須放到/user/<用戶>這個目錄下。當前使用的是hadoop用戶,所以放在/user/hadoop目錄下啟動oozie服務:
vim /usr/local/oozie/oozie-server/conf/server.xml 注釋掉這行oozie-start.sh
在/usr/local/oozie/oozie-server/webapps下會生成oozie文件
刪除/usr/local/oozie/oozie-server/webapps/oozie/WEB-INF/lib目錄下衝突的jar包
rm -rf ./*2.6.1.jarrm -rf hadoop-common-2.5.1.jar
查看日誌啟動成功
tail -f /usr/local/oozie/logs/catalina.out使用命令驗證服務是否啟動成功
oozie admin -oozie http://localhost:11000/oozie -status如果是System model:Normal,表明啟動成功,否則失敗。訪問oozie的web頁面,埠11000 http://nn1.hadoop:11000/oozie/
3. oozie的client安裝
client可以安裝在任意客戶端機器上
解壓/usr/local/oozie目錄下的oozie-client-4.3.0.tar.gz使用root用戶解壓到/usr/local目錄下
tar xzf ./oozie-client-4.3.0.tar.gz -C /usr/local/ln -s /usr/local/oozie-client-4.3.0 /usr/local/oozie-clientchown -R hadoop:hadoop /usr/local/oozie-client-4.3.0配置環境變數
增加OOZIE_CLIENT_HOME和OOZIE_URL配置OOZIE_URL的作用是為了在後面的oozie job這個命令中省略 -oozie
自帶例子測試
解壓/usr/local/oozie目錄下的oozie-examples.tar.gztar xzf ./oozie-examples.tar.gz -C ~/4. 運行shell例子
cd /home/hadoop/examples/apps/shell
根據自己的集群情況編輯job.properties
將要運行的程序上傳到hdfs
hadoop fs -put ~/examples /user/hadoop執行以下命令運行
oozie job -oozie http://nn1.hadoop:11000/oozie -config ~/examples/apps/shell/job.properties -run-oozie 後面跟的是oozie server的地址,-config後面跟的是執行的腳本,除了在hdfs上要有一份examples,在本地也需要一份。這個命令中的~/examples/apps/shell/job.properties是本地路徑的job.properties,不是hdfs上的。配置方面,提交任務時本地只使用job.properties,HDFS上只需要上傳workflow.xml文件因上配置了OOZIE_URL環境變數所以可以省略-oozieoozie job -config ~/examples/apps/shell/job.properties -run根據上面的job Id ,可以使用下列命令進行查看JOB信息
oozie job -info 0000000-170529021031842-oozie-hado-W根據上面的job Id ,可以使用下列命令進行日誌
oozie job -log 0000000-170529021031842-oozie-hado-W還可以在oozie的web頁面上查看job情況
http://nn1.hadoop:11000/oozie/5. 遇到的問題
虛擬機中跑hive和sqoop一直Heart beat,主要是yarn內存和fair隊列資源不夠用,一直造用死鎖,改一下yarn-site.xml的配置
yarn的hive2使用的是hiveserver2,所以要先啟動hiveserver2才能在oozie上運行hivenohup hive --service metastore > /dev/null 2>&1 &nohup hive --service hiveserver2 > /dev/null 2>&1 &yarn-site.xmlmapred-site.xml
fair-scheduler.xml
如果運行hive例子的時候出現這個錯誤
是因為在/usr/local/hadoop/share/hadoop/yarn下沒有jline-2.12.jar這個jar包,在hive的lib下面找到相應的jar包拷貝到集群中每個機器上的/usr/local/hadoop/share/hadoop/yarn下面
海牛學院青牛原創 | 如需轉載請註明出處
推薦閱讀:
※RDD論文翻譯:基於內存的集群計算容錯抽象
※大數據(big data):基礎概念
※阿里巴巴大數據之路-數據模型篇
※陳書悅:大數據可否幫助炒股?
※Linux大數據開發之Shell編程基礎
TAG:大數據 |