大數據(13) - Spark的安裝部署與簡單使用

一 、Spark概述

官網:http://spark.apache.orgjava

1.        什麼是spark

 

Spark是一種快速、通用、可擴展的大數據分析引擎,2009年誕生於加州大學伯克利分校AMPLab,2010年開源,2013年6月成爲Apache孵化項目,2014年2月成爲Apache頂級項目。項目是用Scala進行編寫。node

目前,Spark生態系統已經發展成爲一個包含多個子項目的集合,其中包含SparkSQL、Spark Streaming、GraphX、MLib、SparkR等子項目,Spark是基於內存計算的大數據並行計算框架。除了擴展了普遍使用的 MapReduce 計算模型,並且高效地支持更多計算模式,包括交互式查詢和流處理。Spark 適用於各類各樣原先須要多種不一樣的分佈式平臺的場景,包括批處理、迭代算法、交互式查詢、流處理。經過在一個統一的框架下支持這些不一樣的計算,Spark 使咱們能夠簡單而低耗地把各類處理流程整合在一塊兒。而這樣的組合,在實際的數據分析 過程當中是頗有意義的。不只如此,Spark 的這種特性還大大減輕了原先須要對各類平臺分 別管理的負擔。linux

大一統的軟件棧,各個組件關係密切而且能夠相互調用,這種設計有幾個好處:一、軟件棧中全部的程序庫和高級組件 均可以從下層的改進中獲益。二、運行整個軟件棧的代價變小了。不須要運 行 5 到 10 套獨立的軟件系統了,一個機構只須要運行一套軟件系統便可。系統的部署、維護、測試、支持等大大縮減。三、可以構建出無縫整合不一樣處理模型的應用。算法

Spark的內置項目以下:shell

 

Spark Core實現了 Spark 的基本功能,包含任務調度、內存管理、錯誤恢復、與存儲系統 交互等模塊。Spark Core 中還包含了對彈性分佈式數據集(resilient distributed dataset,簡稱RDD)的 API 定義。apache

Spark SQL是 Spark 用來操做結構化數據的程序包。經過 Spark SQL,咱們可使用 SQL 或者 Apache Hive 版本的 SQL 方言(HQL)來查詢數據。Spark SQL 支持多種數據源,比 如 Hive 表、Parquet 以及 JSON 等。編程

Spark Streaming是 Spark 提供的對實時數據進行流式計算的組件。提供了用來操做數據流的 API,而且與 Spark Core 中的 RDD API 高度對應。vim

Spark MLlib提供常見的機器學習(ML)功能的程序庫。包括分類、迴歸、聚類、協同過濾等,還提供了模型評估、數據 導入等額外的支持功能。瀏覽器

集羣管理器:Spark 設計爲能夠高效地在一個計算節點到數千個計算節點之間伸縮計 算。爲了實現這樣的要求,同時得到最大靈活性,Spark 支持在各類集羣管理器(cluster manager)上運行,包括 Hadoop YARN、Apache Mesos,以及 Spark 自帶的一個簡易調度 器,叫做獨立調度器。框架

Spark獲得了衆多大數據公司的支持,這些公司包括Hortonworks、IBM、Intel、Cloudera、MapR、Pivotal、百度、阿里、騰訊、京東、攜程、優酷土豆。當前百度的Spark已應用於鳳巢、大搜索、直達號、百度大數據等業務;阿里利用GraphX構建了大規模的圖計算和圖挖掘系統,實現了不少生產系統的推薦算法;騰訊Spark集羣達到8000臺的規模,是當前已知的世界上最大的Spark集羣。

 

2.      Spark特色

快:

與Hadoop的MapReduce相比,Spark基於內存的運算要快100倍以上,基於硬盤的運算也要快10倍以上。Spark實現了高效的DAG執行引擎,能夠經過基於內存來高效處理數據流。計算的中間結果是存在於內存中的。

易用:

Spark支持Java、Python和Scala的API,還支持超過80種高級算法,使用戶能夠快速構建不一樣的應用。並且Spark支持交互式的Python和Scala的shell,能夠很是方便地在這些shell中使用Spark集羣來驗證解決問題的方法。

 

通用:

Spark提供了統一的解決方案。Spark能夠用於批處理、交互式查詢(Spark SQL)、實時流處理(Spark Streaming)、機器學習(Spark MLlib)和圖計算(GraphX)。這些不一樣類型的處理均可以在同一個應用中無縫使用。Spark統一的解決方案很是具備吸引力,畢竟任何公司都想用統一的平臺去處理遇到的問題,減小開發和維護的人力成本和部署平臺的物力成本。

兼容性:

Spark能夠很是方便地與其餘的開源產品進行融合。好比,Spark可使用Hadoop的YARN和Apache Mesos做爲它的資源管理和調度器,器,而且能夠處理全部Hadoop支持的數據,包括HDFS、HBase和Cassandra等。這對於已經部署Hadoop集羣的用戶特別重要,由於不須要作任何數據遷移就可使用Spark的強大處理能力。Spark也能夠不依賴於第三方的資源管理和調度器,它實現了Standalone做爲其內置的資源管理和調度框架,這樣進一步下降了Spark的使用門檻,使得全部人均可以很是容易地部署和使用Spark。此外,Spark還提供了在EC2上部署Standalone的Spark集羣的工具。

 

1.3  Spark的用戶和用途

咱們大體把Spark的用例分爲兩類:數據科學應用和數據處理應用。也就對應的有兩種人羣:數據科學家和工程師。

數據科學任務:

主要是數據分析領域,數據科學家要負責分析數據並建模,具有 SQL、統計、預測建模(機器學習)等方面的經驗,以及必定的使用 Python、 Matlab 或 R 語言進行編程的能力。

數據處理應用:

工程師定義爲使用 Spark 開發 生產環境中的數據處理應用的軟件開發者,經過對接Spark的API實現對處理的處理和轉換等任務。

 

2、Spark部署

兩種部署方式:

第一種:Standalone

1.解壓

$ tar -zxf ~/softwares/installtions/spark-2.1.1-bin-hadoop2.7.tgz -C ~/modules/

  

2.修改配置文件,將全部以template結尾的文件拓展名去掉

cd /home/admin/modules/spark-2.1.1-bin-hadoop2.7/conf

  

vim salves

linux01
linux02
linux03

  

vim spark-defaults.conf   配置歷史服務

spark.eventLog.enabled           true
spark.eventLog.dir               hdfs://linux01:8020/directory
spark.eventLog.compress          true

  

vim spark-env.sh

SPARK_MASTER_HOST=linux01
SPARK_MASTER_PORT=7077

export SPARK_HISTORY_OPTS="-Dspark.history.ui.port=4000
-Dspark.history.retainedApplications=3
-Dspark.history.fs.logDirectory=hdfs://linux01:8020/directory"

  

3.到hdfs中建立directory目錄

$ cd ~/modules/hadoop-2.7.2/

$ bin/hdfs dfs -mkdir /directory

  

4.分發配置完成的Spark

$ scp -r ~/modules/spark-2.1.1-bin-hadoop2.7/ linux02:/home/admin/modules/
$ scp -r ~/modules/spark-2.1.1-bin-hadoop2.7/ linux03:/home/admin/modules/

  

 第二種:YARN

1.修改配置

$ vim /home/admin/modules/hadoop-2.7.2/etc/hadoop/yarn-site.xml 

添加下面配置
<!--是否啓動一個線程檢查每一個任務正使用的物理內存量,若是任務超出分配值,則直接將其殺掉,默認是true --> <property> <name>yarn.nodemanager.pmem-check-enabled</name> <value>false</value> </property> <!--是否啓動一個線程檢查每一個任務正使用的虛擬內存量,若是任務超出分配值,則直接將其殺掉,默認是true --> <property> <name>yarn.nodemanager.vmem-check-enabled</name> <value>false</value> </property>

  

2.分發配置

$ scp -r /home/admin/modules/hadoop-2.7.2/etc linux02:/home/admin/modules/hadoop-2.7.2/
$ scp -r /home/admin/modules/hadoop-2.7.2/etc linux03:/home/admin/modules/hadoop-2.7.2/

  

3.重啓整個集羣

$ sh /home/admin/tools/stop-cluster.sh
$ sh /home/admin/tools/start-cluster.sh

  

4.修改spark-evn.sh

vim /home/admin/modules/spark-2.1.1-bin-hadoop2.7/conf/spark-env.sh 

HADOOP_CONF_DIR=/home/admin/modules/hadoop-2.7.2/etc/hadoop
YARN_CONF_DIR=/home/admin/modules/hadoop-2.7.2/etc/hadoop

  

5.分發spark-evn.sh

$ scp -r ~/modules/spark-2.1.1-bin-hadoop2.7/ linux02:/home/admin/modules/
$ scp -r ~/modules/spark-2.1.1-bin-hadoop2.7/ linux03:/home/admin/modules/

  

6.重啓spark

 $ sbin/stop-all.sh
 $ sbin/start-all.sh

  

7.啓動Spark歷史日誌服務

$ sbin/start-history-server.sh 

  

8.所有完成後確認,訪問瀏覽器http://linux01:8080/

 

 

3、Spark簡單使用

1.Spark-shell

$ bin/spark-shell \
--master spark://linux01:7077 \
--executor-memory 2g \
--total-executor-cores 2

  

2.Standalone提交jar包(任務:是一個使用蒙特卡洛算法,求圓周率)

$ /home/admin/modules/spark-2.1.1-bin-hadoop2.7/bin/spark-submit \
--class org.apache.spark.examples.SparkPi \
--master spark://linux01:7077 \
--executor-memory 1G \
--total-executor-cores 2 \
/home/admin/modules/spark-2.1.1-bin-hadoop2.7/examples/jars/spark-examples_2.11-2.1.1.jar \
100

  

3.Local模式運行

$ /home/admin/modules/spark-2.1.1-bin-hadoop2.7/bin/spark-submit \
--class org.apache.spark.examples.SparkPi \
--master local[*] \
--executor-memory 1G \
--total-executor-cores 2 \
/home/admin/modules/spark-2.1.1-bin-hadoop2.7/examples/jars/spark-examples_2.11-2.1.1.jar \
100

  

4.YARN模式運行

$ /home/admin/modules/spark-2.1.1-bin-hadoop2.7/bin/spark-submit \
--class org.apache.spark.examples.SparkPi \
--master yarn \
--deploy-mode client \
/home/admin/modules/spark-2.1.1-bin-hadoop2.7/examples/jars/spark-examples_2.11-2.1.1.jar \
100
相關文章
相關標籤/搜索