王敏
摘?要:當前,傳統的數據庫技術及單純基于Hadoop的分布式計算方法已無法滿足離線數據和業務量的快速增長需求,運行成本大、工作效率低、用戶體驗差。文章提出基于TDH+Hive的離線計算平臺,采用TDH作為離線數據存儲平臺,并通過Azkaban任務調度工具在Hive中對數據進行相應的ETL轉換,根據不同作業對實時性要求的差異,將運行時間分散到不同時間段,實現系統性能的平衡,提升離線大數據的處理效率,同時能夠精簡數據、節省存儲空間,降低后續的開發成本,提升開發效率。
關鍵詞:離線數據;TDH;Hive;Azkaban
中圖分類號:TP392
1?緒論
自20世紀90年代“大數據”的概念被提出以來,其重要性備受關注,“人類的大數據時代已經到來”更是在2012年麥肯錫咨詢公司的研究報告中被強調。“大數據”是需要新處理模式才能具有更強的決策力、洞察發現力和流程優化能力來適應海量、高增長率和多樣化的信息資產[1]。由此可見,運用新技術手段對大數據進行專業的“加工”和“處理”才能激發其內在價值,實現數據的“增值”。
本文基于TDH+Hive構建大數據的離線計算平臺,采用TDH作為離線數據存儲平臺,并通過Azkaban任務調度工具在Hive中對數據進行相應的ETL轉換。相對于傳統的單純基于Hadoop的分布式計算方法運行成本大、工作效率低、用戶體驗差等問題,本文構建的離線大數據計算平臺,能夠在兼容各類數據源的前提下,大大提高數據的處理能力,同時可以通過對數據的精簡來達到節省存儲空間的目的,進而降低后續的開發成本,提升開發效率。
2?TDH、Hive、Azkaban概述
2.1?TDH大數據平臺
TDH是國內外較為領先的一款大數據基礎軟件,也是目前國內應用最為廣泛的一站式Hadoop發行版,性能較開源Hadoop2有很大優勢,已應用在各行各業。TDH整合高度容錯、高效索引、內存計算、執行優化等技術來高效率、低成本的實現平臺處理10GB至100PB的海量數據。同時,它引入不停機擴容機制來滿足客戶動態數據的變動需求,以此來解決MPP或混合架構數據遷移的問題。
TDH主要在HDFS和YARN之上對Hadoop進行了改進,它提供了高速的Erasure?Code編碼方式,適合nearline?storage類應用,降低一半磁盤容量需求的同時提高了一倍的容錯性能。它的這個功能主要為擁有PB級別的客戶所應用,比如電信行業的話單數據、交通/電力行業的傳感器數據、金融行業的歷史交易數據等。在YARN上進行改進的目的主要是為了能更全面的管理CPU/內存等資源,并有效地支持Spark和Map/Reduce應用集群。它的技術優勢主要表現在以下3個方面:極致的性能與可擴展性;簡易的操作和管理;完整的SQL和ACID支持。
2.2?Hive數據倉庫
Hive是建立在Hadoop上的數據倉庫基礎構架。在Hive中,定義了一種類似于SQL的查詢語言HQL,用戶只要熟悉SQL語句就可以進行查詢數據操作,也可以不需要開發專門的MapReduce應用來進行不太復雜的MapReduce統計,這就可以非常便利的用于數據倉庫的統計分析,因此它具有學習成本低的優勢。除此之外,對于熟練應用MapReduce的用戶可以在Hive中方便的開發出自定義的Mapper和Reducer來應對復雜的操作。同時,它為數據抽取、轉換、加載(ETL)提供了一系列的工具,實現了存儲、查詢和分析存儲在Hadoop中海量數據的功能。
在Hive中,Hadoop、Mapreduce是架構的基礎,它主要由服務端組件以及客戶端組件兩個類構成,涉及的組件有:CLI、JDBC/ODBC、Thrift?Server、WEB?GUI、metastore和Driver。下面就對兩大類組件進行簡單介紹。服務端組件中的Metastore作為元數據服務組件提供存儲Hive元數據的服務;為了使不同類型的編程語言能夠進行Hive接口的調用,在服務端組件中使用Thrift服務來實現可擴展而且跨語言的開發;Complier、Optimizer和Executor組成了服務端組件中的Driver組件,目的是能夠對HQL語句進行解析、編譯優化以后生成相應的執行計劃,再通過調用底層的mapreduce來計算框架。在另一類的客戶端組件中:CLI為命令行接口;諸如JDBC、ODBC等許多客戶端接口在Hive的架構中是被設計在thrift客戶端之上的;在Hive客戶端中,啟動Hive?Web?Interface(HWI)組件后,用戶便可以使用網頁方式來進行訪問服務。
2.3?Azkaban任務調度工具
Azkaban是一套簡單的任務調度服務,其功能是在某一個工作流內按照規定好的流程或順序來執行一組工作,它是由Linkedin開源的一個批量工作流任務調度器,整體包括三部分Webserver、Dbserver、Executorserver,是Linkin的開源項目,開發語言為Java。它定義了一種KV文件格式來設立了各個任務之間的耦合、依存關系,同時,它還提供了一種便于web用戶界面維護和跟蹤的工作流服務功能。
Azkaban是一個相似于Oozie的工作流控制引擎,在這種架構中,它可以用來應對多個Hadoop離線計算任務之間的耦合、依存關系問題,用它來替代Crontab對周期性的任務進行調度也具有易操作性,擁有美觀的可視化管理界面的同時更加直觀,可靠性更強。
3?基于TDH+Hive的離線計算平臺的設計與實現