Apache Spark基础及架构(环境部署及Spark API)

为什么使用Spark

MapReduce编程模型的局限性

繁杂

只有Map和Reduce两个操作,复杂的逻辑需要大量的样板代码

处理效率低:

Map中间结果写磁盘,Reduce写HDFS,多个Map通过HDFS交换数据
任务调度与启动开销大

不适合迭代处理、交互式处理和流式处理

Spark是类Hadoop MapReduce的通用并行框架

Job中间输出结果可以保存在内存,不再需要读写HDFS
比MapReduce平均快10倍以上

Spark简介

诞生于加州大学伯克利分校AMP实验室,是一个基于内存的分布式计算框架

发展历程

2009年诞生于加州大学伯克利分校AMP实验室
2010年正式开源
2013年6月正式成为Apache孵化项目
2014年2月成为Apache顶级项目
2014年5月正式发布Spark 1.0版本
2014年10月Spark打破MapReduce保持的排序记录
2015年发布了1.3、1.4、1.5版本
2016年发布了1.6、2.x版本

Spark优势

速度快

基于内存数据处理,比MR快100个数量级以上(逻辑回归算法测试)
基于硬盘数据处理,比MR快10个数量级以上

易用性

支持Java、Scala、Python、R语言
交互式shell方便开发测试

通用性

一栈式解决方案:批处理、交互式查询、实时流处理、图计算及机器学习

随处运行

YARN、Mesos、EC2、Kubernetes、Standalone、Local

Spark技术栈

Spark Core

核心组件,分布式计算引擎

Spark SQL

高性能的基于Hadoop的SQL解决方案

Spark Streaming

可以实现高吞吐量、具备容错机制的准实时流处理系统

Spark GraphX

分布式图处理框架

Spark MLlib

构建在Spark上的分布式机器学习库

Spark环境部署

参考博客链接:Spark2.4.5、Scala2.11高可用环境搭建(有安装包链接)

Spark初体验

spark-shell:Spark自带的交互式工具

本机

spark-shell --master local[*]

Standalone

 spark-shell --master spark://MASTERHOST:7077

YARN

spark-shell --master yarn-client
scala>sc.textFile("hdfs://cluster1/data/hello.txt")
	       .flatMap(x=>x.split("\t"))
	       .map(x=>(x,1)).reduceByKey(_+_).collect
#hello.txt内容
hello world welcome
hello welcome

Spark架构设计

运行架构

1.在驱动程序中,通过SparkContext主导应用的执行
2.SparkContext可以连接不同类型的Cluster Manager(Standalone、YARN、Mesos),连接后,获得集群节点上的Executor
3.一个Worker节点默认一个Executor,可通过SPARK_WORKER_INSTANCES调整
4.每个应用获取自己的Executor
5.每个Task处理一个RDD分区
在这里插入图片描述

Spark架构核心组件

在这里插入图片描述

Spark API

参考博客链接:Maven工程实现Spark api—wordcount和打印hdfs文件

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值