第一章 HIve入門之Hive和資料庫比較

2021-09-29 09:47:51 字數 1032 閱讀 9768

由於 hive 採用了類似sql 的查詢語言 hql(hive query language),因此很容易將 hive 理解為資料庫。其實從結構上來看,hive 和資料庫除了擁有類似的查詢語言,再無類似之處。本文將從多個方面來闡述 hive 和資料庫的差異。資料庫可以用在 online 的應用中,但是hive 是為資料倉儲而設計的,清楚這一點,有助於從應用角度理解 hive 的特性。

由於sql被廣泛的應用在資料倉儲中,因此,專門針對hive的特性設計了類sql的查詢語言hql。熟悉sql開發的開發者可以很方便的使用hive進行開發。

hive 是建立在 hadoop 之上的,所有 hive 的資料都是儲存在 hdfs 中的。而資料庫則可以將資料儲存在塊裝置或者本地檔案系統中。

由於hive是針對資料倉儲應用設計的,而資料倉儲的內容是讀多寫少的。因此,hive中不建議對資料的改寫,所有的資料都是在載入的時候確定好的。而資料庫中的資料通常是需要經常進行修改的,因此可以使用 insert into … values 新增資料,使用 update … set修改資料。

hive中大多數查詢的執行是通過 hadoop 提供的 mapreduce 來實現的。而資料庫通常有自己的執行引擎。

hive 在查詢資料的時候,由於沒有索引,需要掃瞄整個表,因此延遲較高。另外乙個導致 hive 執行延遲高的因素是 mapreduce框架。由於mapreduce 本身具有較高的延遲,因此在利用mapreduce 執行hive查詢時,也會有較高的延遲。相對的,資料庫的執行延遲較低。當然,這個低是有條件的,即資料規模較小,當資料規模大到超過資料庫的處理能力的時候,hive的平行計算顯然能體現出優勢。

由於hive是建立在hadoop之上的,因此hive的可擴充套件性是和hadoop的可擴充套件性是一致的(世界上最大的hadoop 集群在 yahoo!,2023年的規模在4000 臺節點左右)。而資料庫由於 acid 語義的嚴格限制,擴充套件行非常有限。目前最先進的並行資料庫 oracle 在理論上的擴充套件能力也只有100臺左右。

由於hive建立在集群上並可以利用mapreduce進行平行計算,因此可以支援很大規模的資料;對應的,資料庫可以支援的資料規模較小。

第一章 hive的基本概念

1 hive基本概念 hive是乙個以apache hadoop為基礎的資料倉儲基礎設施。hive的設計目標是使得資料彙總更加簡單和針對大容量資料的查詢和分析。hive的sql為使用者提供了多種地方來融合他們自己的方法實現自定義分析 hive不是為事務聯機處理設計的。它是用於處理傳統資料倉儲任務。2...

第一章 入門

第一章 入門。1.linux應用程式表現為2種特殊型別的檔案 可執行檔案和指令碼檔案,對應windows下的。exe和批處理。linux不要求可執行檔案或指令碼有特殊的餓副檔名,檔案系統屬性用來表明乙個檔案是否為可執行程式。2.我們是與乙個叫bash的指令碼進行互動的,指令碼裡可執行檔案的執行要麼在...

Storm入門之第一章

譯者 譯者注 本文翻譯自 getting started with storm 本書中所有storm相關術語都用斜體英文表示。這些術語的字面意義翻譯如下,由於這個工具的名字叫storm,這些術語一律按照氣象名詞解釋 下面的術語跟氣象就沒有關係了 本文是該書的第一章。基礎知識 storm是乙個分布式的...