网站首页 > 文章精选 正文
技术面试对于每一个程序员来说,是在求职过程中都会经历的一个环节,而今天我们就给大家简单介绍一下大数据程序员面试都有哪些常见面试题。
1.kafka集群的规模,消费速度是多少。
答:一般中小型公司是10个节点,每秒20M左右。
2.hdfs上传文件的流程。
答:这里描述的是一个256M的文件上传过程
①由客户端向NameNode节点节点发出请求
②NameNode向Client返回可以可以存数据的DataNode这里遵循机架感应原则
③客户端先根据返回的信息先将文件分块(Hadoop2.X版本每一个block为128M而之前的版本为64M
④然后通过那么Node返回的DataNode信息直接发送给DataNode并且是流式写入同时会复制到其他两台机器
⑤dataNode向Client通信表示已经传完数据块同时向NameNode报告⑥依照上面(④到⑤)的原理将所有的数据块都上传结束向NameNode报告表明已经传完所有的数据块。
3.讲述一下mapreduce的流程(shuffle的sort,partitions,group)
先是Mapreduce经过SplitInput输入分片决定map的个数在用Record记录keyvalue。然后分为以下三个流程:
Map:
输入key(long类型偏移量)value(Text一行字符串)
输出keyvalue
Shuffle:、
合并(merge)map输出时先输出到环形内存,当内存使用率达到60%时开始溢出写入到文件,溢出文件都是小文件,所以就要合并他们,在这个构成中就会排序,根据key值比较排序
排序(sort)如果你自定义了key的数据类型要求你的类一定是WriteableCompartor的子类,不想继承WriteableCompartor,至少实现Writeable,这时你就必须在job上设置排序比较器job.setSortCmpartorClass(MyCompartor.class);而MyCompartor.class必须继承RawCompartor的类或子类
分区(partition)会根据map输出的结果分成几个文件为reduce准备,有几个reducetask就分成几个文件,在job上设置分区器job.setPartitionerClass(MyPartition.class)Myrtition.class要继承Partitioner这个类
分组(group)分区时会调用分组器,把同一分区中的相同key的数据对应的value制作成一个iterable,并且会在sort。在job上设置分组器。
Job.setGroupCompartorClass(MyGroup.class)MyGroup.class必须继承RawCompartor的类跟子类
上面的结果储存到本地文件中,而不是hdfs上
上面只要有完成结果,reduce就开始复制上面的结果,通过http方式
Reduce
输入key时map输出时的keyvalue是分组器分的iterable
输出keyvalue
输出结果保存在hdfs上而不是本地文件中
4.了解zookeeper吗?介绍一下它,它的选举机制和集群的搭建。
答:那当然是熟悉啦,ZooKeeper是一个开源的分布式协调服务,是GoogleChubby的开源实现。分布式应用程序可以基于ZooKeeper实现诸如数据发布/订阅、负载均衡、命名服务、分布式协调/通知、集群管理、Master选举、分布式锁和分布式队列等功能。我们公司使用的flume集群,Kafka集群等等,都离不开ZooKeeper呀。每个节点上我们都要搭建ZooKeeper服务。先我们要在每台pc上配置zookeeper环境变量,在cd到zookeeper下的conf文件夹下在zoo_simjle.cfg文件中添加datadir路径,再到zookeeper下新建data文件夹,创建myid,在文件里添加上server的ip地址。在启动zkserver.shstart便ok了。
5.sparkstreming在实时处理时会发生什么故障,如何停止,解决
和Kafka整合时消息无序:
修改Kafka的ack参数,当ack=1时,master确认收到消息就算投递成功。ack=0时,不需要收到消息便算成功,高效不准确。sck=all,master和server都要受到消息才算成功,准确不高效。
StreamingContext.stop会把关联的SparkContext对象也停止,如果不想把SparkContext对象也停止的话可以把StremingContext.stop的可选参数stopSparkContext设为flase。一个SparkContext对象可以和多个streamingcontext对象关联。只要对前一个stremingcontext.stop(stopsparkcontext=false),然后再创建新的stremingcontext对象就可以了。
6.mysql,mongodb,rides的端口。
面试数据库介绍的再好,不知到默认端口,也证明你没有经验。mysql:3306,mongdb:27017,rides:6379。
猜你喜欢
- 2025-07-08 几种缓存更新的设计方法,值得一看
- 2025-07-08 知乎问题:如何应对桀骜不驯的优秀应届生?
- 2025-07-08 大数据Kafka技术解析(大数据为什么使用kafka)
- 2025-07-08 别小看tail 命令,它难倒了技术总监
- 2025-07-08 如何应对桀骜不驯的优秀人才?(如何对付桀骜不驯的人)
- 2025-07-08 大数据和云计算学习知识点和配套视频
- 2025-07-08 一封天才应届生的求职信!不服管教被CEO哄抢!上司反遭围攻
- 2025-07-08 知因智慧大数据面试题,真实面试分享
- 2025-07-08 Kafka 最新面试题(10道-附答案)(kafuka面试)
- 最近发表
-
- 五分钟轻松熟悉一个k8s Operator应用制作
- iLogtail 使用入门 - K8S 环境日志采集到 SLS
- k8s之配置CNI网络(k8s 网络配置)
- Linux系统K8S集群架构及常用操作命令之K9S安装及使用
- Centos 安装部署Kubernetes(K8s)(k8s环境搭建 centos)
- 集群外部署Prometheus+Grafana监控K8S解析
- k8s安装UI管理工具Kuboard安装(k8s安装步骤)
- k8s中使用Helm安装生产级别redis集群
- K8s集群(K8s集群添加新节点更新步骤)
- Kubernetes (k8s) 基本命令速查(k8s kubernetes教程)
- 标签列表
-
- newcoder (56)
- 字符串的长度是指 (45)
- drawcontours()参数说明 (60)
- unsignedshortint (59)
- postman并发请求 (47)
- python列表删除 (50)
- 左程云什么水平 (56)
- 计算机网络的拓扑结构是指() (45)
- 编程题 (64)
- postgresql默认端口 (66)
- 数据库的概念模型独立于 (48)
- 产生系统死锁的原因可能是由于 (51)
- 数据库中只存放视图的 (62)
- 在vi中退出不保存的命令是 (53)
- 哪个命令可以将普通用户转换成超级用户 (49)
- noscript标签的作用 (48)
- 联合利华网申 (49)
- swagger和postman (46)
- 结构化程序设计主要强调 (53)
- 172.1 (57)
- apipostwebsocket (47)
- 唯品会后台 (61)
- 简历助手 (56)
- offshow (61)
- mysql数据库面试题 (57)