
# spark提交服务
1. 服务分布：
   表1服务分布 
   | 服务名               | 服务器                                              | 安装目录                      | 端口   |
   |:---|:---|:---|:---|
   | data-spark-submit | 10.190.x.x 10.190.x.x | /app/dt/data-spark-submit | 8087 |
      
   
2. 安装spark提交服务
   1. 修改配置文件application-dev.yml
      - 修改stdms.callback.url中的ip和端口，配置为CIM数据汇聚管理平台的ip和端口
      
      - 当使用minio存储日志时，配置log.server.enable为true，并配置日志服务（data-log-manage）的ip和端口；
      
      
      当使用本地文件存储日志时，配置log.server.enable为false
      ```
      ```yml
      # 服务端口
      server:
        port: 8087
      # 任务执行完成，回调CIM数据汇聚管理平台接口
      stdms:
        callback:
          url: http://192.168.32.89:9090/stdms/feed-back/ch-task-status?objectId=%s&status=%d
      # 是否将日志发送到日志服务并存储到minio
      log:
        service:
          enable: false
          url: http://127.0.0.1:8089/save
      # 通过minio中转传输脚本文件
      minio:
        endpoint: http://192.168.32.227:9000
        access-key: admin
        secret-key: Admin123@minio
      # 生产打开下面配置，使用jar同级config目录配置文件
      logging:
        config: config/log4j2.xml
      ```
      ```
      
   
   2. 启动、停止
      - 启动： 进入data-spark-submit.jar所在路径，执行
        ```
        ```shell
        nohup java -jar data-spark-submit.jar &
        ```
        ```
        
      
      
      
      - 停止：
        ```
        Kill -9 进程号
        ```
        
       
   
   3. 服务验证
      - 服务启动验证与版本信息查询 将以下地址中的ip和端口修改为实际部署ip和端口，请求接口，查看版本信息
        请求地址：http://localhost:8087/about
        请求方式：GET
        
      
      
      
      - 服务功能验证 任务提交验证：将以下地址中的ip和端口修改为实际部署ip和端口，在minio中创建桶data-mining-spark，将test文件夹中的test.py脚本上传至桶data-mining-spark的根路径下，请求以下接口
        请求地址：http://localhost:8087/spark-submit
        请求方式：POST
        请求参数体：
        ```
        ```json
        {
            "taskName": "app",
            "taskId": "1",
            "fileLocation": "minio",
            "master": "local",
            "deployMode": "client",
            "appResource": "test.py",
            "jars": "",
            "mainClass": "",
            "pyFiles": "",
            "verbose": false,
            "conf": {
                "spark.driver.memory": "1g",
                "spark.executor.memory": "1g",
                "spark.executor.cores": "2",
                "spark.kryoserializer.buffer.max": "1",
                "spark.default.parallelism": "100",
                "spark.shuffle.service.enabled": "false",
                "spark.dynamicAllocation.minExecutors": "1",
                "spark.dynamicAllocation.maxExecutors": "2",
                "spark.dynamicAllocation.enabled": "false"
            },
            "appArgs": []
        }
        ```
        ```
        返回结果示例：
        ```
        ```json
        {
            "success": true,
            "message": "提交spark任务成功",
            "content": {
                "taskId": "1",
                "taskName": "app",
                "createTime": "2022-08-16 18:27:24",
                "applicationId": "local-1660645647751"
            }
        }
        ```
        ```
        
       
    
 
