Spark集群搭建

spark集群搭建需要使用到Hadoop环境,所以在搭建spark集群之前,需要先搭建Hadoop环境,可以参考之前写的 Hadoop—HA集群搭建

一、准备工作

除了上面所说的Hadoop环境外,spark集群搭建还需要配置scala环境,scala环境的配置类似于jdk配置,比较简单,只需下载对应版本的包,解压,在配置文件中添加SCALA_HOME环境变量就可以了,这里就不在做详细说明。

搭建环境:CentOS release 6.5 (Final) + jdk1.8.0_131 + scala-2.11.7
这里使用三台服务器来搭建,分别为node1、node2、node3;
对应的ip为:192.168.1.11、192.168.1.12、192.168.1.13

二、spark具体配置

我这里使用的是spark-2.2.0-bin-hadoop2.6,对应的是Hadoop2.6的版本,首先去spark官网:http://spark.apache.org/downloads.html下载所需的版本,解压到指定目录,我这里是解压到/home/hadoop/app下,解压后目录结构如下:

Spark集群搭建_第1张图片

进入conf目录下,需要配置的文件总共有三个,如下图:

Spark集群搭建_第2张图片

  • 1)配置spark-env.sh

    spark-env.sh主要配置spark集群启动时的相关参数,执行

cp spark-env.sh.template spark-env.sh
vi spark-env.sh

//配置以下信息
#指定jdk
export JAVA_HOME=/home/hadoop/app/jdk1.8.0_131
#指定master
export SPARK_MASTER_IP=node1 
#指定结点使用内核数
export SPARK_WORKER_CORES=2
#指定结点使用内存数
export SPARK_WORKER_MEMORY=1g
#配置hadoop的配置路径
export HADOOP_CONF_DIR=/home/hadoop/app/hadoop-2.6.5/etc/hadoop

这里采用最简配置,其他参数设置均采用默认值,需要设置其他的可参考下面参数配置信息:

#本机ip或hostname
    SPARK_LOCAL_IP=node1
#配置spark的local目录                                
    SPARK_LOCAL_DIRS=/home/hadoop/app/
#master节点ip或hostname
    SPARK_MASTER_IP=node1
#web页面端口                              
    SPARK_MASTER_WEBUI_PORT=8080                  
#spark-shell启动使用核数
    export SPARK_MASTER_OPTS="-Dspark.deploy.defaultCores=4"   
#Worker的cpu核数
    SPARK_WORKER_CORES=2                   
#worker内存大小         
    SPARK_WORKER_MEMORY=8g   
#worker目录                      
    SPARK_WORKER_DIR=/opt/data/spark/work     
#worker自动清理及清理时间间隔     
    export SPARK_WORKER_OPTS=
"-Dspark.worker.cleanup.enabled=true -Dspark.worker.cleanup.appDataTtl=604800"
#history server页面端口、备份数、log日志在HDFS的位置
export SPARK_HISTORY_OPTS=
"-Dspark.history.ui.port=18080 -Dspark.history.retainedApplications=3 -Dspark.history.fs.logDirectory=hdfs://node1:9000/tmp/spark/applicationHistory" 
#配置Spark的log日志目录 
    SPARK_LOG_DIR=/opt/data/spark/log                                
#配置java路径
    export JAVA_HOME=/usr/local/jdk1.8.0_91/ 
#配置scala路径                                             
    export SCALA_HOME=/usr/local/scala-2.10.4/                                    
#配置hadoop的lib路径
    export HADOOP_HOME=/home/hadoop/app/hadoop-2.6.5/lib/native 
#配置hadoop的配置路径             
    export HADOOP_CONF_DIR=/home/hadoop/app/hadoop-2.6.5/etc/hadoop  
  • 2)配置spark-defaults.conf

    spark-defaults.conf主要用于配置spark集群自己的相关信息,执行

 cp spark-defaults.conf.template spark-defaults.conf
 vi spark-defaults.conf

里面的默认配置信息为:

# spark.master                     spark://master:7077
# spark.eventLog.enabled           true
# spark.eventLog.dir               hdfs://namenode:8021/directory
# spark.serializer                 org.apache.spark.serializer.KryoSerializer
# spark.driver.memory              5g
# spark.executor.extraJavaOptions  -XX:+PrintGCDetails -Dkey=value -Dnumbers="one two three"

在采用最简配置时,上述配置都不需要修改,其他参数设置参考如下:

#eventLog是否生效(建议开启,可以对已完成的任务记录其详细日志)
  spark.eventLog.enabled          true    
#eventLog是否启用压缩(cpu性能好的情况下建议开启,以减少内存等的占用)
  spark.eventLog.compress         true   
#eventLog的文件存放位置,与spark-env.sh中的history server配置位置一致,这两个位置必须手动创建
# hadoop fs -mkdir -p /tmp/spark/applicationHistory,否则spark启动失败 
  spark.eventLog.dir              hdfs://node1:9000/tmp/spark/applicationHistory   
#广播块大小
  spark.broadcast.blockSize       8m      
#Executor的cpu核数         
  spark.executor.cores            1        
#Executor的内存大小              
  spark.executor.memory           512m           
#Executor心跳交换时间间隔
  spark.executor.heartbeatInterval        20s    
#文件抓取的timeout
  spark.files.fetchTimeout        120s       
#作业最大失败次数(达到此次数后,该作业不再继续执行,运行失败)         
  spark.task.maxFailures          6   
#设置序列化机制(默认使用java的序列化,但是速度很慢,建议使用Kryo)                  
  spark.serializer                org.apache.spark.serializer.KryoSerializer 
#序列化缓冲大小  
  spark.kryoserializer.buffer.max         256m    
#Akka调度帧大小 
  spark.akka.frameSize            128           
#默认并行数       
  spark.default.parallelism       20        
#最大网络延时             
  spark.network.timeout           300s            
#Spark推测机制(建议开启)     
  spark.speculation               true                      
  • 3)配置slaves文件

    配置结点信息,由于机器数量限制,这里node1既做主节点,又做从节点

node1
node2
node3

三、启动spark集群

spark-2.2.0-bin-hadoop2.6/sbin 目录下

//启动master和slaves
start-all.sh  
//停止master和slaves                  
stop-all.sh                    

jps检查是否运行成功,如果master节点出现Master,worker节点出现Worker说明运行成功!

四、spark-submit提交作业任务

代码需要提交到spark运行,使用命令

./spark-submit  --class cn.test.TestDemo --master spark:node1:7077 --executor-memory 2g --num-executors 5  /home/hadoop/jobs/testdemo-0.0.1-SNAPSHOT.jar

spark-submit 在默认情况下它会从Spark文件夹的conf/spark-defaults.conf读取参数,如果配置了spark.master, 你就可以不用在调用spark-submit脚本时设置–master参数,如果你不清楚配置项来自哪里,你可以使用–verbose打印详细的调试信息

以上都是自己在学习过程中的总结整理,如果有错误的地方,欢迎留言指正。

你可能感兴趣的:(大数据相关,框架搭建)