spark環境搭建及簡單程序使用

該文章是在hadoop環境搭建好的基礎上進行的,主要是針對搭建過程中自己遇到的一些小問題。關於hadoop的搭建詳見:http://blog.csdn.net/svmachine/article/details/51334188

一 環境
hadoop:hadoop2.6.0
spark:spark1.6.1
scala:scala2.11.8
jar:spark-assembly-1.6.1-hadoop2.6.0.jar

二 下載spark與scala並解壓

 tar -zxvf spark-1.6.1.zip -C /home/wh(spark的路徑)
 tar -zxvf scala-2.11.8.tgz -C /home/wh(scala的路徑)
  • 重命名
mv spak-1.6.1 spark
mv scala-2.11.8 scala

三 配置環境變量

  • scala環境
vim /etc/profile

export SCALA_HOME=/home/wh/scala
export PATH=$PATH:$SCALA_HOME/bin
  • spark環境
vim /etc/profile

export SPARK_HOME=/home/wh/spark
export PATH=$PATH:$SPARK_HOME/bin:$SPARK_HOME/sbin
  • 在spark/conf/spark-env.sh文件中配置hadoop、scala、java、jar
export SCALA_HOME=/home/wh/scala
export JAVA_HOME=/usr/lib/jvm/java-7-openjdk-amd64
export HADOOP_HOME=/home/wh/hadoop
export YARN_CONF_DIR=$HADOOP_HOME/etc/hadoop
export SPARK_JAR=/home/wh/spark/lib/spark-assembly-1.6.0-hadoop2.6.0.jar
  • 添加slave節點
vim spark/conf/slaves

node1
node2
  • 將spark、scala拷貝到從節點中
tar -zcf ~/spark.master.tar.gz ./spark
tar -zcf ~/scala.master.tar.gz ./scala
scp ./spark.master.tar.gz node1:/home/wh
scp ./scala.master.tar.gz node1:/home/wh
  • 從節點中解壓(node1,node2)
tar -zxf ~/spark.master.tar.gz -C /home/wh
tar -zxf ~/scala.master.tar.gz -C /home/wh

四 啓動spark,訪問UI

  • 啓動
cd spark
bin/start-master.sh
bin/start-slaves.sh

五 運行簡單的spark程序(包含從hdfs中讀取文件和從本地讀取文件)

  • 從本地讀取文件
    程序:
from pyspark import SparkContext, SparkConf
conf = SparkConf().setAppName(appName).setMaster(master)
sc = SparkContext(conf=conf)
logFile = "file:///home/wh/spark/README.md"  # Should be some file on your system
logData = sc.textFile(logFile).cache()

numAs = logData.filter(lambda s: 'a' in s).count()
numBs = logData.filter(lambda s: 'b' in s).count()

print("Lines with a: %i, lines with b: %i" % (numAs, numBs))

         注:appName是運程程序的名稱,便於在UI上查看;master爲Spark, Mesos 或 YARN 集羣 URL;file:///home/wh/spark/README.md表示的是本地文件,不指定默認爲hdfs中讀取。

         執行結果如圖:

這裏寫圖片描述

這裏寫圖片描述

這裏寫圖片描述


  • 從hdfs中讀取文件並將結果保存至dfs中
    程序:
from pyspark import SparkContext, SparkConf
conf = SparkConf().setAppName("Python Word").setMaster("spark://192.168.16.131:7077")
sc = SparkContext(conf=conf)
text_file = sc.textFile("hdfs:///user/wh/input/file.txt")
counts = text_file.flatMap(lambda line: line.split(" ")) \
             .map(lambda word: (word, 1)) \
             .reduceByKey(lambda a, b: a + b)
counts.saveAsTextFile("hdfs:///user/wh/output")

       注:hdfs的文件可以通過bin/hadoop fs -ls -R查看,hdfs:///user/wh/input/file.txt中的user/wh是指hadoop中在hdfs中創建的用戶,file.txt是導入的文件。hdfs的路徑一定不能寫錯,有時候可能會有輸出目錄存在,此時可以通過bin/hdfs dfs -rm -r output刪除即可。

        執行結果如圖(使用bin/hdfs dfs -cat output/*查看):

這裏寫圖片描述

這裏寫圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章