Spark安装及Local模式

Spark基础理论: https://blog.csdn.net/weixin_45102492/article/details/104318250
Spark的Yarn模式: https://blog.csdn.net/weixin_45102492/article/details/104319175
Spark的Standalone模式: https://blog.csdn.net/weixin_45102492/article/details/104319485

Spark安装

官网下载spark :
http://spark.apache.org/downloads.html
在这里插入图片描述
把spark-3.0.0-preview2-bin-hadoop2.7.tgz上传到/opt/module/Spark目录下并解压

[root@node01 Spark]# tar -zxvf spark-3.0.0-preview2-bin-hadoop2.7.tgz

执行spark官方案例测试spark环境
(1)基本语法

bin/spark-submit \
--class <main-class>
--master <master-url> \
--deploy-mode <deploy-mode> \
--conf <key>=<value> \
... # other options
<application-jar> \
[application-arguments]

在spark-3.0.0-preview2-bin-hadoop2.7目录下执行

bin/spark-submit \
--class org.apache.spark.examples.SparkPi \
--executor-memory 1G \
--total-executor-cores 2 \
./examples/jars/spark-examples_2.12-3.0.0-preview2.jar \
100

(2)参数说明:
–master 指定Master的地址,默认为Local
–class: 你的应用的启动类 (如 org.apache.spark.examples.SparkPi)
–deploy-mode: 是否发布你的驱动到worker节点(cluster) 或者作为一个本地客户端 (client) (default: client)*
–conf: 任意的Spark配置属性, 格式key=value. 如果值包含空格,可以加引号“key=value”
application-jar: 打包好的应用jar,包含依赖. 这个URL在集群中全局可见。 比如hdfs:// 共享存储系统, 如果是 file:// path, 那么所有的节点的path都包含同样的jar
application-arguments: 传给main()方法的参数
–executor-memory 1G 指定每个executor可用内存为1G
–total-executor-cores 2 指定每个executor使用的cup核数为2个

Local模式

概述
Local模式就是运行在一台计算机上的模式,通常就是用于在本机上练手和测试。
它可以通过以下集中方式设置Mastero

local:所有计算都运行在一个线程当 中,没有任何并行计算,通常我们在本机执行
一些测试代码, 或者练手,就用这种模式,

1oca[K]:指定使用几个线程来运行计算,比如1ocal[4]就 是运行4个Worker线程。通
常我们的Cpu有几个Core,就指定几个线程,最大化利用Cpu的计算能力;

local[*]:这种模式直接帮你按照Cpu最多Cores来设置线程数了。

shell操作

[root@node01 spark-3.0.0-preview2-bin-hadoop2.7]# bin/spark-shell 
20/02/14 08:43:18 WARN NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
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).
Spark context Web UI available at http://node01:4040
Spark context available as 'sc' (master = local[*], app id = local-1581641005512).
Spark session available as 'spark'.
Welcome to
      ____              __
     / __/__  ___ _____/ /__
    _\ \/ _ \/ _ `/ __/  '_/
   /___/ .__/\_,_/_/ /_/\_\   version 3.0.0-preview2
      /_/
         
Using Scala version 2.12.10 (Java HotSpot(TM) 64-Bit Server VM, Java 1.8.0_212)
Type in expressions to have them evaluated.
Type :help for more information.

scala> sc.textFile("input").flatMap(_.split(" ")).map((_,1)).reduceByKey(_+_).collect
res1: Array[(String, Int)] = Array((world,1), (hello,4), (spark,1), (scaka,1), (version,1))

textFile(“input”)中的input是在spark-3.0.0-preview2-bin-hadoop2.7下的input目录,没有的话可以创建,并添加两个文本1.txt、2.txt,并在文本中输入以空格分隔的英文
注意:退出spark-shell命令
:quit
千万不要Ctrl+c或者Ctrl+z退出 这样退出后下次启动会报错误

IDEA创建项目进行WordCount

在pom文件添加依赖

<dependencies>
    <dependency>
        <groupId>org.apache.spark</groupId>
        <artifactId>spark-core_2.12</artifactId>
        <version>3.0.0-preview2</version>
    </dependency>
</dependencies>

<build>
    <finalName>WordCount</finalName>
    <plugins>
        <plugin>
            <groupId>net.alchim31.maven</groupId>
            <artifactId>scala-maven-plugin</artifactId>
            <version>3.2.2</version>
            <executions>
                <execution>
                    <goals>
                        <goal>compile</goal>
                        <goal>testCompile</goal>
                    </goals>
                </execution>
            </executions>
        </plugin>
    </plugins>
</build>

创建WordCount类并编写代码

package com.zut.bigdata.spark
import org.apache.spark.{SparkConf, SparkContext}
object WordCount {
  def main(args: Array[String]): Unit = {
    //创建SparkConf对象
    val conf = new SparkConf().setMaster("local[*]").setAppName("WordCount")
    //创建spark上文
    val sc = new SparkContext(conf)
    //读取文件,将文件一行一行的读取出来
    val lines = sc.textFile("input")
    //将一行一行的数据分解成一个个单词
    val words = lines.flatMap(_.split(" "))
    //将单词进行转换,装换成(k,v)形式
    val wordToOne = words.map((_,1))
    //对转换结构后的数据进行分组聚合
    val result = wordToOne.reduceByKey(_+_)
    //将打印结果采集后打印到控制台
    result.collect().foreach(println)
  }
}
发布了59 篇原创文章 · 获赞 4 · 访问量 4506

猜你喜欢

转载自blog.csdn.net/weixin_45102492/article/details/104318738