Ubuntu 12.04下spark1.0.0 集群搭建(原創)


spark1.0.0新版本的於2014-05-30正式發布啦,新的spark版本帶來了很多新的特性,提供了更好的API支持,spark1.0.0增加了Spark SQL組件,增強了標准庫(ML、streaming、GraphX)以及對JAVA和Python語言的支持;

下面,我們首先進行spark1.0.0集群的安裝,在這里我使用了兩台服務器,一台作為master即namenode主機,另一台作為slave即datanode主機,增加更多的slave只需重復slave部分的內容即可。

系統版本:

  • master:Ubuntu 12.04
  • slave:Ubuntu 12.04
  • hadoop:hadoop 2.2.0
  • spark:spark 1.0.0

1. 安裝JDK和hadoop集群

  安裝過程參見這里

2. 下載安裝Scala

  • scala下載地址,這里下載的是最新版scala-2.11.1版本
  • 解壓scala,放到/usr/lib目錄下

    tar -xzvf scala-2.11.1.tgz

    mv scala-2.11.1 /usr/lib/

  • 配置scala環境變量sudo vi /etc/profile

   在文件末尾添加scala路徑

   

   輸入 source /etc/profile 使路徑生效

  • 測試scala:scala -version   #若出現scala版本信息說明安裝成功

PS:scala需要在所有slave節點上配置

3. 下載安裝spark

  • spark1.0.0下載地址,解壓spark,放到/home/hadoop

  tar -xzvf spark-1.0.0-bin-hadoop2.tgz

  • 配置spark環境變量:sudo vi /etc/profile

  在文件末尾添加spark路徑

  

  輸入  source /etc/profile  使路徑生效

  • 配置conf/spark-env.sh文件

  若沒有該文件,則將 spark-env.sh.template 文件重命名即可,向文件中添加scala、java、hadoop路徑以及master ip等信息。

  mv spark-env.sh.template spark-env.sh

  vi spark-env.sh

  

  

  

  • conf/slaves中添加slave節點的hostname一行一個:

  vi slaves

  

4. 在所有slave機器上安裝配置spark

現在可以將master主機上的spark文件分發給所有的slave節點,注意slave與master的spark所在目錄必須一致,因為master會登錄到slave上執行命令,並認為slave的spark路徑與自己一樣
scp -r spark-1.0.0-bin-hadoop2 hadoop@slave:/home/hadoop/

5.啟動spark集群
master主機上執行命令:
cd ~/
spark-1.0.0-bin-hadoop2/sbin
./
start-all.sh
檢測進程是否啟動:輸入 jps

配置完成
6. 下面體驗一下spark自帶的例子

./bin/run-example SparkPi

scala實現一個spark app

官方說明地址,這個小例子用於統計輸入文件中字母“a”和字母“b”的個數。網站上提供了scala、java、python三種實現,這里就只做一下scala的吧,這里需要安裝SBT(我們使用 sbt 創建、測試、運行和提交作業,可以簡單將SBT看做是Scala世界的Maven)。

spark-1.0.0木有自帶的sbt,我們可以選擇手動安裝,當然也可以選擇sudo apt-get install sbt的方式(我的系統中木有找到sbt包,所以就只有手動安裝咯)。安裝方法如下:

  • 下載:sbt下載地址,我下載的是現在的最新版本sbt-0.13.5
  • 解壓sbt到/home/hadoop/主目錄下(hadoop是我的用戶名,其實就是我的HOME啦)

  tar -zxvf sbt-0.13.5.tgz

  cd sbt/bin

  java -jar sbt-launch.jar    #進行sbt安裝,時間大約一個小時吧,會下載很多東東,所以記得要聯網哦

  • 成功后可以在/etc/profile中配置sbt的環境變量

  sudo vi /etc/profile

  

  輸入source /etc/profile 使路徑生效

sbt安裝完成,下面就來寫這個簡單的spark app

  • 創建一個目錄:mkdir ~/SimpleApp
  • 在SimpleApp目錄下,創建如下的目錄結構:

        

  • simple.sbt文件內容如下:
name := "Simple Project"
version := "1.0"
scalaVersion := "2.10.4"
libraryDependencies += "org.apache.spark" %% "spark-core" % "1.0.0"
resolvers += "Akka Repository" at "http://repo.akka.io/releases/"
  • 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 = "YOUR_SPARK_HOME/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))
  }
}

PS:由於我們之前在spark配置過程中將hadoop路徑配置好了,因此這里的輸入路徑YOUR_SPARK_HOME/XXX實際上為HDFS文件系統中的文件,存儲位置與hadoop配置文件core-site.xml中的<name>相關(具體可參見這里這個地方很容易出錯)。因此需要先將README.md文件puthdfs上面:

  • 編譯:

  cd ~/SimpleApp

  sbt package     #打包過程,時間可能會比較長,最后會出現[success]XXX

  PS:成功后會生成許多文件 target/scala-2.10/simple-project_2.10-1.0.jar等

  • 運行:

  spark-submit --class "SimpleApp" --master local target/scala-2.10/simple-project_2.10-1.0.jar

  • 結果:

7. 停止spark集群

cd ~/spark-1.0.0-bin-hadoop2/sbin

./stop-all.sh


本文為原創博客,若轉載請注明出處。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM