戳蓝字“CSDN云计算”关注我们哦!

Spark是一个针对超大数据集合的低延迟的集群分布式计算系统,比MapReducer快40倍左右,是hadoop的升级版本,Hadoop作为第一代产品使用HDFS,第二代加入了Cache来保存中间计算结果,并能适时主动推Map/Reduce任务,第三代就是Spark倡导的流Streaming。今天,就让我们一起来看看关于它的更加深度精华问答吧!

1
















Q:Spark的三种运行模式有何区别?Spark Client 和 Spark Cluster的区别 ?

A:单机:

local[n] 单机伪分布式模式,n个线程分别充当driver和Executors,由于driver和Executors处于同一个jvm,算子可以访问外部的变量。很多新手的坏习惯就是从这里养成的。

集群:

standalone spark worker组成集群,Spark内置的集群搭建模式。适合于不太依赖Hadoop的运算环境,或者存储集群和计算集群分离的场景。

yarn 运行与Hadoop Yarn集群之上。作业调度、资源调度由Yarn分配。Yarn在这方面做得比Spark standalone集群好,适用于存储计算合一,或者需要依赖MR、Hive等作业的场景。

部署模式:

client driver运行于执行spark-submit脚本的机器上。这机器不一定是集群的节点,你可以在Windows上运行driver,Linux集群运行Executors。cluster 作业提交后,driver运行于集群上的某一个节点上,集群视其为一个Executor,相当于后台程序。

standalone和yarn(还有mesos,这个不了解)都支持client/cluster两种模式。前者由--master参数控制,后者由deploy-mode参数控制。

2

Q:Spark算子内能不能引用SparkSession?

A:Spark的算子是在executor上执行的,数据也是放在executor上。executor和driver并不在同一个jvm(local[*]除外),所以算子是不能访问在driver上的SparkSession对象。

好好品味一下这个图:

如果一定要“在算子里访问SparkSession”,那只能把数据collect回Driver,然后用Scala 集合的算子去做。这种情况下只能适用于数据量不大(多大取决于分配给Driver的内存)。另外建议是通过join的方式获取关联数据并进行处理。

3

Q:一个使用Sparksql查询Hbase数据的功能,只取结果的1000条数据,用的limit算子,最后用foreachPartition算子将数据插入数据库中,但是Hbase那张表的数据量很大,有3000多个region,查看sparkui,发现竟然是要把所有的数据都要加载一遍取出对应的数据,所以Sparksql计算的时候是要把所有的数据都要加载一遍计算吗?

A:如果数据量巨大而集群计算资源吃不消的话,就建议不要用HBase存储数据,HBase并不留存任何结构化信息,同时也没有索引,因此并不适合多维查询。用Hive+Parquet+合理的分区分桶优化+SparkSQL查询性能会可观得多。另外更酷炫的是Spark+CarbonData,满足绝大多数OLAP需求,甚至详单查询的性能也很恐怖,并且支持update delete insert。

4

Q:在其他机器上部署了HDFS、HBase、Spark,请问怎么在本地调试Java Spark来操作远程的HBase,就像操作远程数据库一样?

A:1. HBase是一个数据库(分布式),有自己的JDBC,可以根据HBase的JDBC开发自己应用, 只要能连接上,本地远程都可以。

2. Spark集群部署好了,写好Spark作业提交给Spark集群,Spark cluster计算完成后,可以参看结果。

3. Spark相关的rest server是livy,然而并不是很好用有一定的版本和环境要求,很多开发者会选择避开这个坑,所以你会看到网上的大部分博客。

4. 推荐Linux环境下开发,少爬很多坑,Windows不适合大数据相关的开发。

5

Q:HDP2.4.0版本,Spark SQL运行在yarn-client模式,现在发现有些语句跑特别慢,20个节点,一千多个CPU核心,8TB内存,数据量不到一亿条,都是类似这样的语句:

group by十个字段,然后sum20多个值,竟然要十分钟以上,而把数据加载到一台oracle服务器,开启多核计算,同样语句只要30秒。

Spark SQL设置成动态分配,spark.dynamicallocation.enabled=true,设置成最大最小和初始化都是300。发现是卡在最后一个task里,例如有200个任务,卡在最后一个任务里,最后一个任务占95%以上时间。Java调用Spark的thrift server接口,直接运行SQL语句,没有采用调Spark rdd方法,请问是什么问题?

A:典型的数据倾斜问题。在一个stage里,每个task对应一个partition,当有一个partition的数据量大于其他的,就会出现这样的情况。这种情况只能用代码的方法,观察问题所在的stage对应的dataset,然后在执行SQL前,reparation(>200,有文档建议是2k)。如果问题仍存在,就要对group by的字段值加盐,group by一轮后,去盐再group by得到最终数据。

----------------    --------------

小伙伴们冲鸭,后台留言区等着你!

关于Spark,今天你学到了什么?还有哪些不懂的?除此还对哪些话题感兴趣?快来留言区打卡啦!留言方式:打开第XX天,答:……

同时欢迎大家搜集更多问题,投稿给我们!风里雨里留言区里等你~

----------------    --------------

1.微信群:

添加小编微信:color_ld,备注“进群+姓名+公司职位”即可,加入【云计算学习交流群】,和志同道合的朋友们共同打卡学习!

2.征稿:

投稿邮箱:liudan@csdn.net;微信号:color_ld。请备注投稿+姓名+公司职位。

推荐阅读

  • Gartner的预言:通向混合IT之旅

  • 崩溃!新浪程序员加班错失 77 万年会大奖

  • 刚刚!华为又被美国盯上了!

  • 阿里“菜鸟”AI?

  • 以太坊升级的拖油瓶,竟只是这几行代码

  • 程序员有话说 | 程序猿在乘地铁的时候都在想什么?

  • 清华北大“世界排名断崖式下跌”?

点击“阅读原文”,打开 CSDN App 阅读更贴心!

喜欢就点击“好看”吧!

Spark精华问答 | Spark的三种运行模式有何区别?相关推荐

  1. spark sql 本地调试_Spark精华问答|Spark的三种运行模式有何区别?

    戳蓝字"CSDN云计算"关注我们哦! Spark是一个针对超大数据集合的低延迟的集群分布式计算系统,比MapReducer快40倍左右,是hadoop的升级版本,Hadoop作为第 ...

  2. Spark的三种运行模式

    Spark三种运行模式 1.Spark运行模式: 2.验证Spark三种模式代码 1.Spark运行模式: ①Local(也称单节点模式):常用于开发和学习 ./spark-shell - -mast ...

  3. python编程模式是什么_python 开发的三种运行模式详细介绍

    Python 三种运行模式 Python作为一门脚本语言,使用的范围很广.有的同学用来算法开发,有的用来验证逻辑,还有的作为胶水语言,用它来粘合整个系统的流程.不管怎么说,怎么使用python既取决于 ...

  4. 【Tomcat】Tomcat Connector的三种运行模式【bio、nio、apr】

    Tomcat Connector(Tomcat连接器)有bio.nio.apr三种运行模式 bio bio(blocking I/O,阻塞式I/O操作),表示Tomcat使用的是传统的Java I/O ...

  5. Tomcat Connector的三种运行模式【bio、nio、apr】

    Tomcat Connector(Tomcat连接器)有bio.nio.apr三种运行模式 bio bio(blocking I/O,阻塞式I/O操作),表示Tomcat使用的是传统的Java I/O ...

  6. spark的三种运行模式以及yarn-client和yarn-cluster在提交命令上的区别

    本文针对的是Spark 2.3.1 standalone:线下模式 分为standalone-client和standalone-cluster两种模式 yarn:线上模式 又分为yarn-clien ...

  7. Spark精华问答 | Spark的计算方法是什么?

    戳蓝字"CSDN云计算"关注我们哦! Spark是一个针对超大数据集合的低延迟的集群分布式计算系统,比MapReducer快40倍左右,是hadoop的升级版本,Hadoop作为第 ...

  8. Spark精华问答 | spark的组件构成有哪些?

    戳蓝字"CSDN云计算"关注我们哦! Spark是一个针对超大数据集合的低延迟的集群分布式计算系统,比MapReducer快40倍左右,是hadoop的升级版本,Hadoop作为第 ...

  9. Spark精华问答 | spark性能优化方法

    Hadoop再火,火得过Spark吗?今天我们继续关于Spark的精华问答吧. 1 Q:影响性能的主要因素是什么? A:网络传输开销大 硬件资源利用率低 同一资源的复用率低 2 Q:优化的方向有哪些? ...

最新文章

  1. Java基础-OOP特性之封装、继承、多态、抽象
  2. 订单库存是否与库存地有关
  3. C#中的变量、常量、数据类型
  4. 阿里云ECS,搭建MySQL5.7数据库环境
  5. c++保存图标到dll_自动保存邮件附件至指定文件夹
  6. [Redux/Mobx] redux的thunk作用是什么?
  7. python中sys模块有什么用_Python中模块之sys的功能介绍
  8. bark 自建服务器,开发者的专属推送小工具 - Bark
  9. 使用Adobe Acrobat为PDF文件添加图章(仅图片)
  10. 使用nps做内网穿透远程桌面
  11. 小程序微信官方推荐登录流程设计
  12. python线程池ThreadPoolExecutor和as_completed的用法示例
  13. python实现数模转换_树莓派:PCF8591数模转换模块的使用
  14. 工具使用 - office快捷键
  15. PhoneGap移动开发框架2
  16. JavaCV开发详解之3:通用拉流器实现,从流媒体服务器拉流rtsp/rtmp录制成视频文件
  17. jsp java 传值方法_JSP 页面传值方法总结(转)
  18. 解决STM32 硬件IIC死锁在BUSY状态的方法讨论
  19. Ubuntu1804磁盘容量不足
  20. Python中 * 的用途

热门文章

  1. cache数据库和mysql_并发环境下,先操作数据库还是先操作缓存?
  2. android 获取wifi的加密类型,wifi加密类型
  3. AppScan api登录接口 postman_【Postman】12 Postman monitor功能使用
  4. 41岁,她破格提拔为高校副校长
  5. 终于有人把 Spring 循环依赖讲清楚了!
  6. 删库不跑路,详解MySQL数据恢复
  7. 数学系和物理系学生有什么差别?
  8. 世上最简单的mysql_最简单易懂的mysql安装教程
  9. mongodb 导出txt_(干货)前端实现导出excel的功能
  10. @EnableTransactionManagement