大數據核心知識點:Hbase、Spark、Hive、MapReduce概念理解,特點及機制

来源:https://www.cnblogs.com/shsxt/archive/2018/08/29/9555354.html
-Advertisement-
Play Games

今天,上海尚學堂大數據培訓班畢業的一位學生去參加易普軟體公司面試,應聘的職位是大數據開發。面試官問了他10個問題,主要集中在Hbase、Spark、Hive和MapReduce上,基礎概念、特點、應用場景等問得多。看來,還是非常註重基礎的牢固。整個大數據開發技術,這幾個技術知識點占了很大一部分。那本 ...


今天,上海尚學堂大數據培訓班畢業的一位學生去參加易普軟體公司面試,應聘的職位是大數據開發。面試官問了他10個問題,主要集中在Hbase、Spark、Hive和MapReduce上,基礎概念、特點、應用場景等問得多。看來,還是非常註重基礎的牢固。整個大數據開發技術,這幾個技術知識點占了很大一部分。那本篇文章就著重介紹一下這幾個技術知識點。
 

一、Hbase

1.1、Hbase是什麼?

HBase是一種構建在HDFS之上的分散式、面向列的存儲系統。在需要實時讀寫、隨機訪問超大規模數據集時,可以使用HBase。

儘管已經有許多數據存儲和訪問的策略和實現方法,但事實上大多數解決方案,特別是一些關係類型的,在構建時並沒有考慮超大規模和分散式的特點。許多商家通過複製和分區的方法來擴充資料庫使其突破單個節點的界限,但這些功能通常都是事後增加的,安裝和維護都和複雜。同時,也會影響RDBMS的特定功能,例如聯接、複雜的查詢、觸發器、視圖和外鍵約束這些操作在大型的RDBMS上的代價相當高,甚至根本無法實現。
 
HBase從另一個角度處理伸縮性問題。它通過線性方式從下到上增加節點來進行擴展。HBase不是關係型資料庫,也不支持SQL,但是它有自己的特長,這是RDBMS不能處理的,HBase巧妙地將大而稀疏的表放在商用的伺服器集群上。
 
HBase 是Google Bigtable 的開源實現,與Google Bigtable 利用GFS作為其文件存儲系統類似, HBase 利用Hadoop HDFS 作為其文件存儲系統;Google 運行MapReduce 來處理Bigtable中的海量數據, HBase 同樣利用Hadoop MapReduce來處理HBase中的海量數據;Google Bigtable 利用Chubby作為協同服務, HBase 利用Zookeeper作為對應。
 
 

1.2、HBase的特點

◆大:一個表可以有上億行,上百萬列。
​◆面向列:面向列表(簇)的存儲和許可權控制,列(簇)獨立檢索。
​◆稀疏:對於為空(NULL)的列,並不占用存儲空間,因此,表可以設計的非常稀疏。
​◆無模式:每一行都有一個可以排序的主鍵和任意多的列,列可以根據需要動態增加,同一張表中不同的行可以有截然不同的列。
​◆數據多版本:每個單元中的數據可以有多個版本,預設情況下,版本號自動分配,版本號就是單元格插入時的時間戳。
​◆數據類型單一:HBase中的數據都是字元串,沒有類型。

更多信息閱讀:《Hbase簡介》、《Hbase體系架構和集群安裝》、《HBase數據模型

二、Spark  

Spark是Apache的一個頂級項目,是一個快速、通用的大規模數據處理引擎。Apache Spark是一種快速、通用的集群計算系統。它提供了Java、Scala、Python和R的高級API,以及一個支持通用執行圖的優化引擎。它還支持豐富的高級工具集,包括用於SQL和結構化數據處理的Spark SQL、用於機器學習的MLlib、圖形處理的GraphX和Spark流。



Spark基於map reduce演算法實現的分散式計算,擁有Hadoop MapReduce所具有的優點;但不同於MapReduce的是Job中間輸出和結果可以保存在記憶體中,從而不再需要讀寫HDFS,因此Spark能更好地適用於數據挖掘與機器學習等需要迭代的Mapreduce的演算法。
 
Spark的中間數據放到記憶體中,對於迭代運算效率更高。Spark更適合於迭代運算比較多的ML和DM運算。因為在Spark裡面,有RDD的抽象概念。Spark比Hadoop更通用。
 
Spark可以用來訓練推薦引擎(Recommendation Engine)、分類模型(Classification Model)、回歸模型(Regression Model)、聚類模型(Clustering Model)。
 
更多關於Spark的文章閱讀:《【上海大數據培訓】Spark集群運行、讀取、寫入Hbase數據》、《【上海大數據培訓】Spark集群的運行過程

三、Hive

3.1、Hive是什麼

◆由Facebook開源,最初用於解決海量結構化的日誌數據統計問題;
​◆構建在Hadoop之上的數據倉庫;
​◆Hive定義了一種類SQL查詢語言:HQL(類似SQL但不完全相同);
​◆通常用於進行離線數據處理(採用MapReduce);
​◆底層支持多種不同的執行引擎(Hive on MapReduce、Hive on Tez、Hive on Spark);
​◆支持多種不同的壓縮格式、存儲格式以及自定義函數(壓縮:GZIP、LZO、Snappy、BZIP2..  ;
​◆存儲:TextFile、SequenceFile、RCFile、ORC、Parquet ; UDF:自定義函數)。
 

3.2、為什麼要使用Hive

◆簡單、容易上手(提供了類似SQL查詢語言HQL);
​◆為超大數據集設計的計算/存儲擴展能力(MR計算,HDFS存儲);
​◆統一的元數據管理(可與Presto/Impala/SparkSQL等共用數據)。
 

3.3 Hive架構

 
 
上圖中,可以通過CLI(命令行介面),JDBC/ODBC,Web GUI 訪問hive。於此同時hive的元數據(hive中表結構的定義如表有多少個欄位,每個欄位的類型是什麼)都存儲在關係型資料庫中。三種鏈接hive的方式最後統一通多一個Diveer 的程式將sql 轉化成mapreduce的job任務去執行。
 
更多Hive信息閱讀:《Hive是什麼?Hive特點、工作原理,Hive架構,Hive與HBase聯繫和區別》、《Hive常用字元串函數彙總》、《Hive數據倉庫之快速入門

四、Mapreduce

4.1、MapReduce是什麼?

MapReduce 是一個分散式運算程式的編程框架,是用戶開發“基於 hadoop 的數據分析 應用”的核心框架。MapReduce採用"分而治之"的思想,把對大規模數據集的操作,分發給一個主節點管理下的各個分節點共同完成,然後通過整合各個節點的中間結果,得到最終結果。簡單地說,MapReduce就是"任務的分解與結果的彙總"。
 
在分散式計算中,MapReduce框架負責處理了並行編程中分散式存儲、工作調度、負載均衡、容錯均衡、容錯處理以及網路通信等複雜問題,把處理過程高度抽象為兩個函數:map和reduce,map負責把任務分解成多個任務,reduce負責把分解後多任務處理的結果彙總起來。

4.2、為什麼需要 MapReduce?

   ​◆ 海量數據在單機上處理因為硬體資源限制,無法勝任。
   ​◆ 而一旦將單機版程式擴展到集群來分散式運行,將極大增加程式的複雜度和開發難度。
   ​◆引入 MapReduce 框架後,開發人員可以將絕大部分工作集中在業務邏輯的開發上,而將 分散式計算中的複雜性交由框架來處理。
 

4.3、MapReduce核心機制

  
MapReduce核心就是map+shuffle+reducer,首先通過讀取文件,進行分片,通過map獲取文件的key-value映射關係,用作reducer的輸入,在作為reducer輸入之前,要先對map的key進行一個shuffle,也就是排個序,然後將排完序的key-value作為reducer的輸入進行reduce操作,當然一個MapReduce任務可以不要有reduce,只用一個map。

更多MapReduce的文章閱讀:《MapReduce設計及工作原理分析

以上就是總結的Hbase、Spark、Hive、MapReduce的概念理解和特點,以及一些應用場景和核心機制。歡迎大家評論留言,需要相關學習資料也可以留言聯繫。


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 一、應用場景介紹 本文主要是介紹Apache和Tomcat在Linux環境下的安裝講解以及AJP協議動靜分離負載均衡的實現,以及與Nginx負載性能比較。聯網安裝較為簡單,故此處只說離線的Linux環境下是如何安裝的。因為大多數時候,公司的生產環境是在內網環境下,無外網,伺服器處於離線狀態。 二、 ...
  • 解決辦法一: 首先查看本機Oracle安裝路徑中 portlist.ini 文件裡面的埠號是多少,例如我的就是5500. 那麼在瀏覽器中輸入的地址就是:https://localhost:5500/em/ 解決辦法二: 如果前面是在IE瀏覽器或者Microsoft Edge瀏覽器中打不開,建議換一 ...
  • 今日是MySQL的第四篇,難度會稍微加大,加油! 開始吧! 1、外鍵(foreign key) 1.定義:讓當前表欄位的值在另一個表的範圍內選擇 2.語法: foreign key(參考欄位名) references 主表(被參考欄位名) on delete 級聯動作 on update 級聯動作 ...
  • 一.概述 mysqladmin是一個執行管理操作的客戶端程式。用來檢要服務的配置和當前的狀態,創建並刪除資料庫等。功能與mysql客戶端類似,主要區別在於它更側重於一些管理方面的功能。1. 查找mysqladmin工具 2 查看mysql 活動線程列表 3. 查看mysql 活動線程列表 每秒一次。 ...
  • 一、前言 在之前的系列文章中介紹了redis的入門、持久化以及複製功能,如果不瞭解請移步至redis系列進行閱讀,當然我也是抱著學習的知識分享,如果有什麼問題歡迎指正,也歡迎大家轉載。而本次將介紹哨兵集群相關知識,包括哨兵集群部署、哨兵原理、相關配置、故障轉移等內容,正因為redis有了哨兵機制,而 ...
  • 錯誤1: Executing the query "ALTER INDEX [IX_liveConfigState_Service_ServiceId_..." failed with the following error: "The index "IX_liveConfigState_Servi ...
  • 一. 簡單介紹 SQL Server自帶的維護計劃是一個非常有用的維護工具,能夠完成大部分的資料庫的維護任務. 資料庫的備份也是日常工作中非常重要的一個環節。備份的方法非常的多. 今天給大家介紹最簡單的一種方法: 直接通過SQL Server Management Studio的圖形界面去設置備份策 ...
  • MySQL表碎片整理 1. 計算碎片大小 2. 整理碎片 2.1 使用alter table table_name engine = innodb命令進行整理。 2.2 使用pt-online-schema-change工具也能進行線上整理表結構,收集碎片等操作。 2.3 使用optimize ta ...
一周排行
    -Advertisement-
    Play Games
  • 前言 本文介紹一款使用 C# 與 WPF 開發的音頻播放器,其界面簡潔大方,操作體驗流暢。該播放器支持多種音頻格式(如 MP4、WMA、OGG、FLAC 等),並具備標記、實時歌詞顯示等功能。 另外,還支持換膚及多語言(中英文)切換。核心音頻處理採用 FFmpeg 組件,獲得了廣泛認可,目前 Git ...
  • OAuth2.0授權驗證-gitee授權碼模式 本文主要介紹如何筆者自己是如何使用gitee提供的OAuth2.0協議完成授權驗證並登錄到自己的系統,完整模式如圖 1、創建應用 打開gitee個人中心->第三方應用->創建應用 創建應用後在我的應用界面,查看已創建應用的Client ID和Clien ...
  • 解決了這個問題:《winForm下,fastReport.net 從.net framework 升級到.net5遇到的錯誤“Operation is not supported on this platform.”》 本文內容轉載自:https://www.fcnsoft.com/Home/Sho ...
  • 國內文章 WPF 從裸 Win 32 的 WM_Pointer 消息獲取觸摸點繪製筆跡 https://www.cnblogs.com/lindexi/p/18390983 本文將告訴大家如何在 WPF 裡面,接收裸 Win 32 的 WM_Pointer 消息,從消息裡面獲取觸摸點信息,使用觸摸點 ...
  • 前言 給大家推薦一個專為新零售快消行業打造了一套高效的進銷存管理系統。 系統不僅具備強大的庫存管理功能,還集成了高性能的輕量級 POS 解決方案,確保頁面載入速度極快,提供良好的用戶體驗。 項目介紹 Dorisoy.POS 是一款基於 .NET 7 和 Angular 4 開發的新零售快消進銷存管理 ...
  • ABP CLI常用的代碼分享 一、確保環境配置正確 安裝.NET CLI: ABP CLI是基於.NET Core或.NET 5/6/7等更高版本構建的,因此首先需要在你的開發環境中安裝.NET CLI。這可以通過訪問Microsoft官網下載並安裝相應版本的.NET SDK來實現。 安裝ABP ...
  • 問題 問題是這樣的:第三方的webapi,需要先調用登陸介面獲取Cookie,訪問其它介面時攜帶Cookie信息。 但使用HttpClient類調用登陸介面,返回的Headers中沒有找到Cookie信息。 分析 首先,使用Postman測試該登陸介面,正常返回Cookie信息,說明是HttpCli ...
  • 國內文章 關於.NET在中國為什麼工資低的分析 https://www.cnblogs.com/thinkingmore/p/18406244 .NET在中國開發者的薪資偏低,主要因市場需求、技術棧選擇和企業文化等因素所致。歷史上,.NET曾因微軟的閉源策略發展受限,儘管後來推出了跨平臺的.NET ...
  • 在WPF開發應用中,動畫不僅可以引起用戶的註意與興趣,而且還使軟體更加便於使用。前面幾篇文章講解了畫筆(Brush),形狀(Shape),幾何圖形(Geometry),變換(Transform)等相關內容,今天繼續講解動畫相關內容和知識點,僅供學習分享使用,如有不足之處,還請指正。 ...
  • 什麼是委托? 委托可以說是把一個方法代入另一個方法執行,相當於指向函數的指針;事件就相當於保存委托的數組; 1.實例化委托的方式: 方式1:通過new創建實例: public delegate void ShowDelegate(); 或者 public delegate string ShowDe ...