安裝或設定

先決條件

本文演示瞭如何在 Hadoop 2.7.3 上安裝 oozie-4.3.0

  1. Java 1.7+
  2. Hadoop 2.x(這裡,2.7.3)
  3. Maven3 +
  4. Unix 盒子

第 1 步:Dist 檔案

http://www-eu.apache.org/dist/oozie/4.3.0/ 獲取 oozie tar.gz 檔案並解壓縮

cd $HOME
tar -xvf oozie-4.3.0.tar.gz

第 2 步:構建 Oozie

cd $HOME/oozie-4.3.0/bin
./mkdistro.sh -DskipTests

第 3 步:伺服器安裝

將構建的二進位制檔案複製到主目錄為’oozie'

cd $HOME
cp -R $HOME/oozie-4.3.0/distro/target/oozie-4.3.0-distro/oozie-4.3.0 .

步驟 3.1:libext 在 oozie 目錄下建立 libext 目錄

 cd $HOME/oozie
 mkdir libext

注意 :ExtJS(2.2+)庫(可選,啟用 Oozie webconsole)但是,ExtJS 庫沒有與 Oozie 繫結,因為它使用不同的許可證:(現在你需要將 hadoop jar 放在 libext 目錄中,否則它將在下面丟擲 oozie.log 檔案中的錯誤

WARN ActionStartXCommand:523 - SERVER [data01.teg.io] USER [hadoop] GROUP [ - ] TOKEN [] APP [map-reduce-wf] JOB [0000000-161215143751620-oozie-hado-W]行動[0000000-161215143751620- oozie-hado-W @ mr-node]啟動動作[mr-node]時出錯。ErrorType [TRANSIENT],ErrorCode [JA009],訊息[JA009:無法初始化群集。請檢查 mapreduce.framework.name 的配置和相應的伺服器地址。

所以,讓我們把它放在 libext 目錄下的 jar 下面

cp $HADOOP_HOME/share/hadoop/common/*.jar oozie/libext/
cp $HADOOP_HOME/share/hadoop/common/lib/*.jar oozie/libext/
cp $HADOOP_HOME/share/hadoop/hdfs/*.jar oozie/libext/
cp $HADOOP_HOME/share/hadoop/hdfs/lib/*.jar oozie/libext/
cp $HADOOP_HOME/share/hadoop/mapreduce/*.jar oozie/libext/
cp $HADOOP_HOME/share/hadoop/mapreduce/lib/*.jar oozie/libext/
cp $HADOOP_HOME/share/hadoop/yarn/*.jar oozie/libext/
cp $HADOOP_HOME/share/hadoop/yarn/lib/*.jar oozie/libext/

步驟 3.2:Oozie Impersonate 要避免在 oozie 上出現模擬錯誤,請修改 core-site.xml,如下所示

<!-- OOZIE -->
  <property>
    <name>hadoop.proxyuser.[OOZIE_SERVER_USER].hosts</name>
    <value>[OOZIE_SERVER_HOSTNAME]</value>
  </property>
  <property>
    <name>hadoop.proxyuser.[OOZIE_SERVER_USER].groups</name>
    <value>[USER_GROUPS_THAT_ALLOW_IMPERSONATION]</value>
  </property>

假設,我的 oozie 使用者是 huser,主機是 localhost,group 是 hadoop

<!-- OOZIE -->
  <property>
    <name>hadoop.proxyuser.huser.hosts</name>
    <value>localhost</value>
  </property>
  <property>
    <name>hadoop.proxyuser.huser.groups</name>
    <value>hadoop</value>
  </property>

注意:如果出現混淆,你可以在所有值中使用*

步驟 3.3:準備戰爭

cd $HOME/oozie/bin
./oozie-setup.sh prepare-war

這將在 oozie 目錄中建立 oozie.war 檔案。如果將進一步使用此戰爭,你可能會遇到此錯誤:

ERROR ActionStartXCommand:517 - SERVER [data01.teg.io] USER [hadoop] GROUP [ - ] TOKEN [] APP [map-reduce-wf] JOB [0000000-161220104605103-oozie-hado-W]行動[0000000-161220104605103- oozie-hado-W @ mr-node]錯誤,java.lang.NoSuchFieldError:HADOOP_CLASSPATH

為什麼?因為,即使在使用選項“-Dhadoop.version = 2.7.3”指定 Hadoop 2.7.3 時,oozie 編譯也會生成 Hadoop 2.6.0 jar。

因此,要避免此錯誤,請將 oozie.war 檔案複製到其他目錄

mkdir $HOME/oozie_war_dir
cp $HOME/oozie/oozie.war $HOME/oozie_war_dir
cd $HOME/oozie_war_dir
jar -xvf oozie.war
rm -f oozie.war/WEB-INF/lib/hadoop-*.jar
rm -f oozie.war/WEB-INF/lib/hive-*.jar
rm oozie.war
jar -cvf oozie.war ./*
cp oozie.war $HOME/oozie/

然後,通過準備戰爭為 oozie 重新生成 oozie.war 二進位制檔案

cd $HOME/oozie/bin
./oozie-setup.sh prepare-war

步驟 3.4:在 HDFS 上建立 sharelib

cd $HOME/oozie/bin
./oozie-setup.sh sharelib create -fs hdfs://localhost:9000

現在,這個 sharelib 設定可能會給你以下錯誤:

org.apache.oozie.service.ServiceException:E0104:無法完全初始化服務[org.apache.oozie.service.ShareLibService],無法快取 sharelib。管理員需要使用 oozie-setup.sh 安裝 sharelib 併發出’oozie admin’CLI 命令來更新 sharelib

要避免這種情況,請修改 oozie-site.xml,如下所示

cd $HOME/oozie
vi conf/oozie-site.xml

新增以下屬性

<property>
    <name>oozie.service.HadoopAccessorService.hadoop.configurations</name> 
    <value>*=/usr/local/hadoop/etc/hadoop/</value>
</property>

值應為$ HADOOP_HOME / etc / hadoop,其中存在所有 hadoop 配置檔案。

步驟 3.5:建立 Oozie DB

cd $HOME/oozie
./bin/ooziedb.sh create -sqlfile oozie.sql -run

步驟 3.6:啟動守護程式

要將 Oozie 作為守護程式啟動,請使用以下命令:

./bin/oozied.sh start

停止

./bin/oozied.sh stop

檢查日誌是否有錯誤(如果有)

cd $HOME/oozie/logs
tail -100f oozie.log

使用以下命令從命令列檢查 Oozie 的狀態:

$ ./bin/oozie admin -oozie http://localhost:11000/oozie -status
System mode: NORMAL

第 4 步:客戶端安裝

$ cd
$ cp oozie/oozie-client-4.3.0.tar.gz .
$ tar -xvf oozie-client-4.3.0.tar.gz
$ mv oozie-client-3.3.2 oozie-client
$ cd bin

將$ HOME / oozie-client / bin 新增到 .bashrc 檔案中的 PATH 變數,然後重新啟動終端或執行

source $HOME/.bashrc

有關設定的更多詳細資訊,請參閱此 URL https://oozie.apache.org/docs/4.3.0/DG_QuickStart.html

現在,你可以在終端中向 oozie 提交 hadoop 作業。

要執行示例,你可以按照此 URL 並設定第一個示例來執行 https://oozie.apache.org/docs/4.3.0/DG_Examples.html

在上面的 URL 中執行 map reduce 示例時,你可能會遇到以下錯誤

java.io.IOException:java.net.ConnectException:在連線異常時呼叫從 localhost.localdomain / 127.0.0.1 到 0.0.0.0:10020 失敗:java.net.ConnectException:Connection refused; 有關更多詳細資訊,請參閱: http//wiki.apache.org/hadoop/ConnectionRefused

解決方案: 啟動 mr-jobhistory-server.sh

cd $HADOOP_HOME/sbin
./mr-jobhistory-server.sh start historyserver

關於修改 job.properties 檔案的另一點需要注意的是:

nameNode=hdfs://localhost:9000
jobTracker=localhost:8032

在你的情況下,這可能是不同的,因為我使用 apache hadoop,你可能正在使用 cloudera / hdp / anything

To run spark job, I have tried running in local[*], yarn-client and
yarn-cluster as master, but succeeded in local[*] only