999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于Spark的大數據分析工具Hive的研究

2018-01-04 11:35:20楊寧黃婷婷
計算機時代 2018年11期

楊寧 黃婷婷

摘 要: 隨著數據規模的不斷增大,傳統的關系型數據庫方法已經無法滿足大數據量的數據查詢需求,而基于Hadoop 平臺的 Hive 數據倉庫為海量數據分析提供了方便的操作。隨著實時查詢需求的增加,基于Spark的Hive操作得到了很好的應用。文章主要介紹了Hive on Spark的整合步驟以及與Hadoop運行模式的比較。對 MovieLens 數據集的實驗測試顯示,新模式的執行速度提高了17.42-46.35倍,這對進一步了解Hive的運行機制及海量數據的實時分析具有重要的意義。

關鍵詞: Hadoop; Hive; Spark; 海量數據; 實時分析

中圖分類號:TP399 文獻標志碼:A 文章編號:1006-8228(2018)11-31-05

Abstract: With the increasing size of the acquired data, the traditional relational database method can no longer meet the data query requirements of such large data volume, but the Hive data warehouse based on Hadoop platform provides convenient operation for massive data analysis. And with the increase in real-time query requirements, Spark-based Hive operations have been well applied. In this paper, Hive and Spark are integrated, and the integration steps of Hive on Spark and the comparison with the traditional running structure are introduced. The experimental test on MovieLens dataset shows that the execution speed of the new mode has increased by 17.42-46.35 times. This is of great significance for further understanding of Hive's operating mechanism and real-time analysis of massive data.

Key words: Hadoop; Hive; Spark; massive data; real-time analysis

0 引言

隨著數據分析需求的不斷增加,實時性查詢越來越重要,但是基于Hadoop的Hive查詢,耗時過長,這在實時性要求比較嚴格的業務中是無法使用的。Spark的使用,給Hive的實時查詢提供了可能,如何更好的將Spark與Hive進行整合,從而得到更高的查詢速度,是以后需要進一步研究的方向。

1 Hive

1.1 Hive的背景

Hive起源于Facebook。原因是Facebook有著大量的用戶數據[1]需要進行處理。而Hadoop[2]是一個由MapReduce[3]模塊實現的大數據處理工具,主要的應用場景是在構建數據倉庫時,對數據執行抽取、轉換和裝載操作[4]。但是,由于MapReduce程序對于其他語言開發者來說相對麻煩。所以,Facebook研發了Hive,這將sql語句在Hadoop上執行成為了可能,達到了提高查詢效率的目的。

1.2 Hive的模型

Hive運行時,將SQL語句進行解釋、編譯、優化并生成執行任務,默認情況下會將查詢語句轉化為MapReduce任務進而執行。在基于Spark的架構中,將轉化為抽象的RDD,然后對相應的RDD再進行相關的處理。Hive 中的主要數據模型如下:表(Table)、外部表(External Table)、分區(Partition)、桶(Bucket)[5]。Hive中包含的主要組件如下:

Driver組件:主要有Compiler、Optimizer、Executor,可以將Hive語句進行編譯、解析、優化,進而轉化為相應的任務并提交給計算引擎進行處理。

MetaStore組件:存儲著Hive的元數據信息,主要為關系型數據庫。

用戶接口:用于訪問Hive。

2 Hive on Hadoop

2.1 Hadoop的背景

Google在2004年提出了最原始的分布式計算架構模型[6]:MapReduce,該模型主要用于大規模數據的并行處理。MapReduce模型主要分為Map和Reduce過程,主要的原理是將大規模數據處理作業拆分成多個可獨立運行的Map任務,然后傳輸到多個處理機上進行分布處理,最后通過Reduce任務混洗合并,從而產生最終的輸出文件。盡管MapReduce模型比較好的考慮了數據存儲、調度、容錯管理、負載均衡[7]等問題。但是它也存在不足,如占用過多的網絡資源、磁盤讀寫耗費時間、異步性差等問題。

2.2 Hadoop的四大組件

Hadoop為可靠、可擴展的分布式開源軟件。

Hadoop的四個組件如下:

Hadoop Common:支持其他Hadoop模塊的程序。

HDFS:分布式文件系統,提供訪問應用程序的數據。

Hadoop YARN:作業調度和集群資源管理的框架[8]。

Hadoop MapReduce:基于YARN的大型數據集并行處理系統。

2.3 Hive on Hadoop運行機制

Hive的客戶端書寫hql語句發起任務請求,然后將hql語句轉化為mapreduce任務,通過資源管理器yarn,分發到各個節點上進行數據處理。這種運行模式的目的是使客戶端主要集中進行查詢語句的書寫,而不用過多的關注底層的開發。具體執行流程如圖1所示。

2.4 Hive on Hadoop的應用

由于Hadoop具有較高的延遲,而且在作業提交和調度的時候,需要大量的額外開銷。所以,這種模式無法滿足大數據集的低延遲查詢。因此,該模式最佳使用場合是大數據集的離線批處理作業,例如,網絡日志的離線分析。

3 Hive on Spark

3.1 Spark的背景介紹

Apache Spark[9]是基于內存計算的用于大規模數據處理的分析引擎。Spark中的核心抽象概念就是彈性分布式數據集RDD(resilient distributed datasets)[10],該數據集為只讀型可恢復數據集。用戶可以利用 Spark中的轉換(transformation)和動作(action)操作對其進行處理,這其中也包括RDD的持久化操作,我們可以利用緩存的方式將其保存在內存[11]中不被回收。

RDD通過血統(lineage)關系來完成容錯:主要的原理是丟失的RDD有足夠的信息知道自己的父RDD,從而可以通過再次計算的方式從父RDD得到丟失的RDD。

3.2 Spark的四大特性

Spark具有四大特性如下:

快速性:相比較于Hadoop,官網給出的運行速度是提高了100倍。因為Spark使用DAG[12]調度程序、查詢優化程序和物理執行引擎,所以實現批量數據和流式數據處理的高性能。

易用性:支持使用Java,Scala,Python,R和SQL等語言進行快速編寫應用程序。

高可用性:Spark提供了很多庫,包括SQL、DataFrame、MLlib[13]、GraphX[14]和Spark Streaming[15]。我們可以在同一個應用程序中組合使用這些庫。

跨平臺性:Spark可以運行在Hadoop、Mesos、或者Kubernetes中;可以從HDFS、HBase、Hive和其他數百個數據源中訪問數據。

3.3 Hive on Spark的運行機制

我們在Spark平臺運行Hive時,有遠程和本地兩種方式。Hive on Spark主要的設計思路是,盡可能重用Hive邏輯計算層面的功能。在運行生成物理計劃開始時,就提供一整套針對Spark的實現,目的是使Hive的查詢可以作為Spark任務來執行。

設計原則如下:

⑴ 盡量保持Hive源碼的完整性:主要為了不影響Hive目前對MapReduce和Tez的支持;

⑵ 利用Hive語句:主要指使用Hive的執行語句對數據進行操作,使主要的計算邏輯仍由Hive提供;

⑶ 對Spark具有良好的松耦合性:使用中可以直接利用命令進行計算引擎的切換。

圖2是一個關于兩表join的hive操作執行過程,具體的處理過程如下:

這個join查詢在進行邏輯計劃過程中生成了兩個MapWork和一個ReduceWork。TS讀取表記錄,FIL進行過濾;RS對數據進行分發和排序,JOIN算子對RS分組排序后的數據進行join運算,最后通過FS算子輸出結果。

在執行SparkTask時,將各個MapWork和ReduceWork包裝成函數應用到RDD上,RDD主要由Hive表生成。對于存在依賴關系的Work之間,需要調用Shuffle操作并進行stage的相應劃分。圖2右為RDD的具體執行過程,首先通過Union操作,然后執行Shuffle操作,最后得到相應的RDD,foreachAsync的作用是將任務提交到Spark引擎上進行處理。

3.4 hive on spark的應用

如今,數據的來源和特性不斷改變,傳統的處理方式已不再適用,并且當使用過程中碰到迭代操作時,基于MapReduce的Hive查詢根本無法滿足快速處理的要求。但是,對于實時查詢業務,基于Spark的大數據分析工具Hive有著突出的表現,特別是對于一些復雜的操作,如迭代操作。

4 相關工作

4.1 Hive on Spark的集群搭建準備

Spark的編譯。要使用Hive on Spark,所用的Spark版本必須不包含Hive的相關jar包。需要下載Spark源碼進行重新編譯。

我們這里用的Spark源碼是從官網下載的spark-1.6.2的源碼包。編譯前請確保已經安裝JDK、Maven和Scala,Maven為3.3.3及以上版本,并配置環境變量。進入到源碼根目錄下,利用make-distribution.sh命令進行編譯,注意Hive和Spark的版本號要匹配。

4.2 Hive on Spark的搭建

本次實驗中,主要搭建了三臺虛擬機,其中Hive只需安裝在其中一臺機上,啟動Hive時,注意將MySQL驅動包上傳到Hive的lib目錄下;然后,在Hive的機器上,將Spark的lib目錄下的assembly包拷貝到Hive的lib目錄下,目的是執行Hive操作就不需要再手動啟動Spark。初始化數據庫,啟動Hive。至此,安裝結束,進行實驗測試。

5 兩種模式在具體查詢分析中的比較

5.1 影評案例的測試

主要使用了三張表movies.dat,ratings.dat,users.dat,我們主要對兩張表以及三張表的join操作進行了測試,具體操作如表1,表2所示。

5.2 實驗環境

實驗采用在虛擬機建立3臺機器測試,配置如下,電腦硬件:(英特爾)Intel(R) Core(TM) i5-3210M CPU@2.50GHz(2500 Mh),內存8.0GB,操作系統是 Microsoft Windows 7旗艦版(64位/Service Pack 1)。

三臺虛擬機的信息具體如表3。

三張表movies.dat,ratings.dat,users.dat的數據量分別為3883行數據,1000209行數據,6040行數據。測試結果如表4,表5所示。對于hadoop的具體執行過程如表6所示。

5.3 性能比較與總結

我們通過具體的案例分析,將結果用圖表進行顯示,每次運行的時間單位為秒,具體如圖3、圖4所示。

6 實驗總結和期望

實驗中,我們看到利用Spark作為計算引擎比MapReduce的執行速度快了17.421-46.347倍。基于Hadoop的執行過程具體如表6所示,總體運行時間都比較長。但是當基于Spark引擎運行時,每條語句的執行時間都明顯降低了,特別是執行sql6語句的時候,時間減少的更加明顯。

通過實驗,基于Spark的Hive語句執行的效果明顯好于Hadoop,特別是對于復雜的查詢語句,如產生多個map和reduce過程的語句,Spark的表現更加突出。Spark的應用使Hive的實時查詢成為了可能。這也對海量數據的實時分析具有重要的意義。

參考文獻(References):

[1] 李學龍,龔海剛.大數據系統綜述[J].中國科學:信息科學,2015.45(1):1-44

[2] 陸嘉恒.Hadoop實戰[M].機械工業出版社,2011.

[3] 宋杰.MapReduce大數據處理平臺與算法研究進展[J].軟件學報,2017.28(3).

[4] El-Sappagh S H A, Hendawi A M A, Bastawissy A H E. A proposed modelfor data warehouse ETL processes[J]. Journal of King Saud University Computer & Information Sciences,2011.23(2):91-104

[5] Dean J,Ghemawat S. MapReduce:simplified data process-ing on largeclusters[J].Communications of the ACM,2008.51(1):107-113

[6] 董西成.Hadoop技術內幕深入解析MapReduce架構設計與實現原理[M].機械工業出版,2013.

[7] 陳林,Hadoop異構集群下的負載均衡算法研究[J].現代計算機,2018.5:60-62

[8] 方宸.基于YARN網絡數據分析系統實現與應用研究[D].華中科技大學,2014.

[9] 高彥杰.Spark大數據處理[M].機械工業出版社,2014.

[10] Zaharia M, Chowdhury M, Das T, et al. Resilient distributed datasets: a faulttolerant abstraction for in-memory cluster computing [C]// Proc of Conference on Networked Systems Design and Implementation.[S. l. ]:USENIX Association, 2012:2

[11] Han Z, Zhang Y. Spark: A Big Data Processing Platform Based on MemoryComputing [C]// Proc of International Symposium on Parallel Architectures.[S. l.]:IEEE Press,2015:172-176

[12] 袁景凌,熊盛武,饒文碧.Spark案例與實驗教程[M].武漢大學出版社,2017.

[13] B Yavuz, B Yavuz, B Yavuz, E Sparks, D Liu.MLlib: machine learning in apache spark[J]. Journal of Machine Learning Research,2016.17(1):1235-1241

[14] 孫海.Spark的圖計算框架:GraphX[J],現代計算機(專業版),2017.9:120-122,127

[15] 陸世鵬,基于Spark Streaming的海量日志實時處理系統的設計[J].電子產品可靠性與環境試驗,2017.35(5).

主站蜘蛛池模板: 免费全部高H视频无码无遮掩| 99re经典视频在线| 亚洲综合激情另类专区| www成人国产在线观看网站| 夜夜爽免费视频| 国产成人精品男人的天堂| 国产XXXX做受性欧美88| 国产不卡国语在线| 日韩欧美国产综合| 自拍中文字幕| 在线毛片网站| 亚洲国产91人成在线| 性69交片免费看| 国产精品网址在线观看你懂的| 久久综合成人| 99视频在线精品免费观看6| 免费亚洲成人| 午夜一区二区三区| 久久精品无码中文字幕| 欧美色香蕉| 亚洲人成在线精品| 日韩欧美中文在线| 亚洲精品自产拍在线观看APP| 午夜三级在线| 欧美不卡视频一区发布| 欧美激情视频二区| 成人午夜精品一级毛片| 国产免费看久久久| 国产成人无码AV在线播放动漫| 中文字幕欧美日韩高清| 日韩精品一区二区三区视频免费看| 亚洲区欧美区| 免费av一区二区三区在线| 亚洲美女一区二区三区| 无码高潮喷水专区久久| 亚洲精品无码日韩国产不卡| 精品人妻系列无码专区久久| 国产精品 欧美激情 在线播放 | 国产精品欧美在线观看| 亚洲大尺码专区影院| 欧美一级高清免费a| 九九免费观看全部免费视频| 极品私人尤物在线精品首页| 国产浮力第一页永久地址| 国产手机在线ΑⅤ片无码观看| 热九九精品| 欧美一级99在线观看国产| 国产99视频免费精品是看6| 国产免费看久久久| 国产精品亚洲日韩AⅤ在线观看| 内射人妻无码色AV天堂| 国产福利2021最新在线观看| 久久久亚洲色| 日本人真淫视频一区二区三区| 无遮挡一级毛片呦女视频| 欧美三级视频网站| 色呦呦手机在线精品| 五月婷婷丁香色| 色屁屁一区二区三区视频国产| 国产在线观看第二页| 永久成人无码激情视频免费| 91精品久久久无码中文字幕vr| 91福利国产成人精品导航| 免费国产高清视频| 日本五区在线不卡精品| 国产美女91视频| 精品福利网| 99一级毛片| 日韩精品久久无码中文字幕色欲| a级毛片网| 日本高清有码人妻| 67194亚洲无码| WWW丫丫国产成人精品| 欧美 国产 人人视频| 欧美亚洲国产精品第一页| 欧美日韩免费| 99在线观看国产| 亚洲午夜福利精品无码不卡| 亚洲天堂区| 国产一级裸网站| 亚洲va视频| 亚洲高清国产拍精品26u|