天天看點

Apache Spark基礎及架構(環境部署及Spark API)為什麼使用Spark

Apache Spark基礎及架構

  • 為什麼使用Spark
    • MapReduce程式設計模型的局限性
      • 繁雜
      • 處理效率低:
      • 不适合疊代處理、互動式處理和流式處理
    • Spark是類Hadoop MapReduce的通用并行架構
    • Spark簡介
      • 發展曆程
    • Spark優勢
      • 速度快
      • 易用性
      • 通用性
      • 随處運作
    • Spark技術棧
      • Spark Core
      • Spark SQL
      • Spark Streaming
      • Spark GraphX
      • Spark MLlib
    • Spark環境部署
    • Spark初體驗
      • spark-shell:Spark自帶的互動式工具
    • Spark架構設計
      • 運作架構
    • Spark架構核心元件
    • Spark API

為什麼使用Spark

MapReduce程式設計模型的局限性

繁雜

隻有Map和Reduce兩個操作,複雜的邏輯需要大量的樣闆代碼

處理效率低:

Map中間結果寫磁盤,Reduce寫HDFS,多個Map通過HDFS交換資料

任務排程與啟動開銷大

不适合疊代處理、互動式處理和流式處理

Spark是類Hadoop MapReduce的通用并行架構

Job中間輸出結果可以儲存在記憶體,不再需要讀寫HDFS

比MapReduce平均快10倍以上

Spark簡介

誕生于加州大學伯克利分校AMP實驗室,是一個基于記憶體的分布式計算架構

發展曆程

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

2010年正式開源

2013年6月正式成為Apache孵化項目

2014年2月成為Apache頂級項目

2014年5月正式釋出Spark 1.0版本

2014年10月Spark打破MapReduce保持的排序記錄

2015年釋出了1.3、1.4、1.5版本

2016年釋出了1.6、2.x版本

Spark優勢

速度快

基于記憶體資料處理,比MR快100個數量級以上(邏輯回歸算法測試)

基于硬碟資料處理,比MR快10個數量級以上

易用性

支援Java、Scala、Python、R語言

互動式shell友善開發測試

通用性

一棧式解決方案:批處理、互動式查詢、實時流處理、圖計算及機器學習

随處運作

YARN、Mesos、EC2、Kubernetes、Standalone、Local

Spark技術棧

Spark Core

核心元件,分布式計算引擎

Spark SQL

高性能的基于Hadoop的SQL解決方案

Spark Streaming

可以實作高吞吐量、具備容錯機制的準實時流處理系統

Spark GraphX

分布式圖處理架構

Spark MLlib

建構在Spark上的分布式機器學習庫

Spark環境部署

參考部落格連結:Spark2.4.5、Scala2.11高可用環境搭建(有安裝包連結)

Spark初體驗

spark-shell:Spark自帶的互動式工具

本機

Standalone

YARN

spark-shell --master yarn-client
           
scala>sc.textFile("hdfs://cluster1/data/hello.txt")
	       .flatMap(x=>x.split("\t"))
	       .map(x=>(x,1)).reduceByKey(_+_).collect
           
#hello.txt内容
hello world welcome
hello welcome
           

Spark架構設計

運作架構

1.在驅動程式中,通過SparkContext主導應用的執行

2.SparkContext可以連接配接不同類型的Cluster Manager(Standalone、YARN、Mesos),連接配接後,獲得叢集節點上的Executor

3.一個Worker節點預設一個Executor,可通過SPARK_WORKER_INSTANCES調整

4.每個應用擷取自己的Executor

5.每個Task處理一個RDD分區

Apache Spark基礎及架構(環境部署及Spark API)為什麼使用Spark

Spark架構核心元件

Apache Spark基礎及架構(環境部署及Spark API)為什麼使用Spark

Spark API

參考部落格連結:Maven工程實作Spark api—wordcount和列印hdfs檔案

繼續閱讀