Spark基础
① 快--基于内存的运算
② 易用--支持java,python和Scala的API,shell交互式运用,还支持超过80种高级算法
③ 通用--spark提供了统一的解决方案,spark用于批处理,交互式查询spark sql, 实时流处理spark streaming,机器学习spark MLlib和图计算Graphx
④ 兼容性--方便与其他产品融合--不需要数据迁移就可以使用spark的强大处理功能,Spark也可以不依赖于第三方的资源管理和调度器,它实现了Standalone作为其内置的资源管理和调度框架.Spark还提供了在EC2上部署Standalone的Spark集群的工具。
Spark HA高可用部署(1) Spark Standalone集群是Master-Slaves架构的集群,存在master单点故障问题
① 基于文件系统的单点回复---开发测试环境
② 基于zookeeper的standby Masters---生产模式
Spark角色介绍(1) Master-Slaves模型,master是集群中含有master继承的节点,slave是集群中含有worker进程的节点
① Application:基于spark的应用程序,包含了driver程序和集群上的executor
② Driver Program:运行main函数并且创建SparkContext的程序
③ Cluter Manager:指的是在集群上获取资源的外部服务--有三种类型
1) Standalon:spark源生的资源管理,由master负责资源的分配
2) Apache Mesos:与MR兼容性良好的一种资源调度框架
3) Hadoop Yarn:主要是指Yarn中的ResourceManager
④ Worker Node:集群中任何可以运行Application代码的节点,在Standalone模式中指的是通过slave文件配置的Worker节点,在Spark on Yarn模式下就是NoteManager节点
⑤ Executor:是在一个worker node上为某应用启动的一个进程,该进程负责运行任务,并且负责将数据存在内存或 者磁盘上。每个应用都有各自独立的executor。
⑥ Task :被送到某个executor上的工作单元。
Scala代码(1) sc.textFile("file:///root///words.txt").flatMap(_.split(" ")).map((_,1)).reduceByKey(_+_).collect
sc:Spark-Shell中已经默认将SparkContext类初始化为对象sc。用户代码如果需要用到,则直接应用sc即可。
textFile:读取数据文件
flatMap:对文件中的每一行数据进行压平切分,这里按照空格分隔。
map:对出现的每一个单词记为1(word,1)
reduceByKey:对相同的单词出现的次数进行累加
collect:触发任务执行,收集结果数据。
上一篇: MySQL数据库设计规范