Apache Beam程序向?qū)?
創(chuàng)新互聯(lián)專(zhuān)注于博興網(wǎng)站建設(shè)服務(wù)及定制,我們擁有豐富的企業(yè)做網(wǎng)站經(jīng)驗(yàn)。 熱誠(chéng)為您提供博興營(yíng)銷(xiāo)型網(wǎng)站建設(shè),博興網(wǎng)站制作、博興網(wǎng)頁(yè)設(shè)計(jì)、博興網(wǎng)站官網(wǎng)定制、微信小程序定制開(kāi)發(fā)服務(wù),打造博興網(wǎng)絡(luò)公司原創(chuàng)品牌,更為您提供博興網(wǎng)站排名全網(wǎng)營(yíng)銷(xiāo)落地服務(wù)。今天在集群上實(shí)驗(yàn)Beam On Spark的時(shí)候,遇到一個(gè)坑爹的問(wèn)題,這個(gè)問(wèn)題總結(jié)起來(lái)是一個(gè)java.lang.NoClassDefFoundError
錯(cuò)誤,具體錯(cuò)誤如下圖1所示
圖1 錯(cuò)誤提示
該錯(cuò)誤提示SparkStreamingContext沒(méi)有定義,這說(shuō)明java虛擬機(jī)加載進(jìn)來(lái)了SparkStreamingContext,也就是相應(yīng)的代碼包已經(jīng)導(dǎo)入進(jìn)來(lái)了,這個(gè)階段沒(méi)有什么問(wèn)題。接下來(lái)就得看看是不是代碼包版本不合適。
我的maven依賴(lài)如下圖2所示
圖2 Maven依賴(lài)包
于是我在各種嘗試之后,終于找到了一種有希望的解決方案,那就是將spark的版本2.1.0改為1.6.3版本。
修改后狀況如下:
圖3 本地運(yùn)行成功
這里看似成功了,但是這只是在本機(jī)測(cè)試的時(shí)候有了Beam On Spark的運(yùn)行測(cè)試結(jié)果。至于在Spark集群中能否跑起來(lái),我們還要按照官方提供的方法生成對(duì)應(yīng)的jar包,并通過(guò)Spark-submit提交的方式提交到y(tǒng)arn集群中去通過(guò)yarn來(lái)調(diào)度運(yùn)行。這種情況下運(yùn)行成功了,那才叫真正的成功。所以現(xiàn)在還不是高興的時(shí)候,那么接下來(lái)我們就開(kāi)始繼續(xù)接下來(lái)的實(shí)驗(yàn)吧。
首先應(yīng)該在maven的pom.xml文件中加入以下對(duì)shade的構(gòu)建依賴(lài)
(該部分加入到根節(jié)點(diǎn)的build節(jié)點(diǎn)的plugins節(jié)點(diǎn)之中
)
<plugin>
<groupId>org.apache.maven.pluginsgroupId>
<artifactId>maven-shade-pluginartifactId>
<configuration>
<createDependencyReducedPom>falsecreateDependencyReducedPom>
<filters>
<filter>
<artifact>*:*artifact>
<excludes>
<exclude>META-INF/*.SFexclude>
<exclude>META-INF/*.DSAexclude>
<exclude>META-INF/*.RSAexclude>
excludes>
filter>
filters>
configuration>
<executions>
<execution>
<phase>packagephase>
<goals>
<goal>shadegoal>
goals>
<configuration>
<shadedArtifactAttached>trueshadedArtifactAttached>
<shadedClassifierName>shadedshadedClassifierName>
configuration>
execution>
executions>
plugin>
首先將項(xiàng)目打包拷貝到提交應(yīng)用的那臺(tái)機(jī)器上并解壓。
如果已經(jīng)安裝好了maven的環(huán)境了的話,就直接在解壓之后的根目錄下執(zhí)行如下命令
mvnpackage
然后就等著編譯結(jié)束
…………………..
如下圖所示,編譯成功后的jar包就在target目錄下
以spark提交jar包的方式提交,提交的腳本如下:
${SPARK_HOME}/bin/./spark-submit\
--class org.tongfang.beam.examples.WordCount \##指定要運(yùn)行的類(lèi),全路徑+類(lèi)名
--master yarn \ ##提交給yarn調(diào)度
--deploy-mode cluster \##集群模式運(yùn)行
/home/ubuntu/shaded/target/shaded-1.0.0-shaded.jar##指定jar包路徑
給腳本添加可執(zhí)行權(quán)限之后就可以開(kāi)始運(yùn)行了:
經(jīng)過(guò)一會(huì)兒等待之后就成功了,如下圖所示:
文章來(lái)自數(shù)模堂,如需更多交流,請(qǐng)掃描關(guān)注
另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無(wú)理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國(guó)服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡(jiǎn)單易用、服務(wù)可用性高、性?xún)r(jià)比高”等特點(diǎn)與優(yōu)勢(shì),專(zhuān)為企業(yè)上云打造定制,能夠滿足用戶(hù)豐富、多元化的應(yīng)用場(chǎng)景需求。