董西城问答整理:第一课

来源:互联网 发布:突变体软件 编辑:程序博客网 时间:2024/05/01 08:25

一、Spark在任何情况下均比MapReduce高效吗? 请举例。
不是任何情况下都很高效,数据量非常大的时候MapReduce要比Spark快。
比如:WordCount计算的数据量是1PB的时候,MapReduce会比Spark快。
快的原因是目前Spark的Shuffle实现比较差,而Spark Shuffle这个实现正在改进,且会换成同MapReduce Shuffle一样的实现。

二、当前存在很多DAG引擎,包括Spark,Tez,Flink,为何大家都在讨论Spark?
从设计架构看,Spark的设计架构不是最优的,有些还不如Flink和Tez。
但是Spark的社区支持,推广和宣传做的较好,活跃度很高。
因此Spark受关注的多些。

三、Spark号称“内存计算框架”,它将所有数据写到内存吗?
1.可以指定~当然尽量的写入内存~内存不够还是要落盘的~
2.不是,不会写到任何地方,可以显示指定数据写入的路径。
思考:默认情况下会不会先缓存在内存?spark在什么情况下会缓存在内存?

四、yarn集群 和 standalone集群有什么区别?优势在哪里?为什么要用yarn?
yarn集群和其他的计算框架集成的较好,比如MapReduce、Tez、Spark等等这些任务都可以运行在yarn上。
standalone模式的集群只能运行spark任务不能运行其他的任务。
考虑运行的任务多样化和集群的运维成本,一般才用yarn集群即可,不会再单独搭建一套standalone模式的集群。

五、Hulu在生产环境中,哪些业务使用到了Spark,以及使用的哪个版本?
目前是1.5,将会升级到1.6,将来也会用2.0,主要用到推荐,广告,一些数据分析,机器学习算法等。

六、主要业务是用DataFrame从postgres里取出记录,然后对所有的记录做flatMap,每条记录做业务处理,然后返回结果,最后把结果存到postgres里。用spark1.6和spark2.0.1都实现过,在standalone和yarn上都跑过,无论参数是否调整,二十多万条记录的时间都是五分多。集群环境是5台server,每台4个core,16G内存。
问题详细描述:
在取数据库的时候,分区是16或100,差别也不是很大。spark-submit \
–master spark://datascienceresearch-01:7077 \
–executor-memory 15G \
–executor-cores 4 \
–driver-memory 4G \
–conf spark.default.parallelism=1000 \
–conf spark.storage.memoryFraction=0.2 \
–conf spark.shuffle.memoryFraction=0.2 \
–conf spark.executor.memory=3G \
–class com.GroupMain \
/usr/local/sparkProject/spark4content-0.0.1.jar
我们也调整fifo为fair模式,时间一样。不明白。
那么请问,一般参数需要怎么调整?一般有什么经验值和参数?请大神回答一下,谢谢。
回答:
fifo和fair模式都不会提高资源利用率及任务的并行度,调度模式是在资源有剩余的情况可以分给让另个作业使用。
根据你的脚本命令配置的是默认2个Exector,很有可能是task把Exector的资源都占满了,没有优化的余地了,不管调什么模式都不管用。

七、总是能看到“spark比hadoop快100倍”,“spark将要取代hadoop”之类的话,老师能分析一下spark的发展趋势吗?
这些话是软文推广的话术,不可信。目前在hulu的生产环境下逐渐将一些MapReduce任务换成spark,比较看好spark发展。回顾下第一次直播课,老师提到hadoop是存储和计算为一体,saprk只有计算。

八、部署在云平台的hadoop和spark,相较于物理机,有什么优点和缺点?spark适合部署在云平台吗?
1.优点:hadoop和spark在云平台的安装,部署和监控已经做了很好的支持,不需要运营机器,省下很多运维管理的成本。
缺点:在云平台的虚拟机性能会有一定的损失,网络资源开销比物理机差。
2.auto scale ~ 但是网络和性能可能不太好

九、除了CDH本身的一些监控,还有别的监控job数量和job运行状态的工具没?
yarn本身就可以监控,其他工具,可以使用dr. elephant.

十、Spark算子中哪些算子会引起Stage的划分,一个Stage中的Task数量会发生变化吗?哪些算子会引起Tasks数量的变化?具体举例说明下
只要带shuffle的算子,都会引起stage划分,比如reduceByKey,sort等,作业提交的那一刻开始,各个stage的task数目就已经确定了,运行过程中不会再变动。

十一、安装Ambari能够对已经运行一段时间的Hadoop、Spark集群做监控?
不能,必须是ambari部署的hadoop,才可以被他监控

十二、spark streaming跑一段时间就挂掉 现在定位不到问题 @Dong 麻烦能分析一下出现问题的可能性以及定位问题的方式么?
你需要告知更详细信息,比如集群情况,数据情况,提交脚本,运行日志(包括driver和executor日志)

十三、有一个程序在standalone模式下能正常运行,而提交到yarn上的时候运行到一半报序列化错误:
com.esotericsoftware.kryo.KryoException: Unable to find class xxx 而xxx在这个包中是存在的,这个可能是什么原因?
这是因为你采用了kryo序列化方式,但有些需要序列化的类没有采用kryo方式进行序列化,更没有注册。

十四、有个疑问, 现在spark官网提供的spark安装包是类似这种
spark-2.0.1-bin-hadoop2.7.tgz,
解压缩后设置几个环境变量就可以直接使用单机模式.
我的疑问是, 那我还需要额外安装hadoop吗?
spark的版本和hadoop的版本有什么关系?
感谢回答!
如果你处理的数据不在HDFS,就不用额外安装,例如只是做实验,完全可以用Spark读取本地文件,这样就不需要安装Hadoop,但如果你需要使用YARN作为资源管理或者HDFS作为数据存储,就需要额外安装了

十五、kafka中partition和副本存放策略是怎么样的?
这个跟hdfs类似,你可以设置kafka中每个topic的副本数,比如3,他们找三台机器存储副本,这三台机器选择时,还会考虑rack信息(如果你配置了的话)。

十六、Spark sql可以代替hive等其他的SQL on hadoop框架么?
不能,会共存。 比如,spark sql一定不会比impala/preso快,因为后者是MPP架构,且是全内存计算。

十七、我们在用Spark插入分区表的时候会特别慢,这是个普遍现象吗?
这个跟spark无关,与HDFS有关,如果很慢,可能是你的并行度不够,可以通过并行方式加快速度。

十八、为什么图计算和机器学习是迭代计算的呢?而数据挖掘是交互式处理呢?能分别举例说明吗?
是否为迭代计算是由算法决定的,很多图计算和机器学习算法(比如聚类算法)是迭代的,具体你可以了解下。数据挖掘更多的是多维分析,OLAP等,一般要求支持SQL,且计算结果尽快返回,比如报表系统。

十九、CDH 上 hive 依赖于 spark 的话,那么实际底层是用spark sql 吗?
hive on spark是一个独立的项目, 跟spark sql无直接。但他们的确应用场景非常类似,但hive是一个非常主流的查询引擎,所以hive on spark受众会更多。

二十、初学者搭建Spark运行环境用Cloudera还是Ambari比较好?
如果只需要学习spark,可以在本地环境,不需要搭建spark,下载spark安装包直接用即可。如果是分布式运行spark,可以用ambari部署hadoop。

二十一、老师能给我们搭建基于CDH的Hadoop环境吗 ?
自己搞个cloudera manager一直添加服务,简单方便。

二十二、做大数据运维怎么样,有前途吗 ?
Dong • 2016-10-12 09:23
这种人很稀缺,尤其是高级大数据运维工程师,要了解操作系统;hadoop/spark各个系统的部署,调优,监控,报警,问题诊断;要帮助用户解决他们遇到的问题。整体说来,好的大数据运维应该是一个知识广度非常大的人,底层要尽可能多的了解linux,上层要了解各个大数据各个系统。

二十三、mapreduce相比于spark的优势有哪些呢?
MapReduce仍保留一些优势,但这些优势在不断减少。目前存在的优势有:
(1)目前很多系统仍然对MR支持的最好,比如hive,pig
(2)目前MR在处理超大数据规模时,比Spark更稳定,比如TB级数据量

二十四、只会用python,对java是写hello world的水平。如果我要搞好spark应用层的问题,是不是可以主要学scala而非java?
java和scala可以相互调用,很多时候会相互引用一些库,比如编写scala程序时,经常会用到一些java的库,不管如何,java一定要有一些基础,会写一些简单程序。

二十五、老师可以简单讲讲 Spark 和 Alluxio 怎么结合使用么?
简单说来,alluxio可以作为缓存系统,你可以把数据存到内存或ssd上,这样用spark读取数据速度很快。

二十六、spark 通常和 hadoop 与 yarn 一同使用,在学些 spark过程中,需要补充哪些 hadoop 与 yarn 相关的知识点,可以整理列一下 ?
只需要了解yarn的基本架构和一个应用程序是如何在YARN上跑起来的(主要步骤知道)即可;对于hadoop,需要了解hdfs/hbase等系统的概念,架构和原理。 后面我会罗列一下。

二十七、transformation积累多了怎么办?如果没有action ?
没有action,这个应用程序马上会退出,不会有任何分布式的计算任务被调度出去,也就是说,你的程序实际上只在driver里跑了,executor端不会受到任何分布式计算任务。

二十八、现在互联网里面的大数据开发的岗位,是直接用开源的Spark开发各种分析工具,还是基于Spark的源码二次开发比较多?
绝大部分是用开源的Spark开发各种分析工具,极少数公司(绝大部分是大公司,比如阿里,腾讯)会二次开发spark。

二十九、yarn-cluster模式 如果driver 挂了,重启的话任务会完全重新启动么 ?
只有driver会重启,所有任务需要重算,目前做的不够好。 只是能避免应用程序失败,用户无需干预失败,但一旦失败后运行时间会大大变长。

三十、如何解决Spark的数据倾斜?
没有太好方法,一般而言,以下方法可用:
(1)选择合适的key进行partition
(2)将计算过程分成两个阶段(两组reduce),第一阶段平均reduce,第二阶段汇总,具体参考hive的skey join实现

yuzhouwan • 2016-10-12 18:10
1) 使用Hive ETL预处理数据
2) 过滤少数导致倾斜的key
3) 提高shuffle操作的并行度
4) 两阶段聚合(局部聚合+全局聚合)
5) 将reduce join转为map join
6) 采样倾斜key并分拆join操作
7) 使用随机前缀和扩容RDD进行join
8) 多种方案组合使用
网络收罗了一些方法

三十一、在yarn-client模式下,client提交的job,driver在client端,那App master上运行的是什么?
App Master只是一个跟YARN(ResourceManager)交互的组件,用以向YARN申请资源供Spark用,没有任何用户的逻辑在里面。

三十二、一个partition只会在一个节点上吧?老师没有讲container的概念么?老师能把partition、container、executor、task再详细讲一下么?
container是yarn的概念,是一个抽象概念,是容器的意思,里面可以跑任何东西,比如MapTask,比如executor, executor是spark的运行任务的服务,paritition是数据存储单元,task是计算单元,我在spark技术内幕剖析一节还会介绍。

三十三、董老师,你好:我刚刚参加一个项目。是用spark分析日志统计用户访问量。在本地调式没有问题可以在es中能获取到数据。然而在正式环境上发现经常在es中没有数据。查询原因比较繁琐和困难。有的同事怀疑是spark分析日志出现问题。有的同事怀疑是日志格式数据问题导致的。请问有什么方式才能快速的定位问题。
在分布式环境下不容易定位问题,建议打印一些日志,查看任务运行日志。

1 0
原创粉丝点击