Spark的安装与启动

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_26323323/article/details/83273768

前言:

    在上一篇关于 使用java和scala编写spark-WordCount示例 的博客中,笔者直接使用eclipse工具开发了spark的wordCount示例

    当然,这种方式可以使用在我们需要对scala代码进行本地测试的时候,在实际的生产环境,我们肯定不能这么做,我们需要将项目提交到spark集群来进行测试

    本篇博客就简单介绍下,如何安装、启动、使用spark

准备工作:

    读者需要提前了解一下spark的相关功能,及运行方式

    下面就来安装一下spark

1.下载spark包

    我们到spark的官网来下载,官网地址:http://spark.apache.org/downloads.html  

    注意:我们可以自己下载spark源码之后进行手动编译,也可以使用spark编译好的tar包(笔者使用spark编译好的tar包)

    由于spark需要关联hadoop来使用,所以我们需要首先安装hadoop,至于hadoop的安装方式,读者可参考笔者另一片博客Apache-Hadoop伪分布式环境搭建

    笔者使用的hadoop版本为2.7.0,所以选择spark版本为2.2.0版本,图示如下:
 

    点击下载对应的tgz包即可

2.安装tgz包

    将包放到Linux环境下/home/hxw/software路径下,解压缩到/opt/software路径下

tar -zxf spark-2.2.0-bin-hadoop2.7.tgz -C /opt/software

3.配置spark(配置文件在%SPARK_HOME%/conf路径下)

    * 修改spark-env.sh.template文件名称修改为spark-env.sh,并配置以下内容

JAVA_HOME=/opt/software/jdk1.8.0_131 #请配置自己的JAVA_HOME 
SCALA_HOME=/opt/software/scala-2.11.12

HADOOP_CONF_DIR=/opt/software/hadoop-2.7.0 #指向自己配置的hadoop地址

    下面添加spark信息

SPARK_MASTER_HOST=hadoop # 笔者已经配置当前hostname为hadoop
SPARK_MASTER_PORT=7077
SPARK_MASTER_WEBUI_PORT=8080
SPARK_WORKER_CORES=1
SPARK_WORKER_MEMORY=2g
SPARK_WORKER_PORT=7078
SPARK_WORKER_WEBUI_PORT=8081

    * 修改slaves文件

hadoop #将原本的localhost修改为当前hostname,笔者的为hadoop

    * 修改spark-defaults.conf,添加以下内容

spark.master spark://hadoop:7077

4.使用local模式来启动spark

[root@hadoop spark-2.2.0]# ./bin/spark-shell --master local

    看到以下内容说明启动成功:

[root@hadoop spark-2.2.0]# ./bin/spark-shell --master local
Using Spark's default log4j profile: org/apache/spark/log4j-defaults.properties
Setting default log level to "WARN".
To adjust logging level use sc.setLogLevel(newLevel). For SparkR, use setLogLevel(newLevel).
18/10/21 20:23:58 WARN NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
18/10/21 20:24:04 WARN ObjectStore: Failed to get database global_temp, returning NoSuchObjectException
Spark context Web UI available at http://192.168.146.128:4040
Spark context available as 'sc' (master = local, app id = local-1540178639774).
Spark session available as 'spark'.
Welcome to
      ____              __
     / __/__  ___ _____/ /__
    _\ \/ _ \/ _ `/ __/  '_/
   /___/ .__/\_,_/_/ /_/\_\   version 2.2.0
      /_/
         
Using Scala version 2.11.8 (Java HotSpot(TM) 64-Bit Server VM, Java 1.8.0_131)
Type in expressions to have them evaluated.
Type :help for more information.

scala>

    这时,我们可以通过查看进程(使用jps命令来查看)的方式来看到,spark只启动了一个SparkSubmit应用,而且通过UI界面(http://hadoop:8080/)也看不到对应的任务

5.使用standalone模式来启动spark

    standalone模式构建一个由Master+Slave构成的spark集群,spark运行在集群中

    * 启动Master、slaves

[root@hadoop spark-2.2.0]# ./sbin/start-master.sh
[root@hadoop spark-2.2.0]# ./sbin/start-slaves.sh 

    通过jps看到以下,说明启动成功

[root@hadoop hxw]# jps
4321 Worker
4232 Master

    注意:文本使用hdfs上的文本,路径为/user/hadoop/mapreduce/input/wordcount.txt

    当然,需要用户提前启动hadoop的HDFS,可使用下面的命令来启动

[root@hadoop hadoop-2.7.0]# ./sbin/start-dfs.sh

    通过jps查看进程(可以看到namenode和DataNode已经启动,也可通过http://192.168.241.133:50070 查看 )

[root@hadoop hadoop-2.7.0]# jps
4321 Worker
4513 NameNode
4820 SecondaryNameNode
4933 Jps
4232 Master
4618 DataNode

6.通过spark-shell来提交我们编写的应用

    主要是在spark standalone模式下,我们可以提交自己编写的应用到集群上

    * 编写WordCount程序,具体如下:

object WordCountScala {
  
  def main(args: Array[String]): Unit = {
    
    // 默认使用集群模式,非local
    val sparkConf = new SparkConf().setAppName("wordCount");
    val sc = new SparkContext(sparkConf)
    
    // 我们使用hdfs上的文本,用户需要先创建该文件并提交到hdfs上
    val lines = sc.textFile("hdfs://hadoop:9000/user/spark.txt");
    val words = lines.flatMap(line => line.split(" "))
    val pairs = words.map(word => (word,1))
    val wordCounts = pairs.reduceByKey((a,b) => (a+b))
    
    // 执行成功之后,将结果保存到该路径
    wordCounts.saveAsTextFile("/opt/software/spark-2.2.0/data/sparktest/output/")
  }
}

    * 将WordCountScala所在项目export为jar包,命名为spark-test

    * 编写shell文件 startJar.sh,具体内容如下:

#!/bin/bash
/opt/software/spark-2.2.0/bin/spark-submit \
--class spark.demo.WordCountScala \
/opt/software/spark-2.2.0/data/sparktest/spark-study.jar

    我们只需要指定好对应的class和jar路径即可

    

    * 执行startJar.sh

    * 到我们指定的输出路径检查结果是否正确

猜你喜欢

转载自blog.csdn.net/qq_26323323/article/details/83273768