首頁 資料庫 mysql教程 Hive RCFile的高效存储结构

Hive RCFile的高效存储结构

Jun 07, 2016 pm 05:32 PM
hive

本文介绍了Facebook公司数据分析系统中的RCFile存储结构,该结构集行存储和列存储的优点于一身,在 MapReduce环境下的大规模数据

本文介绍了Facebook公司数据分析系统中的RCFile存储结构,该结构集行存储和列存储的优点于一身,在 MapReduce环境下的大规模数据分析中扮演重要角色。

Facebook曾在2010 ICDE(IEEE International Conference on Data Engineering)会议上介绍了数据仓库Hive。Hive存储海量数据在Hadoop系统中,提供了一套类数据库的数据存储和处理机制。它采用类 SQL语言对数据进行自动化管理和处理,经过语句解析和转换,最终生成基于Hadoop的MapReduce任务,通过执行这些任务完成数据处理。图1显 示了Hive数据仓库的系统结构。

图1 Hive数据仓库的系统结构

基于MapReduce的数据仓库在超大规模数据分析中扮演了重要角色,对于典型的Web服 务供应商,这些分析有助于它们快速理解动态的用户行为及变化的用户需求。数据存储结构是影响数据仓库性能的关键因素之一。Hadoop系统中常用的文件存 储格式有支持文本的TextFile和支持二进制的SequenceFile等,它们都属于行存储方式。Facebook工程师发表的RCFile: A Fast and Spaceefficient Data Placement Structure in MapReducebased Warehouse Systems一文,介绍了一种高效的数据存储结构——RCFile(Record Columnar File),并将其应用于Facebook的数据仓库Hive中。与传统数据库的数据存储结构相比,RCFile更有效地满足了基于MapReduce的 数据仓库的四个关键需求,即Fast data loading、Fast query processing、Highly efficient storage space utilization和Strong adaptivity to highly dynamic workload patterns。

数据仓库的需求

基于Facebook系统特征和用户数据的分析,在MapReduce计算环境下,数据仓库对于数据存储结构有四个关键需求。

Fast data loading

对于Facebook的产品数据仓库而言,快速加载数据(写数据)是非常关键的。每天大约有超过20TB的数据上传到Facebook的数据仓库, 由于数据加载期间网络和磁盘流量会干扰正常的查询执行,因此缩短数据加载时间是非常必要的。

Fast query processing

为了满足实时性的网站请求和支持高并发用户提交查询的大量读负载,查询响应时间是非常关键的,这要求底层存储结构能够随着查询数量的增加而保持高速 的查询处理。

Highly efficient storage space utilization

高速增长的用户活动总是需要可扩展的存储容量和计算能力,有限的磁盘空间需要合理管理海量数据的存储。实际上,该问题的解决方案就是最大化磁盘空间 利用率。

Strong adaptivity to highly dynamic workload patterns

同一份数据集会供给不同应用的用户,通过各种方式来分析。某些数据分析是例行过程,,按照某种固定模式周期性执行;而另一些则是从中间平台发起的查 询。大多数负载不遵循任何规则模式,这需要底层系统在存储空间有限的前提下,对数据处理中不可预知的动态数据具备高度的适应性,而不是专注于某种特殊的负 载模式。

MapReduce存储策略

要想设计并实现一种基于MapReduce数据仓库的高效数据存储结构,关键挑战是在MapReduce计算环境中满足上述四个需求。在传统数据库 系统中,三种数据存储结构被广泛研究,分别是行存储结构、列存储结构和PAX混合存储结构。上面这三种结构都有其自身特点,不过简单移植这些数据库导向的 存储结构到基于MapReduce的数据仓库系统并不能很好地满足所有需求。

行存储

如图2所示,基于Hadoop系统行存储结构的优点在于快速数据加载和动态负载的高适应能力,这是因为行存储保证了相同记录的所有域都在同一个集群 节点,即同一个HDFS块。不过,行存储的缺点也是显而易见的,例如它不能支持快速查询处理,因为当查询仅仅针对多列表中的少数几列时,它不能跳过不必要 的列读取;此外,由于混合着不同数据值的列,行存储不易获得一个极高的压缩比,即空间利用率不易大幅提高。尽管通过熵编码和利用列相关性能够获得一个较好 的压缩比,但是复杂数据存储实现会导致解压开销增大。

图2 HDFS块内行存储的例子

列存储

图3显示了在HDFS上按照列组存储表格的例子。在这个例子中,列A和列B存储在同一列组,而列C和列D分别存储在单独的列组。查询时列存储能够避 免读不必要的列,并且压缩一个列中的相似数据能够达到较高的压缩比。然而,由于元组重构的较高开销,它并不能提供基于Hadoop系统的快速查询处理。列 存储不能保证同一记录的所有域都存储在同一集群节点,例如图2的例子中,记录的4个域存储在位于不同节点的3个HDFS块中。因此,记录的重构将导致通过 集群节点网络的大量数据传输。尽管预先分组后,多个列在一起能够减少开销,但是对于高度动态的负载模式,它并不具备很好的适应性。除非所有列组根据可能的 查询预先创建,否则对于一个查询需要一个不可预知的列组合,一个记录的重构或许需要2个或多个列组。再者由于多个组之间的列交叠,列组可能会创建多余的列 数据存储,这导致存储利用率的降低。

图3 HDFS块内列存储的例子

更多详情见请继续阅读下一页的精彩内容

Hive 的详细介绍:请点这里
Hive 的下载地址:请点这里

相关阅读:

基于Hadoop集群的Hive安装

Hive内表和外表的区别

Hadoop + Hive + Map +reduce 集群安装部署

Hive本地独立模式安装

Hive学习之WordCount单词统计

linux

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳圖形設置
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您聽不到任何人,如何修復音頻
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25:如何解鎖Myrise中的所有內容
3 週前 By 尊渡假赌尊渡假赌尊渡假赌

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

在Go語言中使用Hive實現高效率的資料倉儲 在Go語言中使用Hive實現高效率的資料倉儲 Jun 15, 2023 pm 08:52 PM

近年來,資料倉儲成為了企業資料管理中不可或缺的一部分。直接使用資料庫進行資料分析可以滿足簡單的查詢需求,但當我們需要進行大規模資料分析時,單一資料庫已經無法滿足需求,這時我們需要使用資料倉儲來處理大量資料。而Hive則是資料倉儲領域中最受歡迎的開源元件之一,它可以將Hadoop分散式運算引擎和SQL查詢整合在一起,並支援大量資料的平行處理。同時,在Go語言中使

PHP入門指南:PHP和Hive PHP入門指南:PHP和Hive May 20, 2023 am 08:33 AM

PHP是一種廣泛使用的伺服器端程式語言,它的使用範圍幾乎涵蓋了所有產業。在本篇文章中,我們將探討PHP對於大數據處理的特殊作用。在特定環境下,PHP可以與ApacheHive協作,從而實現即時數據處理和分析。先來介紹一下Hive。 Hive是一個基於Hadoop的資料倉儲解決方案。它可以將結構化資料映射成SQL查詢,並以MapReduce任務的方式執行查詢。

PHP實作開源Hive大數據分析平台 PHP實作開源Hive大數據分析平台 Jun 18, 2023 pm 02:47 PM

隨著資料處理越來越重要,大數據分析也變得越來越普遍。然而,許多公司可能不想花費大量資金在商業分析平台上。開源解決方案為這些公司提供了一個可行的選擇。在這篇文章中,我們將討論如何使用PHP實作開源Hive大數據分析平台。 Hive是一個基於Hadoop的資料倉儲系統,可以透過SQL查詢並管理Hadoop上的大規模資料集。它使用類似SQL的HiveQL語言來查詢

Microsoft Exchange Server 受到 Hive 的「windows.exe」勒索軟體的攻擊 Microsoft Exchange Server 受到 Hive 的「windows.exe」勒索軟體的攻擊 Apr 16, 2023 pm 01:28 PM

儘管保持軟體更新和僅從受信任的來源下載檔案是標準的網路安全實踐,但鑑於最近惡意軟體攻擊的增加,很明顯在這方面需要更多的教育。為此,Varonis 取證團隊就使用 Hive 勒索軟體的攻擊者如何在其最新系列攻擊中針對 Microsoft Exchange Server 提供了一些指導。對於那些不知道的人,Hive 遵循勒索軟體即服務模式。儘管微軟在 2021 年針對已知漏洞對 E

Microsoft 發布針對 Windows Defender 中的 Behavior:Win32/Hive.ZY 錯誤的修復程序 Microsoft 發布針對 Windows Defender 中的 Behavior:Win32/Hive.ZY 錯誤的修復程序 Apr 28, 2023 pm 04:01 PM

一位微軟官員證實了有關GoogleChrome、ChromiumEdge、Discord和其他幾個應用程式被微軟內建防毒軟體「WindowsDefender」標記為「 Behavior:Win32/Hive.ZY」的廣泛報導。這家科技巨頭在聲明中證實,它正在研究一個修復程序,該修復程序將在接下來的幾個小時內向所有人推出。那麼「Behavior:Win32/Hive.ZY」到底是什麼?根據微軟安全入口網站上發布的文件,任何標記為「Behavior:Win32/Hive.ZY」的文件都是帶有

Centos7安裝設定Hive教學。 Centos7安裝設定Hive教學。 Feb 19, 2024 pm 02:21 PM

在CentOS7上安裝和設定Hive時,可以按照以下步驟進行操作:確保已安裝Java:首先,請確保在CentOS7上已經安裝了Java。可以使用下列指令檢查Java是否已安裝:java-version如果沒有安裝Java,請依照你的需求安裝適當的Java版本。下載Hive:造訪ApacheHive的官方網站(),下載最新的穩定版本的Hive。解壓縮Hive壓縮包:使用以下命令解壓縮Hive壓縮包:tarxvfzhive-x.x.x.tar.gz這將解壓縮Hive到目前目錄下。配置環境變數:打開終端,

如何修復 Windows Defender 行為:Win32/Hive.ZY 警報 如何修復 Windows Defender 行為:Win32/Hive.ZY 警報 May 06, 2023 am 08:04 AM

許多Windows11和10用戶看到WindowsDefender的警告通知表示偵測到威脅「行為:Win32/Hive.ZY」而感到困擾。據報道,當用戶嘗試開啟一些常用應用程式(如GoogleChrome或ChromiumEdge、Whatsapp、Discord和Spotify)時,會引發此WindowsDefender警告或警報。即使您在PC上阻止了此威脅,它也會在您下次打開此受影響的應用程式時彈出並顯示一條訊息MicrosoftDefenderAntivi

如何使用Python讀取Hive資料庫? 如何使用Python讀取Hive資料庫? May 09, 2023 pm 04:28 PM

實際業務讀取hive資料庫的程式碼importloggingimportpandasaspdfromimpala.dbapiimportconnectimportsqlalchemyfromsqlalchemy.ormimportsessionmakerimportosimporttimeimportosimportdatetimefromdateutil.relativedeltaimportrelativedeltatimeimportosimportdatetimefromdateutil.relativedeltaimportrelativedeltafginty

See all articles