0


Spark搭建

Spark搭建(三种模式)

Local模式

主要用于本地开发测试

本文档主要介绍如何在IDEA中配置Spark开发环境

  • 打开IDEA,创建Maven项目
  • 在IDEA设置中安装Scala插件image.png
  • 在pom.xml文件中添加Scala依赖<dependency><groupId>org.scala-lang</groupId><artifactId>scala-library</artifactId><version>2.12.10</version></dependency><dependency><groupId>org.scala-lang</groupId><artifactId>scala-compiler</artifactId><version>2.12.10</version></dependency><dependency><groupId>org.scala-lang</groupId><artifactId>scala-reflect</artifactId><version>2.12.10</version></dependency>
  • 在pom.xml中添加Scala编译插件> 需要加在build->plugins标签下<!-- Scala Compiler --><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>
  • 在pom.xml文件中添加Spark-Core依赖<dependency><groupId>org.apache.spark</groupId><artifactId>spark-core_2.12</artifactId><version>3.1.3</version></dependency>
  • 编写第一个Spark程序- 准备words.txt数据,每一行包含多个单词,单词之间以逗号分隔java,spark,java,hadoopjava,spark,java,hadoopjava,spark,java,hadoopjava,spark,java,hadoopjava,spark,java,hadoopjava,spark,java,hadoopjava,spark,java,hadoopjava,spark,java,hadoopjava,spark,java,hadoopjava,spark,java,hadoop- 编写代码> 注意words.txt文件路径,按自身情况修改packagecom.shujia.coreimportorg.apache.spark.rdd.RDDimportorg.apache.spark.{SparkConf, SparkContext}object Demo01WordCount {def main(args: Array[String]):Unit={// 1、构建Spark环境// 配置Spark任务val conf: SparkConf =new SparkConf() conf.setAppName("Demo01WordCount")// 设置任务名 conf.setMaster("local")// 设置Spark的运行方式// 创建SparkContext --> Spark程序的入口val sc: SparkContext =new SparkContext(conf)// 2、构建Spark程序// 加载数据val lineRDD: RDD[String]= sc.textFile("spark/data/words.txt")// 将每个单词提取出来val wordsRDD: RDD[String]= lineRDD.flatMap(_.split(","))// 按每个单词进行分组val groupRDD: RDD[(String, Iterable[String])]= wordsRDD.groupBy(word => word)// 统计每个单词的数量val wordCntRDD: RDD[String]= groupRDD.map(kv =>s"${kv._1},${kv._2.size}")// 将结果输出 wordCntRDD.foreach(println)}}- 右键运行,结果如下image.png
  • 常见错误- windows环境下运行任务通常会有如下报错23/10/0711:23:40WARNShell:Did not find winutils.exe:{}java.io.FileNotFoundException:java.io.FileNotFoundException:HADOOP_HOME and hadoop.home.dir are unset.
  • 原因分析- Spark程序运行时找不到winutils.exe程序或依赖
  • 解决方法- 下载winutils.exe程序- 在任意无中文路径位置新建bin目录,例如> 目录路径位置随意,但一定不要有中文目录D:/shujia/bigdata/hadoop3/bin- 将winutils.exe程序放入上述bin目录中- 在系统环境变量中增加一项HADOOP_HOME配置- 将D:/shujia/bigdata/hadoop3/目录作为HADOOP_HOME的值> 注意不要将bin目录包含在其中- 重启IDEA- 重新运行程序,检查错误是否消失
Standalone模式
  • 1、上传解压tar-zxvf spark-3.1.3-bin-without-hadoop.tgz -C /usr/local/softmv spark-3.1.3-bin-without-hadoop spark-3.1.3
  • 2、修改配置文件# 重命名文件cp spark-env.sh.template spark-env.shcp workers.template workers增加配置vim spark-env.sh> master相当于RM worker相当于NMexportSPARK_MASTER_HOST=masterexportSPARK_MASTER_PORT=7077exportSPARK_WORKER_CORES=1exportSPARK_WORKER_MEMORY=2gexportJAVA_HOME=/usr/local/soft/jdk1.8.0_171exportSPARK_DIST_CLASSPATH=$(/usr/local/soft/hadoop-3.1.3/bin/hadoop classpath)增加从节点配置vim workers> 以node1、node2作为从节点node1node2
  • 3、复制到其它节点```cd /usr/local/soft/scp-r spark-3.1.3 node1:pwdscp-r spark-3.1.3 node2:`pwd````
  • 4、配置环境变量
  • 5、在主节点执行启动命令> 注意:start-all.sh 与Hadoop的sbin目录中的启动命令有冲突cd /usr/local/soft/spark-3.1.3/./sbin/start-all.sh
  • 6、访问Spark Web UIhttp://master:8080/
  • 7、测试及使用切换目录cd /usr/local/soft/spark-3.1.3/examples/jarsstandalone client模式 :日志在本地输出,一般用于上线前测试- 提交自带的SparkPi任务spark-submit --class org.apache.spark.examples.SparkPi --master spark://master:7077 --executor-memory 512m --total-executor-cores 1 spark-examples_2.12-3.1.3.jar 100standalone cluster模式:上线使用,不会在本地打印日志- 提交自带的SparkPi任务spark-submit --class org.apache.spark.examples.SparkPi --master spark://master:7077 --executor-memory 512M --total-executor-cores 1 --deploy-mode cluster spark-examples_2.12-3.1.3.jar 100
  • 8、其他运行方式- spark-shell spark 提供的一个交互式的命令行,可以直接写代码spark-shell --master spark://master:7077
On Yarn模式

在公司一般不适用standalone模式

因为公司一般已经有yarn 不需要搞两个资源管理框架

Spark整合yarn只需要在一个节点整合, 可以删除node1 和node2中所有的Spark 文件

  • 1、停止Spark Standalone模式集群# 切换目录cd /usr/local/soft/spark-3.1.3/# 停止集群./sbin/stop-all.sh
  • 2、增加hadoop 配置文件地址vim spark-env.sh# 增加HADOOP_CONF_DIRexport HADOOP_CONF_DIR=/usr/local/soft/hadoop-3.1.3/etc/hadoop
  • 3、关闭Yarnstop-yarn.sh
  • 4、修改Yarn配置cd /usr/local/soft/hadoop-3.1.3/etc/hadoop/vim yarn-site.xml# 加入如下配置 <property><name>yarn.nodemanager.pmem-check-enabled</name><value>false</value></property><property><name>yarn.nodemanager.vmem-check-enabled</name><value>false</value></property>
  • 5、同步到其他节点```scp-r yarn-site.xml node1:pwdscp-r yarn-site.xml node2:`pwd````
  • 6、启动Yarnstart-yarn.sh
  • 7、测试及使用切换目录cd /usr/local/soft/spark-3.1.3/examples/jarsSpark on Yarn Client模式:日志在本地输出,一班用于上线前测试- 提交自带的SparkPi任务spark-submit --masteryarn --deploy-mode client --class org.apache.spark.examples.SparkPi --executor-memory 512M --num-executors 2 spark-examples_2.12-3.1.3.jar 100Spark on Yarn Cluster模式:上线使用,不会在本地打印日志- 提交自带的SparkPi任务spark-submit --masteryarn --deploy-mode cluster --class org.apache.spark.examples.SparkPi --executor-memory 512M --num-executors 2 spark-examples_2.12-3.1.3.jar 100- 获取yarn程序执行日志 执行成功之后才能获取到yarn logs -applicationId application_1652086375126_0002
  • 8、开启Spark On Yarn的WEB UI修改配置文件# 切换目录cd /usr/local/soft/spark-3.1.3/conf# 去除后缀cp spark-defaults.conf.template spark-defaults.conf# 修改spark-defaults.confvim spark-defaults.conf# 加入以下配置spark.eventLog.enabled truespark.eventLog.dir hdfs://master:9000/user/spark/applicationHistoryspark.yarn.historyServer.address master:18080spark.eventLog.compress truespark.history.fs.logDirectory hdfs://master:9000/user/spark/applicationHistoryspark.history.retainedApplications 15创建HDFS目录用于存储Spark History日志hdfs dfs -mkdir-p /user/spark/applicationHistory启动Spark History Servercd /usr/local/soft/spark-3.1.3/./sbin/start-history-server.sh
标签: spark 大数据

本文转载自: https://blog.csdn.net/cc__cc___/article/details/135261611
版权归原作者 只会hello world的程序员 所有, 如有侵权,请联系我们删除。

“Spark搭建”的评论:

还没有评论