73.请说明Kafka相对传统技术有什么优势?
Apache Kafka与传统的消息传递技术相比优势之处在于:
快速:单一的Kafka代理可以处理成千上万的客户端,每秒处理数兆字节的读写操作。
可伸缩:在一组机器上对数据进行分区和简化,以支持更大的数据
持久:消息是持久性的,并在集群中进行复制,以防止数据丢失。
74.在数据制作过程中,如何能从Kafka得到准确的信息?
在数据中,为了精确地获得Kafka的消息,必须遵循两件事: 在数据消耗期间避免重复,在数据生产过程中避免重复。
这里有两种方法,可以在数据生成时准确地获得一个语义:
• 每个分区使用一个单独的写入器,每当你发现一个网络错误,检查该分区中的最后一条消息,以查看您的最后一次写入是否成功
• 在消息中包含一个主键(UUID或其他),并在用户中进行反复制
75.解释Kafka的用户如何消费信息?
kafka 消费者有消费者族群的概念,当生产者将数据发布到topic时,消费者通过pull的方式,定期从服务器拉取数据,当然在pull数据的时候,服务器会告诉consumer可消费的消息offset。
创建一个Topic (名为topic1),再创建一个属于group1的Consumer实例,并创建三个属于group2的Consumer实例,然后通过 Producer向topic1发送Key分别为1,2,3的消息。结果发现属于group1的Consumer收到了所有的这三条消息,同时 group2中的3个Consumer分别收到了Key为1,2,3的消息,如下图所示。
结论:不同 Consumer Group下的消费者可以消费partition中相同的消息,相同的Consumer Group下的消费者只能消费partition中不同的数据。zookeeper会记录每个consumer的在每个topic的每个partition下的消费的offset,然后每次去消费去拉取数据时,都会从上次记录的位置开始拉取数据。
76.我们可以在没有Zookeeper的情况下使用Kafka吗?
Zookeeper是一个开放源码的、高性能的协调服务,它用于Kafka的分布式应用。不可能越过Zookeeper,直接联系Kafka broker。一旦Zookeeper停止工作,它就不能服务客户端请求。
• Zookeeper主要用于在集群中不同节点之间进行通信
• 在Kafka中,它被用于提交偏移量,因此如果节点在任何情况下都失败了,它都可以从之前提交的偏移量中获取
• 除此之外,它还执行其他活动,如: leader检测、分布式同步、配置管理、识别新节点何时离开或连接、集群、节点实时状态等等。
77.如何减少ISR中的扰动?broker什么时候离开ISR?
ISR是一组与leaders完全同步的消息副本,也就是说ISR中包含了所有提交的消息。ISR应该总是包含所有的副本,直到出现真正的故障。如果一个副本没有跟上leader的更新,将会从ISR中删除。
78.Kafka为什么需要复制?
Kafka的信息复制确保了任何已发布的消息不会丢失,并且可以在机器错误、程序错误或更常见些的软件升级中使用。
79.kafka中ISR是什么?作用是什么?
ISR (In-Sync Replicas),这个是指副本同步队列。副本数对Kafka的吞吐率是有一定的影响,但极大的增强了可用性。默认情况下Kafka的replica数量为1,即每个partition都有一个唯一的leader,为了确保消息的可靠性,通常应用中将其值(由broker的参数offsets.topic.replication.factor指定)大小设置为大于1,比如3。 所有的副本(replicas)统称为Assigned Replicas,即AR。ISR是AR中的一个子集,由leader维护ISR列表,follower从leader同步数据有一些延迟(包括延迟时间replica.lag.time.max.ms和延迟条数replica.lag.max.messages两个维度, 当前最新的版本0.10.x中只支持replica.lag.time.max.ms这个维度),任意一个超过阈值都会把follower剔除出ISR, 存入OSR(Outof-Sync Replicas)列表,新加入的follower也会先存放在OSR中。AR=ISR+OSR。
80.如果首选的副本不在ISR中会发生什么?
如果首选的副本不在ISR中,控制器将无法将leadership转移到首选的副本。
81.有可能在生产后发生消息偏移吗?
在大多数队列系统中,作为生产者的类无法做到这一点,它的作用是触发并忘记消息。broker将完成剩下的工作,比如使用id进行适当的元数据处理、偏移量等。
作为消息的用户,你可以从Kafka broker中获得补偿。如果你注视SimpleConsumer类,你会注意到它会获取包括偏移量作为列表的MultiFetchResponse对象。此外,当你对Kafka消息进行迭代时,你会拥有包括偏移量和消息发送的MessageAndOffset对象。
82.maven和sbt的对比?
1.sbt项目用ivy2,可以使用maven的包
2.sbt可以进行增量编译,且编译速度是堪比c++的
3.sbt提供了一个scala的console,并且导入默认的一些包,非常方便的交互
4.sbt在插件上支持的并不是那么好,很多maven中好用的功能,需要用额外的插件,比如mvn dependency:tree(ps:最新版的不需要plugin ,运行sbt test:compile即可,会出现在target/resolution-cache/reports下各种非常详细的报告)
5.maven利用pom.xml进行项目管理
83.hive来自同个表的两个聚合函数的结果如何相除?
SELECT SUM(if(reordered = 1,1,0))/COUNT(1) FROM join_table;
注:聚合函数的结果不能用别名显示
84.hive来自不同表的两个聚合函数的结果如何相除?
可以采用WITH AS短语,也叫做子查询部分(subquery factoring)。如下
WITH
c1
AS (select count(*) as a1 from orders),
c2
AS (select count(*) as a2 from join_table)
SELECT c1.a1/c2.a2 FROM c1,c2;
85.Hive中数据倾斜如何处理?
首先要定位到哪些数据 导致数据倾斜。确定完之后常见的处理方法有:
原理是加个combiner函数,加上combiner相当于提前进行reduce,就会把一个mapper中的相同key进行了聚合,减少shuffle过程中数据量,以及reduce端的计算量。这种方法可以有效的缓解数据倾斜问题,但是如果导致数据倾斜的key 大量分布在不同的mapper的时候,这种方法就不是很有效了。
原理是局部聚合加全局聚合,即进行两次mapreduce,第一次在map阶段对那些导致了数据倾斜的key加上1~n的随机前缀,这样之前相同的key也会被分到不同的reduce中,进行聚合,这样的话就有那些倾斜的key进行局部聚合,数量就会大大降低。然后再进行第二次mapreduce这样的话就去掉随机前缀,进行全局聚合。这样就可以有效地降低mapreduce了。不过进行两次mapreduce,性能稍微比一次的差些。
86.linux命令中,执行一个程序,后面加上&, 代表的意思是什么?
后台执行。也就是执行这个程序的同时,你的终端同时还能够做其他的事情,如果不加这个符号,那么你执行这个程序后,你的终端只能等这个程序执行完成才能够继续执行其他的操作 。
87.spark有哪几种运行方式?
spark运行模式分为:Local(本地idea上运行),Standalone,yarn,mesos等,其中在yarn上的运行方式是最常见的生产方式。根据spark Application的Driver Program是否在集群中运行,spark on yarn的运行方式又可以分为Cluster模式和Client模式。
88.fsimage和editlogs的作用?
fsimage保存了最新的元数据检查点,edits保存自最新检查点后的命名空间的变化。从最新检查点后,hadoop将对每个文件的操作都保存在edits中,为避免edits不断增大,secondary namenode就会周期性合并fsimage和edits成新的fsimage,edits再记录新的变化, 这种机制有个问题:因edits存放在Namenode中,当Namenode挂掉,edits也会丢失,导致利用secondary namenode恢复Namenode时,会有部分数据丢失。
89.用Hive写出每位用户投稿的复投率(1月2号的投稿数/1月1号的投稿数)?
表名: Item
字段名:usr_id,item_id,item_create_time
select usr_id,sum(if (item_create_time=0102, 1, 0))/sum(if (item_create_time =0101, 1, 0))
from item
groupby usr_id;
90.map方法是如何调用reduce方法的
reduce端可能从多个map的结果中获取数据,而这些map的执行速度不尽相同,当其中一个map运行结束时,reduce就会从jobtracker中获取该信息。map运行结束后tasktracker会得到消息,进而将消息汇报给jobtracker,reduce定时从jobtracker获取该信息。
重要通知:
公众号现在已经把目前所有的干货都整理出来了,
在外面点击菜单即可看到全部内容。
关注这个公众号,定期会有大数据学习的干货推送给你哦~
领取专属 10元无门槛券
私享最新 技术干货