【转】董西成问答整理第二课

2017-03-17  本文已影响21人  来往穿梭

一、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优化
上一篇下一篇

猜你喜欢

热点阅读