spark环境搭建及简单程序使用
svmachine CSDN

一 环境 
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的路径)12

  • 重命名

mv spak-1.6.1 spark
mv scala-2.11.8 scala12

三 配置环境变量

  • scala环境

vim /etc/profileexport SCALA_HOME=/home/wh/scalaexport PATH=$PATH:$SCALA_HOME/bin1234

  • spark环境

vim /etc/profileexport SPARK_HOME=/home/wh/sparkexport PATH=$PATH:$SPARK_HOME/bin:$SPARK_HOME/sbin1234

  • 在spark/conf/spark-env.sh文件中配置hadoop、scala、java、jar

export SCALA_HOME=/home/wh/scalaexport JAVA_HOME=/usr/lib/jvm/java-7-openjdk-amd64export HADOOP_HOME=/home/wh/hadoopexport YARN_CONF_DIR=$HADOOP_HOME/etc/hadoopexport SPARK_JAR=/home/wh/spark/lib/spark-assembly-1.6.0-hadoop2.6.0.jar12345

  • 添加slave节点

vim spark/conf/slaves

node1
node21234

  • 将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/wh1234

  • 从节点中解压(node1,node2)

tar -zxf ~/spark.master.tar.gz -C /home/wh
tar -zxf ~/scala.master.tar.gz -C /home/wh12

四 启动spark,访问UI

  • 启动

cd spark
bin/start-master.sh
bin/start-slaves.sh123

五 运行简单的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 systemlogData = 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))1234567891011

         注:appName是运程程序的名称,便于在UI上查看;master为Spark, Mesos 或 YARN 集群 URL;file:///home/wh/spark/README.md表示的是本地文件,不指定默认为hdfs中读取。

         执行结果如图: 

image.png

  • 从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")12345678

       注: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/*查看): 

image.png

CIO之家 www.ciozj.com 公众号:imciow
关联的文档
也许您喜欢