Spark初識-什么是Spark

Spark是一個基于內存的開源計算框架,于2009年誕生于加州大學伯克利分校AMPLab(AMP:Algorithms,Machines,People),它最初屬于伯克利大學的研究性項目,后來在2010年正式開源,并于 2013 年成為了 Apache 基金項目,到2014年便成為 Apache 基金的頂級項目,該項目整個發展歷程剛過六年時間,但其發展速度非常驚人。
正由于Spark來自于大學,其整個發展過程都充滿了學術研究的標記,是學術帶動Spark核心架構的發展,如彈性分布式數據集(RDD,resilient distributed datasets)、流處理(Spark streaming)、機器學習(MLlib)、SQL分析(Spark SQL)和圖計算(GraphX)。

一、Spark是什么

Spark,是一種“One Stack to rule them all”的大數據計算框架,是一種基于內存計算的框架,是一種通用的大數據快速處理引擎。

這一站式的計算框架,包含了Spark RDD(這也是Spark Core用于離線批處理)、Spark SQL(交互式查詢)、Spark Streaming(實時流計算)、MLlib(機器學習)、GraphX(圖計算)等重要處理組件。

二、Spark的發展歷史

2009年誕生于美國加州大學伯克利分校AMP 實驗室,

2010年通過BSD許可協議開源發布,

2013年捐贈給Apache軟件基金會并切換開源協議到切換許可協議至 Apache2.0,

2014年2月,Spark 成為 Apache 的頂級項目

2014年11月, Spark的母公司Databricks團隊使用Spark刷新數據排序世界記錄

Spark 成功構建起了一體化、多元化的大數據處理體系。在任何規模的數據計算中, Spark 在性能和擴展性上都更具優勢。

Hadoop 之父Doug Cutting 指出:Use of MapReduce engine for Big Data projects will decline, replaced by Apache Spark (大數據項目的MapReduce 引擎的使用將下降,由Apache Spark 取代)

Hadoop 商業發行版本的市場領導者Cloudera 、HortonWorks 、MapR 紛紛轉投Spark,并把Spark 作為大數據解決方案的首選和核心計算引擎。

2014 年的如此Benchmark 測試中, Spark 秒殺Hadoop ,在使用十分之一計算資源的情況下,相同數據的排序上, Spark 比Map Reduce 快3 倍! 在沒有官方PB 排序對比的情況下,首次將S park 推到了IPB 數據(十萬億條記錄) 的排序,在使用190 個節點的情況下,工作負載在4 小時內完成, 同樣遠超雅虎之前使用3800 臺主機耗時16 個小時的記錄。

2015年6月, Spark 最大的集群來自騰訊–8000 個節點, 單個Job 最大分別是阿里巴巴和Databricks–1PB ,震撼人心!同時,Spark的Contributor 比2014 年漲了3 倍,達到730 人:總代碼行數也比2014 年漲了2 倍多,達到40 萬行。

IBM 于2015 年6 月承諾大力推進Apache Spark 項目, 并稱該項目為:以數據為主導的,未來十年最重要的新的開源項目。這-承諾的核心是將Spark 嵌入IBM 業內領先的分析和商務平臺,并將Spark 作為一項服務,在IBMB平臺上提供給客戶。IBM 還將投入超過3500 名研究和開發人員在全球10余個實驗室開展與Spark 相關的項目,并將為Spark 開源生態系統無償提供突破性的機器學習技術–IBM SystemML。同時,IBM 還將培養超過100 萬名Spark 數據科學家和數據工程師。

2016 年,在有“計算界奧運會”之稱的國際著名Sort Benchmark全球數據排序大賽中,由南京大學計算機科學與技術系PASA 大數據實驗室、阿里巴巴和Databricks 公司組成的參賽因隊NADSort,以144美元的成本完成lOOTB 標準數據集的排序處理,創下了每TB 數據排序1.44美元成本的最新世界紀錄,比2014 年奪得冠軍的加州大學圣地亞哥分校TritonSort團隊每TB 數據4.51美元的成本降低了近70%,而這次比賽依舊使用Apache Spark 大數據計算平臺,在大規模并行排序算法以及Spark 系統底層進行了大量的優化,以盡可能提高排序計算性能并降低存儲資源開銷,確保最終贏得比賽。

在FullStack 理想的指引下,Spark 中的Spark SQL 、SparkStreaming 、MLLib 、GraphX 、R 五大子框架和庫之間可以無縫地共享數據和操作, 這不僅打造了Spark 在當今大數據計算領域其他計算框架都無可匹敵的優勢, 而且使得Spark 正在加速成為大數據處理中心首選通用計算平臺。

3

三、Spark的優點

Spark之所以這么受關注,主要是因為其有與其他大數據平臺不同的特點,主要如下。

1.輕量級快速處理

與 Hadoop 的 MapReduce 相比, Spark 基于內存的運算是 MapReduce 的 100 倍.基于硬盤的運算也要快 10 倍以上.

Spark 實現了高效的 DAG 執行引擎, 可以通過基于內存來高效處理數據流

4

2.易于使用

Spark 支持 Scala, Java, Python, R 和 SQL 腳本, 并提供了超過 80 種高性能的算法, 非常容易創建并行 App
?而且 Spark 支持交互式的 Python 和 Scala 的 shell, 這意味著可以非常方便地在這些 shell 中使用 Spark 集群來驗證解決問題的方法, 而不是像以前一樣 需要打包, 上傳集群, 驗證等. 這對于原型開發非常重要.

5

3. 通用、支持復雜查詢

Spark 結合了SQL, Streaming和復雜分析.
??Spark 提供了大量的類庫, 包括 SQL 和 DataFrames, 機器學習(MLlib), 圖計算(GraphicX), 實時流處理(Spark Streaming) .
??可以把這些類庫無縫的柔和在一個 App 中.
??減少了開發和維護的人力成本以及部署平臺的物力成本.

6

4. 可融合性強

Spark 可以非常方便的與其他開源產品進行融合.
??比如, Spark 可以使用 Hadoop 的 YARN 和 Appache Mesos 作為它的資源管理和調度器, 并且可以處理所有 Hadoop 支持的數據, 包括 HDFS, HBase等.

7

5.實時的流處理

對比MapReduce只能處理離線數據,Spark還能支持實時流計算。Spark Streaming主要用來對數據進行實時處理,當然在YARN之后Hadoop也可以借助其他的工具進行流式計算。對于Spark Streaming,著名的大數據產品開發公司Cloudera曾經對Spark Streaming有如下評價:

  1. 簡單、輕量且具備功能強大的API,Sparks Streaming允許用戶快速開發流應用程序。
  2. 容錯能力強,不像其他的流解決方案,比如使用Storm需要額外的配置,而Spark無需額外的代碼和配置,因為直接使用其上層應用框架Spark Streaming就可以做大量的恢復和交付工作,讓Spark的流計算更適應不同的需求。
  3. 集成性好,為流處理和批處理重用了同樣的代碼,甚至可以將流數據保存到歷史數據中(如HDFS)。

6.活躍和不斷壯大的社區

Spark起源于2009年,當下已有超過50個機構730個工程師貢獻過代碼,與2014年6月相比2015年代碼行數擴大了近三倍(數據源于Spark Summit 2015公布的數據),這是個驚人的增長

*、本文參考

Spark官網

深入淺出,一文讓你了解什么是Spark

Spark入門——什么是Hadoop,為什么是Spark?
spark是什么及發展趨勢概述

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:
http://www.pswp.cn/news/535561.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/535561.shtml
英文地址,請注明出處:http://en.pswp.cn/news/535561.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

系統優化

1、關閉selinux sed -i ‘s/SELINUXenforcing/SELINUXdisabled’ setenforce 0 2.精簡開機服務 ntsysv setup system service

Spark初識-Spark與Hadoop的比較

Spark,是分布式計算平臺,是一個用scala語言編寫的計算框架,基于內存的快速、通用、可擴展的大數據分析引擎 Hadoop,是分布式管理、存儲、計算的生態系統;包括HDFS(存儲)、MapReduce(…

Spark初識-Spark基本架構概覽使用

當需要處理的數據量超過了單機尺度(比如我們的計算機有4GB的內存,而我們需要處理100GB以上的數據)這時我們可以選擇spark集群進行計算,有時我們可能需要處理的數據量并不大,但是計算很復雜,需要大量的時間,這時我們也可…

Spark初識-彈性分布式數據集RDD

Spark 的核心是建立在統一的抽象彈性分布式數據集(Resiliennt Distributed Datasets,RDD)之上的,這使得 Spark 的各個組件可以無縫地進行集成,能夠在同一個應用程序中完成大數據處理。 一、RDD概念 RDD 是 Spark 提供…

nmon

1).采集數據: #nmon -s10 -c60 -f -m /home/ 參數解釋: -s10 每 10 秒采集一次數據。 -c60 采集 60 次,即為采集十分鐘的數據。 -f 生成的數據文件名中包含文件創建的時間。 -m 生成的數據文件的存放目錄。 這樣就會生成一個 nmon 文件&…

Spark入門- Spark運行Local本地模式

一、Spark單機模式部署 Spark版本 : spark-2.4.7-bin-hadoop2.7 1、安裝配置JDK環境 2、下載Spark 官網下載http://spark.apache.org/ 然后上傳到LInux服務器上 3、解壓 tar -zxvf spark-2.4.7-bin-hadoop2.7.tgz解壓目錄說明 bin 可執行腳本 conf …

Spark入門-了解Spark核心概念

在本文中我們將從Spark集群角度和程序應用的角度來對相關概念進行了解 一. 站在集群角度 1.1 Master Spark 特有資源調度系統的 Leader。掌管著整個集群的資源信息,類似于 Yarn 框架中的 ResourceManager,主要功能: 監聽 Worker&#xff0…

Spark運行standalone集群模式

spark的集群主要有三種運行模式standalone、yarn、mesos,其中常被使用的是standalone和yarn,本文了解一下什么是standalone運行模式,并嘗試搭建一個standalone集群 一、standalone模式 standalone模式,是spark自己實現的&#xf…

docker原理

a.更快速的支付和部署:開發者可以使用一個標準的鏡像來構建一套開發容器 ,開發完成之后,運維人員可以直接使用這個容器來部署代碼。 b.更高效的虛擬化: Docker容器的運行不需要額外的hypervisor支持,它是內核級的虛擬化,因此 可以實現更高的性能和效。 I 0c更輕松的遷移和擴展…

創造型模式——工廠模式

工廠模式(Factory Pattern)是 Java 中最常用的設計模式之一。這種類型的設計模式屬于創建型模式,它提供了一種創建對象的最佳方式。 在工廠模式中,我們在創建對象時不會對客戶端暴露創建邏輯,并且是通過使用一個共同的…

創造型模式——抽象工廠模式

抽象工廠模式(Abstract Factory Pattern)是圍繞一個超級工廠創建其他工廠。該超級工廠又稱為其他工廠的工廠。這種類型的設計模式屬于創建型模式,它提供了一種創建對象的最佳方式。 在抽象工廠模式中,接口是負責創建一個相關對象的…

Iptables防火墻原理

一、IPTABLES概念 iptables是隔離主機以及網絡的工具,通過自己設定的規則以及處理動作對數據報文進行檢測以及處理。從設備上分類,防火墻分為軟件防火墻、硬件防火墻、芯片級防火墻。從技術上分類,防火墻分為數據包過濾型防火墻、應用代理型防火墻。這是因為四層模型的每一…

創造型模式——單例模式

單例模式(Singleton Pattern)是 Java 中最簡單的設計模式之一。這種類型的設計模式屬于創建型模式,它提供了一種創建對象的最佳方式。 這種模式涉及到一個單一的類,該類負責創建自己的對象,同時確保只有單個對象被創建…

trap命令

trap命令用于指定在接收到信號后將要采取的行動,信號的信息前面已經提到。 trap 命令的一種常見用途是在腳本程序被中斷時完成清理工作。 歷史上,shell 總是用數字來代表信號,而新的腳本程字應該使用信號的名字,它們保存在用#include命令包含進來的signal.h頭文件中,在使用…

創造型模式——建造者模式

建造者模式(Builder Pattern)使用多個簡單的對象一步一步構建成一個復雜的對象。這種類型的設計模式屬于創建型模式,它提供了一種創建對象的最佳方式。 一個 Builder 類會一步一步構造最終的對象。該 Builder 類是獨立于其他對象的。 一、介紹…

shell知識點

靜態語言是編譯型語言,強類型的語言 如C,C++,java(面向對象),C#, 動態語言是解釋型語言,弱類型的語言,邊解釋邊執行 ,需要解釋器,解釋器是用靜態語言開發的如shell(面向過程), perl,asp,asp.net,php,python(面向對象) 腳本執行 1.…

創造性模式——原型模式

原型模式(Prototype Pattern)是用于創建重復的對象,同時又能保證性能。這種類型的設計模式屬于創建型模式,它提供了一種創建對象的最佳方式。 這種模式是實現了一個原型接口,該接口用于創建當前對象的克隆。當直接創建…

Consider defining a bean of type ‘java.lang.String‘ in your configuration

Consider defining a bean of type ‘java.lang.String’ in your configuration 總結了網上的幾種解決方案: 1、多余的autowired 2、待實例化的類里必須有默認的構造方法(即沒有參數的那種) Consider defining a bean of type ‘XXXX’ …

SpringBoot-探索回顧Spring框架本質

自始至終,SpringBoot框架都是為了能夠幫助使用Spring框架的開發 快速高效地構建 一個個基于Spring框架以及Spring生態體系的應用解決方案。要深刻理解SpringBoot框架,首先我們需要深刻理解Spring框架。 一、Spring 中的 IoC、DI 和 DL 部分Java開發者對…

redis精解

概念Redis是完全開源免費的,遵守BSD協議,是-一個高性能的key-value數據庫。它支持存儲的value類型很多,包括string(字符串)、list(鏈表)、set(集合)、(Zset(有序集合),這些數據類型都支持。 push/pop、add/remove及 取交集和并集及更豐富的操作,Redis支持各種不同方式的排序)…