linux系統: CentOS6.7 Hadoop版本: 2.6.5 zookeeper版本: 3.4.8
192.168.179.201: m1 192.168.179.202: m2 192.168.179.203: m3 m1: Zookeeper, Namenode, DataNode, ResourceManager, NodeManager, Master, Worker m2: Zookeeper, Namenode, DataNode, ResourceManager, NodeManager, Worker m3: Zookeeper, DataNode, NodeManager, Worker
spark源碼編譯教程 http://blog.csdn.net/yanran1991326/article/details/46506595
Maven教程: http://wiki.jikexueyuan.com/project/maven/
export M2_HOME=/home/centos/soft/maven PATH=$PATH:$M2_HOME/bin
source /etc/profile
mvn -v
/etc/profile
文件export MAVEN_OPTS=-Xmx2g -XX:MaxPermSize=512M -XX:ReservedCodeCacheSize=512m
(2)Windows下:
配置環境變量:
新建變量:MAVEN_OPTS
, 並將變量MAVEN_OPTS
的值設置成-Xmx2g -XX:MaxPermSize=512M -XX:ReservedCodeCacheSize=512m
html
spark源碼下載官方地址: http://spark.apache.org/downloads.html spark源碼編譯官方指南: http://spark.apache.org/docs/1.5.0/building-spark.html spark源碼編譯教程: http://blog.csdn.net/yanran1991326/article/details/46506595
scala2.1.2
編譯的spark 部署包,則要先執行change-scala-version.sh
文件: ./dev/change-scala-version.sh 2.10
(若要指定scala的編譯版本時, 必須先執行該指令)mvn -Phadoop-2.6 -Pyarn -Dhadoop.version=2.6.5 -Dyarn.version=2.6.5 -Dscala-2.10 -DskipTests clean package
指令參數使用介紹:node
–Phadoop-$系列: 打包時所用的Hadoop系列號,不加此參數時hadoop爲pom.xml的默認系列。 -Dhadoop.version=$版本號: 打包時所用的Hadoop版本號,不加此參數時不可從HDFS上讀取數據。 –Pyarn: 是否支持Hadoop YARN,不加參數時爲不支持yarn。 -Dyarn.version=$版本號: 是否支持Hadoop YARN,不加參數時爲不支持yarn調度。 –Phive: 是否在Spark SQL中支持hive,不加此參數時爲不支持hive。(若要使用Hive on Spark功能時, 不能添加次參數) -Dscala-$版本號: 打包時所用的Scala系列號,不加此參數時Scala版本爲pom.xml的默認版本, 在使用此函數以前必須先執行./dev/change-scala-version.sh 2.10指令,不然無效 -DskipTests: 是否在編譯的過程當中略過測試,加此參數時爲略過。
(2)編譯成功:
編譯成功後的Spark引用包的存放位置:linux
$Spark源碼目錄/assembly/target/scala-2.10/spark-assembly-1.6.3-hadoop2.6.5.jar
該包的只是一個引用包, 應把tgz
解壓安裝的$SPARK_HOME/lib
目錄下的assembly
刪除, 而後將該包放入到$SPARK_HOME/lib
目錄下sql
make-distribution
編譯工具./make-distribution.sh --name "hadoop2-without-hive" --tgz "-Pyarn,hadoop-provided,hadoop-2.4,parquet-provided"
Spark2.0版本以後(hadoop版本可隨實際狀況修改)
./dev/make-distribution.sh --name "hadoop2-without-hive" --tgz "-Pyarn,hadoop-provided,hadoop-2.7,parquet-provided"
(2)編譯成功
編譯成功後的Spark安裝包的存放位置:apache
$Spark源碼目錄/spark-1.6.0-bin-hadoop2-without-hive-src.tgz
該包是一個安裝包, 用tar解壓出安裝便可, 不推薦使用centos
http://www.scala-lang.org/download/
http://spark.apache.org/downloads.html
Master m1 Slaves m3, m4, m5
tar -zxvf scala-2.10.6/ -C /home/centos/soft/scala tar -zxvf spark-1.6.0-bin-hadoop2.6/ -C /home/centos/soft/spark
vi /etc/profile
## Spark export SCALA_HOME=/home/centos/soft/scala export SPARK_HOME=/home/centos/soft/spark export CLASSPATH=$CLASSPATH:$SPARK_HOME/lib export PATH=$PATH:$SCALA_HOME/bin:$SPARK_HOME/sbin:$SPARK_HOME/bin
source /etc/profile
cp /home/centos/soft/hadoop/etc/hadoop/hdfs-site.xml /home/centos/soft/spark/conf cp /home/centos/soft/hadoop/etc/hadoop/yarn-site.xml /home/centos/soft/spark/conf cp /home/centos/soft/hive/conf/hive-site.xml /home/centos/soft/spark/conf
Spark官方配置參考: https://spark.apache.org/docs/1.2.0/configuration.html Hive On Spark配置參考: https://cwiki.apache.org/confluence/display/Hive/Configuration+Properties#ConfigurationProperties-Spark
vi $SPARK_HOME/conf/spark-env.sh
export JAVA_HOME=/home/centos/soft/jdk1.7.0_67 export HADOOP_HOME=/home/centos/soft/hadoop export HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoop export YARN_CONF_DIR=$HADOOP_HOME/etc/hadoop export SCALA_HOME=/home/centos/soft/scala export SPARK_HOME=/home/centos/soft/spark export SPARK_LOCAL_DIRS=$SPARK_HOME/tmp ## spark相關的臨時文件 export SPARK_DIST_CLASSPATH=$(/home/centos/soft/hadoop/bin/hadoop classpath) export CLASSPATH=$CLASSPATH:$JAVA_HOME/lib:$HADOOP_HOME/lib:$SCALA_HOME/lib:$SPARK_HOME/lib export PATH=$PATH:$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$SCALA_HOME/bin:$SPARK_HOME/bin:$SPARK_HOME/sbin export SPARK_MASTER_IP=m1 export SPARK_MASTER_PORT=7077 export SPARK_MASTER_WEBUI_PORT=8080 export SPARK_WORKER_CORES=3 ## 容許Spark應用程序在每臺機器上使用的內核總數 export SPARK_WORKER_MEMORY=512m ## 容許Spark應用程序在每臺機器上使用的總內存量,例如1000m,2g(默認值:總內存爲1 GB);請注意,每一個應用程序的單獨內存都使用其spark.executor.memory屬性配置 export SPARK_WORKER_INSTANCES=1 ## 在每臺計算機上運行的工做程序實例數(默認值:1)。若是你有很是大的機器,而且想要多個Spark工做進程,你可使它超過1。若是你這樣設置,確保顯式地設置SPARK_WORKER_CORES以限制每一個工人的核心,不然每一個工人將嘗試使用全部核心。 export SPARK_DAEMON_MEMORY=512m ## 要分配給Spark主服務器和工做程序守護程序自己的內存(默認值:512m)。 export SPARK_EXECUTOR_CORES=1 ## 每一個Executor使用的CPU核數,每一個Exector使用的總核心spark.max.cores在spark-default.conf中設置 export SPARK_EXECUTOR_MEMORY=512m ## 每一個Executor使用多大的內存 export SPARK_DRIVER_MEMORY=512m export SPARK_YARN_AM_CORES=1 export SPARK_YARN_AM_MEMORY=512m export SPARK_YARN_AM_WAITTIME=200ms export SPARK_YARN_APP_NAME=Spark_On_Yarn export SPARK_YARN_EXECUTOR_MEMORYOVERHEAD=75 export SPARK_TESTING_MEMORY=536870912 export SPARK_WORKER_DIR=$SPARK_HOME/logs/workerDir export SPARK_LOG_DIR=$SPARK_HOME/logs/logDir export SPARK_PID_DIR=$SPARK_HOME/logs/pidDir export HIVE_SERVER2_THRIFT_PORT=10000 export HIVE_SERVER2_THRIFT_BIND_HOST=0.0.0.0
vi $SPARK_HOME/conf/spark-default.conf
spark.master spark://master:7077 spark.shuffle.service.port 7337 spark.eventLog.enabled true spark.eventLog.compress true spark.eventlog.dir /home/centos/soft/spark/logs/spark.log spark.serializer org.apache.spark.serializer.KryoSerializer spark.driver.memory 5g spark.executor.extraJavaOptions -XX:+PrintGCDetails -Dkey=value -Dnumbers="one two three" spark.sql.parquet.binaryAsString true spark.sql.parquet.mergeSchema true spark.sql.parquet.cacheMetadata false spark.sql.hive.convertMetastoreParquet false spark.dynamicAllocation.enabled true # 開啓動態資源分配 spark.dynamicAllocation.minExecutors 1 # 每一個Application最小分配的executor數 spark.dynamicAllocation.maxExecutors 30 # 每一個Application最大併發分配的executor數 spark.dynamicAllocation.schedulerBacklogTimeout 1s spark.dynamicAllocation.sustainedSchedulerBacklogTimeout 5s spark.scheduler.mode FAIR # 調度模式 spark.executor.instances 1 # standalone模式下限制每一個Executor最大核心數 spark.cores.max 3 # Yarn模式下限制每一個Executor最大核心數
$SPARK_HOME/conf/spark-default.conf
配置文件中將spark.dynamicAllocation.enabled
配置項改成true
$SPARK_HOME/lib/spark-1.6.0-yarn-shuffle.jar
拷貝到每臺NodeManager
節點的${HADOOP_HOME}/share/hadoop/yarn/lib/
下m3 m4 m5
scp -r /home/centos/soft/scala m3:/home/centos/soft/ scp -r /home/centos/soft/scala m4:/home/centos/soft/ scp -r /home/centos/soft/scala m5:/home/centos/soft/
start-yarn.sh
m1:8088
start-master.sh ## 啓動主節點: start-slaves.sh ## 啓動從節點:
m1:8080
./bin/spark-submit --class org.apache.spark.examples.SparkPi --master yarn --deploy-mode cluster --driver-memory 1g --executor-memory 1g --executor-cores 1 --queue thequeue lib/spark-assembly-1.6.0-hadoop2.6.0.jar 10