over 2 years ago

Spark1.2.0 for Hadoop 2.4 or later的版本安裝
Spark安裝比Hadoop簡單很多,但是要記得先安裝Scala啊

wget http://d3kbcqa49mib13.cloudfront.net/spark-1.2.0-bin-hadoop2.4.tgz
#解壓可能會失敗,可試著重新下載看看
tar zxf spark-1.2.0-bin-hadoop2.4.tgz

mv spark-1.2.0-bin-hadoop2.4 spark120

cd spark120/conf/

cat > slaves << EOF
hadoop1
hadoop2
hadoop3
EOF

cp spark-env.sh.template spark-env.sh
vi spark-env.sh
#這兩句是我添加上去的
export JAVA_HOME=/usr/java/jdk1.8.0_25
export SCALA_HOME=/app/scala2114
#在檔尾添加
export SPARK_MASTER_IP=hadoop1
export SPARK_MASTER_PORT=7077
export SPARK_WORKER_CORES=1
export SPARK_WORKER_INSTANCES=1
export SPARK_WORKER_MEMORY=3g

cd /app/hadoop
scp -r spark120 hadoop@hadoop2:/app/hadoop
scp -r spark120 hadoop@hadoop3:/app/hadoop

#在主結點上啟動
cd spark120
sbin/start-all.sh

#檢視服務,應該要有Master、Worker服務啟動
jps

#停止所有節點
sbin/stop-all.sh

檢視Spark Web介面
http://hadoop:8080

啟動一個交互式介面客戶端

bin/spark-shell --master spark://hadoop1:7077
#指定記憶體跟使用內核
bin/spark-shell --master spark://haopp1:7077 --executor-memory 1g --total-executor-cores 1

對hdfs內的檔案進行wordcount

sc.textFile("hdfs://hadoop1:8000/dataguru/test/LICENSE.txt").flatMap(_.split(" ")).map(x=>(x,1)).reduceByKey(_+_).map(x=>(x._2,x._1)).sortByKey(false).map(x=>(x._2,x._1)).take(10)

如果你想觀察每一步的指令

bin/spark-shell --master spark://hadoop1:7077 --executor-memory 2g --driver-memory 1g 
val rdd=sc.textFile("hdfs://hadoop1:8000/dataguru/data/NOTICE")
rdd.cache()
val wordcount=rdd.flatMap(_.split(" ")).map(x=>(x,1)).reduceByKey(_+_)
wordcount.take(10)
val wordsort=wordcount.map(x=>(x._2,x._1)).sortByKey(false).map(x=>(x._2,x._1))
wordsort.take(10)

提交執行程式

bin/spark-submit --master spark://hadoop1:7077 --executor-memory 2g --class org.apache.spark.examples.SparkPi lib/spark-examples-1.1.0-hadoop2.2.0.jar 1000
#--master spark://hadoop1:7077 提交到哪個集群
#--executor-memory 2g 執行時使用多少記憶體
#--class org.apache.spark.examples.SparkPi 執行哪個class
#lib/spark-examples-1.1.0-hadoop2.2.0.jar 運行的jar檔
#class 指定的參數 1000個Task

bin/spark-submit --master spark://hadoop1:7077 --executor-memory 2g --class org.apache.spark.examples.SparkPi --total-executor-cores 2 lib/spark-examples-1.1.0-hadoop2.2.0.jar 1000

參數說明(從老師博客抄來的)
Spark 工具簡介
– Spark 交互工具spark-shell
– Spark 應用程序部署工具spark-submit
– 參數說明參見http://blog.csdn.net/book_mmicky/article/details/25714545

Options:
--master MASTER_URL spark://host:port, mesos://host:port, yarn, or local.
--deploy-mode DEPLOY_MODE driver運行之處,client運行在本機,cluster運行在集群
--class CLASS_NAME 應用程序包的要運行的class
--name NAME 應用程序名稱
--jars JARS 用逗號隔開的driver本地jar包列表以及executor類路徑
--py-files PY_FILES 用逗號隔開的放置在Python應用程序PYTHONPATH上的.zip, .egg, .py文件列表
--files FILES 用逗號隔開的要放置在每個executor工作目錄的文件列表
--properties-file FILE 設置應用程序屬性的文件放置位置,默認是conf/spark-defaults.conf
--driver-memory MEM driver內存大小,默認512M
--driver-java-options driver的java選項
--driver-library-path driver的庫路徑Extra library path entries to pass to the driver
--driver-class-path driver的類路徑,用--jars 添加的jar包會自動包含在類路徑裡
--executor-memory MEM executor內存大小,默認1G

Spark standalone with cluster deploy mode only:
--driver-cores NUM driver使用內核數,默認為1
--supervise 如果設置了該參數,driver失敗是會重啟

Spark standalone and Mesos only:
--total-executor-cores NUM executor使用的總核數

YARN-only:
--executor-cores NUM 每個executor使用的內核數,默認為1
--queue QUEUE_NAME 提交應用程序給哪個YARN的隊列,默認是default隊列
--num-executors NUM 啟動的executor數量,默認是2個
--archives ARCHIVES 被每個executor提取到工作目錄的檔案列表,用逗號隔開

← Spark teaching (1) -Hadoop2.6 installation Spring中取得session,request等對象 →
 
comments powered by Disqus