上海古都建筑设计集团,上海办公室装修设计公司,上海装修公司高质量的内容分享社区,上海装修公司我们不是内容生产者,我们只是上海办公室装修设计公司内容的搬运工平台

Spark搭建

guduadmin11天前

Spark搭建(三种模式)

Local模式

主要用于本地开发测试

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

  • 打开IDEA,创建Maven项目

  • 在IDEA设置中安装Scala插件

    Spark搭建,image.png,第1张
  • 在pom.xml文件中添加Scala依赖

            
                org.scala-lang
                scala-library
                2.12.10
            
            
                org.scala-lang
                scala-compiler
                2.12.10
            
            
                org.scala-lang
                scala-reflect
                2.12.10
            
    
  • 在pom.xml中添加Scala编译插件

    需要加在build->plugins标签下

                
                
                    org.scala-tools
                    maven-scala-plugin
                    2.15.2
                    
                        
                            
                                compile
                                testCompile
                            
                        
                    
                
    
  • 在pom.xml文件中添加Spark-Core依赖

            
                org.apache.spark
                spark-core_2.12
                3.1.3
            
    
  • 编写第一个Spark程序

    • 准备words.txt数据,每一行包含多个单词,单词之间以逗号分隔

      java,spark,java,hadoop
      java,spark,java,hadoop
      java,spark,java,hadoop
      java,spark,java,hadoop
      java,spark,java,hadoop
      java,spark,java,hadoop
      java,spark,java,hadoop
      java,spark,java,hadoop
      java,spark,java,hadoop
      java,spark,java,hadoop
      
    • 编写代码

      注意words.txt文件路径,按自身情况修改

      package com.shujia.core
      import org.apache.spark.rdd.RDD
      import org.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)
        }
      }
      
    • 右键运行,结果如下

      Spark搭建,image.png,第2张

    • 常见错误

      • windows环境下运行任务通常会有如下报错

        23/10/07 11:23:40 WARN Shell: 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/soft
                mv spark-3.1.3-bin-without-hadoop spark-3.1.3
                
              • 2、修改配置文件

                # 重命名文件
                cp spark-env.sh.template spark-env.sh
                cp workers.template workers
                

                增加配置:vim spark-env.sh

                master相当于RM worker相当于NM

                export SPARK_MASTER_HOST=master
                export SPARK_MASTER_PORT=7077
                export SPARK_WORKER_CORES=1
                export SPARK_WORKER_MEMORY=2g
                export JAVA_HOME=/usr/local/soft/jdk1.8.0_171
                export SPARK_DIST_CLASSPATH=$(/usr/local/soft/hadoop-3.1.3/bin/hadoop classpath)
                

                增加从节点配置:vim workers

                以node1、node2作为从节点

                node1
                node2
                
              • 3、复制到其它节点

                cd /usr/local/soft/
                scp -r spark-3.1.3 node1:`pwd`
                scp -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 UI

                http://master:8080/
                
              • 7、测试及使用

                切换目录:cd /usr/local/soft/spark-3.1.3/examples/jars

                standalone 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 100
                  

                  standalone 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_DIR
                        export HADOOP_CONF_DIR=/usr/local/soft/hadoop-3.1.3/etc/hadoop
                        
                      • 3、关闭Yarn

                        stop-yarn.sh
                        
                      • 4、修改Yarn配置

                        cd /usr/local/soft/hadoop-3.1.3/etc/hadoop/
                        vim yarn-site.xml
                        # 加入如下配置
                            
                                yarn.nodemanager.pmem-check-enabled
                                false
                            
                            
                                yarn.nodemanager.vmem-check-enabled
                                false
                            
                        
                      • 5、同步到其他节点

                        scp -r yarn-site.xml node1:`pwd`
                        scp -r yarn-site.xml node2:`pwd`
                        
                      • 6、启动Yarn

                        start-yarn.sh
                        
                      • 7、测试及使用

                        切换目录:cd /usr/local/soft/spark-3.1.3/examples/jars

                        Spark on Yarn Client模式:日志在本地输出,一班用于上线前测试

                        • 提交自带的SparkPi任务

                          spark-submit --master yarn --deploy-mode client --class org.apache.spark.examples.SparkPi  --executor-memory 512M --num-executors 2 spark-examples_2.12-3.1.3.jar 100
                          

                          Spark on Yarn Cluster模式:上线使用,不会在本地打印日志

                          • 提交自带的SparkPi任务

                            spark-submit --master yarn --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.conf
                            vim spark-defaults.conf
                            # 加入以下配置
                            spark.eventLog.enabled  true
                            spark.eventLog.dir      hdfs://master:9000/user/spark/applicationHistory
                            spark.yarn.historyServer.address        master:18080
                            spark.eventLog.compress true
                            spark.history.fs.logDirectory   hdfs://master:9000/user/spark/applicationHistory
                            spark.history.retainedApplications      15
                            

                            创建HDFS目录用于存储Spark History日志

                            hdfs dfs -mkdir -p /user/spark/applicationHistory
                            

                            启动Spark History Server

                            cd /usr/local/soft/spark-3.1.3/
                            ./sbin/start-history-server.sh
                            

网友评论

搜索
最新文章
热门文章
热门标签