大數據核心知識點: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
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...