大家好,我是不溫卜火,是一名計算機學院大數據專業大二的學生,暱稱來源於成語—
不溫不火
,本意是希望自己性情溫和
。作爲一名互聯網行業的小白,博主寫博客一方面是爲了記錄自己的學習過程,另一方面是總結自己所犯的錯誤希望能夠幫助到很多和自己一樣處於起步階段的萌新。但由於水平有限,博客中難免會有一些錯誤出現,有紕漏之處懇請各位大佬不吝賜教!暫時只有csdn這一個平臺,博客主頁:https://buwenbuhuo.blog.csdn.net/
此篇爲大家帶來的是Oozie的簡單介紹及部署。
此部分所需jar包等博主已經打包上傳到百度雲如有需要,請自行下載
鏈接:https://pan.baidu.com/s/1H3BvKEftWKitjDf2EhX44g
提取碼:96a7
一. 什麼是Oozie
Oozie英文翻譯爲:馴象人。一個基於工作流引擎的開源框架,由Cloudera公司貢獻給Apache,提供對Hadoop MapReduce、Pig Jobs的任務調度與協調。Oozie需要部署到Java Servlet容器中運行。主要用於定時調度任務,多任務可以按照執行的邏輯順序調度。
二. Oozie的功能模塊介紹
2.1 模塊
- 1. Workflow(工作流程)
順序執行流程節點,支持fork(分支多個節點),join(合併多個節點爲一個)
- 2. Coordinator
定時觸發workflow
- 3. Bundle Job
綁定多個Coordinator
下圖爲Oozie定義的工作流程
2.2 常用節點
- 1.控制流節點(Control Flow Nodes)
控制流節點一般都是定義在工作流開始或者結束的位置,比如start,end,kill等。以及提供工作流的執行路徑機制,如decision,fork,join等。
- 2.動作節點(Action Nodes)
負責執行具體動作的節點,比如:拷貝文件,執行某個Shell腳本等等。
三. Oozie的部署
部署Oozie用的是CDH版本的。因爲阿帕奇官網給的Oozie只有原始版版本的需要編譯才能進行使用。
3.1 部署Hadoop(CDH版本)
1. 上傳及解壓縮
- 1. 上傳所需文件
- 2. 創建文件並加壓cdh到創建文件夾
[bigdata@hadoop002 oozie]$ mkdir /opt/module/cdh
[bigdata@hadoop002 oozie]$ tar -zxvf hadoop-2.5.0-cdh5.3.6.tar.gz -C /opt/module/cdh/
/opt/module/cdh/hadoop-2.5.0-cdh5.3.6
2. 修改Hadoop配置
- 1. 修改slaves
[bigdata@hadoop002 hadoop]$ vim slaves
// 需要添加的內容
hadoop002
hadoop003
hadoop004
- 2. hadoop-env.sh
// 首先先獲取 JAVA_HOME
[bigdata@hadoop002 hadoop]$ echo $JAVA_HOME
/opt/module/jdk1.8.0_144
// 所要修改的部分
export JAVA_HOME=/opt/module/jdk1.8.0_144
- 3. mapred-env.sh
// 同
export JAVA_HOME=export JAVA_HOME=/opt/module/jdk1.8.0_144
- 4. yarn-env.sh
// 改這一行
export JAVA_HOME=/opt/module/jdk1.8.0_144
- 5. core-site.xml
<configuration>
<!-- 指定HDFS中NameNode的地址 -->
<property>
<name>fs.defaultFS</name>
<value>hdfs://hadoop002:8020</value>
</property>
<!-- 指定hadoop運行時產生文件的存儲目錄 -->
<property>
<name>hadoop.tmp.dir</name>
<value>/opt/module/cdh/hadoop-2.5.0-cdh5.3.6/data/tmp</value>
</property>
<!-- Oozie Server的Hostname -->
<property>
<name>hadoop.proxyuser.bigdata.hosts</name>
<value>*</value>
</property>
<!-- 允許被Oozie代理的用戶組 -->
<property>
<name>hadoop.proxyuser.bigdata.groups</name>
<value>*</value>
</property>
</configuration>
- 6. hdfs-site.xml
<configuration>
<property>
<name>dfs.replication</name>
<value>3</value>
</property>
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>hadoop004:50090</value>
</property>
</configuration>
- 7. mapred-site.xml
// 先修改文件名
[bigdata@hadoop002 hadoop]$ mv mapred-site.xml.template mapred-site.xml
<configuration>
<!-- 指定mr運行在yarn上 -->
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
<!-- 配置 MapReduce JobHistory Server 地址 ,默認端口10020 -->
<property>
<name>mapreduce.jobhistory.address</name>
<value>hadoop002:10020</value>
</property>
<!-- 配置 MapReduce JobHistory Server web ui 地址, 默認端口19888 -->
<property>
<name>mapreduce.jobhistory.webapp.address</name>
<value>hadoop002:19888</value>
</property>
</configuration>
- 8. yarn-site.xml
<configuration>
<!-- Site specific YARN configuration properties -->
<!-- reducer獲取數據的方式 -->
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<!-- 指定YARN的ResourceManager的地址 -->
<property>
<name>yarn.resourcemanager.hostname</name>
<value>hadoop003</value>
</property>
<property>
<name>yarn.log-aggregation-enable</name>
<value>true</value>
</property>
<!-- 任務歷史服務 -->
<property>
<name>yarn.log.server.url</name>
<value>http://hadoop002:19888/jobhistory/logs/</value>
</property>
</configuration>
- 9. 重新格式化並啓動測試
// 首次啓動需要格式化namenode
[bigdata@hadoop002 hadoop]$ cd /opt/module/cdh/hadoop-2.5.0-cdh5.3.6/
[bigdata@hadoop002 hadoop-2.5.0-cdh5.3.6]$ bin/hdfs namenode -format
// 都要格式化
// 正常情況下是不會出現其他狀況的直接成功
// 重啓Hadoop集羣
// 注意:需要開啓JobHistoryServer, 最好執行一個MR任務進行測試。
[bigdata@hadoop002 hadoop-2.5.0-cdh5.3.6]$ sbin/start-dfs.sh
[bigdata@hadoop003 hadoop-2.5.0-cdh5.3.6]$ sbin/start-yarn.sh
[bigdata@hadoop002 hadoop-2.5.0-cdh5.3.6]$ sbin/mr-jobhistory-daemon.sh start historyserver
// 測試
// 1. 創建文件(hdfs)
[bigdata@hadoop002 hadoop-2.5.0-cdh5.3.6]$ bin/hadoop fs -mkdir /input
// 創建文檔
[bigdata@hadoop002 hadoop-2.5.0-cdh5.3.6]$ vim buwenbuhuo.txt
// 填寫內容
my buwenbuhuo
wo haoren
// 上傳到HDFS上
[bigdata@hadoop002 hadoop-2.5.0-cdh5.3.6]$ bin/hadoop fs -put buwenbuhuo.txt /input
// 運行例子
[bigdata@hadoop002 hadoop-2.5.0-cdh5.3.6]$ bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.5.0-cdh5.3.6.jar wordcount /input /output
3.2 部署Oozie
1. 解壓Oozie
[bigdata@hadoop002 software]$ tar -zxvf software/oozie/oozie-4.0.0-cdh5.3.6.tar.gz -C ./
2. 在oozie根目錄下解壓oozie-hadooplibs-4.0.0-cdh5.3.6.tar.gz
// 完成後Oozie目錄下會出現hadooplibs目錄。
[bigdata@hadoop002 oozie-4.0.0-cdh5.3.6]$ tar -zxvf oozie-hadooplibs-4.0.0-cdh5.3.6.tar.gz -C ../
3. 在Oozie目錄下創建libext目錄
[bigdata@hadoop002 oozie-4.0.0-cdh5.3.6]$ mkdir libext/
4. 拷貝依賴的Jar包
- 1. 將hadooplibs裏面的jar包,拷貝到libext目錄下
[bigdata@hadoop002 oozie-4.0.0-cdh5.3.6]$ cp hadooplibs/hadooplib-2.5.0-cdh5.3.6.oozie-4.0.0-cdh5.3.6/* libext/
- 2. 拷貝Mysql驅動包到libext目錄下
[bigdata@hadoop002 oozie-4.0.0-cdh5.3.6]$ cp /opt/software/oozie/mysql-connector-java-5.1.27-bin.jar libext/
5. 將ext-2.2.zip拷貝到libext/目錄下
// ext是一個js框架,用於展示oozie前端頁面
[bigdata@hadoop002 oozie-4.0.0-cdh5.3.6]$ cp /opt/software/oozie/ext-2.2.zip libext/
6. 修改Oozie配置文件
- 1. oozie-site.xml
屬性:oozie.service.JPAService.jdbc.driver
屬性值:com.mysql.jdbc.Driver
解釋:JDBC的驅動
屬性:oozie.service.JPAService.jdbc.url
屬性值:jdbc:mysql://hadoop002:3306/oozie
解釋:oozie所需的數據庫地址
屬性:oozie.service.JPAService.jdbc.username
屬性值:root
解釋:數據庫用戶名
屬性:oozie.service.JPAService.jdbc.password
屬性值:199712
解釋:數據庫密碼
屬性:oozie.service.HadoopAccessorService.hadoop.configurations
屬性值:*=/opt/module/cdh/hadoop-2.5.0-cdh5.3.6/etc/hadoop
解釋:讓Oozie引用Hadoop的配置文件
// 下圖爲我們所要修改的地方
7. 在Mysql中創建Oozie的數據庫
- 進入Mysql並創建oozie數據庫
[bigdata@hadoop002 opt]$ mysql -uroot -p199712
mysql> create database oozie;
8. 初始化Oozie
- 1. 上傳Oozie目錄下的yarn.tar.gz文件到HDFS
// 提示:yarn.tar.gz文件會自行解壓
[bigdata@hadoop002 oozie-4.0.0-cdh5.3.6]$ bin/oozie-setup.sh sharelib create -fs hdfs://hadoop002:8020 -locallib oozie-sharelib-4.0.0-cdh5.3.6-yarn.tar.gz
- 2. 創建oozie.sql文件
[bigdata@hadoop002 oozie-4.0.0-cdh5.3.6]$ bin/ooziedb.sh create -sqlfile oozie.sql -run
- 3. 打包項目,生成war包
[bigdata@hadoop002 oozie-4.0.0-cdh5.3.6]$ bin/oozie-setup.sh prepare-war
9. Oozie的啓動與關閉
// 啓動命令如下:
[bigdata@hadoop002 oozie-4.0.0-cdh5.3.6]$ bin/oozied.sh start
// 關閉命令如下:
[bigdata@hadoop002 oozie-4.0.0-cdh5.3.6]$ bin/oozied.sh stop
10. 訪問Oozie的Web頁面
http://hadoop002:11000/oozie
這樣就大功告成了!!!
本次的分享就到這裏了,
好書不厭讀百回,熟讀課思子自知。而我想要成爲全場最靚的仔,就必須堅持通過學習來獲取更多知識,用知識改變命運,用博客見證成長,用行動證明我在努力。
如果我的博客對你有幫助、如果你喜歡我的博客內容,請“點贊” “評論”“收藏”
一鍵三連哦!聽說點讚的人運氣不會太差,每一天都會元氣滿滿呦!如果實在要白嫖的話,那祝你開心每一天,歡迎常來我博客看看。
碼字不易,大家的支持就是我堅持下去的動力。點贊後不要忘了關注
我哦!