董西城问答整理:第二课

来源:互联网 发布:my little pony 知乎 编辑:程序博客网 时间:2024/05/01 09:03

一、spark-shell在namenode的stand-by节点执行会报sparkContext出错,然后到active的namenode的机器起spark-shell就可以了。为什么这样
你程序里有写hdfs地址了吗?需要写为逻辑名

二、hadoop集群中有5个节点,其中1个主节点,1个备用节点,3个数据节点(数据节点上有日志节点),分配内存的时候,主备节点各分配了64G,数据节点各分配了12G,请问董老师,这样分配合理么?是不是随着数据的不断增多,主备节点的内存消耗会成线性增长?
ps:平时datanode节点内存消耗平均保持在8G左右,主节点目前已经占用了8G多。
随着数据的增多,内存占用量必然增多,你的集群应该不是问题,因为节点数目太小了!64GB内存绰绰有余,现在主节点占用内存为8GB,后面再加数据并不会线性增长。 你所说的数据结点仅仅是datanode吗,nodemanager计算节点呢,对于数据结点,12GB内存太多了,调小点,4GB就够了。你现在datanode内存使用是8GB,如果调整4GB,内存使用就是4G,这是因为JAVA GC策略没有设置,你现在给datanode多少内存,他能消耗多少!

三、Scala中方法调用时,什么时候可以省略掉“.”?
只有一个参数的方法,比如1.+(2)可以写为1 + 2

四、driver 不需要计算,要的内存是用来干嘛的?一般是不是需要比较小的内存就ok?
只有调用sc.的代码才会交给spark分布式去执行,其他的仍在你driver本机执行

五、driver 不需要计算,要的内存是用来干嘛的?一般是不是需要比较小的内存就ok?
只有调用sc.的代码才会交给spark分布式去执行,其他的仍在你driver本机执行
1、driver需要广播一个变量。
2、driver还需要接收各个Executer返回的数据,需要在driver端对其做聚集,合并或可视化等。
在以上情况下,数据非常大的话较小的内存是不行的。

六、如果不用maven,直接在程序中设置参数以及打包可以运行吗?
可以,但是无法自动化做啊,你这个每次需要人工做

七、时间可能比较赶,我比较想看到 老师在IDEA上直接操作 多种模式,因为本人在IDEA提交spark程序的时候,yarn-client模式会报错,其他模式没有问题!
这是某位同学的提问,请大家注意,IDEA中只能运行local模型,其他分布式模式无法在idea中运行,必须采用命令行方式提交,这是由于分布式模式下,必须要分发jar包,idea中不能自动打包分发jar包!

八、在yarn-client模式下,client提交的job,driver在client端,那App master上运行的是什么?
App master会与yarn的ResourceManager通信, 申请资源来运行executor。Spark作业跟yarn申请资源的代理。

九、yarn-cluster模式如果driver挂了,重启的话任务会完全重新启动吗?
此模式下,driver运行在集群里面,如果driver挂了,ResourceManager会重新启动,这是一个全是driver,已经运行的task会被重新调度和运行。用户不需要再干预。

十、之前董老师讲课的时候讲到过中搜的日志统计与分析系统,它的可视化是怎么实现的呢? 现在做可视化用什么工具比较好?
推荐三个:
开源的:百度开源的
Dcharts:http://echarts.baidu.com
D3.js: https://d3js.org/
商用的:tableau

十一、Spark 从HDFS中创建RDD时,并行度(Partitions)是如何定的?
有几个block就会有几个partitoin。spark内部实现会进一步讲解。

十二、分布式估算Pi时,val x = random * 2 - 1,random具体指的是什么?
random是scala的库函数,随机产生0-1之间的double类型的数字。

十三、数据库连接对象、es的连接对象能否放入到广播中吗?我现在是把连接字符串放入到广播中,然后在rdd中创建数据库连接对象。对象使用的是单例。您是否有什么好的方式创建这些对象呢?
不能广播,因为连接的对象不能序列化。

十四、1.算pi值的那个例子中,有slices,这个跟配置文件中的线程数有关系吗?
2.pom.xml中写的是参数配置吗?如果写在pom里了,在执行jar包的时候还用加上参数吗
谢谢
slices表示task数目,配置文件中的线程数表示可以同时跑的task数目,比如slices=100, 线程数是10;不建议把参数写到pom.xml中,建议提交的时候指定,因为参数经常变动,而jar包不会经常生成

十五、一张表,如果其中有些数据会删除或者增加变动,也可以用cache吗,做实时计算的时候
可以cache。如果有变动,需要重新cache。

十六、如何提高spark读取hbase的效率?
这里写图片描述
增加过滤条件,只读取需要的列;增加cache等,具体参考hbase优化

1 0
原创粉丝点击