自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

Spark:利用Eclipse構(gòu)建Spark集成開(kāi)發(fā)環(huán)境

開(kāi)發(fā) 前端 Spark
前一篇文章“Apache Spark學(xué)習(xí):將Spark部署到Hadoop 2.2.0上”介紹了如何使用Maven編譯生成可直接運(yùn)行在Hadoop 2.2.0上的Spark jar包,而本文則在此基礎(chǔ)上,介紹如何利用Eclipse構(gòu)建Spark集成開(kāi)發(fā)環(huán)境。

前一篇文章“Apache Spark學(xué)習(xí):將Spark部署到Hadoop 2.2.0上”介紹了如何使用Maven編譯生成可直接運(yùn)行在Hadoop 2.2.0上的Spark jar包,而本文則在此基礎(chǔ)上,介紹如何利用Eclipse構(gòu)建Spark集成開(kāi)發(fā)環(huán)境。

(1) 準(zhǔn)備工作

在正式介紹之前,先要以下軟硬件準(zhǔn)備:

軟件準(zhǔn)備:

Eclipse Juno版本(4.2版本),可以直接點(diǎn)擊這里下載:Eclipse 4.2

Scala 2.9.3版本,Window安裝程序可以直接點(diǎn)擊這里下載:Scala 2.9.3

Eclipse Scala IDE插件,可直接點(diǎn)擊這里下載:Scala IDE(for Scala 2.9.x and Eclipse Juno)

硬件準(zhǔn)備

裝有Linux或者Windows操作系統(tǒng)的機(jī)器一臺(tái)

(2) 構(gòu)建Spark集成開(kāi)發(fā)環(huán)境

我是在windows操作系統(tǒng)下操作的,流程如下:

步驟1:安裝scala 2.9.3:直接點(diǎn)擊安裝即可。

步驟2:將Eclipse Scala IDE插件中features和plugins兩個(gè)目錄下的所有文件拷貝到Eclipse解壓后對(duì)應(yīng)的目錄中

步驟3:重新啟動(dòng)Eclipse,點(diǎn)擊eclipse右上角方框按鈕,如下圖所示,展開(kāi)后,點(diǎn)擊“Other….”,查看是否有“Scala”一項(xiàng),有的話,直接點(diǎn)擊打開(kāi),否則進(jìn)行步驟4操作。

步驟4:在Eclipse中,依次選擇“Help” –> “Install New Software…”,在打開(kāi)的卡里填入http://download.scala-ide.org/sdk/e38/scala29/stable/site,并按回車鍵,可看到以下內(nèi)容,選擇前兩項(xiàng)進(jìn)行安裝即可。(由于步驟3已經(jīng)將jar包拷貝到eclipse中,安裝很快,只是疏通一下)安裝完后,重復(fù)操作一遍步驟3便可。

(3) 使用Scala語(yǔ)言開(kāi)發(fā)Spark程序

在eclipse中,依次選擇“File” –>“New” –> “Other…” –>  “Scala Wizard” –> “Scala Project”,創(chuàng)建一個(gè)Scala工程,并命名為“SparkScala”。

右擊“SaprkScala”工程,選擇“Properties”,在彈出的框中,按照下圖所示,依次選擇“Java Build Path” –>“Libraties” –>“Add External JARs…”,導(dǎo)入文章“Apache Spark:將Spark部署到Hadoop 2.2.0上”中給出的

assembly/target/scala-2.9.3/目錄下的spark-assembly-0.8.1-incubating- hadoop2.2.0.jar,這個(gè)jar包也可以自己編譯spark生成,放在spark目錄下的assembly/target/scala- 2.9.3/目錄中。

#p#

跟創(chuàng)建Scala工程類似,在工程中增加一個(gè)Scala Class,命名為:WordCount,整個(gè)工程結(jié)構(gòu)如下:

WordCount就是最經(jīng)典的詞頻統(tǒng)計(jì)程序,它將統(tǒng)計(jì)輸入目錄中所有單詞出現(xiàn)的總次數(shù),Scala代碼如下:

  1. import org.apache.spark._ 
  2. import SparkContext._ 
  3. object WordCount { 
  4.   def main(args: Array[String]) { 
  5.     if (args.length != 3 ){ 
  6.       println("usage is org.test.WordCount <master> <input> <output>"
  7.       return 
  8.     } 
  9.     val sc = new SparkContext(args(0), "WordCount"
  10.     System.getenv("SPARK_HOME"), Seq(System.getenv("SPARK_TEST_JAR"))) 
  11.     val textFile = sc.textFile(args(1)) 
  12.     val result = textFile.flatMap(line => line.split("\\s+")) 
  13.         .map(word => (word, 1)).reduceByKey(_ + _) 
  14.     result.saveAsTextFile(args(2)) 
  15.   } 

在Scala工程中,右擊“WordCount.scala”,選擇“Export”,并在彈出框中選擇“Java” –> “JAR File”,進(jìn)而將該程序編譯成jar包,可以起名為“spark-wordcount-in-scala.jar”,我導(dǎo)出的jar包下載地址是 spark-wordcount-in-scala.jar。

該WordCount程序接收三個(gè)參數(shù),分別是master位置,HDFS輸入目錄和HDFS輸出目錄,為此,可編寫run_spark_wordcount.sh腳本:

# 配置成YARN配置文件存放目錄

export YARN_CONF_DIR=/opt/hadoop/yarn-client/etc/hadoop/

SPARK_JAR=./assembly/target/scala-2.9.3/spark-assembly-0.8.1-incubating-hadoop2.2.0.jar \

./spark-class org.apache.spark.deploy.yarn.Client \

–jar spark-wordcount-in-scala.jar \

–class WordCount \

–args yarn-standalone \

–args hdfs://hadoop-test/tmp/input \

–args hdfs:/hadoop-test/tmp/output \

–num-workers 1 \

–master-memory 2g \

–worker-memory 2g \

–worker-cores 2

需要注意以下幾點(diǎn):WordCount程序的輸入?yún)?shù)通過(guò)“-args”指定,每個(gè)參數(shù)依次單獨(dú)指定,第二個(gè)參數(shù)是HDFS上的輸入目錄,需要事先創(chuàng)建好,并上傳幾個(gè)文本文件,以便統(tǒng)計(jì)詞頻,第三個(gè)參數(shù)是HDFS上的輸出目錄,動(dòng)態(tài)創(chuàng)建,運(yùn)行前不能存在。

直接運(yùn)行run_spark_wordcount.sh腳本即可得到運(yùn)算結(jié)果。

在運(yùn)行過(guò)程中,發(fā)現(xiàn)一個(gè)bug,org.apache.spark.deploy.yarn.Client有一個(gè)參數(shù)“–name”可以指定應(yīng)用程序名稱:

但是使用過(guò)程中,該參數(shù)會(huì)阻塞應(yīng)用程序,查看源代碼發(fā)現(xiàn)原來(lái)是個(gè)bug,該Bug已提交到Spark jira上:

  1. // 位置:new-yarn/src/main/scala/org/apache/spark/deploy/yarn/ClientArguments.scala 
  2.         case ("--queue") :: value :: tail => 
  3.           amQueue = value 
  4.           args = tail 
  5.   
  6.         case ("--name") :: value :: tail => 
  7.           appName = value 
  8.           args = tail //漏了這行代碼,導(dǎo)致程序阻塞 
  9.   
  10.         case ("--addJars") :: value :: tail => 
  11.           addJars = value 
  12.           args = tail 

因此,大家先不要使用“–name”這個(gè)參數(shù),或者修復(fù)這個(gè)bug,重新編譯Spark。

(4) 使用Java語(yǔ)言開(kāi)發(fā)Spark程序

方法跟普通的Java程序開(kāi)發(fā)一樣,只要將Spark開(kāi)發(fā)程序包spark-assembly-0.8.1-incubating-hadoop2.2.0.jar作為三方依賴庫(kù)即可。

(5) 總結(jié)

初步試用Spark On YARN過(guò)程中,發(fā)現(xiàn)問(wèn)題還是非常多,使用起來(lái)非常不方便,門檻還是很高,遠(yuǎn)不如Spark On Mesos成熟。

原文鏈接:http://dongxicheng.org/framework-on-yarn/spark-eclipse-ide/

責(zé)任編輯:陳四芳 來(lái)源: dongxicheng.org
相關(guān)推薦

2009-07-14 13:14:13

2014-01-07 10:12:15

Spark

2014-08-11 10:15:01

Docker開(kāi)發(fā)環(huán)境

2010-08-05 09:13:22

EclipseFlexBuilder

2010-06-12 16:29:00

BlackBerry開(kāi)

2014-09-16 10:13:27

Spark搭建環(huán)境

2012-02-02 17:05:30

Eclipse

2012-03-19 09:47:10

EclipseJava

2020-05-26 15:05:30

Spark安裝環(huán)境

2009-06-01 15:56:48

eclipse sdkeclipse

2011-06-03 13:38:49

Android 開(kāi)發(fā)環(huán)境

2017-08-14 10:30:13

SparkSpark Strea擴(kuò)容

2016-11-29 09:27:22

Apache SparDashboard構(gòu)建

2013-07-29 14:23:55

Eclipse開(kāi)發(fā)環(huán)境Eclipse開(kāi)發(fā)環(huán)境

2017-03-06 09:40:39

OpenStack SHadoopSpark

2015-10-16 13:30:59

EclipsePython開(kāi)發(fā)環(huán)境

2011-09-13 17:15:58

Eclipse And

2012-06-05 01:23:14

Ubuntueclipse

2021-03-15 14:02:21

大數(shù)據(jù)數(shù)據(jù)開(kāi)發(fā)Spark

2023-08-17 20:13:42

點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)