spark成長之路(1)spark究竟是什麼?

来源:https://www.cnblogs.com/wangyalou/archive/2018/08/24/9532347.html
-Advertisement-
Play Games

今年6月畢業,來到公司前前後後各種事情折騰下來,8月中旬才入職。本以為終於可以靜下心來研究技術了,但是又把我分配到了一個幾乎不做技術的解決方案部門,導致現在寫代碼的時間都幾乎沒有了,所以只能在每天下班後留在公司研究一下自己喜歡的技術,搞得特別晚才回,身心俱疲。 唉~以前天天寫代碼時覺得苦逼,現在沒得 ...


今年6月畢業,來到公司前前後後各種事情折騰下來,8月中旬才入職。本以為終於可以靜下心來研究技術了,但是又把我分配到了一個幾乎不做技術的解決方案部門,導致現在寫代碼的時間都幾乎沒有了,所以只能在每天下班後留在公司研究一下自己喜歡的技術,搞得特別晚才回,身心俱疲。

唉~以前天天寫代碼時覺得苦逼,現在沒得代碼寫了,反而更累了。。。

言歸正傳,這次準備利用空餘的時間,好好研究下大數據相關的技術,也算是彌補下自己的技術短板吧。這一個系列的文章是我從一個大數據小白開始學習的過程,不知道我究竟能學到哪個程度,也不清楚自己是否會半途而廢,但是希望能儘量堅持下去,也希望看到這一系列博客的讀者能更我一起努力,一起進步!

首先我們來看一下spark究竟是什麼。相信很多讀者跟我一樣,聽說過hadoop,也知道spark,更知道spark是現在最火的大數據技術,所以一直有一個疑問:spark是不是替代能夠hadoop的下一代大數據技術?答案是:不是!

首先我們看看spark的官網介紹:Apache Spark is a fast and general-purpose cluster computing system. It provides high-level APIs in Java, Scala, Python and R, and an optimized engine that supports general execution graphs. It also supports a rich set of higher-level tools including Spark SQL for SQL and structured data processing, MLlib for machine learning, GraphX for graph processing, and Spark Streaming.

再來看看hadoop的官網介紹:The Apache Hadoop software library is a framework that allows for the distributed processing of large data sets across clusters of computers using simple programming models. It is designed to scale up from single servers to thousands of machines, each offering local computation and storage. Rather than rely on hardware to deliver high-availability, the library itself is designed to detect and handle failures at the application layer, so delivering a highly-available service on top of a cluster of computers, each of which may be prone to failures.註意到,在官網的介紹中,hadoop只包含了4個模塊:

  • Hadoop Common: The common utilities that support the other Hadoop modules.
  • Hadoop Distributed File System (HDFS™): A distributed file system that provides high-throughput access to application data.
  • Hadoop YARN: A framework for job scheduling and cluster resource management.
  • Hadoop MapReduce: A YARN-based system for parallel processing of large data sets.

仔細比對就能明白,其實spark只是一個計算框架,它的能力是在現有數據的基礎上提供一個高性能的計算引擎,然後提供一些上層的處理工具比如做數據查詢的Spark SQL、做機器學習的MLlib等;而hadoop的功能則更加全面,它是包括了數據存儲(HDFS)、任務計劃和集群資源管理(YARN)以及離線並行計算(MapReduce)的一整套技術棧。因此可以看出,spark其實是依賴於第三方的數據源的,但這也是spark靈活的地方,它能夠配合HBase、Hive,以及關係型資料庫Oracle、Mysql等多種類型的數據工作。

說到這兒,如果你還沒明白spark和hadoop的關係的話,我用一張圖告訴你:

這個是hadoop2.x的生態系統架構圖,可以看到人們現在甚至已經把spark納入到hadoop的生態之中了(雖然這種說法是否妥當還需驗證),足以見證:spark僅僅只是一個計算框架,它不能,也沒有必要來替代hadoop,它存在最大的價值就是彌補MapReduce計算性能上的不足,提供超越其數倍甚至數十倍的計算能力。因此,我們可以將spark與MapReduce對標起來。

這裡補充一個題外內容:hive和hbase的關係,有一個博客我覺得寫的很好,於是接取下來自https://blog.csdn.net/zx8167107/article/details/79265537

HIVE: 


首先說說hive,眾所周知是一款開源的數據倉庫 

1、hive不是資料庫,而是數據倉庫,主要依賴於hadoop來實現

2、底層文件系統是hadoop的hdfs,實現對hdfs上結構化數據的SQL操作HQL,速度較慢

3、計算引擎是hadoop的mapreduce

4、依靠存儲在其他關係型資料庫metastore來對hdfs結構化數據進行管理,實現類似資料庫的功能

5、不具備資料庫的一些主鍵、索引、update操作等特性,但是提供了分區、塊索引、SQL等特性

6、比較適合存儲海量的全量(歷史+更新)軌跡數據,比對數據進行批量的挖掘、分析等操作

 

 

總結一下,hive是基於hadoop實現的數據倉庫,適合存儲海量全量數據,支持類SQL操作,性能相對較差,數據存儲

有一定的限制,不支持更新、索引等事務。適合海量數據的挖掘和分析,通俗一點來說,hive其實就是藉助mysql等資料庫在

hadoop上層套了一個殼,來實現對hdfs上結構化數據的映射,為上層提供sql服務。

 

HBASE:

即Hadoop databse,顧名思義就是一個hadoop的資料庫

1、nosql資料庫之一,基於列式存儲(列族),適合海量半結構化數據的存儲和檢索

2、不支持SQL、適合海量、帶時間序列的數據的存儲和檢索、性能較好

3、原生支持基於rowkey的一級索引,rowkey按照字典序進行排序

4、運算執行引擎是hbase自身提供、底層存儲基於hdfs

 

總結一下,hbase是NOSQL資料庫的一種,基於分散式列式存儲,適合海量半結構化帶時間序列的數據的存儲和檢索,性能較優秀,hbase底層存儲依賴於hdfs,與rdbms的區別與其他nosql類似,比如不支持SQL、事務性相對較差等等。

 

-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

綜上,hbase是資料庫、hive是數據倉庫,而這有很大的區別、也有很多類似的地方比如都屬於hadoop生態圈、存儲都基於hdfs等。一般來說用hive作為海量結構化全量數據的存儲、運算、挖掘、分析;hbase用來作為海量半結構化數據的存儲、檢索;這二者可以很好協同工作,hive上計算完的結果放在hbase中供檢索,也可以將hbase裡面的結構化數據和hive相結合,實現對hbase的sql操作等等。在大數據架構中,Hive和HBase是協作關係,數據流一般如下圖:
通過ETL工具將數據源抽取到HDFS存儲;
通過Hive清洗、處理和計算原始數據;
HIve清洗處理後的結果,如果是面向海量數據隨機查詢場景的可存入Hbase
數據應用從HBase查詢數據;


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

-Advertisement-
Play Games
更多相關文章
  • 原文地址:http://ilikedo.iteye.com/blog/1554822 linux下安裝Oracle 一般都會修改/etc/security/limits.conf這個文件,但是這裡面的具體含義未必每個人都會,剛開始我也不是很清除,只知道要修改,每次安裝按照文檔配置就可以了。今天看到一 ...
  • 如果我們使用**war** 包進行部署項目的時候,需要把包放進Tomcat的目錄下,為了使我們的服務能夠在伺服器重啟的時候自動啟動起來,我們需要把Tomcat設置成自起服務。## 配置 Tomcat 服務新建服務腳本```[root@localhost ~]# vim /etc/init.d/tom... ...
  • 這裡使用樹莓派來操作sg90的舵機。先看一下這個舵機的樣子: 這就是傳說中的SG90舵機啦,轉角是0~180. SG90舵機接線: SG90舵機有三條線:黃線,紅線和灰(還是黑?)線。 這三條線的作用是:紅線VCC,灰線GND,黃線控制線。所以我們這裡主要是操控黃線來控制舵機。 然後這裡有個非常非常 ...
  • 一、通過命令行查找埠被誰占用 1、window+R組合鍵,調出命令視窗 2、輸入命令:netstat -ano,列出所有埠的情況。在列表中我們觀察被占用的埠 3、查看被占用埠對應的PID,輸入命令:netstat -aon | findstr 9090,回車,記錄最後一位數字,即PID,這裡 ...
  • 1、環境 VMware 14.1.1 虛擬系統:Windows Server 2008 32位 2、解決辦法 打開虛擬網路編輯器 有紅框中的提示出現時,就點擊更改設置 點擊橋接模式,在VMnet信息中選擇橋接到的網卡,選擇主機當前連接到網路使用的網卡即可 ...
  • 1.ls [選項] [目錄名 | 列出相關目錄下的所有目錄和文件 -a 列出包括.a開頭的隱藏文件的所有文件 -A 通-a,但不列出"."和".." -l 列出文件的詳細信息 -c 根據ctime排序顯示 -t 根據文件修改時間排序 color[=WHEN] 用色彩辨別文件類型 WHEN 可以是'n ...
  • 首先來看一下這個測距模塊長什麼樣子: 就是HC-SR04模塊。 這個模塊有四個引腳,分別是Vcc(高電平),GND(低電平),Trig(觸發測距)以及Echo(返回測距結果)。 那麼這個模塊怎麼使用呢,資料上的說明是這樣的: 首先給出時序圖: 從上面的步驟可以看出,我們只需要測量Echo腳為高電平的 ...
  • 索引,是資料庫中專門用於幫助用戶快速查詢數據的一種數據結構。類似於字典中的目錄,查找字典內容時可以根據目錄查找到數據的存放位置,然後直接獲取即可。 以 B-tree 形式存儲: MySQL中常見索引有: 普通索引 唯一索引 主鍵索引 組合索引 1、普通索引 普通索引僅有一個功能:加速查詢 1 cre ...
一周排行
    -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.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...