一.Spark2.0的新特性
Spark讓咱們引覺得豪的一點就是所建立的API簡單、直觀、便於使用,Spark 2.0延續了這一傳統,並在兩個方面凸顯了優點:
一、標準的SQL支持;
二、數據框(DataFrame)/Dataset (數據集)API的統一。
在SQL方面,咱們已經對Spark的SQL功能作了重大拓展,引入了新的ANSI SQL解析器,並支持子查詢功能。Spark 2.0能夠運行全部99個TPC-DS查詢(需求SQL:2003中的不少功能支持)。因爲SQL是Spark應用所使用的主要接口之一,對SQL功能的拓展大幅削減了將遺留應用移植到Spark時所需的工做。
在編程API方面,咱們合理化了API:
一、在Scala/Java中統一了DataFrames與Dataset:從Spark 2.0開始,DataFrames只是行(row)數據集的typealias了。不管是映射、篩選、groupByKey之類的類型方法,仍是select、groupBy之類的無類型方法均可用於Dataset的類。此外,這個新加入的Dataset接口是用做Structured Streaming的抽象,因爲Python和R語言中編譯時類型安全(compile-time type-safety)不屬於語言特性,數據集的概念沒法應用於這些語言API中。而DataFrame還是主要的編程抽象,在這些語言中相似於單節點DataFrames的概念,想要了解這些API的相關信息,請參見相關筆記和文章。
二、SparkSession:這是一個新入口,取代了本來的SQLContext與HiveContext。對於DataFrame API的用戶來講,Spark常見的混亂源頭來自於使用哪一個「context」。如今你可使用SparkSession了,它做爲單個入口能夠兼容二者,點擊這裏來查看演示。注意本來的SQLContext與HiveContext仍然保留,以支持向下兼容。
更簡單、性能更佳的Accumulator API:咱們設計了一個新的Accumulator API,不但在類型層次上更簡潔,同時還專門支持基本類型。本來的Accumulator API已再也不使用,但爲了向下兼容仍然保留。
三、基於DataFrame的機器學習API將做爲主ML API出現:在Spark 2.0中,spark.ml包及其「管道」API會做爲機器學習的主要API出現,儘管本來的spark.mllib包仍然保留,但之後的開發重點會集中在基於DataFrame的API上。
四、機器學習管道持久化:如今用戶能夠保留與載入機器學習的管道與模型了,Spark對全部語言提供支持。查看這篇博文以瞭解更多細節,這篇筆記中也有相關樣例。
R語言的分佈式算法:增長對廣義線性模型(GLM)、樸素貝葉斯算法(NB算法)、存活迴歸分析(Survival Regression)與聚類算法(K-Means)的支持。
二.Spark2.4 安裝
環境要求jdk 1.8以上版本,scala-2.12以上
基於的Hadoop版本,個人現有hadoop爲2.6
官網下載時注意:http://spark.apache.org/downloads.html
安裝架構
h220 爲主節點
H221,h222 爲從節點
1.解壓縮spark
[hadoop@h220 spark]$ cp spark-2.4.1-bin-hadoop2.6.tgz /home/hadoop/
[hadoop@h220 ~]$ tar -zxvf spark-2.4.1-bin-hadoop2.6.tgz
2.安裝jdk,scala
[hadoop@h220 usr]$ tar -zxvf jdk-8u151-linux-x64.tar.gz
[hadoop@h220 ~]$ tar -zxvf scala-2.12.4.tgz
3.設置環境變量
[hadoop@h220 ~]$ vi .bash_profile
export JAVA_HOME=/usr/jdk1.8.0_151
export JAVA_BIN=/usr/jdk1.8.0_151/bin
export SCALA_HOME=/home/hadoop/scala-2.12.4
export SPARK_HOME=/home/hadoop/spark-2.4.1-bin-hadoop2.6
[hadoop@h220 ~]$ source .bash_profile
4.配置spark
[hadoop@h220 ~]$ cd spark-2.4.1-bin-hadoop2.6/conf/
[hadoop@h220 conf]$ cp spark-env.sh.template spark-env.sh
[hadoop@h220 conf]$ vi spark-env.sh
添加:
export JAVA_HOME=/usr/jdk1.8.0_151
export SCALA_HOME=/home/hadoop/scala-2.12.4
export SPARK_MASTER_IP=h220
export SPARK_WORDER_INSTANCES=1
export SPARK_WORKER_CORES=1
export SPARK_WORKER_MEMORY=1g
export HADOOP_HOME=/home/hadoop/hadoop-2.6.0-cdh5.5.2
export HADOOP_CONF_DIR=/home/hadoop/hadoop-2.6.0-cdh5.5.2/etc/hadoop
[hadoop@h220 conf]$ cp slaves.template slaves
[hadoop@h220 conf]$ vi slaves
刪除localhost
添加:
h221
h222
5.copy到從節點
配置ssh證書
[hadoop@h220 ~]$ scp -r spark-2.4.1-bin-hadoop2.6 h221:/home/hadoop/
[hadoop@h220 ~]$ scp -r spark-2.4.1-bin-hadoop2.6 h222:/home/hadoop/
6.啓動,驗證
主節點:
[hadoop@h220 spark-2.4.1-bin-hadoop2.6]$ sbin/start-all.sh
[hadoop@h220 spark-2.4.1-bin-hadoop2.6]$ jps
6970 Master
從節點:
[hadoop@h221 spark-2.4.1-bin-hadoop2.6]$ jps
3626 Worker
主節點:
[hadoop@h220 spark-2.4.1-bin-hadoop2.6]$ bin/spark-shell
沒有報錯html