Spark集群环境的搭建

时间:2022-04-08 09:19:13

前提:已经安装好了hadoop, 说明,这次安装的是spark-1.4.0-bin-hadoop2.6.tgz版本,这个版本是兼容hadoop2.7的hdfs和yarn的

软件准备:

scala-2.10.4 ,下载地址
spark-1.4.0-bin-hadoop2.6.tgz 下载地址

1. 安装scala-2.10.4

将下载好的scala-2.11.4.tgz复制到/usr/lib

1.1 解压安装包

sudo tar -zxf scala-2.11.4.tgz

1.2 设置scala环境变量

sudo vim /etc/profile

打开之后在末尾添加

#scale
export SCALA_HOME=/usr/lib/scala-2.10.4
export PATH=$SCALA_HOME/bin:$PATH

使配置生效

source /etc/profile

1.3 检查是否安装成功

scala -version

出现Scala code runner version 2.10.4 – Copyright 2002-2013, LAMP/EPFL说明安装成功

2. 安装spark-1.4.0-bin-hadoop2.6

将下载的 spark-1.4.0-bin-hadoop2.6.tar.gz 复制到/usr目录

2.1 解压并且改名

sudo tar zxvf spark-1.4.0-bin-hadoop2.6.tgz
sudo mv spark-1.4.0-bin-hadoop2.6/ spark-1.4.0-hadoop2.6

2.2 配置环境

sudo vi /etc/profile

打开之后在末尾添加

#spark
export SPARK_HOME=/usr/spark-1.4.0-hadoop2.6
export PATH=$SPARK_HOME/bin:$PATH

使资源生效

source /etc/profile

2.3 配置Spark环境

配置 spark-env.sh文件

进入到 spark的conf目录, 拷贝一份spark-env.sh.template 并且改名为 spark-env.sh

cd $SPARK_HOME/conf
sudo cp spark-env.sh.template spark-env.sh

sudo vi spark-env.sh 添加以下内容:

export JAVA_HOME=/usr/local/java/jdk1.7.0_79
export HADOOP_HOME=/home/hadoop/MyCloudera/APP/hadoop/hadoop
export HADOOP_CONF_DIR=${HADOOP_HOME}/etc/hadoop
export SCALA_HOME==/usr/lib/scala-2.10.4
export SPARK_HOME=/usr/spark-1.4.0-hadoop2.6
export SPARK_MASTER_IP=master
export SPARK_MASTER_PORT=7077
export SPARK_MASTER_WEBUI_PORT=8099

#每个Worker使用的CPU核数
export SPARK_WORKER_CORES=1
#每个Slave中启动几个Worker实例
export SPARK_WORKER_INSTANCES=1
#每个Worker使用多大的内存
export SPARK_WORKER_MEMORY=2G
#Worker的WebUI端口号
export SPARK_WORKER_WEBUI_PORT=8081
#每个Executor使用使用的核数
export SPARK_EXECUTOR_CORES=1
#每个Executor使用的内存
export SPARK_EXECUTOR_MEMORY=1G

export SPARK_CLASSPATH=$SPARK_HOME/conf/:$SPARK_HOME/lib/*
export SPARK_CLASSPATH=$SPARK_CLASSPATH:$CLASSPATH
export LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:$HADOOP_HOME/lib/nativ

配置Slave文件

拷贝一份slaves.template并且改名为slaves

sudo cp slaves.template slaves

sudo vim slaves,然后根据自己对节点的设置,按照下面类似的方法添加内容

master
node01
node02

2.4 把配置好的,所有文件,复制一份到node节点的服务器上

建议先打包,然后使用scp传到所有的node节点,然后在所有的node的节点的/usr/目录下解压

2.5 启动Spark并且测试

启动Spark(前提是先启动hadoop,以后会用到其hdfs的系统) ,先启动master,再启动slave, 操作全部在主节点进行, 或者直接全部启动
如果启动失败,根据提示进行处理

#方法一:
cd $SPARK_HOME/sbin/
./start-master.sh
./start-slaves.sh
#方法二
./start-all.sh

启动 master机器jps有以下显示,相对于hadoop, 多了一个master,一个worker

14930 ResourceManager
16437 Jps
15033 NodeManager
16324 Worker
14510 DataNode
16166 Master
14753 SecondaryNameNode
14409 NameNode

slave机器jps有如下显示,多了一个worker

2610 NodeManager
2816 Worker
2888 Jps
2466 DataNode

使用spark shell进行测试
在hadoop用户下,进入spark 的bin目录,打开spark-shell命令编程

cd $SPARK_HOME/bin
spark-shell
打开后可以看到一个大大的Spark的欢迎图和版本,说明启动成功

开始测试

val text= sc.parallelize(Seq("aa","aa","bb","cc"))
#回车可以看到 text: org.apache.spark.rdd.RDD[String] = ParallelCollectionRDD[0] at parallelize at <console>:21

我们看一看其第一个元素

text.take(1)
#回车后最后出现一堆info信息,最后一行出现 res0: Array[String] = Array(aa)

我们统计其元组数量

text.count
#回车后出现 res1: Long = 4

过滤,统计不含aa的元组数量

# 注意这条命令的 > 和!之间要有一个空格
text.filter(r => !r.contains("aa")).count
#回车后出现
res3: Long = 2

如果想自己写相应的spark测试,可以参考这篇文章,这篇文章使用的是idea的编译器,eclipse的我没用过,估计除了打包这里不一样,其他都是一样的
Spark Idea搭建实战

官网给了很多例子,均在 spark-1.4.0-bin-hadoop2.7\examples\src\main 文件夹下,可做参考