程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> JAVA綜合教程 >> Yarn上運行spark-1.6.0

Yarn上運行spark-1.6.0

編輯:JAVA綜合教程

Yarn上運行spark-1.6.0


Yarn上運行spark-1.6.0.pdf

目錄

目錄1

1.約定1

2.安裝Scala 1

2.1.下載2

2.2.安裝2

2.3.設置環境變量2

3.安裝Spark 2

3.1.下載2

3.2.安裝2

3.3.配置3

3.3.1.修改conf/spark-env.sh 3

4.啟動Spark 3

4.1.運行自帶示例3

4.2.SparkSQLCli4

5.和Hive集成 4

6.常見錯誤5

6.1.錯誤1:unknownqueue:thequeue 5

6.2.SPARK_CLASSPATHwasdetected6

7.相關文檔6

1.約定

本文約定Hadoop2.7.1安裝在/data/hadoop/current,而Spark1.6.0被安裝在/data/hadoop/spark,其中/data/hadoop/spark為指向/data/hadoop/spark。

Spark官網為:http://spark.apache.org/(Shark官網為:http://shark.cs.berkeley.edu/,Shark已成為Spark的一個模塊,不再需要單獨安裝)。

以cluster模式運行Spark,不介紹client模式。

2.安裝Scala

聯邦理工學院洛桑(EPFL)的MartinOdersky於2001年基於Funnel的工作開始設計Scala。

Scala是一種多范式的編程語言,設計初衷是要集成純面向對象編程和函數式編程的各種特性。運行在Java虛擬機JVM之上,兼容現有的Java程序,並可調用Java類庫。Scala包含編譯器和類庫,以BSD許可證發布。

2.1.下載

Spark使用Scala開發的,在安裝Spark之前,先在各個節上將Scala安裝好。Scala的官網為:http://www.scala-lang.org/,下載網址為:http://www.scala-lang.org/download/,本文下載的是二進制安裝包scala-2.11.7.tgz。

2.2.安裝

本文以root用戶(實則也可以非root用戶,建議事先規劃好)將Scala安裝在/data/scala,其中/data/scala是指向/data/scala-2.11.7的軟鏈接。

安裝方法非常簡單,將scala-2.11.7.tgz上傳到/data目錄,然後在/data/目錄下對scala-2.11.7.tgz進行解壓。

接著,建立軟鏈接:ln-s/data/scala-2.11.7/data/scala。

2.3.設置環境變量

Scala被安裝完成後,需要將它添加到PATH環境變量中,可以直接修改/etc/profile文件,加入以下內容即可:

exportSCALA_HOME=/data/scala

exportPATH=$SCALA_HOME/bin:$PATH

3.安裝Spark

Spark的安裝以非root用戶進行,本文以hadoop用戶安裝它。

3.1.下載

本文下載的二進制安裝包,推薦這種方式,否則編譯還得折騰。下載網址為:http://spark.apache.org/downloads.html,本文下載的是spark-1.6.0-bin-hadoop2.6.tgz,這個可以直接跑在YARN上。

3.2.安裝

1)將spark-1.6.0-bin-hadoop2.6.tgz上傳到目錄/data/hadoop下

2)解壓:tarxzfspark-1.6.0-bin-hadoop2.6.tgz

3)建立軟鏈接:ln-sspark-1.6.0-bin-hadoop2.6spark

在yarn上運行spark,不需要每台機器都安裝spark,可以只安裝在一台機器上。但是只能在被安裝的機器上運行spark,原因很簡單:需要調用spark的文件。

3.3.配置

3.3.1.修改conf/spark-env.sh

可以spark-env.sh.template復制一份,然後增加以下內容:

HADOOP_CONF_DIR=/data/hadoop/current/etc/hadoop

YARN_CONF_DIR=/data/hadoop/current/etc/hadoop

4.啟動Spark

由於運行在Yarn上,所以沒有啟動Spark這一過程。而是在執行命令spark-submit時,由Yarn調度運行Spark。

4.1.運行自帶示例

./bin/spark-submit--classorg.apache.spark.examples.SparkPi\

--masteryarn--deploy-modecluster\

--driver-memory4g\

--executor-memory2g\

--executor-cores1\

--queuedefault\

lib/spark-examples*.jar10

運行輸出:

16/02/0316:08:33INFOyarn.Client:Applicationreportforapplication_1454466109748_0007(state:RUNNING)

16/02/0316:08:34INFOyarn.Client:Applicationreportforapplication_1454466109748_0007(state:RUNNING)

16/02/0316:08:35INFOyarn.Client:Applicationreportforapplication_1454466109748_0007(state:RUNNING)

16/02/0316:08:36INFOyarn.Client:Applicationreportforapplication_1454466109748_0007(state:RUNNING)

16/02/0316:08:37INFOyarn.Client:Applicationreportforapplication_1454466109748_0007(state:RUNNING)

16/02/0316:08:38INFOyarn.Client:Applicationreportforapplication_1454466109748_0007(state:RUNNING)

16/02/0316:08:39INFOyarn.Client:Applicationreportforapplication_1454466109748_0007(state:RUNNING)

16/02/0316:08:40INFOyarn.Client:Applicationreportforapplication_1454466109748_0007(state:FINISHED)

16/02/0316:08:40INFOyarn.Client:

clienttoken:N/A

diagnostics:N/A

ApplicationMasterhost:10.225.168.251

ApplicationMasterRPCport:0

queue:default

starttime:1454486904755

finalstatus:SUCCEEDED

trackingURL:http://hadoop-168-254:8088/proxy/application_1454466109748_0007/

user:hadoop

16/02/0316:08:40INFOutil.ShutdownHookManager:Shutdownhookcalled

16/02/0316:08:40INFOutil.ShutdownHookManager:Deletingdirectory/tmp/spark-7fc8538c-8f4c-4d8d-8731-64f5c54c5eac

4.2.SparkSQLCli

通過運行即可進入SparkSQLCli交互界面,但要在Yarn上以cluster運行,則需要指定參數--master值為yarn(注意不支持參數--deploy-mode的值為cluster,也就是只能以client模式運行在Yarn上):

./bin/spark-sql--masteryarn

為什麼SparkSQLCli只能以client模式運行?其實很好理解,既然是交互,需要看到輸出,這個時候cluster模式就沒法做到了。因為cluster模式,ApplicationMaster在哪機器上運行,是由Yarn動態確定的。

5.和Hive集成

Spark集成Hive非常簡單,只需以下幾步:

1)在spark-env.sh中加入HIVE_HOME,如:exportHIVE_HOME=/data/hadoop/hive

2)將Hive的hive-site.xml和hive-log4j.properties兩個文件復制到Spark的conf目錄下。

完成後,再次執行spark-sql進入Spark的SQLCli,運行命令showtables即可看到在Hive中創建的表。

示例:

./spark-sql--masteryarn--driver-class-path/data/hadoop/hive/lib/mysql-connector-java-5.1.38-bin.jar

6.常見錯誤

6.1.錯誤1:unknownqueue:thequeue

運行:

./bin/spark-submit--classorg.apache.spark.examples.SparkPi--masteryarn--deploy-modecluster--driver-memory4g--executor-memory2g--executor-cores1--queuethequeuelib/spark-examples*.jar10

時報如下錯誤,只需要將“--queuethequeue”改成“--queuedefault”即可。

16/02/0315:57:36INFOyarn.Client:Applicationreportforapplication_1454466109748_0004(state:FAILED)

16/02/0315:57:36INFOyarn.Client:

clienttoken:N/A

diagnostics:Applicationapplication_1454466109748_0004submittedbyuserhadooptounknownqueue:thequeue

ApplicationMasterhost:N/A

ApplicationMasterRPCport:-1

queue:thequeue

starttime:1454486255907

finalstatus:FAILED

trackingURL:http://hadoop-168-254:8088/proxy/application_1454466109748_0004/

user:hadoop

16/02/0315:57:36INFOyarn.Client:Deletingstagingdirectory.sparkStaging/application_1454466109748_0004

Exceptioninthread"main"org.apache.spark.SparkException:Applicationapplication_1454466109748_0004finishedwithfailedstatus

atorg.apache.spark.deploy.yarn.Client.run(Client.scala:1029)

atorg.apache.spark.deploy.yarn.Client$.main(Client.scala:1076)

atorg.apache.spark.deploy.yarn.Client.main(Client.scala)

atsun.reflect.NativeMethodAccessorImpl.invoke0(NativeMethod)

atsun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)

atsun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)

atjava.lang.reflect.Method.invoke(Method.java:606)

atorg.apache.spark.deploy.SparkSubmit$.org$apache$spark$deploy$SparkSubmit$$runMain(SparkSubmit.scala:731)

atorg.apache.spark.deploy.SparkSubmit$.doRunMain$1(SparkSubmit.scala:181)

atorg.apache.spark.deploy.SparkSubmit$.submit(SparkSubmit.scala:206)

atorg.apache.spark.deploy.SparkSubmit$.main(SparkSubmit.scala:121)

atorg.apache.spark.deploy.SparkSubmit.main(SparkSubmit.scala)

16/02/0315:57:36INFOutil.ShutdownHookManager:Shutdownhookcalled

16/02/0315:57:36INFOutil.ShutdownHookManager:Deletingdirectory/tmp/spark-54531ae3-4d02-41be-8b9e-92f4b0f05807

6.2.SPARK_CLASSPATHwasdetected

SPARK_CLASSPATHwasdetected(setto'/data/hadoop/hive/lib/mysql-connector-java-5.1.38-bin.jar:').

ThisisdeprecatedinSpark1.0+.

Pleaseinsteaduse:

-./spark-submitwith--driver-class-pathtoaugmentthedriverclasspath

-spark.executor.extraClassPathtoaugmenttheexecutorclasspath

意思是不推薦在spark-env.sh中設置環境變量SPARK_CLASSPATH,可以改成如下推薦的方式:

./spark-sql--masteryarn--driver-class-path/data/hadoop/hive/lib/mysql-connector-java-5.1.38-bin.jar

7.相關文檔

《HBase-0.98.0分布式安裝指南》

《Hive0.12.0安裝指南》

《ZooKeeper-3.4.6分布式安裝指南》

《Hadoop2.3.0源碼反向工程》

《在Linux上編譯Hadoop-2.4.0》

《Accumulo-1.5.1安裝指南》

《Drill1.0.0安裝指南》

《Shark0.9.1安裝指南》

更多,敬請關注技術博客:http://aquester.cublog.cn。


  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved