當前位置:ag真人国际官网-ag旗舰厅官方网站 » 編程軟體 » spark編譯

spark編譯-ag真人国际官网

發布時間: 2022-01-08 03:27:30

『壹』 spark shell因為scala編譯器原因不能正常啟動怎麼解決

spark shell由於scala編譯器原因不能正常啟動

使用sbt安裝完成spark後,可以運行示例,但是嘗試運行spark-shell就會報錯:

d:\scala\spark\bin\spark-shell.cmd
slf4j: class path contains multiple slf4j bindings.
slf4j:
found binding in
[jar:file:/d:/scala/spark/assembly/target/scala-2.10/spark-assembly-0.9.0-incubating-hadoop1.0.4.jar!/org/slf4j/impl/staticloggerbinder.class]
slf4j: found binding in
[jar:file:/d:/scala/spark/tools/target/scala-2.10/spark-tools-assembly-0.9.0-incubating.jar!/org/slf4j/impl/staticloggerbinder.class]
slf4j: see http://www.slf4j.org/codes.html#multiple_bindings for an explanation.
slf4j: actual binding is of type [org.slf4j.impl.log4jloggerfactory]
14/04/03 20:40:43 info httpserver: using spark's default log4j profile: org/apache/spark/log4j-defaults.properties
14/04/03 20:40:43 info httpserver: starting http server

failed to initialize compiler: object scala.runtime in compiler mirror not found.
** note that as of 2.8 scala does not assume use of the java classpath.
** for the old behavior pass -usejavacp to scala, or if using a settings
** object programatically, settings.usejavacp.value = true.
14/04/03
20:40:44 warn sparkiloop$sparkiloopinterpreter: warning: compiler
accessed before init set up.  assuming no postinit code.

failed to initialize compiler: object scala.runtime in compiler mirror not found.
** note that as of 2.8 scala does not assume use of the java classpath.
** for the old behavior pass -usejavacp to scala, or if using a settings
** object programatically, settings.usejavacp.value = true.
failed to initialize compiler: object scala.runtime in compiler mirror not found.
        at scala.predef$.assert(predef.scala:179)
       
at
org.apache.spark.repl.sparkimain.initializesynchronous(sparkimain.scala:197)
       
at
org.apache.spark.repl.sparkiloop$$anonfun$process$1.apply$mcz$sp(sparkiloop.scala:919)
       
at
org.apache.spark.repl.sparkiloop$$anonfun$process$1.apply(sparkiloop.scala:876)
       
at
org.apache.spark.repl.sparkiloop$$anonfun$process$1.apply(sparkiloop.scala:876)
       
at
scala.tools.nsc.util.scalaclassloader$.savingcontextloader(scalaclassloader.scala:135)
       
at org.apache.spark.repl.sparkiloop.process(sparkiloop.scala:876)
       
at org.apache.spark.repl.sparkiloop.process(sparkiloop.scala:968)
        at org.apache.spark.repl.main$.main(main.scala:31)
        at org.apache.spark.repl.main.main(main.scala)

google
之還是不求解。只是在sbt的網站上看到q&a裡面有個問題提到了:http://www.scala-sbt.org/release
/docs/faq#how-do-i-use-the-scala-interpreter-in-my-code。這里說代碼中怎麼修改設置。顯然不
適合我。

繼續求解。注意到錯誤提示是在2.8以後才有的,原因是有一個關於編譯器解釋權classpath的提議被接受了:default compiler/interpreter classpath in a managed environment。

繼續在google中找,有一篇論文吸引了我的注意:object scala found。裡面終於找到一個辦法:



however, a working command can be recovered, like so:
$ jrunscript -djava.class.path=scala-library.jar -dscala.usejavacp=true -classpath scala-compiler.jar -l scala



於是修改一下\bin\spark-class2.cmd:

rem set java_opts to be able to load native libraries and to set heap size
set
java_opts=%our_java_opts% -djava.library.path=%spark_library_path%
-dscala.usejavacp=true -xms%spark_mem% -xmx%spark_mem%
rem attention: when changing the way the java_opts are assembled, the change must be reflected in executorrunner.scala!

標紅的部分即是心添加的一個參數。再次運行\bin\spark-shell.cmd:

d:>d:\scala\spark\bin\spark-shell.cmd
slf4j: class path contains multiple slf4j bindings.
slf4j:
found binding in
[jar:file:/d:/scala/spark/assembly/target/scala-2.10/spark-assembly-0.9.0-incubating-hadoop1.0.4.jar!/org/slf4j/impl/staticloggerbinder.class]
slf4j: found binding in
[jar:file:/d:/scala/spark/tools/target/scala-2.10/spark-tools-assembly-0.9.0-incubating.jar!/org/slf4j/impl/staticloggerbinder.class]
slf4j: see http://www.slf4j.org/codes.html#multiple_bindings for an explanation.
slf4j: actual binding is of type [org.slf4j.impl.log4jloggerfactory]
14/04/03 22:18:41 info httpserver: using spark's default log4j profile: org/apache/spark/log4j-defaults.properties
14/04/03 22:18:41 info httpserver: starting http server
welcome to
     

____             
__
     / __/__  ___ _____/ /__
    _\ \/ _ \/ _ `/ __/  '_/
   /___/ .__/\_,_/_/ /_/\_\   version 0.9.0
      /_/

using scala version 2.10.3 (java hotspot(tm) client vm, java 1.6.0_10)
type in expressions to have them evaluated.
type :help for more information.
14/04/03 22:19:12 info slf4jlogger: slf4jlogger started
14/04/03 22:19:13 info remoting: starting remoting
14/04/03 22:19:16 info remoting: remoting started; listening on addresses :[akka.tcp://spark@choco-pc:5960]
14/04/03 22:19:16 info remoting: remoting now listens on addresses: [akka.tcp://spark@choco-pc:5960]
14/04/03 22:19:16 info sparkenv: registering blockmanagermaster
14/04/03
22:19:17 info diskblockmanager: created local directory at
c:\users\choco\appdata\local\temp\spark-local-20140403221917-7172
14/04/03 22:19:17 info memorystore: memorystore started with capacity 304.8 mb.
14/04/03 22:19:18 info connectionmanager: bound socket to port 5963 with id = connectionmanagerid(choco-pc,5963)
14/04/03 22:19:18 info blockmanagermaster: trying to register blockmanager
14/04/03 22:19:18 info blockmanagermasteractor$blockmanagerinfo: registering block manager choco-pc:5963 with 304.8 mb ram
14/04/03 22:19:18 info blockmanagermaster: registered blockmanager
14/04/03 22:19:18 info httpserver: starting http server
14/04/03 22:19:18 info httpbroadcast: broadcast server started at http://192.168.1.100:5964
14/04/03 22:19:18 info sparkenv: registering mapoutputtracker
14/04/03
22:19:18 info httpfileserver: http file server directory is
c:\users\choco\appdata\local\temp\spark-e122cfe9-2d62-4a47-920c-96b54e4658f6
14/04/03 22:19:18 info httpserver: starting http server
14/04/03 22:19:22 info sparkui: started spark web ui at http://choco-pc:4040
14/04/03 22:19:22 info executor: using repl class uri: http://192.168.1.100:5947
created spark context..
spark context available as sc.

scala> :quit
stopping spark context.
14/04/03 23:05:21 info mapoutputtrackermasteractor: mapoutputtrackeractor stopped!
14/04/03 23:05:21 info connectionmanager: selector thread was interrupted!
14/04/03 23:05:21 info connectionmanager: connectionmanager stopped
14/04/03 23:05:21 info memorystore: memorystore cleared
14/04/03 23:05:21 info blockmanager: blockmanager stopped
14/04/03 23:05:21 info blockmanagermasteractor: stopping blockmanagermaster
14/04/03 23:05:21 info blockmanagermaster: blockmanagermaster stopped
14/04/03 23:05:21 info sparkcontext: successfully stopped sparkcontext
14/04/03 23:05:21 info remoteactorrefprovider$remotingterminator: shutting down remote daemon.
14/04/03
23:05:21 info remoteactorrefprovider$remotingterminator: remote daemon
shut down; proceeding with flushing remote transports.

good。瀏覽器打開http://choco-pc:4040,就可以看到spark的狀態、環境、執行者等信息了。

這個fix可能只是適用與我的情況。如果還有問題可以再找找相關的資料。

期間還碰到不能找到文件的錯誤。最後發現是java_home設置沒有對。如果你碰到問題了,可以打開腳本的回顯,然後找找原因。

『貳』 新手請教:為什麼安裝spark需要源碼編譯

因為不同版本的hdfs在協議上是不兼容的,所以如果你想用你的spark從hdfs上讀取數據,那麼你就的選擇相應版本的hdfs來編譯spark,這個可以在編譯的時候通過設置hadoop.version來選擇,默認情況下,spark默認為編譯成hadoop 1.0.4版本。現在可以使用的方法有maven編譯,sbt編譯(時間較長),spark自帶腳本編譯(實際還是調用maven)。

『叄』 eclipse運行spark wordcount程序 編譯錯誤

找不到這個類,你缺少這個類所在的jar包,根據這個類名搜索

『肆』 怎麼編譯spark-streaming-flume

storm是實時處理,spark和hadoop是批處理,兩者是互補。在hadoop2.0之後,hadoop使用了新的yarn框架,map/rece只是其中一種默許了,spark也可以在hadoop的yarn框架下運行的,所以2者還會是融合的。
spark還有與storm相同功能的 spark steaming,實時處理流式數據。可以順著hadoop -> spark -> spark steaming一路學下去,storm是否學習,你可以自己選擇下。如果有相同功能的spark steaming,肯定是學習spark steaming啦。
如果我的回答沒幫助到您,請繼續追問。

『伍』 spark獨立模式還需要編譯嗎

spark有三種集群部署方式:

1、獨立部署模式standalone,spark自身有一套完整的資源管理方式

2、架構於hadoop之上的spark集群

3、架構於mesos之上的spark集群

嘗試了下搭建第一種獨立部署模式集群,將安裝方式記錄如下:

環境ubuntu 12.04 (兩台),部署方式是和hadoop類似,先在一台機器上部署成功後直接將文件打包拷貝到其他機器上,這里假設現在a機器上部署,並且a為master,最後b為slave

a和b均上創建用戶spark

sudo useradd spark
以後spark的目錄在集群所有機器的/home/spark/spark下(第一個spark是用戶名,第二個spark是spark文件目錄名)

保證a能無密碼登陸到b上的spark用戶,在ssh裡面設置

這部分是現在master機器(a)上配置

0 首先保證a能無密碼方式ssh至localhost和b ,具體方式參見: 點擊打開鏈接

0.1 在a機器上執行

ssh-keygen -t rsa
cp ~/.ssh/id_rsa.pub ~/.ssh/authorized_keys
ssh localhost
那麼a可以實現無密碼登陸localhost

0.2 在b機器上執行

ps -e|grep ssh
如果出現:

695 ? 00:00:00 sshd

1754 ? 00:00:00 ssh-agent

若沒有sshd那麼在b上執行

sudo apt-get install openssh-server
在b上安裝ssh服務端(ubuntu有可能默認只有agent端)

0.3 在b上執行:

ssh-keygen -t rsa
scp spark@a:~/.ssh/authorized_keys ~/.ssh
第一句是為了保證在b上有.ssh目錄

第二句是將a的公鑰拷貝到b上,從而實現a無密碼訪問b

0.4 在a上執行gedit ~/.ssh/config添加

user spark
這里是為了a以默認用戶spark無密碼登陸b,其實這一步沒有必要,因為a和b機器上都是在spark用戶下操作的,那麼機器a的saprk執行ssh b也是以spark用戶登陸的

1 每台機器確保有java ,一個簡單的方式:

sudo apt-get install eclipse
2 需要maven編譯spark源碼 ,下載maven 點擊打開鏈接 ,隨便下載一個版本

簡單的方式:

sudo apt-get install maven
復雜的方式:

wget http://mirrors.cnnic.cn/apache/maven/maven-3/3.2.2/binaries/apache-maven-3.2.2-bin.tar.gz
tar -zxvf apache-maven-3.2.2-bin.tar.gz
mv apache-maven-3.2.2-bin.tar.gz maven
sudo mv maven /usr/local
然後gedit /etc/profile末尾添加如下:

#set maven environment
m2_home=/usr/local/maven
export maven_opts="-xms256m -xmx512m"
export path=$m2_home/bin:$path
驗證maven安裝成功:

source /etc/profile
mvn -v
出現類似語句:apache maven 3.2.2 (; 2014-06-17t21:51:42 08:00)

3 下載spark, 點擊打開鏈接 ,注意不要下載帶有hadoop之類字樣的版本,而是source package比如spark-1.0.0.tgz

tar -zxvf spark-1.0.0.tgz
mv spark-1.0.0 spark
cd spark
sh make-distribution.sh
最後一步會

編譯spark源碼

,過程可能有點長,取決於網路和機器配置,我的用了19min,編譯成功類似如下圖(圖來自網上):

4 配置spark

4.1 gedit ./conf/spark-env.sh在spark-env.sh末尾添加如下:

export spark_master_ip=a
export spark_worker_cores=1
export spark_worker_instances=1
export spark_master_port=7077
export spark_worker_memory=1g
export master=spark://${spark_master_ip}:${spark_master_port}
注意這里的spark_master_ip我覺得還是設置為master機器的ip地址比較好,這里我假設master的hostname是a

spark_worker_instances表示slave機器的數目,這里只有b一台故設為1

4.2 gedit ./conf/slaves添加b的hostname,這里b機器的hostname假設就為b故在文件中追加一個b即可。文件里原來有一個localhost如果你想要master同時也為worker機器那麼可保留該行,否則可以刪除

5 驗證master機器a能否單機啟動spark

『陸』 使用maven編譯spark報錯,誰知道是什麼原因嗎

maven項目編譯的標准輸出路徑就是mavenproject/target/classes, 項目右鍵 build path--configure build path--java build path--source,把default output folder改成mavenproject/target/classes,在菜單欄project下把自動編譯打勾。

『柒』 spark編譯失敗後怎麼重新編譯

### spark 下載

http://spark.apache.org/downloads.html

### 前提准備
# 安裝 jdk,mvn 和 scala,並設置對應的java_home,mvn_home 和 scala_home
### spark 編譯 (參考 http://spark.apache.org/docs/latest/building-with-maven.html)
#1 設置maven的環境變數
exportmaven_opts="-xmx2g
-xx:maxpermsize=512m -xx:reservedcodecachesize=512m"

『捌』 spark1.3編譯出錯,求解決方法

把 pom.xml文件中的scalastyle的相關改成false
org.scalastyle
scalastyle-maven-plugin
0.4.0

false
false
false
false

『玖』 如何在cdh上編譯運行spark application

以sbt為例,比如說我的一個應用原來是基於原生1.6.0spark編譯的
librarydependencies = {
val sparkv = "1.6.0"
seq(
"org.apache.spark" %% "spark-core" % sparkv withsources() withjavadoc(),
"org.apache.spark" %% "spark-catalyst" % sparkv withsources() withjavadoc(),
"org.apache.spark" %% "spark-sql" % sparkv withsources() withjavadoc(),
"org.apache.spark" %% "spark-hive" % sparkv withsources() withjavadoc(),
"org.apache.spark" %% "spark-repl" % sparkv withsources() withjavadoc(),
)

『拾』 spark編譯在linux怎麼使用

在windows下安裝軟體大家都覺得很容易,只要雙擊setup或是install的圖標,然後跟著向導一步一步的按提示做就可以了,但是在linux下安裝軟體就不像windows下那樣容易了,有時你找到的是沒有編譯過的軟體源碼,那就更加的麻煩了,這里就介紹一下如...

熱點內容
布丁少兒編程 發布:2024-11-19 09:57:11 瀏覽:97
vb資料庫數組 發布:2024-11-19 09:23:40 瀏覽:827
安卓游戲數據保存在哪裡找 發布:2024-11-19 09:22:02 瀏覽:309
解壓出來的文件亂碼 發布:2024-11-19 09:15:40 瀏覽:939
北航ftp是多少 發布:2024-11-19 09:15:32 瀏覽:821
瀏覽保存密碼如何取消 發布:2024-11-19 09:10:17 瀏覽:89
安卓怎麼關簡訊重復提醒 發布:2024-11-19 09:02:00 瀏覽:635
html與php的區別 發布:2024-11-19 09:00:53 瀏覽:193
晚安密碼多少 發布:2024-11-19 09:00:51 瀏覽:945
易語言腳本模塊 發布:2024-11-19 09:00:44 瀏覽:484
网站地图