學Hbase之前先說一下Hbase和Hive的關係

2021-10-02 11:23:25 字數 2278 閱讀 8625

在學大資料分析的過程中,hive和hbase是兩個非常重要的內容,對於初學者而言容易混淆。所以比較兩者的聯絡與差別,能夠幫助我們對這兩個元件有乙個清晰的認識和定位。那麼,hive和hbase有哪些區別與聯絡以及適用於哪些場景呢?

首先還要從兩者的概念入手。hive是執行在hadoop上的乙個工具,準確地講是乙個搜尋工具。當對海量資料進行搜尋時,hadoop的計算引擎是mapreduce。但是對mapreduce的操作和程式設計是非常複雜的。於是hive的存在就讓複雜的程式設計過程簡化成了用sql語言對海量資料的操作。這大大減輕了程式設計師的工作量。可以說,hive的存在讓海量資料的增刪改查更加方便。其實從hive的logo就可以看出hive讓大象變成了小蜜蜂,化繁為簡是它最本質的亮點。

再來說說hbase,它是hadoop的子專案,當然也可以理解為乙個工具。hadoop的資料運算是由mapreduce完成的,而資料儲存是由hdfs完成的。hdfs是分布式儲存,這是hadoop儲存資料的特點,但由此帶來的問題就是資料的無序和散亂。hbase的產生,很好地解決了這一問題。hbase能夠把這些資料對映成一張雜湊表,那麼,這些資料一旦成為具有實際儲存意義的表之後,就由無序變得有序,從而對資料搜尋和操作的效率大大提高了

做乙個總結,hive和hbase都是hadoop集群下的工具,hive是對mapreduce的優化,而hbase則是hdfs資料儲存的大管家。那麼,這兩者各適用於哪些場景呢?

1.hive中的表為純邏輯表,僅僅對錶的元資料進行定義。hive沒有物理儲存的功能,它完全依賴hdfs和mapreduce。尚學堂陳老師指出這樣就可以將結構化的資料檔案對映為為一張資料庫表,並提供完整的sql查詢功能,並將sql語句最終轉換為mapreduce任務進行執行。hbase表則是物理表,適合存放非結構化的資料。

2.hive是在mapreduce的基礎上對資料進行處理,而mapreduce的資料處理依照行模式;而hbase為列模式,這樣使得對海量資料的隨機訪問變得可行。

3.hbase的儲存表儲存密度小,因而使用者可以對行定義成不同的列;而hive是邏輯表,屬於稠密型,即定義列數,每一行對列數都有固定的資料。

4.hive使用hadoop來分析處理資料,而hadoop系統是批處理系統,所以資料處理存在延時的問題;而hbase是準實時系統,可以實現資料的實時查詢。

6.hive全面支援sql,一般可以用來進行基於歷史資料的挖掘、分析。而hbase不適用於有join,多級索引,表關係複雜的應用場景。

7、hive和hbase都是基於hadoop的,計算都是用mr計算的,但是hive還有一種計算方法,就是基於spark的計算方法(但是需要在spark的在conf目錄中建立乙個hive-site.xml)

兩者使用場景的區別:

hbase的應用場景通常是採集網頁資料的儲存,因為它是key-value型資料庫,從而可以到各種key-value應用場景,例如儲存日誌資訊,對於內容資訊不需要完全結構化出來的類cms應用等。注意hbase針對的仍然是oltp應用為主。

hive主要針對的是olap應用,其底層是hdfs分布式檔案系統,重點是基於乙個統一的查詢分析層,支撐olap應用中的各種關聯,分組,聚合類sql語句。hive一般只用於查詢分析統計,而不能是常見的cud操作,要知道hive是需要從已有的資料庫或日誌進行同步最終入到hdfs檔案系統中,當前要做到增量實時同步都相當困難。

11.1.1 相同點

1、hbase 和 hive 都是架構在 hadoop 之上,用 hdfs 做底層的資料儲存,用 mapreduce 做資料計算

11.1.2 不同點

1、hive 是建立在 hadoop 之上為了降低 mapreduce 程式設計複雜度的 etl 工具。

hbase 是為了彌補 hadoop 對實時操作的缺陷

2、hive 表是純邏輯表,因為 hive 的本身並不能做資料儲存和計算,而是完全依賴 hadoop

hbase 是物理表,提供了一張超大的記憶體 hash 表來儲存索引,方便查詢

3、hive 是資料倉儲工具,需要全表掃瞄,就用 hive,因為 hive 是檔案儲存

hbase 是資料庫,需要索引訪問,則用 hbase,因為 hbase 是面向列的 nosql 資料庫

4、hive 表中存入資料(檔案)時不做校驗,屬於讀模式儲存系統

hbase 表插入資料時,會和 rdbms 一樣做 schema 校驗,所以屬於寫模式儲存系統

5、hive 不支援單行記錄操作,資料處理依靠 mapreduce,操作延時高

hbase 支援單行記錄的 crud,並且是實時處理,效率比 hive 高得多

邁入而立之前,理清一下自己

今天查資料的時候,偶爾看到 漫談程式設計師系列 的部落格,不禁感慨,工作快5年,到底做了撒,腦中似乎空白一片.不能說完全木有做撒吧,不然公司會白白讓你拿了這多年薪水,興許對自己要求高,感覺5年的歷練木有達到心中所想的位置,迷茫中看到了一點希望的火花,至少現在的自己開始醒悟了,不願如此再渾渾噩噩的過下...

說一下如何學遊戲建模

覺得自學實在是太難,主要是哪些地方做錯了或者 卡住了,可能花很長時間都不知道 做錯了想解決問題也解決不了。我覺得自學最納悶就是這點,而且教程裡也不一定會提到 不知道有沒有這樣的小夥伴?沒人帶的話,就靠自學實在是太難了,首先工作面試的時候你就發現自己不知道的太多了,沒有系統的知識框架個人覺得自學,個人...

抱怨之前多想一下 這是微創新的機會

每個人都不喜歡負面情緒。如果乙個人喜歡抱怨,一定會被大家討厭。其實抱怨是人們感覺到了問題,但還沒有清晰描述出問題時的一種困惑狀態。想抱怨的時候,一定要先問一下自己 你能清楚地用筆在紙上清晰地描述出問題嗎?如果你真的能寫出問題,你可能就會發現所謂的問題,根本不是問題。如果你發現你可以清晰地描述出問題,...