centos6.8安裝單機spark2.2.3

 

https://blog.csdn.net/uq_jin/article/details/51513307html

http://www.javashuo.com/article/p-mhorzntg-hk.htmljava

https://www.cnblogs.com/liugh/p/6624923.htmlpython

 

 

  1. 安裝spark

a.下載:http://spark.apache.org/downloads.htmlshell

 

 

b.安裝sparkapache

上傳文件:把下載下來的spark-2.2.3-bin-hadoop2.7.tgz上傳到/home/hadoop目錄下編程

cd /home/hadoopvim

sudo tar -zxvf spark-2.2.3-bin-hadoop2.7.tgz -C /app/centos

cd /app/spark-2.2.3-bin-hadoop2.7/安全

sudo chown -R hadoop:hadoop .          # 此處的 hadoop爲用戶名網絡

 

 

c. 配置環境變量

sudo vim /etc/profile

SPARK_HOME=/app/spark-2.2.3-bin-hadoop2.7

export PATH=$PATH:$SPARK_HOME/bin

 

 

source /etc/profile

echo $PATH

/app/jdk1.8.0_121/bin:/app/jdk1.8.0_121/bin:/usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/sbin:/app/hadoop-2.7.2/bin:/home/hadoop/bin:/app/hadoop-2.7.2/bin:/app/spark-2.2.3-bin-hadoop2.7/bin

 

d. 配置spark

安裝後,須要在 ./conf/spark-env.sh 中修改 Spark 的 Classpath,執行以下命令拷貝一個配置文件:

 

cd /app/spark-2.2.3-bin-hadoop2.7

cp ./conf/spark-env.sh.template ./conf/spark-env.sh

 

編輯 ./conf/spark-env.sh(vim ./conf/spark-env.sh) ,在最後面加上以下一行:

 

export SPARK_DIST_CLASSPATH=$(/app/hadoop-2.7.2/bin/hadoop classpath)

 

保存後,Spark 就能夠啓動了。

 

cp    ./conf/slaves.template    ./conf/slaves

編輯slaves文件,裏面的內容爲:

localhost

 

關閉防火牆,啓動,外網就能夠訪問

$HADOOP_HOME/sbin/start-all.sh

spark訪問網址:http://192.168.198.111:8080

 

 

 

  1. spark的簡單使用

 

在 ./examples/src/main 目錄下有一些 Spark 的示例程序,有 Scala、Java、Python、R 等語言的版本。咱們能夠先運行一個示例程序 SparkPi(即計算 π 的近似值),執行以下命令:

 

cd /app/spark-2.2.3-bin-hadoop2.7

./bin/run-example SparkPi

 

執行時會輸出很是多的運行信息,輸出結果不容易找到,能夠經過 grep 命令進行過濾(命令中的 2>&1 能夠將全部的信息都輸出到 stdout 中,不然因爲輸出日誌的性質,仍是會輸出到屏幕中):

 

cd /app/spark-2.2.3-bin-hadoop2.7

./bin/run-example SparkPi 2>&1 | grep "Pi is roughly"

 

過濾後的運行結果以下圖所示,能夠獲得 π 的 近似值 :

 

 

若是是Python 版本的 SparkPi, 則須要經過 spark-submit 運行:

./bin/spark-submit examples/src/main/python/pi.py

 

  1. spark的交互模式

 

a.啓動spark shell

Spark shell 提供了簡單的方式來學習 API,也提供了交互的方式來分析數據。Spark Shell 支持 Scala 和 Python,本文中選擇使用 Scala 來進行介紹。

 

Scala 是一門現代的多範式編程語言,志在以簡練、優雅及類型安全的方式來表達經常使用編程模式。它平滑地集成了面向對象和函數語言的特性。Scala 運行於 Java 平臺(JVM,Java 虛擬機),併兼容現有的 Java 程序。

 

Scala 是 Spark 的主要編程語言,若是僅僅是寫 Spark 應用,並不是必定要用 Scala,用 Java、Python 都是能夠的。使用 Scala 的優點是開發效率更高,代碼更精簡,而且能夠經過 Spark Shell 進行交互式實時查詢,方便排查問題。

 

cd /app/spark-2.2.3-bin-hadoop2.7

./bin/spark-shell

 

 

b.spark shell使用小例子

Spark 的主要抽象是分佈式的元素集合(distributed collection of items),稱爲RDD(Resilient Distributed Dataset,彈性分佈式數據集),它可被分發到集羣各個節點上,進行並行操做。RDDs 能夠經過 Hadoop InputFormats 建立(如 HDFS),或者從其餘 RDDs 轉化而來。

 

咱們從 ./README 文件新建一個 RDD,代碼以下(本文出現的 Spark 交互式命令代碼中,與位於同一行的註釋內容爲該命令的說明,命令以後的註釋內容表示交互式輸出結果):

 

val textFile = sc.textFile("file:///app/spark-2.2.3-bin-hadoop2.7/README.md")

 

 

代碼中經過 「file://」 前綴指定讀取本地文件。Spark shell 默認是讀取 HDFS 中的文件,須要先上傳文件到 HDFS 中,不然會報錯。

RDDs 支持兩種類型的操做

transformations: 轉換, 從現有數據集建立一個新的數據集

actions: 在數據集上運行計算後返回值

 

下面咱們先來演示 count() 和 first() 操做(actions):

textFile.count()  // RDD 中的 item 數量,對於文本文件,就是總行數

textFile.first() //RDD 中的第一個 item,對於文本文件,就是第一行內容

 

 

接着演示 transformation,經過 filter transformation 來返回一個新的 RDD,代碼以下:

 

val linesWithSpark = textFile.filter(line => line.contains("Spark"))   // 篩選出包含 Spark 的行

 

linesWithSpark.count()       // 統計行數

 

 

transformation 和action能夠用鏈式操做的方式結合使用,使代碼更爲簡潔:

 

textFile.filter(line => line.contains("Spark")).count() // 統計包含 Spark 的行數

  1. spark執行獨立程序

 

a.配置spark和hadoop環境變量

cd ~

sudo vim /etc/profile

 

 

找到PATH參數,在最後添加spark和hadoop的環境變量,具體到bin便可。注意每條之間使用冒號隔開。以下圖

 

修改完成,保存退出,執行

 

source /ect/profile

文件生效。一樣可使用echo $PATH 來查看環境變量是否添加成功。

 

b.安裝sbt

SBT(Simple Build Tool)即簡單構造工具,它是用scala寫的,具備強大的依賴管理功能,全部任務的建立都支持Scala,可連續執行命令。能夠在工程的上下文裏啓動REPL。

通常來講,使用 Scala 編寫的程序須要使用 sbt 進行編譯打包,相應的,Java 程序使用 Maven 編譯打包,而 Python 程序經過 spark-submit 直接提交。可是scala也可使用maven來打包,不過配置起來較爲複雜。這裏就再也不贅述了。

到官網下載安裝包(http://www.scala-sbt.org/)。安裝到/usr/local/sbt文件夾中

 

sudo mkdir /usr/local/sbt

sudo chown -R hadoop /usr/local/sbt      # 此處的 hadoop 爲你的用戶名

cd /usr/local/sbt

接着在 /usr/local/sbt 中建立 sbt 腳本(vim ./sbt),添加以下內容:

 

SBT_OPTS="-Xms512M -Xmx1536M -Xss1M -XX:+CMSClassUnloadingEnabled -XX:MaxPermSize=256M"

java $SBT_OPTS -jar `dirname $0`/sbt-launch.jar "$@"

注意這裏的最後一行的 dirname 0,它是被倒引號括起來的,不是單引號。被倒引號括起來的東西表示要執行的命令。dirname0,它是被倒引號括起來的,不是單引號。被倒引號括起來的東西表示要執行的命令。dirname0 只能用在腳本中,在命令行中是無效的,它的意思是去當前腳本所在位置的路徑。

這裏寫圖片描述

很明顯。這裏你要檢查/usr/local/sbt 夾下sbt-launch.jar這個文件是否存在。由於筆者和網上衆多教程都提到了,由於網絡的緣由,sbt下載的時候,這個依賴包有可能缺失。若是沒有,請自行下載(http://pan.baidu.com/s/1gfHO7Ub)

 

這裏寫圖片描述

 

c.構建scala工程目錄

sbt打包scala是有固定工程目錄結構的。

 

cd ~

mkdir ./sparkapp        # 建立應用程序根目錄

mkdir -p ./sparkapp/src/main/scala     # 建立所需的文件夾結構

d.編寫獨立程序

這裏咱們借用官網上的一個小的demo.

 

cd ~

cd sparkapp/src/main/scala

vi SimpleApp.scala

文件內容爲程序主體

 

/* SimpleApp.scala */

import org.apache.spark.SparkContext

import org.apache.spark.SparkContext._

import org.apache.spark.SparkConf

 

  • object SimpleApp {

  def main(args: Array[String]) {

    val logFile = "file:///usr/local/spark/README.md" // Should be some file on your system

    val conf = new SparkConf().setAppName("Simple Application")

    val sc = new SparkContext(conf)

    val logData = sc.textFile(logFile, 2).cache()

    val numAs = logData.filter(line => line.contains("a")).count()

    val numBs = logData.filter(line => line.contains("b")).count()

    println("Lines with a: %s, Lines with b: %s".format(numAs, numBs))

  }

}

 

 

這裏寫圖片描述

 

e.添加配置文件

 

cd ~

cd sparkapp/

vi simple.bat

 

 

文件添加下面內容

 

name := "Simple Project"

 

version := "1.0"

 

scalaVersion := "2.11.8"

 

libraryDependencies += "org.apache.spark" %% "spark-core" % "2.0.0"

 

 

這裏寫圖片描述

*注意,這裏的scalaVersion和spark-core後面的版本號都要換成你本身的。

這兩個版本號,在啓動spark的時候有顯示。以下圖*

這裏寫圖片描述

 

至此爲止,檢查一下工程目錄結構

 

cd ~

cd sparkapp

find .

 

 

這裏寫圖片描述

 

f.使用sbt打包scala程序

 

cd ~

cd sparkapp/

sbt package

 

 

第一次打包時間很長,須要下載各類依賴包,因此請耐心等待。生成的jar包位置在~/sparkapp/target/scala-2.11/simple-project_2.11-1.0.jar

 

g.提交編譯後的程序

 

cd ~

cd /usr/local/spark

./bin/spark-submit --class "SimpleApp" ~/sparkapp/target/scala-2.11/simple-project_2.11-1.0.jar

輸出信息較多,可以使用grep過濾結果

 

.bin/spark-submit --class "SimpleApp" ~/sparkapp/target/scala-2.11/simple-project_2.11-1.0.jar 2>&1 | grep "Lines with a:"

1

這裏寫圖片描述

 

到此爲止,本文就結束了,關於文章中沒有介紹的spark SQL和DataFrames,你們有興趣的能夠到下面列出的參考文獻中查找。

 

按照慣例,列出參考文獻供你們參考:

https://www.cnblogs.com/dion-90/articles/9058500.html

 

1.http://spark.apache.org/docs/latest/building-spark.html

2.http://spark.apache.org/docs/latest/quick-start.html

3.http://spark.apache.org/docs/latest/programming-guide.html

4.http://www.importnew.com/4311.html

5.http://www.scala-sbt.org/

6.http://blog.csdn.net/czmchen/article/details/41047187

7.http://blog.csdn.net/zwhfyy/article/details/8349788

8.http://jingyan.baidu.com/article/948f59242c231fd80ff5f9ec.html

9.http://dblab.xmu.edu.cn/blog/install-hadoop/

10.http://dblab.xmu.edu.cn/blog/spark-quick-start-guide/

11.http://dblab.xmu.edu.cn/blog/install-hadoop-in-centos/

 

 

 

 

 

 

 

 

 

https://blog.csdn.net/ouyangyanlan/article/details/52355350

  1. 經過網頁查看

關閉防火牆

臨時關閉:sudo service iptables stop

永久關閉:sudo chkconfig iptables off

 

Ssh

ssh-keygen –t rsa

cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys

chmod 600 authorized_keys

ssh localhost

 

 

 

啓動hdfs:

$HADOOP_HOME/sbin/start-all.sh

Hadoop訪問網址:http://192.168.198.111:50070

 

$HADOOP_HOME/sbin/start-all.sh

spark訪問網址:http://192.168.198.111:8080

 

中止:

$HADOOP_HOME/sbin/stop-all.sh

$SPARK_HOME/sbin/stop-all.sh

相關文章
相關標籤/搜索