1. 程式人生 > 其它 >對Hadoop和Hive的初步認識

對Hadoop和Hive的初步認識

一、Hadoop

Hadoop是有Apache基金會所開發的分散式系統處理架構,是一個能夠對大量資料進行分散式處理的軟體框架,以一種可靠、高效、可伸縮的方式進行資料處理。

Hadoop框架最核心的設計就是HDFS(Hadoop Distributed File System)和MapReduce。

HDFS為海量的資料提供了儲存,而MapReduce為海量的資料提供了計算。

對外部客戶機而言,HDFS就像一個傳統的分級檔案系統,可以建立、刪除、移動或重新命名檔案。個人理解我們現在使用的網盤就是這種思想。

MapReduce是一個軟體框架,基於該框架能夠容易地編寫應用程式,這些應用程式能夠執行在由上千個商用機器組成的大叢集上,並以一種可靠的,具有容錯能力的方式並行地處理上TB級別的海量資料集。

MapReduce的思想是“分而治之”,mapper負責將嚴格複雜的任務分成若干簡單的任務,分成的簡單任務規模會大大縮小,且能夠平行計算,彼此之間不存在依賴關係。reducer負責將map之後得到的結果進行彙總。

二、Hive

首先,需要了解資料倉庫。

資料倉庫:一個更好地支援企業或者組織的決策分析處理的面向主題的、整合的、不可更新的、隨時間不斷變化的資料集合。

傳統的資料庫,主要是面對OLTP(聯機事物處理),比如銀行的交易;

資料倉庫主要面對OLAP(聯機分析處理),側重決策分析。

關於OLTP與OLAP,比較如下:

資料倉庫在資料行業扮演的角色如下圖所示

資料來源是由多種方式得來的,比如爬蟲、企業內部資料等,通過對

二手域名交易平臺地圖資料來源裡面的資料進行ETL操作,將資料儲存進資料倉庫,利用OLAP伺服器進行決策分析,最後生成資料報表或者進行資料探勘。

ETL:一種資料倉庫技術,是指從資料來源進行抽取(extract)、轉換(transform)和載入(load)的過程。

資料倉庫和OLAP伺服器是基於多維資料模型的。多維資料模型將資料看做資料方體,通過維度(dimension)和度量(measure)來定義。

多維資料模型可以通過關係型資料庫或者多維陣列來實現。

關係型資料庫適應性、伸縮型和擴充套件性好,不存在資料稀疏問題,但訪問效率較慢;而相應地,多維陣列則是儲存效率高,訪問速度快,但不同維度的訪問效率差別較大(可以分成幾個資料快的方式儲存來解決),且資料稀疏時將影響效率(採用資料壓縮技術來解決)。

多維資料操作主要有以下幾類:

  • 切片(slice)和切塊(clice):在SQL中加入WERE/HAVING進行過濾。
  • 上卷(roll up)和下鑽(drill down):不同粒度的轉換
  • 旋轉(pivoting):轉動觀察資料的角度

簡單瞭解資料倉庫之後,再來看看Hive。

Hive是基於Hadoop的一個數據倉庫工具,可以將結構化的資料對映為一張資料表,可以將SQL語句轉化為MapReduce任務進行執行。

個人的理解,首先Hive是依賴於Hadoop存在的,其次因為MapReduce語法較複雜,Hive可以將較簡單的SQL語句轉化成MapReduce進行計算。

Hive的優缺點:

優點:

  • 類SQL,也即HQL,學習成本低
  • 對大資料有優勢(HDFS和MapReduce)
  • 擴充套件性,支援使用者自定義函式
  • 容錯性高
  • 擁有統一的元資料進行管理
  • 離線處理

缺點:

  • HQL的表達能力具有侷限性
  • 效率較低

因此Hive主要應用場景是用於時效性不高的海量資料的處理,對於資料量不大反而沒有優勢,主要用在資料倉庫上。