当前位置:   article > 正文

spark集群和开发环境搭建_配置spark集群

配置spark集群

 背景:hadoop100,hadoop101,hadoop102三台服务器上已经安装了hadoop集群

一:集群搭建

1.1 安装包下载

地址:Downloads | Apache Spark

 1.2 上传到hadoop100并且解压

  1. tar -zxvf  spark-3.2.4-bin-hadoop3.2-scala2.13.tgz -C /opt/spark
  2. mv spark-3.2.4-bin-hadoop3.2-scala2.13.tgz spark-3.2.4 

1.3 修改配置文件

1.3.1 到配置文件目录下,复制标红的三个文件(通过template)

 1.3.2 修改spark-defaults.conf

添加下列内容到文件末尾

spark.master spark://hadoop100:7077
spark.serializer org.apache.spark.serializer.KryoSerializer
spark.driver.memory 1g
spark.executor.memory 1g

1.3.3 修改vim spark-env.sh

添加下列内容到文件末尾

export JAVA_HOME=/opt/java/jdk8
export HADOOP_HOME=/opt/hadoop/hadoop-3.2.2
export HADOOP_CONF_DIR=/opt/hadoop/hadoop-3.2.2/etc/hadoop
export SPARK_DIST_CLASSPATH=$(/opt/hadoop/hadoop-3.2.2/bin/hadoop classpath)
export SPARK_MASTER_HOST=hadoop100
export SPARK_MASTER_PORT=7077

 1.3.4 修改vim workers

1.3.5 添加环境变量

export SPARK_HOME=/opt/spark/spark-3.2.4
export PATH=$PATH:$SPARK_HOME/bin:$SPARK_HOME/sbin

 1.4 文件分发和启动

 1.4.1 文件分发

scp -rf /opt/spark  hadoop@hadoop101:/opt

scp -rf /opt/spark  hadoop@hadoop102:/opt

 同时在hadoop101和102上添加环境变量

1.4.2 启动服务器

先启动hadoop集群

然后到spark的sbin目录下 

 ./start-all.sh  

 通过jps查看是否启动成功

成功标志:hadoop100出现Master  hadoop101,hadoop102出现Worker

 通过浏览器查看:输入hadoop100:8080

然后到spark的bin目录下

spark-submit --master yarn --deploy-mode client --class org.apache.spark.examples.SparkPi /opt/spark/spark-3.2.4/examples/jars/spark-examples_2.13-3.2.4.jar

 出现下列类似信息(该图来源网络)

 下列图片为后续的开发环境设置导致无法在服务器上启动,只能监听

 到此spark集群的搭建就完成了。

二:idea开发调试环境的搭建

2.1 idea基础环境的准备

2.1.1 scala插件的安装

file>settings>plugins>marketplace:搜scala然后安装

2.1.2 下载scala 

官网地址:All Available Versions | The Scala Programming Language

下载和spark的scala版本一致或者小于的版本;这里我下载的是2.13.5的

然后解压下载的压缩包放到合适的位置

2.1.3 创建maven项目

 porn.xml配置

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <project xmlns="http://maven.apache.org/POM/4.0.0"
  3. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  4. xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  5. <modelVersion>4.0.0</modelVersion>
  6. <groupId>test</groupId>
  7. <artifactId>SparkPi</artifactId>
  8. <version>1.0-SNAPSHOT</version>
  9. <properties>
  10. <spark.version>3.2.4</spark.version>
  11. <scala.version>2.13</scala.version>
  12. </properties>
  13. <repositories>
  14. <repository>
  15. <id>nexus-aliyun</id>
  16. <name>Nexus aliyun</name>
  17. <url>http://maven.aliyun.com/nexus/content/groups/public</url>
  18. </repository>
  19. </repositories>
  20. <dependencies>
  21. <dependency>
  22. <groupId>org.apache.spark</groupId>
  23. <artifactId>spark-core_${scala.version}</artifactId>
  24. <version>${spark.version}</version>
  25. </dependency>
  26. <dependency>
  27. <groupId>org.apache.spark</groupId>
  28. <artifactId>spark-streaming_${scala.version}</artifactId>
  29. <version>${spark.version}</version>
  30. </dependency>
  31. <dependency>
  32. <groupId>org.apache.spark</groupId>
  33. <artifactId>spark-sql_${scala.version}</artifactId>
  34. <version>${spark.version}</version>
  35. </dependency>
  36. <dependency>
  37. <groupId>org.apache.spark</groupId>
  38. <artifactId>spark-hive_${scala.version}</artifactId>
  39. <version>${spark.version}</version>
  40. </dependency>
  41. <dependency>
  42. <groupId>org.apache.spark</groupId>
  43. <artifactId>spark-mllib_${scala.version}</artifactId>
  44. <version>${spark.version}</version>
  45. </dependency>
  46. <dependency>
  47. <groupId>junit</groupId>
  48. <artifactId>junit</artifactId>
  49. <version>3.8.1</version>
  50. <scope>compile</scope>
  51. </dependency>
  52. </dependencies>
  53. <build>
  54. <plugins>
  55. <plugin>
  56. <groupId>org.scala-tools</groupId>
  57. <artifactId>maven-scala-plugin</artifactId>
  58. <version>2.13.1</version>
  59. <executions>
  60. <execution>
  61. <goals>
  62. <goal>compile</goal>
  63. <goal>testCompile</goal>
  64. </goals>
  65. </execution>
  66. </executions>
  67. </plugin>
  68. <plugin>
  69. <artifactId>maven-compiler-plugin</artifactId>
  70. <version>3.6.0</version>
  71. <configuration>
  72. <source>1.8</source>
  73. <target>1.8</target>
  74. </configuration>
  75. </plugin>
  76. <plugin>
  77. <groupId>org.apache.maven.plugins</groupId>
  78. <artifactId>maven-surefire-plugin</artifactId>
  79. <version>2.19</version>
  80. <configuration>
  81. <skip>true</skip>
  82. </configuration>
  83. </plugin>
  84. </plugins>
  85. </build>
  86. </project>

创建scala目录,标记为Sources Root

 file>Project Structure>Libra > 添加scsla目录 ,就是之前解压的目录

 到此基础环境搭建完成,接下来就是连接spark集群

2.2 idea连接spark集群

2.2.1  集群配置文件更改

将下列代码添加到spark-env.sh 末尾(集群上所有机器都要)

  1. export SPARK_SUBMIT_OPTS="-agentlib:jdwp=transport=dt_socket,server=y,suspend=y,address=5005"
  2. # address:JVM在5005端口上监听请求,这个设定为一个不冲突的端口即可。
  3. # server:y表示启动的JVM是被调试者,n表示启动的JVM是调试器。
  4. # suspend:y表示启动的JVM会暂停等待,直到调试器连接上才继续执行,n则JVM不会暂停等待。

 

2.2.2 配置idea remote 

 

 

 

 2.2.3 window配hadoop环境

下载地址:https://github.com/steveloughran/winutils

这里用了hadoop3.0.0

配置环境变量

 配置ddl

将该文件复制到C:\Windows\System32 目录下

 2.2.4 代码调试

这里需要一定的scala基础

在scala目录下创建Test 

配置jar

测试代码:如果windows没有配置映射ip,就直接输入ip

  1. import scala.math.{log, random}
  2. import org.apache.spark._
  3. import org.apache.spark.sql.Row.empty.schema
  4. import org.apache.spark.sql.SparkSession
  5. import org.apache.spark.sql.types.{StructField, StructType}
  6. import org.sparkproject.dmg.pmml.False
  7. object Test {
  8. def main(args: Array[String]): Unit ={
  9. val conf = new SparkConf().setAppName("Test").setMaster("spark://hadoop100:7077")
  10. .setJars(Seq("F:\\IntelliJ_IDEA\\Spark\\out\\artifacts\\SparkPi_jar\\SparkPi.jar"))
  11. .set("spark.driver.host","localhost")
  12. val sc: SparkContext = new SparkContext(conf)
  13. val data_0=sc.textFile("hdfs://hadoop100:9000/spark/user.txt")
  14. val dataGroupBy4=data_0.map(line=>{
  15. val word=line.split(" ")
  16. (word(4),1)
  17. }).reduceByKey(_+_)
  18. println("按点击来源聚合:")
  19. dataGroupBy4.collect().foreach(println)
  20. println("==================")
  21. val dataGroupBy34=data_0.map(line=>{
  22. val word=line.split(" ")
  23. ((word(3),word(4)),1)
  24. }).reduceByKey(_+_)
  25. println("按设备和点击来源聚合:")
  26. dataGroupBy34.collect().foreach(println)
  27. println("==================")
  28. sc.stop()
  29. }
  30. }

user.txt内容:

  1   1001   2023-07-20 12:00:00   手机   首页  
  2   1002   2023-07-20 13:00:00   电脑   搜索  
  3   1003   2023-07-20 14:00:00   平板   商品详情  
  4   1004   2023-07-21 12:00:00   手机   首页  
  5   1005   2023-07-21 13:00:00   电脑   搜索  
  6   1006   2023-07-21 14:00:00   平板   商品详情  
  7   1007   2023-07-22 12:00:00   手机   首页  
  8   1008   2023-07-22 13:00:00   电脑   搜索  
  9   1009   2023-07-22 14:00:00   平板   商品详情  
  10   1010   2023-07-23 12:00:00   手机   首页  
  11   1011   2023-07-23 13:00:00   电脑   搜索  
  12   1012   2023-07-23 14:00:00   平板   商品详情  
  13   1013   2023-07-24 12:00:00   手机   首页  
  14   1014   2023-07-24 13:00:00   电脑   搜索  
  15   1015   2023-07-24 14:00:00   平板   商品详情  
  16   1016   2023-07-25 12:00:00   手机   首页  
  17   1017   2023-07-25 13:00:00   电脑   搜索  
  18   1018   2023-07-25 14:00:00   平板   商品详情  
  19   1019   2023-07-26 12:00:00   手机   首页  
  20   1020   2023-07-26 13:00:00   电脑   搜索

 输出结果:

 

到处开发调试环境搭建完毕。

参考资料:

idea配置

 spark集群搭建

 windows下hadoop配置

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/凡人多烦事01/article/detail/551016
推荐阅读
相关标签
  

闽ICP备14008679号