標籤:

從頭學習大數據培訓課程 任務調度工具 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_73

set 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/hadoop

export HDFS_CONF_DIR=${HADOOP_HOME}/etc/hadoop

export YARN_CONF_DIR=${HADOOP_HOME}/etc/hadoop

export LD_LIBRARY_PATH=$HADOOP_HOME/lib/native:/usr/lib64

export MAVEN_OPTS=-Xmx1024m

export MAVEN_HOME=/usr/local/maven

export HBASE_HOME=/usr/local/hbase

export HIVE_HOME=/usr/local/hive

export PIG_HOME=/usr/local/pig

export SPARK_HOME=/usr/local/spark

export SQOOP_HOME=/usr/local/sqoop

export ZOOKEEPER_HOME=/usr/local/zookeeper

export OOZIE_HOME=/usr/local/oozie

export SCALA_HOME=/usr/local/scala

export 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 -refreshSuperUserGroupsConfiguration

yarn 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.jar

rm -rf hadoop-common-2.5.1.jar

查看日誌啟動成功

tail -f /usr/local/oozie/logs/catalina.out

使用命令驗證服務是否啟動成功

oozie admin -oozie localhost:11000/oozie -status

如果是System model:Normal,表明啟動成功,否則失敗。

訪問oozie的web頁面,埠11000 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-client

chown -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.gz

tar 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 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環境變數所以可以省略-oozie

oozie 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情況

nn1.hadoop:11000/oozie/

5. 遇到的問題

虛擬機中跑hive和sqoop一直Heart beat,主要是yarn內存和fair隊列資源不夠用,一直造用死鎖,改一下yarn-site.xml的配置

yarn的hive2使用的是hiveserver2,所以要先啟動hiveserver2才能在oozie上運行hive

nohup hive --service metastore > /dev/null 2>&1 &

nohup hive --service hiveserver2 > /dev/null 2>&1 &

yarn-site.xml

mapred-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:大數據 |