Spark安裝與配置

centos下hadoop僞分佈式配置及python測試中,我們已經安裝好了Hadoop,下面我們來安裝Spark。

Scala安裝與配置

由於Spark是用Scala編寫的,所以我們要先安裝Scala。

$ wget -P ~/download/ https://downloads.lightbend.com/scala/2.11.8/scala-2.11.8.tgz
$ cd ~/download/
$ tar zxf scala-2.11.8.tgz
$ mv scala-2.11.* /opt/scala
$ echo 'export SCALA_HOME=/opt/scala' >> /etc/bashrc

Spark安裝與配置

apache官網目前只提供2.*版的Spark,我們選擇spark-2.4.2版進行安裝。

$ wget -P ~/download/ http://mirror.bit.edu.cn/apache/spark/spark-2.4.2/spark-2.4.2-bin-hadoop2.6.tgz
$ tar zxf spark-2.4.2-bin-hadoop2.6.tgz -C /opt
$ cd /opt/
$ mv spark-2.4.2-bin-hadoop2.6/ spark
$ echo 'export SPARK_HOME=/opt/spark' >> /etc/bashrc
$ echo 'alias spark-shell=$SPARK_HOME/bin/spark-shell' >> /etc/bashrc
$ source /etc/bashrc

更新Java

這個時候我們啓動Spark-Shell,可能會報錯:

$ spark-shell
# Exception in thread "main" java.lang.UnsupportedClassVersionError: org/apache/spark/launcher/Main : Unsupported major.minor version 52.0

這是因爲spark-2.4.2需要更高版本的Java支持,於是我們把Java更新到1.8.0。

$ yum -y install java-1.8.0-openjdk*
$ ls -lrt /etc/alternatives/java
# lrwxrwxrwx 1 root root 73 May  1 20:57 /etc/alternatives/java -> /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.212.b04-0.el7_6.x86_64/jre/bin/java
$ vi /etc/bashrc

用vi命令修改/etc/bashrc:

...
# export JAVA_HOME=/usr/lib/jvm/java-1.7.0-openjdk-1.7.0.221-2.6.18.0.el7_6.x86_64/
export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.212.b04-0.el7_6.x86_64/
...

保存文件後,成功進入spark-shell。

$ source /etc/bashrc
$ spark-shell

Scala腳本測試

scala> import org.apache.spark.SparkConf
scala> import org.apache.spark.SparkContext
scala> import org.apache.spark.SparkContext._
scala> val conf = new SparkConf().setMaster("localhost").setAppName("App Name")
scala> val sc = new SparkContext(conf)
# 讀入文件
scala> val input = sc.textFile("/root/p*.txt")
# 分割單詞
scala> val words = input.flatMap(line => line.split(" "))
# 統計詞頻
scala> val count = words.map((_, 1)).reduceByKey(_+_)
# 打印顯示
scala> count.collect().foreach(println)
# (university,1)
# (priority,1)
# (next,2)
# (hence,,1)
# (low-priced.,1)
# (its,9)
# (others,1)
# (customized,1)
# (extraordinary,1)
# (have,6)
# ...

參考文獻

  1. 高揚, 衛崢, 尹會生. 白話大數據與機器學習[M]. 機械工業出版社, 2016.
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章