如何學習大數(shù)據(jù):spark發(fā)布程序

一、對于spark程序只是用于默認的spark包的情況

直接點擊pcakage

將程序進行在linux當中進行發(fā)布

客戶端模式:測試

spark-submit --class? com.keduox.App \

--master yarn \

--deploy-mode client \

test_submit-1.0-SNAPSHOT.jar

1、 (在數(shù)據(jù)量很小的時候)速度快

2、 依賴于jvm進程來執(zhí)行的。所以不需要啟動hdfs、yarn、spark的。

集群模式:生產(chǎn)環(huán)境、正式環(huán)境

出現(xiàn)異常:Retrying connect to server: master/192.168.200.200:8032.

表示yarn沒有啟動:start-yarn.sh

java.net.ConnectException: Call From master/192.168.200.200 to? master:9000

表示hdfs沒有啟動:start-dfs.sh

發(fā)布之后出現(xiàn)錯誤:

yarn.ApplicationMaster: SparkContext did not initialize after? waiting for 100000 ms

將代碼中的setMaster(local[*])刪除掉--à不推薦這樣子使用

刪掉之后,重新打包是可以成功運行。

沒有成功的原因是:因為spark在執(zhí)行的時候,是采用分布的執(zhí)行,也就是每一個節(jié)點執(zhí)行的東西只是代表整個程序的一部分。代碼當中將輸出地寫成了file:///keduox/spark_out,看到的情況是一會成功,一會失敗。

建議使用方式:

如果在一個模塊當中有多個spark的程序代碼時,建立將setMaster的值設(shè)置在properties文件當中。因為我們會經(jīng)常在local和yarn之前進行切換操作。

new SparkConf().setMaster("yarn-cluster")

二、發(fā)布到cdh上

2.1cdh配置spark

2.2讓yarn與spark進行關(guān)聯(lián)

在yarn點當中點擊以下內(nèi)容

3、 改變spark任務的默認大小

重啟

三、將統(tǒng)計的結(jié)果放到y(tǒng)arn去運行:

3.1:直接package

java.sql.SQLException: No suitable driver 缺少mysql的包

如果使用的是通過mysql 的方式的話,將無法找到spark默認使用的驅(qū)動包。建議在map屬性當中加入:"driver" -> "com.mysql.jdbc.Driver"

java.lang.InstantiationException: org.apache.spark.sql.execution.datasources.jdbc.DriverWrapper

當我們需要有數(shù)據(jù),寫入到mysql的時候,也需要指定driver

val properties = new Properties()

properties.setProperty("driver","com.mysql.jdbc.Driver")

--------------------------------------------------------------------------

spark-submit --class com.keduox.HotCount \

--master yarn \

--deploy-mode cluster \

--jars /keduox/mysql-connector-java-5.1.38.jar \

hot_sales-1.0-SNAPSHOT.jar

3.2采用插件方式

<plugins>

<plugin>

<artifactId>maven-assembly-plugin</artifactId>

<configuration>

<descriptorRefs>

<descriptorRef>jar-with-dependencies</descriptorRef>

</descriptorRefs>

</configuration>

? </plugin>

</plugins>

發(fā)布:

用默認方式打包的話,會將所有的maven中的包全打到jar當中,jar太大了。

可以在打包的時間,將spark、hadoop、hive的包給他去掉

在pom.xml文件當中,對于不需要打包的依賴中當入:

<scope>provided</scope> ---但是要特別注意:打包完了之后,還需要進行編碼的話,需要將這個scope去掉,不然代碼編譯不通過

3.3可以通過sc的方式加載包

? ? ? ? sc.addJar("")

3.4 idea提供的打包方式

END。。。

來源:成都科多大數(shù)據(jù)科技有限公司?

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容