Spark新手入门――3.Spark集群(standalone模式)安装

匿名 (未验证) 提交于 2019-12-03 00:41:02

主要包括以下三部分,本文为第三部分:

一. Scala环境准备 查看
二. Hadoop集群(伪分布模式)安装 查看
三. Spark集群(standalone模式)安装

Spark集群(standalone模式)安装

若使用spark对本地文件进行测试学习,可以不用安装上面的hadoop环境,若要结合hdfs使用spark,则可以参考上面的步骤搭建hadoop。

1. 下载安装包并解压(如:~/tools/spark-2.3.1-bin-hadoop2.7);

2. 启动服务
a.启动master

./sbin/start-master.sh

b.启动slaves
  可先登陆 http://localhost:8080/ ,获取“Spark URL”

./sbin/start-slave.sh <spark://xxxx-xxx:7077>

 

3. 开发测试程序
下面开发一个超级简单的rdd任务,逻辑(统计hdfs文件中包含单词form的行及行数,并将结果保存到hdfs)参考官网

a. 使用第一讲中准备好的Scala环境,创建一个scala maven project:mvn-rdd-test

b. 编写代码

 
package com.person.test   import org.apache.spark.{SparkConf,SparkContext}   object MvnRddTest {     def main(args: Array[String]): Unit = {       val dataPath = "hdfs://localhost:9000/usr/test/LICENSE.txt"       val resultPath = "hdfs://localhost:9000/usr/test/result"
val sc = new SparkContext(new SparkConf().setAppName("Mvn-Rdd-Test"))
try{ val accm = sc.longAccumulator("LineAccumulator") val rdd = sc.textFile(dataPath,2) val sparkDs = rdd.filter( line => if(line.contains("form")){ accm.add(1) true } else false ) sparkDs.saveAsTextFile(resultPath) println(s"Lines that contains ‘form‘ number is: ${accm.value}") }catch { case e:Exception => e.printStackTrace() }finally { sc.stop() } } }

注:运行该示例需要上传一份文件到(二)的hdfs中,例中的LICENSE.txt来自hadoop安装包。

c. 打含依赖项的jar包
pom.xml配置:

    <groupId>com.person.test</groupId>     <artifactId>mvn-rdd-test</artifactId>     <version>1.0-SNAPSHOT</version>          <dependencies>         <!-- spark core -->         <dependency>             <groupId>org.apache.spark</groupId>             <artifactId>spark-core_2.11</artifactId>             <version>2.3.1</version>         </dependency>          <!-- hdfs tool -->         <dependency>             <groupId>org.apache.hadoop</groupId>             <artifactId>hadoop-client</artifactId>             <version>2.7.0</version>         </dependency>          <dependency>             <groupId>org.apache.spark</groupId>             <artifactId>spark-assembly</artifactId>             <version>0.8.0-SNAPSHOT</version>         </dependency>     </dependencies>     <build>         <plugins>             <!-- build java -->             <plugin>                 <groupId>org.apache.maven.plugins</groupId>                 <artifactId>maven-assembly-plugin</artifactId>                 <version>2.5.5</version>                 <configuration>                     <archive>                         <manifest>                             <mainClass>com.person.test.MvnRddTest</mainClass>                         </manifest>                     </archive>                     <descriptorRefs>                         <descriptorRef>jar-with-dependencies</descriptorRef>                     </descriptorRefs>                 </configuration>                 <executions>                     <execution>                         <id>make-assembly</id>                         <phase>package</phase>                         <goals>                             <goal>single</goal>                         </goals>                     </execution>                 </executions>             </plugin>             <!-- build scala -->             <plugin>                 <groupId>org.scala-tools</groupId>                 <artifactId>maven-scala-plugin</artifactId>                 <version>2.15.2</version>                 <executions>                     <execution>                         <goals>                             <goal>compile</goal>                             <goal>testCompile</goal>                         </goals>                     </execution>                 </executions>             </plugin>         </plugins>     </build>

 

双击Maven Projects-->mvn-rdd-test-->Lifecycle-->package即可完成打包,“mvn-rdd-test-1.0-SNAPSHOT-jar-with-dependencies.jar”即为包含依赖项的包。
注:pom中引入的这两个build插件是必须的,分别用于build java和scala。

d. 测试:

./bin/spark-submit --master spark://xxxx-xxx:7077 --class com.person.test.MvnRddTest ~/Document/IdeaProjects/mvn-rdd-test/target/mvn-rdd-test-1.0-SNAPSHOT-jar-with-dependencies.jar

可以到hdfs上查看运行结果,终端会打印计数器的值。

注意:使用maven打包,不要使用Build Artifacts方式打包。

参考资料:官方文档


后续会陆续更新Spark RDD、Spark DataSet、Spark Streaming的用法;

原文:https://www.cnblogs.com/deep-learning-stacks/p/9314505.html

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!