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.-bin-hadoop2..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
Apache Spark介绍及集群搭建的更多相关文章
- Spark高可用集群搭建
Spark高可用集群搭建 node1 node2 node3 1.node1修改spark-env.sh,注释掉hadoop(就不用开启Hadoop集群了),添加如下语句 export ...
- spark完全分布式集群搭建
最近学习Spark,因此想把相关内容记录下来,方便他人参考,也方便自己回忆吧 spark开发环境的介绍资料很多,大同小异,很多不能一次配置成功,我以自己的实际操作过程为准,详细记录下来. 1.基本运行 ...
- spark教程(一)-集群搭建
spark 简介 建议先阅读我的博客 大数据基础架构 spark 一个通用的计算引擎,专门为大规模数据处理而设计,与 mapreduce 类似,不同的是,mapreduce 把中间结果 写入 hdfs ...
- nginx+apache+php+mysql服务器集群搭建
由于需要搭建了一个基本的服务器集群.具体的配置方案先不说了,到有时间的时候再介绍.下面介绍下整 个方案的优点. 我总共准备了四台阿里云的主机,架设分别是A,B1,B2,C,A在集群的最前面,B1和B2 ...
- [spark]-Spark2.x集群搭建与参数详解
在前面的Spark发展历程和基本概念中介绍了Spark的一些基本概念,熟悉了这些基本概念对于集群的搭建是很有必要的.我们可以了解到每个参数配置的作用是什么.这里将详细介绍Spark集群搭建以及xml参 ...
- Spark —— 高可用集群搭建
一.集群规划 这里搭建一个3节点的Spark集群,其中三台主机上均部署Worker服务.同时为了保证高可用,除了在hadoop001上部署主Master服务外,还在hadoop002和hadoop00 ...
- Hadoop介绍及集群搭建
简介 Hadoop 是 Apache 旗下的一个用 java 语言实现开源软件框架,是一个开发和运行处理大规模数据的软件平台.允许使用简单的编程模型在大量计算机集群上对大型数据集进行分布式处理.它的核 ...
- 2. zookeeper介绍及集群搭建
ZooKeeper 概述 Zookeeper 是一个分布式协调服务的开源框架. 主要用来解决分布式集群中 应用系统的一致性问题,例如怎样避免同时操作同一数据造成脏读的问题. ZooKeeper 本质上 ...
- 物联网微消息队列MQTT介绍-EMQX集群搭建以及与SpringBoot整合
项目全部代码地址:https://github.com/Tom-shushu/work-study.git (mqtt-emqt 项目) 先看我们最后实现的一个效果 1.手机端向主题 topic111 ...
随机推荐
- [datatables杂记] sAjaxSource 数据源 Search 后 fnInitComplete 不执行。
var oTable = $('#div_list').dataTable({ "oLanguage": {//语言国际化 "sUrl": "/Adm ...
- java 并发时使用条件变量--Condition
lock--unlock的方式在实际中使用较少,一般使用synchronized获取对象的内部锁替代,但是lock--unlock对了解synchronized有很大的帮助. 创建一个bank对象用于 ...
- 几种分布式调用技术的比较 -- RPC VS REST
我之前在传统IT公司干活,后来来了互联网,感受到了很多不同,其中有一点就是两者使用到的技术有一些差别.比如说分布式调用技术. 我在的这家公司内部的服务架构是基于Thrift的,服务基于Thrift进行 ...
- Docker生态不会重蹈Hadoop的覆辙
本文原作者是晏东(精灵云Ghostcould创始人),在读到<Docker生态会重蹈Hadoop的覆辙吗?>文章后的个人思考,里面的不少观点也是很不错的. 1.形态上的差异 2013年的时 ...
- [LeetCode系列] 二叉树最大深度求解问题(C++递归解法)
问: 给定二叉树, 如何计算二叉树最大深度? 算法描述如下: 如果当前节点为空, 返回0(代表此节点下方最大节点数为0) 如果当前节点不为空, 返回(其左子树和右子树下方最大节点数中的最大值+1) 上 ...
- 老司机带带我,FIFO不简单
FIFO,没有想象的那么简单! 根据一般的原则,FIFO这件事情啊,如果能用IP先别自己手写.可以通过FPGA厂家的的IP生成工具生成相应的FIFO. FIFO中的格雷码: 格雷码应用于异步FIFO的 ...
- PyQt 5菜单和工具栏
QMainWindow类提供主要应用程序的窗口,有添加状态栏.工具栏.菜单栏等功能 状态栏 self.statusBar().showMessage('Ready') # 创建一个状态栏 # 状态栏显 ...
- Win10 恢复后退键
转自:http://www.cnblogs.com/liubaicai/p/4368261.html 自带的几种风格的页面,竟然是用的左上角虚拟后退键,这种倒行逆施的行为微软你真是够了! 一定要把后退 ...
- 浅谈PHP面向对象编程(一、简介)
传统的面向过程 将要完成的工作,分作若干个步骤,或再细分为子步骤,然后后步骤从前往后一步一步完成,最初达致目标. 现代的面向对象 将要完成的工作拆分为“一个一个对象”的任务(功能),每个对象独自完成自 ...
- java类继承总结一 父类类型与子类类型之间的转化问题(转)
java类继承总结一 父类类型与子类类型之间的转化问题 本文将通过一个实例描述父类类型与子类类型之间的转化问题,这个很特殊的问题常常会导致一些潜在的危险,让你整整一个晚上都在调试程序以解决一个让人抓狂 ...