首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

每日三问合辑五

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获取该信息。

重要通知:

公众号现在已经把目前所有的干货都整理出来了,

在外面点击菜单即可看到全部内容。

关注这个公众号,定期会有大数据学习的干货推送给你哦~

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20180312G0L2IJ00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券