大數據處理的各個環節當中,涉及到諸多的任務執行,為了保證系統的性能和運行效率,就需要對這些任務進行合理的安排,這就需要到調度系統。在調度系統當中,DAG工作流類調度系統以Azkaban和Oozie為代表。今天的大數據開發分享,我們就主要來講講Azkaban和Oozie調度系統對比。
所謂DAG工作流類調度系統,這一類系統的方向,重點定位於任務的調度依賴關系的正確處理,分片執行的邏輯通常不是系統關注的核心,或者不是系統核心流程的關鍵組成部分,如果某些任務真的關注分片邏輯,往往交給後端集群(比如MR任務自帶分片能力)或者具體類型的任務執行後端去實現。
DAG工作流類調度系統所服務的往往是作業繁多,作業之間的流程依賴比較復雜的場景,比如大數據開發平台的離線數倉報表處理業務,從數據採集,清洗,到各個層級的報表的匯總運算,到最後數據導出到外部業務系統,一個完整的業務流程,可能涉及到成百上千個相互交叉依賴關聯的作業。
這類系統的代表,包括Oozie,Azkaban,Chronos,Zeus,Lhotse等,這里我們選取前兩者,從功能、工作流定義、工作流傳參、定時執行、資源管理、工作流執行等方面來進行分析比對:
1、功能
Azkaban與Oozie均可以調度maprece、pig、java腳本工作流任務。
Azkaban與Oozie均可以定時執行工作流任務。
2、工作流定義
Azkaban使用Properties文件定義工作流。
Oozie使用XML文件定義工作流。
3、工作流傳參
Azkaban支持直接傳參,例如${input}。
Oozie支持參數和EL表達式,例如${fs:dirSize(myInputDir)}。
4、定時執行
Azkaban的定時執行任務是基於時間的。
Oozie的定時執行任務是基於時間和輸入數據資源管理。
5、工作流執行
Azkaban有兩種運行模式,分別是solo server mode(executor server和web server部署在同⼀台節點)和multi server mode(executor server和web server可以部署在不同節點)。
Oozie作為工作流服務運行,支持多用戶和多工作流。
綜上所述,Ooize相比Azkaban是一個重量級的任務調度系統,功能全面,但配置使用也更復雜(xml)。如果可以不在意某些功能的缺失,輕量級調度Azkaban是很不錯的候選對象。
關於大數據開發,Azkaban和Oozie調度系統,以上就為大家做了簡單的介紹了。相對來說,Oozie調度系統更加全面,但是也更加復雜,在學習當中,也要多花精力去掌握。
『貳』 大數據平台的軟體有哪些
這個要分好幾塊來講,首先我要說明的是大數據項目也是要有很多依賴的模塊的。每個模塊的軟體不一樣,下面分別聊一下。
一、大數據處理
這個是所謂大數據項目中最先想到的模塊。主要有spark,hadoop,es,kafka,hbase,hive等。
當然像是flume,sqoop也都很常用。
這些軟體主要是為了解決海量數據處理的問題。軟體很多,我只列幾個經典的,具體可以自行網路。
二、機器學習相關
大部分大數據項目都和機器學習相關。因此會考慮到機器學習的一些軟體,比如說sklearn,spark的ml,當然還有自己實現的代碼。
三、web相關技術
大部分項目也都跑不了一個web的展示,因此web就很重要的,java的ssh,python的django都可以,這個看具體的項目組習慣了。
四、其它
還有一些很常用的東西,個人感覺不完全算是大數據特定使用范橘埋高圍。反正我在做大數據項目的時候也都用到了。
比如說數據存儲:redis,mysql。
數據可視化:echart,d3js。
圖資料庫:neo4j。
再來說說大數據平台的軟體或者工具:
1、資料庫,大數據平台類,星環,做Hadoop生態系列的大數據平台圓尺公司。Hadoop是開源的,星環主要做的是把Hadoop不穩定的部分優化,功能細化,為企業提供Hadoop大數據引擎及液鍵資料庫工具。
2、大數據存儲硬體類,浪潮,很老牌的IT公司,國資委控股,研究大數據方面的存儲,在國內比較領先。
3、雲計算,雲端大數據類,阿里巴巴,明星產品-阿里雲,與亞馬遜AWS抗衡,做公有雲、私有雲、混合雲。實力不差,符合阿里巴巴的氣質,很有野心。
4、數據應用方面這個有很多,比如帆軟旗下的FineReport報表系統和FineBI大數據分析平台等。
帆軟是商業智能和數據分析平台提供商,從報表工具到商業智能,有十多年的數據應用的底子,在這個領域很成熟,目前處於快速成長期,但是很低調,是一家有技術有實力而且對客戶很真誠的公司。
『叄』 大數據調度平台分類(Oozie/Azkaban/AirFlow/DolphinScheler)
大數據調度系統,是整個離線批處理任務和准實時計算計算任務的驅動器。這里我把幾個常見的調度系統做了一下分類總結,結合目前阿里雲上的MaxCompute中的調度系統,做個對比。
Oozie是一個workflow(工作流)協調系統,是由Cloudera公司貢獻給Apache的,主要用來管理Hadoop作業(job)。
統一調度hadoop系統中常見的mr任務啟動、Java MR、Streaming MR、Pig、Hive、Sqoop、Spark、Shell等。
配置相關的調度任務復雜,依賴關系、時間觸發、事件觸發使用xml語言進行表達。
任務狀態、任務類型、任務運行機器、創建時間、啟動時間、完成時間等。
支持啟動/停止/暫停/恢復/重新運行:支持啟動/停止/暫停/恢復/重新運行。
可以通過DB支持HA(高可用)。調度任務時可能出現死鎖,依賴當前集群版本,如更新最新版,易於現階段集群不兼容。
Azkaban是由Linkedin公司推出的一個批量工作流任務調度器,主要用於在一個工作流內以一個特定的順序運行一組工作和流程,它的配置是通過簡單的key:value對的方式,通過配置中的dependencies 來設置依賴關系,這個依賴關系必須是無環的,否則會被視為無效的工作流。Azkaban使用job配置文件建立任務之間的依賴關系,並提供一個易於使用的web用戶界面維護和跟蹤你的工作流。
command、HadoopShell、Java、HadoopJava、Pig、Hive等,支持插件式擴展。
實際項目中經常有這些場景:每天有一個大任務,這個大任務可以分成A,B,C,D四個小任務,A,B任務之間沒有依賴關系,C任務依賴A,B任務的結果,D任務依賴C任務的結果。一般的做法是,開兩個終端同時執行A,B,兩個都執行完了再執行C,最後再執行D。這樣的話,整個的執行過程都需要人工參加,並且得盯著各任務的進度。但是我們的很多任務都是在深更半夜執行的,通過寫腳本設置crontab執行。其實,整個過程類似於一個有向無環圖(DAG)。每個子任務相當於大任務中的一個流,任務的起點可以從沒有度的節點開始執行,任何沒有通路的節點之間可以同時執行,比如上述的A,B。總結起來的話,我們需要的就是一個工作流的調度器,而Azkaban就是能解決上述問題的一個調度器。
提供job配置文件快速建立任務和任務之間的依賴關系,通過自定義DSL繪制DAG並打包上傳。
只能看到任務狀態。
只能先將工作流殺死在重新運行。
通過DB支持HA,任務太多時會卡死伺服器。
Airflow 是 Airbnb 開源的一個用 Python 編寫的調度工具。於 2014 年啟動,2015 年春季開源,2016 年加入 Apache 軟體基金會的孵化計劃。Airflow 通過 DAG 也即是有向非循環圖來定義整個工作流,因而具有非常強大的表達能力。
支持Python、Bash、HTTP、Mysql等,支持Operator的自定義擴展。
需要使用Python代碼來定義流程。
不直觀。
殺掉任務,重啟。
任務過多會卡死。
XXL-JOB是一個開源的,具有豐富的任務管理功能以及高性能,高可用等特點的輕量級分布式任務調度平台,其核心設計目標是開發迅速、學習簡單、輕量級、易擴展、開箱即用。
基於Java。
無,但是可以配置任務之間的依賴。
無
可以暫停、恢復。
支持HA。任務是基於隊列的,輪詢機制。
DolphinScheler是今年(2019年)中國易觀公司開源的一個調度系統,在今年美國時間2019年8月29號,易觀開源的分布式任務調度引擎DolphinScheler(原EasyScheler)正式通過頂級開源組織Apache基金會的投票決議,根據Apache基金會郵件列表顯示,在包含11個約束性投票(binding votes)和2個無約束性投票(non-binding votes)的投票全部持贊同意見,無棄權票和反對票,投票順利通過,這樣便以全票通過的優秀表現正式成為了Apache孵化器項目。
Apache DolphinScheler是一個分布式、去中心化、易擴展的可視化DAG工作流任務調度系統,其致力於解決數據處理流程中錯綜復雜的依賴關系,使調度系統在數據處理流程中開箱即用。
支持傳統的shell任務,同時支持大數據平台任務調度:MR、Spark、SQL(mysql、postgresql、hive/sparksql)、python、procere、sub_process。
所有流、定時操作都是可視化的,通過拖拽來繪制DAG,配置數據源及資源,同時對於第三方系統,提供api方式的操作。
任務狀態、任務類型、重試次數、任務運行機器、可視化變數,以及任務流執行日誌。
支持暫停、恢復、補數操作。
支持HA,去中心化的多Master和多Worker。DolphinScheler上的用戶可以通過租戶和hadoop用戶實現多對一或一對一的映射關系。無法做到細節的許可權管控。
任務隊列機制,單個機器上可調度的任務數量可以靈活配置,當任務過多時會緩存在任務隊列中,不會操作機器卡死。
調度器使用分布式調度,整體的調度能力會隨集群的規模線性正常,Master和Worker支持動態上下線,可以自由進行配置。
可以通過對用戶進行資源、項目、數據源的訪問授權。支持,可視化管理文件,及相關udf函數等。
『肆』 怎麼開發大數據平台
開發數據大平台的操作方法具體如下。
1、操作體系的挑選。操作體系一般使用開源版的RedHat、Centos或許Debian作為底層的構建渠道,要根據大數據渠道所要建立的數據剖析東西能夠支撐的體系,正確的挑選操作體系的版本。
2、建立Hadoop集群。Hadoop作為一個開發和運行處理大規模數據的軟體渠道,實現了在大量的廉價計算機組成的集群中對海量數據進行分布式計算。Hadoop結構中最核心的規劃是HDFS和MapRece,HDFS是一個高度容錯性的體系,合適布置在廉價的機簡橡配器上,能夠供給高吞吐量的數據訪問,適用於那些有著超大數據集的應用程序;MapRece是一套能夠從海量的數據中提取數據最終回來成果集的編程模型。在生產實踐應用中,Hadoop非常合適應用於大數據存儲和大數據的剖析應用,合適服務於幾千台到幾萬台大的伺服器的集群運行,支撐PB級別的存儲容量。
3、挑選數據接入和預處理東西。面臨各種來源的數據,數據接入便是將這些零散的數據整合在一起,歸納起來進行剖析。數據接入首要包括文件日誌的接入、資料庫日誌的接入、關系型資料庫的接入和應用程序等的接入,數據接入常攔指用的東西有Flume,Logstash,NDC(網易數據運河體系),sqoop等。
4、數據存儲。除了Hadoop中已廣泛應用於數據存儲的HDFS,常用的還有分布式、面向列的開源資料庫Hbase,HBase是一種key、value體系,布置在HDFS上,與Hadoop一樣,HBase的目標首要是依靠橫向擴展,通過不斷的添加廉價的商用伺服器,添如耐加計算和存儲才能。同時hadoop的資源管理器Yarn,能夠為上層應用供給統一的資源管理和調度,為集群在利用率、資源統一等方面帶來巨大的優點。
5、挑選數據挖掘東西。Hive能夠將結構化的數據映射為一張資料庫表,並供給HQL的查詢功能,它是建立在Hadoop之上的數據倉庫根底架構,是為了削減MapRece編寫工作的批處理體系,它的出現能夠讓那些通曉SQL技術、可是不熟悉MapRece、編程才能較弱和不擅長Java的用戶能夠在HDFS大規模數據集上很好的利用SQL言語查詢、匯總、剖析數據。
6、數據的可視化以及輸出API。關於處理得到的數據能夠對接主流的BI體系,比如國外的Tableau、Qlikview、PowrerBI等,國內的SmallBI和新興的網易有數(可免費試用)等,將成果進行可視化,用於決策剖析;或許迴流到線上,支撐線上業務的開展。
『伍』 如何搭建基於Hadoop的大數據平台
Hadoop: 一個開源的分布式存儲、分布式計算平台.(基於)
Hadoop的組成:
HDFS:分布式文件系統,存儲海量的數據。
MapRece:並行處理框架,實現任務分解和調度。
Hadoop的用處:
搭建大型數據倉庫,PB級數據的存儲、處理、分析、統計等業務。
比如搜索引擎、網頁的數據處理,各種商業智能、風險評估、預警,還有一些日誌的分析、數據挖掘的任務。
Hadoop優勢:高擴展、低成本、成熟的生態圈(Hadoop Ecosystem Map)
Hadoop開源工具:
Hive:將SQL語句轉換成一個hadoop任務去執行,降低了使用Hadoop的門檻。
HBase:存儲結構化數據的分布式資料庫,habase提供數據的隨機讀寫和實時訪問,實現 對表數據的讀寫功能。
zookeeper:就像動物管理員一樣,監控hadoop集群裡面每個節點的狀態,管理整個集群 的配置,維護節點針之間數據的一次性等等。
hadoop的版本盡量選穩定版本,即較老版本。
===============================================
Hadoop的安裝與配置:
1)在Linux中安裝JDK,並設置環境變數
安裝jdk: >> sudo apt-get install openjdk-7-jdk
設置環境變數:
>> vim /etc/profile
>> :wq
2)下載Hadoop,並設置Hadoop環境變數
下載hadoop解壓縮:
>> cd /opt/hadoop-1.2.1/
>> ls
>> vim /etc/profile
>>:wq
3)修改4個配置文件
(a)修改hadoop-env.sh,設置JAVA_HOME
(b)修改core-site.xml,設置hadoop.tmp.dir, dfs.name.dir, fs.default.name
(c)修改mapred-site.xml, 設置mapred.job.tracker
(d)修改hdfs-site.xml,設置dfs.data.dir
>> cd conf
>> ls
>> vim mapred-site.xml
>> :wq
>> vim core-site.xml
第一部分
第二部分
>> :wq
>> vim hdfs-site.xml
>> :wq
>> vim hadoop-env.sh
>> :wq
# hadoop格式化
>> hadoop namenode -format
# hadoop啟動
>> start-all.sh
# 通過jps命令查看當前運行進程
>> jps
看見以下進程即說明hadoop安裝成功
『陸』 大數據採集平台有哪些
針對這個問題,我們先來了解下大數據採集平台提供的服務平台流程包括:
1,首先平台針對需求對數據進行採集。
2,平台對採集的數據進行存儲。
3,再對數據進行分析處理。
4,最後對數據進行可視化展現,有報表,還有監控數據。
優秀的大數據平台要能在大數據分析鎮歲方法,大數據編程,大數據倉庫,大數據案例,人工智慧,數據挖掘方面都能表現出優秀的性能。
現在來推薦幾個主流且優秀的大數據平台:
1,ApacheFlume
Apache旗下的一款開源、高可靠、高擴展、容易管理、支持客戶擴展的數據採集系統,它是一個分布式、可靠、可用的系統,是java運行時環境j用於從大量不同的源有效地收集、聚合、移動大量日誌數據進行集中式數據存儲。
主要的功能表現在:
1.日誌收集:日誌系統中定製各類數據發送方,用於收集數據。
2.數據處理:提供對數據進行簡單處理,並寫到各種數據接受方(可定製)的能力,提供了從console(控制台)、RPC(Thrift-RPC)、text(文件)、tail(UNIXtail)、syslog(syslog日誌系統,支持TCP和UDP等2種模式),exec(命令執行)等數據源上收集數據的能力。
2,Fluentd
Fluentd是一個用於統一日誌層的開源數據收集器。Fluentd允許您統一數據收集和使用,以便更好地使用和理解數據。Fluentd是雲端原生計算基金會(CNCF)的成員項目之一,遵循Apache2License協議。FLuentd的擴展性非常好,客戶可以自己定製(Ruby)Input/Buffer/Output。
官網:
articles/quickstart
主要的功能表現在:
1,Input:負責接收數據或者主動抓取數據。支持syslog,http,filetail等。
2,Buffer:負責數據獲取的性能和可靠性,也有文件或內存等不同類型的Buffer可以配置。
3,Output:負責輸出數據到目的地例如文件,AWSS3或者其它的Fluentd。
3,Chukwa
Chukwa可以將各種各樣類型的數據收集成適合Hadoop處理的文件保存在HDFS中供Hadoop進行各種MapRece操作。Chukwa本身也提供了很多內置的功能,幫助我們進行數據的收灶慎集和整理。
1,對應用的各個節點實時監控日誌文件的變化,並將增量文件內容寫入HDFS,同時還可以將數據去除重復,排序等。
2,監控來自Socket的數據,定時執行我們指定的命令獲取輸出數據。
優秀的平台還有很多,筆記淺談為止,開發者根據官方提供的文檔進行解讀,才能深入了解,隱旅敬並可根據項目的特徵與需求來為之選擇所需的平台。