Apache Spark介绍及集群搭建

简介

Spark是一个针对于大规模数据处理的统一分析引擎。其处理速度比MapReduce快很多。其特征有:

1、速度快

spark比mapreduce在内存中快100x,比mapreduce在磁盘中快10x
spark比mapreduce快的主要2个原因:
  1)spark的job中间结果数据可以保存在内存中,mapreduce的job中间结果数据只能够保存在磁盘。后面又有其他的job需要依赖于前面job的输出结果,对于spark来说,直接可以从内存获取得到,
大大减少磁盘io操作,对于mapreduce来说就需要进行大量磁盘io操作,性能来说肯定是降低了。​
  2)mapreduce以进程的方式运行在整合yarn中,比如一个job有100个mapTask,这个时候运行100个map task就需要启动100个进程。
spark以线程的方式运行的进程中,运行100个map task可以只启动1个进程,在一个进程中运行100个线程。启动一个进程和启动一个线程时间代价肯定不一样,启动进程需要的时间和调度大大增加。

2、易用性

可以快速写一个Spark应用程序通过 java/scala/python/R/SQL不同的语言去进行代码开发

3、通用性

Spark框架是一个生态系统,有很多不同的模块(sparksql、sparkStreaming、Mlib、Graphx)应用到不同的业务场景中。

4、兼容性

Spark程序就是一个计算任务的程序,哪里可以给当前这个任务提供对应的资源,我们就可以把这个任务提交到哪里去运行。

standAlone
    spark自带的集群模式,任务的资源分配由Master负责。

yarn
    spark可以把任务提交到yarn中去运行,任务的资源分配由resourceManager负责

mesos
    是一个apache开源的类似于yarn的资源管理平台

 

Spark集群的安装部署

1 新建文件夹,分别用来存放压缩包、解压后的文件

mkdir -p /export/software   
mkdir -p /export/servers 

2 把安装文件放到服务器上的software文件夹内 然后解压到servers文件夹内

cd /export/software    
tar -zxvf spark-2.1.3-bin-hadoop2.7.tgz -C /export/servers/
cd /export/servers
mv spark-2.1.3-bin-hadoop2.7 spark

3 修改配置文件

cd /export/servers/spark/conf
mv spark-env.sh.template spark-env.sh
vim spark-env.sh 
#指定java环境变量
export JAVA_HOME=/export/servers/jdk1.8.0_141
#指定spark集群中老大地址 
export SPARK_MASTER_HOST=node1
#指定spark集群中老大端口
export SPARK_MASTER_PORT=7077
mv slaves.template slaves
vim slaves 

#指定哪些节点是worker
node2
node3

4 添加spark的环境变量

vim  /etc/profile

export SPARK_HOME=/export/servers/spark
export PATH=$PATH:$SPARK_HOME/bin:$SPARK_HOME/sbin

5 分发spark的安装目录和spark变量

scp -r spark node2:/export/servers
scp -r spark node3:/export/servers

scp /etc/profile node2:/etc
scp /etc/profile node3:/etc

6 在所有节点执行脚本

source /etc/profile

启动和关闭Spark集群

在主节点上的spark目录下sbin目录执行
./start-all.sh
./stop-all.sh

 

7 基于zk构建Spark HA集群

#安装zk集群

#修改配置文件
vim spark-env.sh

#需要注释掉手动指定那个节点是master
#指定spark集群中老大地址
#export SPARK_MASTER_HOST=node1

#引入zk相关配置 构建sparkHA
export SPARK_DAEMON_JAVA_OPTS="-Dspark.deploy.recoveryMode=ZOOKEEPER  -Dspark.deploy.zookeeper.url=node1:2181,n
ode2:2181,node3:2181  -Dspark.deploy.zookeeper.dir=/spark"

#分发spark-env.sh 到其他节点
scp spark-env.sh node2:$SPARK_HOME/conf
scp spark-env.sh node3:$SPARK_HOME/conf

#启动zk器群
#启动spark集群

#为了保证master的高可用 可以在其他节点单独启动Master
sbin/start-master.sh

 

Spark集群的管理界面:

master主机名或者ip:8080

posted @ 2018-02-10 16:53  青衫仗剑  阅读(627)  评论(0编辑  收藏  举报