大数据 Spark 架构
一.Spark的产生背景起源
1.spark特点
1.1轻量级快速处理
Saprk允许传统的hadoop集群中的应用程序在内存中已100倍的速度运行即使在磁盘上也比传统的hadoop快10倍,Spark通过减少对磁盘的io达到性能上的提升,他将中间处理的数据放到内存中,spark使用了rdd(resilient distributed datasets)数据抽象
这允许他在内存中存储数据,所以减少了运行时间
1.2 易于使用
spark支持多种语言。Spark允许java,scala python 及R语言,允许shell进行交互式查询
1.3 支持复杂的查询
除了简单的map和reduce操作之外,Spark还支持filter、foreach、reduceByKey、aggregate以及SQL查询、流式查询等复杂查询。Spark更为强大之处是用户可以在同一个工作流中无缝的搭配这些功能,例如Spark可以通过Spark Streaming(1.2.2小节对Spark Streaming有详细介绍)获取流数据,然后对数据进行实时SQL查询或使用MLlib库进行系统推荐,而且这些复杂业务的集成并不复杂,因为它们都基于RDD这一抽象数据集在不同业务过程中进行转换,转换代价小,体现了统一引擎解决不同类型工作场景的特点。
1.4 实时的流处理
对比maprduce只能处理离线数据。Spark还能支持实时的流计算,spark streaming 主要用来对数据进行实时的处理,yarn的nodemanger统一调度管理很厉害,在yarn产生后hadoop也可以整合资源进行实时的处理
2.时事产物
2.1 mapreduce产生时磁盘廉价,因此许多设计收回考虑到内存的使用,而spark产生时内存相对廉价,对计算速度有所要求,因此spark的产生是基于内存计算的框架结构mapreduce需要写复杂的程序进行计算,
二.Spark架构
1.spark的体系结构
Spark的体系结构不同于Hadoop的mapreduce 和HDFS ,Spark主要包括spark core和在spark core的基础上建立的应用框架sparkSql spark Streaming MLlib GraphX;
Core库主要包括上下文(spark Context)抽象的数据集(RDD),调度器(Scheduler),洗牌(shuffle) 和序列化器(Seralizer)等。Spark系统中的计算,IO,调度和shuffle等系统的基本功能都在其中
在Core库之上就根据业务需求分为用于交互式查询的SQL、实时流处理Streaming、机器学习Mllib和图计算GraphX四大框架hdfs迄今是不可替代的

Spark架构组成图


一.Hive和spark对sql支持的对比
Hive创建数据库 创建表 true
|
验证策略 |
脚本 |
Hive |
Spark-sql |
|
创建库 删除库 |
Create database lvhou_hive Create database lvhou_spark Dorp database lvhou_hive Dorp database lvhou_spark |
True |
True |
|
创建表 删除表 |
Use lvhou_hive Create table hive_test(a string,b string) Use lvhou_spark Create table spark_test(a string,b string) Drop table hive_test Drop table spark_test |
True |
True |
|
CTAS |
Create table lvhou_test as selec * from lvhou_test1; |
true |
false |
|
Insert |
Insert into lvhou_hive values(‘hhah’,’heheh’) |
true |
false |
|
insert |
Insert into lvhou_spark value(‘12’.’32’),(‘asd’,’asdf’) |
True |
false |
|
Select |
Select * from lvhou_hive Select * from lvhou_spark |
True |
True |
|
Select in |
|||
|
Select子查询 in 两条数据 not in 两条数据 |
select * from test1 where a,b in (select a,b from test2 where a = 'aa'); select * from test1 where a,b not in (select a,b from test2 where a = 'aa'); |
falese |
false |
|
Select union查询 union all |
select * from test union all select * from test0;(合一) select * from test union select * from test0;(去重) |
true |
false |
|
Select union 3查询 union all |
select * from (select * from test union select * from test0) a; select a from (select * from test union all select * from test0) a; |
false |
False |
|
Select exit not exit |
select * from test t where exists(select * from test0 t0 where t0.a = t.a); select * from lv_test where exists(select * tfrom test t where lv_test.a = t.a); |
True |
False |
|
update |
update test1 set b = 'abc' where a = 'aa'; update test1 set a = 'abc'; Update test1 set b = 'abc'; |
True |
False |
|
delete |
delete from test1 where a = 'aa'; delete from test1; |
True |
False |
|
TRUNCATE TABLE |
Truncate table test; |
True |
False |
|
Alter |
alter table test1 add columns (d string); alter table test drop a; alter table test rename a to a1; |
True |
False |
|
索引 |
create index index_a on table test(a) as 'org.apache.hadoop.hive.ql.index.compact.CompactIndexHandler' with deferred rebuild; |
True |
False |
|
INTERSECT 交集 |
select a from test INTERSECT select a from test0; |
False |
False |
|
EXCEPT |
select a from test EXCPEPT select a from test0; |
False |
False |
|
Minus 返回第一个结果中不同的 |
select a from test minus select a from test0; |
False |
False |
|
order by 排序 |
select a from test order by a desc; |
True |
False |
|
sort by 排序 |
select a,b from test sort by b desc; |
True |
False |
|
distribute by |
select a,b from test distribute by a; |
True |
False |
|
distribute by + sort by |
select a,b from test distribute by a sort by b asc; |
True |
False |
|
cluster by |
select a,b from test cluster by a; |
True |
False |
|
trim(string a) 去空格 |
select trim(' aaa ') from test00; |
True |
True |
|
substr(string A,int start,int len) 截取字符串 |
select substr('abcdefg',3,2) from test; select substr('abcdefg',-3,2) from test; |
True |
True |
|
like |
select * from test where a like '%a%'; |
True |
False |
|
Count |
select count(*) from test00; select count(distinct *) from test00; |
True |
False |
|
Sum |
select sum(c) from test00; select sum(distinct c) from test00; |
True |
False |
|
Avg |
select avg(c) from test00 select avg(distinct c) from test00 |
True |
False |
|
Min |
select min(distinct c) from test00; |
True |
False |
|
Max |
select max(distinct c) from test00; |
True |
False |
|
group by |
select a from test00 group by a ; select a,sum(c) from test00 group by a; select a,avg(c) from test00 group by a; |
True |
False |
|
Hiving |
select a,avg(c) as ac from test00 group by a having ac=1; |
True |
False |
|
load |
load data local inpath '/tmp/qichangjian/test01.txt' overwrite into table test_load; |
True |
False |
大数据 Spark 架构的更多相关文章
- 量化派基于Hadoop、Spark、Storm的大数据风控架构--转
原文地址:http://www.csdn.net/article/2015-10-06/2825849 量化派是一家金融大数据公司,为金融机构提供数据服务和技术支持,也通过旗下产品“信用钱包”帮助个人 ...
- 王家林 大数据Spark超经典视频链接全集[转]
压缩过的大数据Spark蘑菇云行动前置课程视频百度云分享链接 链接:http://pan.baidu.com/s/1cFqjQu SCALA专辑 Scala深入浅出经典视频 链接:http://pan ...
- 《大数据Spark企业级实战 》
基本信息 作者: Spark亚太研究院 王家林 丛书名:决胜大数据时代Spark全系列书籍 出版社:电子工业出版社 ISBN:9787121247446 上架时间:2015-1-6 出版日期:20 ...
- Spark GraphX宝刀出鞘,图文并茂研习图计算秘笈与熟练的掌握Scala语言【大数据Spark实战高手之路】
Spark GraphX宝刀出鞘,图文并茂研习图计算秘笈 大数据的概念与应用,正随着智能手机.平板电脑的快速流行而日渐普及,大数据中图的并行化处理一直是一个非常热门的话题.图计算正在被广泛地应用于社交 ...
- 知名大厂如何搭建大数据平台&架构
今天我们来看一下淘宝.美团和滴滴的大数据平台,一方面进一步学习大厂大数据平台的架构,另一方面也学习大厂的工程师如何画架构图.通过大厂的这些架构图,你就会发现,不但这些知名大厂的大数据平台设计方案大同小 ...
- 大数据Spark超经典视频链接全集
论坛贴吧等信息发布参考模板 Scala.Spark史上最全面.最详细.最彻底的一整套视频全集(特别是机器学习.Spark Core解密.Spark性能优化.Spark面试宝典.Spark项目案例等). ...
- 【Todo】【读书笔记】大数据Spark企业级实战版 & Scala学习
下了这本<大数据Spark企业级实战版>, 另外还有一本<Spark大数据处理:技术.应用与性能优化(全)> 先看前一篇. 根据书里的前言里面,对于阅读顺序的建议.先看最后的S ...
- hadoop大数据技术架构详解
大数据的时代已经来了,信息的爆炸式增长使得越来越多的行业面临这大量数据需要存储和分析的挑战.Hadoop作为一个开源的分布式并行处理平台,以其高拓展.高效率.高可靠等优点越来越受到欢迎.这同时也带动了 ...
- Google大数据技术架构探秘
原文地址:https://blog.csdn.net/bingdata123/article/details/79927507 Google是大数据时代的奠基者,其大数据技术架构一直是互联网公司争相学 ...
随机推荐
- Java笔试面试题整理第五波
转载至:http://blog.csdn.net/shakespeare001/article/details/51321498 作者:山代王(开心阳) 本系列整理Java相关的笔试面试知识点,其他几 ...
- 实验二:Linux下Xen环境的安装
实验名称: Linux下Xen环境的安装(centOS7) 实验环境: 本次实验基本是在centOS7的环境下完成,系统内核和系统版本如下: 实验要求: 为centOS7的环境下安装Xen的平台,能够 ...
- 10K+,深度学习论文、代码最全汇总!
我们大部分人是如何查询和搜集深度学习相关论文的?绝大多数情况是根据关键字在谷歌.百度搜索.想寻找相关论文的复现代码又会去 GitHub 上搜索关键词.浪费了很多时间不说,论文.代码通常也不够完整.怎么 ...
- java多线程—Runnable、Thread、Callable区别
多线程编程优点 进程之间不能共享内存,但线程之间共享内存非常容易. 系统创建线程所分配的资源相对创建进程而言,代价非常小. Java中实现多线程有3种方法: 继承Thread类 实现Runnable接 ...
- 【Linux命令】Linux下的tar压缩解压缩命令详解(转)
tar -c: 建立压缩档案 -x:解压 -t:查看内容 -r:向压缩归档文件末尾追加文件 -u:更新原压缩包中的文件 这五个是独立的命令,压缩解压都要用到其中一个,可以和别的命令连用但只能用其中一个 ...
- nginx 301跳转
server { server_name xxxx.com; return 301 $scheme://www.xxxx.com$request_uri; }
- 关于页面缩放时css错乱的处理方法---之一
这几天遇到一个问题,就是在做网页的时候,页面缩放时,布局就乱了,原来的样子不会跟随缩放的放大或者缩小进行改变,直接导致的后果,就是页面很难看,无法使用 之前虽然写了代码,但是一直没有注意到缩放后页面的 ...
- apache配置报错:Unrecognized LogFormat directive %I
跟着阿里云调日志教程(https://help.aliyun.com/document_detail/87740.html)时出现报错: AH00526: Syntax error on line . ...
- 使用jQuery+huandlebars遍历数组嵌套数组
兼容ie8(很实用,复制过来,仅供技术参考,更详细内容请看源地址:http://www.cnblogs.com/iyangyuan/archive/2013/12/12/3471227.html) & ...
- mysql 库 表 和 时间查询
-- 查询 worker 库中 表 和 视图 select table_name from information_schema.tables where table_schema='worker' ...