spark 介绍以及集群搭建
1.1 spark的介绍
Spark是一种快速、通用、可扩展的大数据分析引擎,是基于内存计算的大数据并行计算框架,spark基于内存计算,提高了在大数据环境下数据处理的实时性,同时保证了高容错性和高可伸缩性,允许用户将spark部署在大量廉价的硬件之上,形成spark集群。
Spark是基于内存计算的框架,计算速度非常快,但是需要注意到是,spark仅仅只涉及数据的计算,并没有涉及数据存储。(只有计算功能,没有存储功能和hadoop有明显区别)
1.2 spark和M/R的区别
Spark是基于map reduce算法实现的分布式计算,拥有hadoop mapreducer所具有的优点,但不同于map reducer的是,spark中的job中间输出和结果可以保存在内存中,从而不需要读写hdfs。
具有更好的适应用数据挖据和机器学习等需要迭代的map reducer算法
1.3 spark的特性
1.3.1 速度快
据不完全统计,同样的数据在磁盘处理的情况,spark比hadoop快10倍,在内存中spark比hadoop快100倍
1.3.2 易用性
可以快速写一个spark程序,支持java ,scala,python等主流语言
1.3.3 通用性
包括sparksql,spark streaming,mlib,Graphx等不同子项目。
1.3.4 兼容性
Spark的任务就是一个计算程序。
StandAlone,它是spark集群自带的模式,整个任务的资源分配有master老大去负责。
Yarn:可以把spark程序提交到yarn中运行,整个任务的资源分配到ResourceManager。
1.4 spark比mapreducer快的原因
1.mapreducer在处理任务的时候,每一个job的输出结果都会落地到磁盘,后续有其他的job需要依赖于前面job的输出结果,这个时候只能够从磁盘中加载得到,需要大量的磁盘I/O操作。
Spark在处理任务的时候,每一个job的输出结果可以保存在内存中,后续有其它的job需要依赖于前面的job输出结果,这个时候可以直接从内存中获取得到,大大减少磁盘的I/O操作,最后性能肯定是大大的提升。
例如:select name,age from (select name,age from studnet age>30);
Job2----------------------------------->job1,job2依赖job1的输出结果。
- mapreduce任务是以进程的方式在yarn的集群中。比如说一个mapreducer任务中有100个map task,后期处理这100个map task就需要开启100个进程。
Spark任务是以线程的方式运行在spark集群中的进程里面,比如说一个spark任务有100个maptask,这个时候可以极端一点,只需要启动一个进程,在一个进程中运行100个线程就可以。
注意:进程的启动与线程的启动代价肯定是不一样的,一个进程的启动需要的调度时间和资源远远大于一个线程。
- Spark集群的安装部署
- 下载对应的安装包
-
- 规划安装目录
/etc/servers/
-
- 上传安装包到服务器中
- 解压安装包到指定的规划目录
Tar -zxvf spark-2.13-bin-hadoop2.7.tgz -C /export/servers
-
- 重命名解压目录
Mv spark-2.13-bin-hadoop2.7 spark
-
- 修改配置文件
进入到spark安装目录下的conf文件夹中
Vim spark-env.sh (mv spark-env.sh.template spark-env.sh)
内容如下:
#配置java环境变量
Export JAVA_HOME=/export/servers/jdk
#配置master地址
Export SPARK_MASTER_HOST=node1
#配置master的端口
Export SPARK_MASTER_PORT=7077
Vim slaves (mv slaves.template slaves)
#配置内容如下:指定哪些节点是小弟worker
Node2
Node3
-
- 配置spark的环境变量
Vim /etc/profile
Exprot SPARK_HOME=export/servers/spark
Export PATH=$PATH:$SPARK_HOME/sbin:$SPARK_HOME/bin
-
- 分发spark的安装目录和环境变量
Scp -r spark node2:/export/servers
Scp -r spark node3: /export/servers
Scp /etc/profile node2:/etc
Scp /etc/profile node3:/etc
-
- 让所有spark节点的环境变量生效
在所有的节点上执行:
Source /etc/profile
-
- 启动和关闭
#启动
在主节点进入到sbin目录下:
./start-all.sh
#停止
在主节点进入到sbin目录下:
./stop-all.sh
相关文章
- 如何通过minio operator在k8s中部署minio租户(tenant)集群
- Spark远程集群实现
- Spark集群搭建(local、standalone、yarn)
- 集群、负载均衡、微服务、分布式的概念
- CDH集群spark-shell执行过程分析
- MySQL集群节点宕机,数据库脑裂!如何排障?
- 《Spark官方文档》集群模式概览
- ASP.NET Core应用程序容器化、持续集成与Kubernetes集群部署(三)
- 《循序渐进Linux(第2版) 基础知识 服务器搭建 系统管理 性能调优 虚拟化与集群应用》——4.5 磁盘管理与维护
- 《高性能Linux服务器构建实战:系统安全、故障排查、自动化运维与集群架构》——1.3 文件系统安全
- 大数据学习——HADOOP集群搭建
- Spring Cloud Eureka集群 动态扩展新节点
- 集群/分布式环境下5种session处理策略
- Spark集群基于Zookeeper的HA搭建部署笔记(转)
- Spark 0.8 集群(CentOS6.4)-简单统计测试
- 重庆将打造物联网产业集群
- 河北将建千亿元级大数据产业集群 14朵行业云覆盖京津冀
- zookeeper源码分析之五服务端(集群leader)处理请求流程
- 实现Spark集群部署 这些公司都经历了什么?
- 一键快速部署Kubernetes高可用集群
- Spark-----Spark 与 Hadoop 对比,Spark 集群搭建与示例运行,RDD算子简单入门