FusionInsight大數據開發
FusionInsight HD是一個大數據全棧商用平臺,支持各類通用大數據應用場景。html
技能需求python
- 紮實的編程基礎
- Java/Scala/python/SQL/shell常見命令
- 掌握FusionInsight
- 熟悉業務開發
大數據應用開發流程web
應用開發關鍵點算法
應用開發指南--調試shell
總結:數據庫
- 認證是應用開發的關鍵點,要根據業務需求,申請合適帳號,完成安全認證。
- 華爲FusionInsight易集成開發,提供了包括應用開發指南,樣例代碼和支持團隊等各種協助。
更新中......編程
HDFS應用開發
HDFS(Dadoop Distributed File System)後端
HDFS概述
HDFS架構包含三部分
- Name Node
- DataNode
- Client
HDFS數據寫入流程
HDFS應用開發方式
Java/shell/Web UI緩存
HDFSJava應用開發
下載客戶端/獲取樣例工程/生產樣例工程/導入eclipse/編碼安全
Java開發流程
- 初始化FSDataOutputstream對象
- 使用FSDataOutputStream對象初始化BufferedOutputStream.
- 使用BufferedOutputStream.write寫入HDFS數據。
- 使用BufferedOutputStream.flush和FSDataOutputstream.hflush()將數據刷新到HDFS。
- 關閉數據流。)
應用開發規範
規範1:Java開發時,申請資源須要及時釋放。
規範2:HDFS不適用於存儲大量小文件。
規範3:HDFS中數據備份3份便可。
規範4:若是有多線程進行login的操做,當第一次登錄成功後,全部線程再次登錄時應該使用relogin的方式。
更新中......
HBase應用開發
HBase的定義
HBase是一個高可靠、高性能、面向列、可伸縮的分佈式存儲系統。
- 適合於存儲大表數據,能夠達到實時級別。
- 利用Hadoop HDFS 做爲其文件存儲系統,提供實時的讀寫的數據庫系統。
- 利用ZooKeeper做爲協同服務。
HBase架構
HBase的適用場景
- 海量數據
- 高吞吐量
- 須要在海量數據中實現高效的隨機讀取
- 須要很好的性能伸縮能力
- 可以同時處理結構化和非結構化的數據
- 不須要徹底擁有傳統關係型數據庫所具有的ACID特性
HBase應用開發流程
- 制定業務目標
- 準備開發環境
- 下載並導入樣例工程
-
設計HBase表
設計原則:
查詢數據惟一
數據均勻分佈
查詢性能優化
其餘因素(region的提早劃分,冷熱Family的使用)
- 根據場景開發工程
- 編譯並運行程序
- 查看結果與調試程序
HBase表設計-整體原則
設計目標:提升吞吐量
設計原則:預分region,是region分佈均勻,提升併發
實現方法:Rowkey範圍和分佈已知,建議預分region
設計目標:提升寫入性能
設計原則:避免過多的熱點region
設計方法:根據應用場景,能夠考慮將時間因素引入Rowkey
設計目標:提升查詢性能
設計原則:數據連續存儲,頻繁訪問的數據存儲一個地方,數據連續存儲,離散度,信息冗餘。
實現方法:同時讀取的數據存放在同一行、cell,使用二級索引
HBase表設計-設計內容
設計內容經過不一樣維度,可分爲:
Table設計(表粒度的設計)
- 建表方法
- 預分region
- Family屬性
- 系統併發能力、數據清洗能力
RowKey設計
- 原則:須要同時訪問的數據,RowKey儘可能連續
- 訪問效率:分散寫,連續讀
- 屬性內容:經常使用的查詢場景屬性
- 屬性值順序:枚舉,訪問權重
- 時間屬性:循環Key+TTL,週期建表
- 二級索引
- 折中法
- 冗餘法
Family設計
可枚舉數量少擴展性弱的屬性做爲Family
Qualifier設計
不可枚舉、數量多且擴展性強的屬性做爲Qualifier
原則:同時訪問的數據存放到同一個Cell,列名儘可能簡短
HBase經常使用接口
create()
put()
get()
getScanner(Scan scan)
、、、
建立Configuration實例以及Kerberos安全認證
HBaseConfiguration方法
建立表
create Table方法
寫入數據
put方法
讀取一行數據
get方法
讀取多行數據
scan方法
更新中......
MapReduce 應用開發
要求:
- MapReduce的基本定義及過程
- 搭建開發環境
- 代碼實例及運行程序
- MapReduce開發接口介紹
1. MapReduce的基本定義及過程
MapReduce是面向大數據並行處理的計算模型、框架和平臺,其資源調度由Yarn完成,任務資源隱含了如下三層含義:
- 1)MapReduce是 一個基於集羣的高性能並行計算平臺(cluster Infrastructure)。
- 2)MapReduce是 一個並行計算與運行軟件框架(SoftWare Framework)
- 3)MapReduce是 一個並行程序設計模型與方法(Programming Model & Methodology)
MapReduce特色:
MapReduce的過程:
- 把輸入的數據(Input) 拆分爲多個鍵值對(key-value對)
- 每個鍵值對分別調用Map進行並行處理
- 每個Map會產生多個新的鍵值對
- 對Map階段產生的數據進行排序、組合
- 以鍵值對的形式輸出最終結果
2. 搭建開發環境
- 確認Yarn組件和MapReduce組件已經安裝。
- 客戶端安裝Eclipse和JDK程序。
- 客戶端機器的時間與FusInsight集羣時間要保持一致,時間差要小於5分鐘。
- 在Yarn服務頁面下載MapReduce客戶端程序到客戶端機器中。
- 1.下載客戶端
- 2.獲取樣例工程
- 3.生成樣例工程
- 4.導入eclipse
- 5.編碼
開發相關類的總結
1) InputFormat類
- 將輸入的數據分割成split,並將split拆分爲<key,value>做爲map的輸入。
2) Mapper類
- 實現map函數,根據輸入的<key,value>對產生中間結果。
3)Combiner類
- 實現combiner函數,合併中間結果中具備相同key值的鍵值對。
4) Partitioner類
實現getPartitioner函數,在Shuffle過程按照key值將中間數據分紅R份,每一份由一個Reduce負責
5) Reduce類
- 實現reduce函數,將中間結果合併,獲得最終的結果。
6)OutputFormat類
- 該類負責輸出最終的結果,MapReduce使用OutputFormat類將數據輸出存入到文件中,每一個Reduce將它的輸出直接寫到本身的文件中。
調式代碼
- MapReduce開發調式採用的原理是Java的遠程調式機制
Hive應用開發
- 瞭解Hive的基本架構原理
- 掌握JDBC客戶端開發流程
- 瞭解ODBC客戶端的開發流程
- 瞭解python客戶端的開發流程
- 瞭解Hcatalog/webHcat開發接口
- 掌握Hive開發規則
1. 瞭解Hive的基本架構原理
守護進程:
- HiveServer(Thrift/Compiler)
- webHcat
- MetaStore
Hive的應用場景
- 數據挖掘
- 非實時分析
- 數據彙總
- 做爲數據倉庫
2. 掌握JDBC客戶端開發流程
JDBC開發-參數初始化
- 設置ZooKeeper地址
- krb5文件路徑
- 設置JAAS配置
- 配置ZooKeeper Principal
- 執行登錄
JDBC開發-拼接URL
- JDBC前綴設置
- 服務發現模式
- 安全配置:qop.auth.principal
- 非安全配置
JDBC開發-執行SQL
- 加載驅動類
- 創建鏈接
- 執行SQL
- 關閉鏈接
JDBC開發-SQL實現
- 建立preparedStatement
- 執行statement
- 關閉statement
規則建議:
開發調式:在開發程序時,可經過使用Hive的客戶端Beeline先進行調試,檢驗語句與結果正確性,再部署基於JDBC等的應用程序。
獲取數據庫鏈接:Hive的數據庫URL再拼接時已經通過安全認證,因此Hive數據庫的用戶名和密碼爲null或空 。
JDBC超時限制:Hive提供的JDBC實現的超時限制,默認是5分鐘。
執行HQL:再JAVA JDBC應用開發中,拼裝HQL語句,注意HQL語句不能以「;「結尾。
HQL語法規則之判空:判斷字段爲空使用:」is null「,判斷不爲空,即有值,使用:"is not null"
UDF的管理:建議由管理員建立永久UDF,避免每次使用時都去add jar,和從新定義UDF。
UDF的註解:Hive的UDF會有一些默認屬性。@UDFType(deterministic = false)
使用分區表:當數據量較大時,且常常須要按天統計時,建議使用分區表,按天存放數據。
動態分區表:爲了不插入動態分區數據過程當中,產生過多的小文件,在執行插入時,在分區字段上加distribut by。
文件格式選擇:Hive支持多種存儲格式,好比TextFile,RCFile,ORC,Sequence,Parquet.
sorl應用開發
要求:
- 瞭解Solr應用開發適用場景
- 熟悉Solr應用開發流程
- 熟悉並使用Solr經常使用API
- 理解Collection設計基本原則
- 應用開發實踐
Solr簡介
- Solr是一個高性能,基於Lucene的全文檢索服務,也能夠做爲NoSQL數據庫使用。
- Solr對Lucene進行了擴展,提供了比Lucene更爲豐富的查詢語句,同時實現了可配置、可擴展,並對查詢性能進行了優化,還提供了一個完善的功能管理界面。
- SolrCloud是從Solr 4.0 版本開始發出的具備開創意義的分佈式索引和索引方案,基於Sorl和Zookeeper進行開發的。
Solr概念體系-總述
常見術語:
- Config Set:Solr Core提供一組配置文件 ,
- Core:即Solr Core ,
- Shard:Collection的邏輯分片
- Replice:Shard下的實際存儲索引的一個副本,與Core對應
- Leader:贏得選舉的Shard Peplicas
- Zookeeper:它在Solr Core是必須的,提供分佈式鎖、處理Leader選舉、管理配置等功能
Solr的經常使用應用場景
- 待檢索數據類型複雜
- 檢索條件多樣化(如涉及字段太多),常規查詢沒法知足
- 讀取遠多於寫入數據
Solr應用開發流程-制定業務目標
業務數據規模及數據模型
- 涉及Collection的Shard劃分及Schema的定義
實時索引、查詢性能要求
- 涉及Collection的Shard劃分、索引存儲位置
查詢場景
Solr應用開發流程-初始化及安全認證
- 初始化並獲取配置
- 安全認證
- 獲取CloudSolrClient
- 調用Solr APL
Solr應用開發流程-設計Collection
- 根據業務數據的關係設計schema.xml
- 根據寫入和查詢場景設計uniqueKey字段
- 根據寫入和查詢性能要求設計solrconfig.xml
- 根據業務數據規模和Solr集羣規模肯定Shard數目
- 根據可靠性能要求設定Shard副本數
Collection設計-索引存儲位置
索引存儲在HDFS
缺點:
- 與存儲在本地磁盤相比,性能降低30%-50%
- 實時單節點寫入速度<=2MB/s
- 數據膨脹略高於存儲在本地
優勢:
- Sorl設置Replica便可,利用HDFS副本機制保障數據可靠性
- 數據管理由HDFS完成,包括各節點數據balance、方便遷移
配置集Schema設計-Field
dynamicField
- 動態的字段設置,用於後期自定義字段,」*「號通配符。
copyField
Kafka應用開發
- 瞭解Kafka應用開發適用場景
- 熟悉Kafka應用開發流程
- 熟悉並使用Kafka經常使用API
- 進行Kafka應用開發
Kafka的定義
Kafka是一個高吞吐、分佈式、基於發佈訂閱的消息系統
Kafka有以下幾個特色:
- 高吞吐量
- 消息持久化到磁盤
- 分佈式系統易擴展
- 容錯性好
Kafka的適用場景
- 適用於離線和在線的消息消費
- 已對接組件
- Streaming、Spark、Flume
使用Kafka的好處
- 解耦--使得消息生產、消費系統可以獨立變動
- 可靠--有效解決單點故障引起系統不可用問題
- 易擴展--生產、消費系統擴展簡單
- 可恢復--消息緩存下來,支持故障從故障點讀取
- 異步通訊--生產系統無需關心消費系統的消費時間
配置及開發準備--配置keytab文件到樣例工程
- 配置Keytab到工程
- 安全認證
- Topic訂閱
- 消費獲取
- 消費處理
Kafka經常使用接口
- Kafka集羣安全訪問端口默認爲21007,非安全訪問端口默認爲21005
Kafka Producer接口
- 向管理員申請目標Topic的生產者權限
- 根據業務需求,配置發送相關配置參數
- 調用新Producer API接口發送數據
Kafka Consumer接口
- 向管理員申請目標Topic的消費者權限
- 根據業務需求,配置消費者相關配置參數
- 調用新Consumer API接口進行消息消費
Spark應用開發
要求:
- 瞭解Spark基本原理
- 搭建Spark開發環境
- 開發Spark應用程序
- 調試運行Spark應用程序
YARN資源調度,能夠和Hadoop集羣無縫對接
Spark適用場景
大多數現有集羣計算框架如MapReduce等基於從穩定存儲(文件系統)到穩定存儲的非循環數據流,數據重用都是基於磁盤的,執行效率比較低。
與傳統的MapReduce任務頻繁讀寫磁盤數據相比,基於內存計算的Spark則更適合應用在迭代計算,交互式分析等場景。
Spark應用運行流程--關鍵角色
- Client:需求提出方,負責提交需求(應用)。
- Driver:負責應用的業務邏輯和運行規劃(DAG)。
- ApplicationMaster:負責應用的資源管理,根據應用的需求,向資源管理部門(ResourceManager)申請資源。
- ResourceManager:資源管理部門,負責整個集羣的資源統一調度和分配
- Executor:負責實際計算工做,一個應用會分拆給多個Executor來進行計算。
Spark核心概念--RDD
RDD(Resilient Distributed Datasets)即彈性分佈式數據集,指的是一個只讀的,可分區的分佈式數據集。這個數據集的所有或部分能夠緩存在內存中,在屢次計算間重用。
RDD的生成
- 從Hadoop文件系統(或與Hadoop兼容的其它存儲系統)輸入建立(如HDFS)
- 從集羣建立(如sc.Parallelize)。
- 從夫RDD轉換獲得新的RDD。
RDD的存儲和分區
- 用戶能夠選擇不一樣的存儲級別存儲RDD以便重用(11種)
- 當前RDD默認存儲於內存,但當內存不足時,RDD會溢出到磁盤中。
- RDD在須要進行分區時會根據每條記錄Key進行分區,以此保證兩個數據集能高效進行Join操做。
RDD的優勢
- RDD是隻讀的,可提供更高的容錯能力
- RDD的不可變性,能夠實現Hadoop MapReduce的推測式執行
- RDD的數據分區特性能夠經過數據的本地性來提升性能。
- RDD都是可序列化的,在內存不足時可自動降級爲磁盤存儲。
RDD的特色
- 在集羣節點上時不可變的,是已分區的集合對象。
- 失敗後自動重連
- 能夠控制存儲級別(內存、磁盤等)來進行重用。
- 必須是可序列化的
- 是靜態類型。
RDD的建立
Spark全部操做都圍繞彈性分佈式數據集(RDD)進行,這是一個有容錯機制並能夠被並行操做的元素集合,具備只讀,分區,容錯,高效,無需物化,能夠緩存,RDD依賴等特徵。
目前有兩種類型的基礎RDD:
- 並行集合:接受一個已經存在的Scala集合,而後進行並行計算
- Hadoop數據集:在一個文件的每條記錄上運行函數。
RDD的建立--並行集合
並行集合是經過調用SparkContext的parallelize方法,在一個已經存在的Scala集合(一個Seq對象)上建立的。
集合的對象將會被拷貝,建立出一個能夠被並行操做的分佈式數據集。
RDD依賴:寬依賴和窄依賴
RDD父子依賴關係
- 窄依賴:(Narrow)指父RDD的每個分區最多被一個子RDD的分區所用。
- 寬依賴:(Wide)指子RDD的分區依賴於父RDD的全部分區,是Stage劃分的依據。
- RDD經常使用Transformation算子
- RDD經常使用Action算子
Spark任務參數配置
相同的數據,只建立一個RDD
算法調優--RDD緩存
- Spark可使用persist和cache方法將任意RDD緩存到內存、磁盤文件系統中。
算法調優--避免使用Shuffle
- Shuffle過程會有整個RDD數據的寫和讀的操做,成本很是高。
算法調優--使用廣播變量
外部變量:
廣播變量:
編寫代碼
- 登錄
- 建立鏈接
- 執行SQL
- 獲取結果
DataFrame介紹
DataFrame:已RDD爲基礎,帶有Schema信息,相似傳統數據庫的二維表。
編寫代碼
- 登錄
- 註冊Table
- 執行SQL
- 過濾
SparkStreaming概述
SparkStreaming是Spark核心API的一個擴展,它對實時流式數據的處理具備可擴展性、高吞吐量、可容錯性等特色。
SparkStreaming原理
- SparkStreaming接收實時的輸入數據流,而後將這些數據切分爲批數據供Spark引擎處理,Spark引擎將數據生成最終的結果數據。
- 使用DStream從Kafka和HDFS等源獲取鏈接的數據流。DStream是一系列連續的RDD組成。
SparkStreaming數據源
- 基本源:HDFS等文件系統、Socket鏈接等
- 高級源:Kafka等
- 自定義源: 須要實現用戶自定義receiver
可靠性(二次開發)
- Reliable Receiver
- 設置CheckPoint
- 確保Driver能夠自動啓動
- 使用Write Ahead Log 功能
SparkStreaming代碼流程
常見業務代碼邏輯
- 建立StreamingContext
- 定義輸入源
- 準備應用計算邏輯
- 使用streamingContext.start()方法接受和處理數據。
- 使用streamingContext.stop()方法中止流計算。
窗口操做
SparkStreaming支持窗口計算,容許用戶在一個滑動窗口數據上應用transformation算子。
窗口在源DStream上滑動,合併和操做落入窗口RDDs,產生窗口化的DStream的RDDs。
Checkpoint
SparkStreaming能夠checkpoint足夠的信息到容錯存儲系統中,以使系統崩潰後從故障中恢復。
- Metadata checkpoint:保存流計算的定義信息到HDFS中
- Data checkpoint:保存生成的RDD到HDFS中。
SparkStreaming性能調優
- 設置合理的批處理時間(batch Duration)
- 設置合理數據接收並行度
- 設置多個Receiver接受數據
- 設置合理的Receiver阻塞時間
- 設置合理數據處理並行度
- 使用Kryo系列化
- 內存調優
- 設置持久化級別減小GC開銷
- 使用併發的標記-清理GC算法減小GC暫停時間
Redis應用開發
要求:
- 瞭解Redis應用場景
- 掌握Redis二次開發環境搭建
- 掌握Redis業務開發
Redis簡介
- Redis是一個基於網絡的,高性能key-value內存數據庫
- Redis根memcached相似,不過數據可持久化,並且支持的數據類型很豐富。支持在服務端計算集合的並、交和補集等,還支持多種排序功能。
Redis使用場景有以下幾個特色:
- 高性能
- 低延遲
- 豐富數據結構存取
- 支持持久化
Redis應用場景介紹
Redis提供了靈活多變的數據結構和數據操做,主要應用於以下場景:
- 取最新N個數據的操做,好比典型的取某網站的最新文章。
- 排行榜應用,取TOP N操做。
- 須要精準設定過時時間的應用。
- 計數器應用,好比記錄用戶訪問網站的次數。
- 構建隊列系統
- 緩存,如緩存關係數據庫中的頻繁訪問的表數據。
架構回顧
- 無中心自組織的結構,節點之間使用Gossip協議來交換節點狀態信息。
- 個節點維護Key->Server的映射關係。
- Client能夠向任意節點發起請求,節點不會轉發請求,只是重定向Client
- 若是在Client第一次請求之間,Cluster拓撲發生改變,則第二次重定向請求將被再次重定向,直到找到正確的Server爲止。
Redis應用開發
設計Redis數據結構
- 取最新N個數據的操做:list
- 排行榜應用,取TOP N操做。以某個條件爲權重,好比按頂的次數排行:sorted set。
- 利INCR,DECR命令來構建計數器系統。、
- Uniq操做,獲取某段時間全部數據排重值:set。
- 使用list能夠構建隊列系統
Redis應用開發
根據場景開發工程
- 梳理業務場景流
- 設計各模塊接口
- 若是使用的是安全集羣,須要進行安全認證
- 熟悉Redis提供的相應API
- 調用業務須要的API實現各功能
數據結構設計
- 計算過程當中使用的用戶信息使用hash結構存取,KEY設計爲userinfo-<user id>,
- field爲用戶的屬性。
數據讀寫原則
- MR任務天天定時將用戶信息從後端存儲源(HBase)批量導入Redis中。
- 業務系統獲取數據時,先從Redis中獲取,獲取不到再取後端HBase獲取即實時計算,並同步寫入到Redis。
樣例說明-String類型操做
- set:將字符串值value關聯到key
- get:返回key所關聯的字符串值,
- setex:將字符串值value關聯到key,並設置key的生存時間
- append:將value追加到key原值的末尾,相似Java String類型的「+」操做。
樣例說明-List類型操做
- Ipush/rpush:往列表頭/尾添加一個元素。
- Irange:返回列表中start至end之間的元素
- llen:返回列表的長度
- lpop/rpop:從列表頭/尾獲取一個元素,並將其中列表中刪除。
樣例說明-Hash類型操做
- hset
- hget
- hgettall
- hmset
- hincrby
- hkeys
- hvals
- hmget
- hexists
- hdel
Streaming應用開發
- 掌握Streaming基本業務開發流
- 熟悉Streaming經常使用API接口使用
- 掌握Streaming業務設計基本原則
- 瞭解Streaming應用開發環境
- 瞭解CQL開發流及使用
Streaming的定義
Streaming基於開源Storm,是一個分佈式、實時計算框架。Streaming在開源Storm的基礎上增長了持續查詢語言CQL、加強了安全性和可靠性。
- 事件驅動
- 連續查詢
- 數據不存儲、先計算
- 實時響應,低延遲
CQL(Continuous Query Language),持續查詢語言,是一種用於實時數據流上的查詢語言。
它是一種SQL-like的語言,目前主要適配Storm。
相對於SQL,CQL中增長了(時序)窗口的概念,將待處理的數據保存在內存中,進行快速的內存計算,CQL的輸出結果爲數據流在某一時刻的計算結果。
Streaming的適用場景
Streaming主要應用於如下幾種對響應時延有嚴重要求的場景:
- 實時分析:如實時日誌處理,交通流分析等
- 實時統計:如網站的實時訪問統計、排序等
- 實時推薦:如實時廣告定位、事件營銷等
提交拓撲
當前Streaming支持三種方式提交拓撲
- Linux命令行提交-CMD模式
- Eclipse遠程提交-Remote模式
- 本地模式提交-Local模式
Spout設計
- 數據接受
- 數據反序列化
- 數據拆分
- 數據篩選
- 數據緩存
- 數據發送
counting Bolt設計
功能:
- 窗口定義
- 刷新窗口
- 發送數據
Storm提供接口
1 REST接口
- REST(Representational State Tansfer)表述性狀態轉移接口。
2 Thrift接口
- 由Numbus提供。Thrift是一個基於靜態代碼生成的跨語言的RPC協議棧實現。
Spout接口
- Spout的Ack開關
Bolt接口
- Bolt的Ack開關
Flume應用開發
要求:
- 瞭解Flume應用開發適用場景
- 掌握Flume應用開發
Flume應用場景
Flume的核心是把數據從數據源收集過來,在送到目的地。爲了保證輸送必定成功,發送到目的地以前,會先緩存數據,待數據真正的到達目的地後,刪除本身緩存的數據。
Flume採用流式方法採集和傳輸數據,程序配置好後,不須要外部條件觸發下,一直監控數據源,源源不斷地採集、傳送數據到目的地。
主要應用於一下幾種場景:
- 將分佈式節點上大量數據實時採集、彙總和轉移
- 將集羣內、外地本地文件、實時數據流採集到FusionInsight集羣內的HDFS、HBase,Kafka,Solr中。
- 將Avro、System,http,Thrift,JMS、Log4j協議發送過來地數據採集到FusionInsight集羣內
Flume基本概念
- Source:數據源,便是產生日誌信息地源頭,Flume會將原始數據建模抽象成本身處理地數據對象:event
- Channel:通道,主要做用是臨時緩存Source發過來地數據
- Sink:主要是從channel中取出數據並將數據放到不一樣地目的地
- event:一個數據單元,帶有一個可選地消息頭,Flume傳輸地數據地基本單位是event,若是是文本文件,一般是一行記錄。event從Source,流向Channel,再到Sink,Sink將數據寫入目的地
方案設計:
1)首先肯定數據源:集羣外
2)數據最終流向:KafKa(集羣內)
Oozie應用開發
要求:
- 瞭解Oozie應用開發適用場景
- 掌握Oozie應用開發
- 熟悉並使用Oozie經常使用API
Oozie簡介
- Oozie是一個Hadoop做業的工做流調度管理系統
- Oozie工做流(workflow)是放置在控制依賴DAG(有向無環圖)中的一組動做(Action)集合,控制依賴可確保後續操做在見面的操做已經成功完成後纔會啓動。
- Oozie的協調做業(Coordinator)是經過時間(頻率)和有效數據來觸發當前的Oozie工做流。
- Oozie支持多種Hadoop做業(包括:HDFS,Map Reduce、Hive、Streaming MP、Loader、Spark、Distcp)以及系統類做業(Java和shell)
Oozie應用場景
Oozie是一個工做流調度引擎,對各類類型的Hadoop做業進行編排與調度。
- 編排與管理邏輯複雜的多種類型的Hadoop
- 基於時間(頻率)觸發工做流
- 基於數據有效性觸發工做流
- 實時監控與管理集羣的工做流,快速定位問題