1. 程式人生 > >使用spark-submit提交jar包到spark standalone叢集(續)

使用spark-submit提交jar包到spark standalone叢集(續)

繼續上篇文章利用Intellij Idea在windows搭建spark 開發環境(含打jar包過程)(一) 以及Sparksql處理json日誌[要求sparksql統計json日誌條數存入mysql資料庫]                         

本章將把打好的jar提交到叢集執行。[如何打jar 包請看上文第一篇]

環境:centos7,windows10,intellij 2016.1.1

jar 包程式碼:[詳細的步驟請看第二篇]

import scala.xml.XML
import scala.sys.process._
import org.apache.spark.sql.SQLContext
import scala.collection.mutable.ArrayBuffer
import scala.io.Source
import java.io.PrintWriter
import org.apache.spark.{SparkConf, SparkContext}
import org.apache.spark.sql.SQLContext
import java.sql.DriverManager
import java.sql.PreparedStatement
import java.sql.Connection
import org.apache.spark.sql.types.IntegerType
import org.apache.spark.sql.types.StructType
import org.apache.spark.sql.types.StructField
import org.apache.spark.sql.types.StringType
import org.apache.spark.sql.Row
import java.util.Properties
import org.apache.spark.sql.SaveMode
import java.sql.{Connection, DriverManager, ResultSet}
import scala.collection.mutable.ArrayBuffer
import org.apache.spark.SparkConf object Distb{
  def  main(args:Array[String]): Unit ={
    val conf = new SparkConf().setAppName("distritb1").setMaster("spark://HDPMaster:7077")
    val sc = new SparkContext(conf)
    val driverUrl="jdbc:mysql://ip:3306/test?user=root&password=123456&zeroDateTimeBehavior=convertToNull&useUnicode=true&characterEncoding=utf8"
    val sqlContext=new org.apache.spark.sql.SQLContext(sc)
    val path="/test/input/test.json"   
    val all=sqlContext.read.json(path)
    all.registerTempTable("testtab")
 val count_name=sqlContext.sql("select name,sum(size) as sizesum from testtab group by name")
    count_name.write.mode(SaveMode.Overwrite).jdbc(driverUrl, "testresult", new Properties)   
  }
  } 第一步: 把jar包上傳至linux server. 預設是/test/test.jar 第二步:由於本例是standalone 模式,所以要指定--master spark://HDPMaster:7077 \ 由於 我的spark-env.sh設定如下: export SPARK_EXECUTOR_INSTANCES=2
export SPARK_EXECUTOR_CORES=1
export SPARK_EXECUTOR_MEMORY=3G
export SPARK_DRIVER_MEMORY=1G
export SPARK_MASTER_IP=HDPMaster
export SPARK_WORKER_MEMORY=4G     ###每個節點能用的記憶體是4G
export SPARK_MASTER_PORT=7077 所以我用的引數是--executor-memory 3g 執行引數設定如下: /usr/hdp/2.5.0.0-1245/spark/bin/spark-submit \
--class Distb \
--master spark://HDPMaster:7077 \
--executor-memory 3g   \              
--executor-cores 2   \
--num-executors 2 \
/test/test.jar 然後進去spark UI監控進度:your_ip:4040。 如果程式沒有報錯,也可以去資料去查看錶是否已經存在,資料是否已經有了。如果有了,說明成功! [注意事項] 如果是叢集的模式,你也可以用htop檢視每臺Slave節點的記憶體,CPU的變化,從而知道,叢集的狀態。