面试大数据开发工程师岗位遇到的技术问题

1.java,scala,python三种语言在使用当中的区别

回答:java和scala都需要在jvm上运行,python不需要,java是面向对象式的编程语言,scala可以说是集成了java的编程特点之外又加上了函数式编程表达,使其更加表达更加的简洁,但是正是scala的简洁也会提高了入门的门槛。python跟scala有些表达上面很类似,pyhon更多的是应用在实现算法上面,不适合使用在大量数据实时交互上,scala现在是很多大数据框架中例如spark和kafka的底层语言,所以在使用大数据计算的时候也是可以学习scala来替代java的。

2.hdfs使用多备份的优缺点有哪些?除了保证数据的安全性。

优点:(1)处理流式数据访问,一次写入,多次读取的操作(2)适合存储比较大的文件(3)适合部署在廉价的机器上

缺点:(1)低延迟的数据访问,由于数据量很大,想要实现豪秒级别的数据访问这是不现实的(2)小文件索引,不管四1M还是125M的数据都会把元数据存储到namenode上,如果小文件特别多,也就会无形中增加了namenode的压力。

3.现在有一个集群10台机器,每台机器256G,40cores,现在要实现处理1T的hdfs数据,怎么分配spark资源?分配完之后计算完大概要多长时间,为什么要这样子配置?

4.spark中的数据倾斜?

数据倾斜概念:数据倾斜就是数据在平行处理的时候,出现了一部分数据显然多于其他部分的数据,导致这一部分的数据处理的速度达到了整个数据集处理的瓶颈。

数据倾斜出现的原因:(1)数据源造成的:hdfs或者kafka (2)如果一个job中包含多个stage的话,并且stage之间存在依赖关系的话,也可能是因为上一个stage的shuffle数据造成的。

数据倾斜解决的方法:(1)sparkstreaming读取kafka数据的时候,kafka中某一个topic的partition个数对应task个数,如果某一个partition的数据量很大,处理的时候肯定会造成数据倾斜的现象。避免出现倾斜的方法,producer使用随机的partitioner,然后数据就会随机的分配到partition中,这样子一般不会造成数据倾斜(2)spark的shuffle的过程增加并行度

你可能感兴趣的:(个人总结)