Spark on Yarn集群高可用搭建
2017-02-21 09:31
537 查看
软件环境:
linux系统: CentOS6.7 Hadoop版本: 2.6.5 zookeeper版本: 3.4.8
主机配置:
一共m1, m2, m3这五部机, 每部主机的用户名都为centos
192.168.179.201: m1 192.168.179.202: m2 192.168.179.203: m3 m1: Zookeeper, Namenode, DataNode, ResourceManager, NodeManager, Master m2: Zookeeper, Namenode, DataNode, ResourceManager, NodeManager, Worker m3: Zookeeper, DataNode, NodeManager, Worker
一.编译Spark源码
参考资料:
spark源码编译教程 http://blog.csdn.net/yanran1991326/article/details/46506595[/code]1.安装Maven: (Linux下,若使用Spark自带的编译器可跳过此步)
Maven教程: http://wiki.jikexueyuan.com/project/maven/[/code]1.1. 下载Maven安装包
1.2. 解压Maven到指定位置
1.3. 编辑/etc/profile文件
export M2_HOME=/home/centos/soft/maven PATH=$PATH:$M2_HOME/bin1.4. 刷新一下/etc/profile文件
source /etc/profile1.5. 检验是否安装成功,输入以下指令
mvn -v1.6. 设置maven内存大小
(1)Linux下:
配置环境变量,编辑/etc/profile文件export MAVEN_OPTS=-Xmx2g -XX:MaxPermSize=512M -XX:ReservedCodeCacheSize=512m
(2)Windows下:
配置环境变量:
新建变量:MAVEN_OPTS, 并将变量MAVEN_OPTS的值设置成:-Xmx2g -XX:MaxPermSize=512M -XX:ReservedCodeCacheSize=512m2.编译spark源码:
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[/code]2.1.下载spark源码
2.2.使用spark源码编译: (推荐使用第一种方案, 因为第二种方案亲测编译成功后各种缺包)
2.2.1.方案一:使用maven编译: Linux下 (推荐使用这种方法)
(1)编译指令:
如果想生成一个用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
指令参数使用介绍:–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引用包的存放位置:$Spark源码目录/assembly/target/scala-2.10/spark-assembly-1.6.3-hadoop2.6.5.jar
该包的只是一个引用包, 应把tgz解压安装的$SPARK_HOME/lib目录下的assembly删除, 然后将该包放入到$SPARK_HOME/lib目录下
2.2.2.方案二:使用spark源码包中自带的make-distribution编译工具
(1)编译指令:
先编译Spark源码(若需要用到parquet功能,则带上parquet-provided参数)
Spark2.0版本之前(hadoop版本可随实际情况修改)./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安装包的存放位置:$Spark源码目录/spark-1.6.0-bin-hadoop2-without-hive-src.tgz
该包是一个安装包, 用tar解压出安装即可, 不推荐使用二.搭建Spark集群
0.安装准备
1.下载Scalahttp://www.scala-lang.org/download/
2.下载Sparkhttp://spark.apache.org/downloads.html1.集群规划(在m1上操作,然后在分发到其他主机)
Master m1 Slaves m1, m2, m32.解压Scala,Spark安装包
tar -zxvf scala-2.10.6/ -C /home/centos/soft/scala tar -zxvf spark-1.6.0-bin-hadoop2.6/ -C /home/centos/soft/spark3.配置环境变量
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/binsource /etc/profile4.拷贝hdfs-site.xml, yarn-site.xml, hive-site.xml文件拷贝到spark的配置目录下
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/conf5.编辑$/SPARK_HOME/conf/spark-env.sh文件
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[/code]vi $SPARK_HOME/conf/spark-env.shexport 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.06.编辑$SPARK_HOME/conf/spark-default.conf文件
vi $SPARK_HOME/conf/spark-default.confspark.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最大核心数7.实现Spark动态分配资源功能
将$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/下8.编辑$SPARK_HOME/conf/slaves文件
m1 m2 m39.将安装文件分发到其他主机上
scp -r /home/centos/soft/scala m1:/home/centos/soft/ scp -r /home/centos/soft/scala m2:/home/centos/soft/ scp -r /home/centos/soft/scala m3:/home/centos/soft/10.启动spark集群(注意: 启动spark集群之前,需先启动YARN)
(1)在m1, m2上分别启动YARN集群start-yarn.sh
(2)在WebUI上查看启动情况m1:8088
(3)在m1主机上启动主从节点:start-master.sh ## 启动主节点: start-slaves.sh ## 启动从节点:
(4)在WebUI上查看启动情况m1:808011.测试实例
./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
相关文章推荐
- Spark2.0.1 on yarn with hue 集群搭建部署(二)spark on yarn搭建
- Spark On Yarn集群环境搭建
- Spark on Yarn集群搭建
- hadoop集群的搭建脚本及构思(N):一个简化的Hadoop+Spark on Yarn集群快速搭建
- spark2.0.1 on yarn with hue 集群搭建部署(三)msyql安装
- spark2.0.1 on yarn with hue 集群搭建部署(四)hive、hive metastore安装
- Spark2.0.1 on yarn with hue 集群搭建部署(五)hue安装支持hadoop
- Spark2.0.1 on yarn with hue 集群搭建部署(一)基础环境配置
- Spark on yarn搭建实践
- 7.基于yarn的Spark集群搭建
- Spark集群搭建_YARN
- Spark On YARN 集群安装部署
- Spark on Yarn+Hbase环境搭建指南(三)Spark安装
- Spark集群搭建+基于zookeeper的高可用HA
- Spark On YARN 集群安装部署
- spark on yarn 集群 安装
- Spark on Yarn+Hbase环境搭建指南(一)准备工作
- Spark on YARN集群模式作业运行全过程分析
- Spark On YARN 集群安装部署