Spark简介
Apache Spark 是专为大规模数据处理而设计的快速通用的计算引擎。
Spark最初作为一个研究项目,诞生于加州大学伯克利分校AMP实验室,主要原因是AMP实验室的研究人员发现在机器学习迭代算法场景下,Hadoop MapReduce的效率很低。为了迭代算法和交互式查询两种典型的场景,于是Spark应运而生。
Spark刚诞生时,常常被称为内存计算,主要原因是在典型应用中,Spark读取HDFS中的文件,加载到内存,在内存中使用弹性分布式数据集(Resilient Distributed Dataset,RDD)来组织数据。RDD可以重用,支持重复访问,在机器学习的各个迭代中它都会驻留在内存,这样可以显著的提升性能。即便是必须使用磁盘进行复杂计算的场景,Spark也常常比Hadoop MapReduce更加高效。
Saprk是一个通用计算框架,包含了特定场景下的计算库:Streaming、SQL、MLlib、Graphx等,除了支持常见的MapReduce范式,还能够支持图计算、流式计算等复杂计算场景,在很大程度上弥补了Hadoop的不足。
Spark分布式安装部署
安装Scala
首先在集群中的主节点服务器hadoop-1中进行安装配置,Scala安装包可以到官方网站https://www.scala-lang.org/进行下载。
使用Xftp将Scala和Spark安装包上传到hadoop-1的/usr目录下:
安装Scala,进入/user目录,使用tar命令将压缩包进行解压,执行命令:
# tar zxvf scala-2.12.2.tgz
解压完成后会在/usr目录下生成scala-2.12.2目录:
使用vim编辑环境变量:
# vim /etc/profile
新增内容如下:
export SCALA_HOME=/usr/scala-2.12.2
export PATH=$SCALA_HOME/bin:$PATH
保存退出,,执行命令使修改生效:
# source /etc/profile
执行以下命令查看安装是否成功:
# scala -version
显示版本信息则安装成功,hadoop-2和hadoop-3节点主机环境变量做相同配置。
安装Spark
Spark安装包可以到官方网站http://spark.apache.org/进行下载。
安装Spark,进入/user目录,使用tar命令将压缩包进行解压,执行命令:
# tar zxvf spark-2.4.4-bin-hadoop2.7.tgz
解压完成后会在/usr目录下生成spark-2.4.4-bin-hadoop2.7目录:
使用vim编辑环境变量:
# vim /etc/profile
新增内容如下:
export SPARK_HOME=/usr/spark-2.4.4-bin-hadoop2.7
export PATH=$SPARK_HOME/bin:$PATH
保存退出,,执行命令使修改生效:
# source /etc/profile
Spark配置
进入Spark的配置文件目录,并查看该目录下的文件:
# cd /usr/spark-2.4.4-bin-hadoop2.7/conf/
# ll
执行以下命令,创建spark-env.sh文件和slaves文件:
# cp spark-env.sh.template spark-env.sh
# cp slaves.template slaves
使用vim编辑配置文件spark-env.sh:
# vim spark-env.sh
新增以下内容:
export JAVA_HOME=/usr/java/jdk1.8.0_201-amd64
export HADOOP_HOME=/usr/hadoop-2.7.7
export HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoop
export SCALA_HOME=/usr/scala-2.12.2
export SPARK_HOME=/usr/spark-2.4.4-bin-hadoop2.7
export SPARK_MASTER_IP=hadoop-1
export SPARK_EXECUTOR_MEMORY=1G
保存退出,使用vim编辑配置文件slaves文件:
# vim slaves
新增以下内容:
hadoop-2
hadoop-3
保存退出。
部署
使用scp命令将Scala和Spark分别远程拷贝到hadoop-2和hadoop-3节点主机中:
# scp -r /usr/scala-2.12.2 hadoop-2:/usr/
# scp -r /usr/scala-2.12.2 hadoop-3:/usr/
# scp -r /usr/spark-2.4.4-bin-hadoop2.7 hadoop-2:/usr/
# scp -r /usr/spark-2.4.4-bin-hadoop2.7 hadoop-3:/usr/
在hadoop-2和hadoop-3两台主机的/usr目录下可以看到已经拷贝成功:
启动Spark
启动Spark首先要保证Hadoop集群在运行中。
在hadoop-1主节点中进行启动,进入Spark的sbin目录下,执行启动命令:
# cd /usr/spark-2.4.4-bin-hadoop2.7/sbin/
# ./start-all.sh
启动完成后,使用jps命令可以查看启动的进程。
hadoop-1主节点为Master进程:
hadoop-2和hadoop-3节点为Work进程:
浏览器访问:http://192.168.44.128:8080/:
此处若在启动Spark前,已经事先将Hadoop、ZooKeeper、Hbase等启动完成,则8080端口会被ZooKeeper占用,这是由于ZooKeeper 3.5版本新特性决定的,此时Spark启动端口会被换成8081,查看Spark Master日志文件内容,可以看到该端口变换信息。
使用spark-shell命令,可以与Spark进行交互:
浏览器访问:http://192.168.44.128:4040/jobs/,可以在Web页面找那个查看Job情况:
至此Spark的安装配置完成。