1、kafka 的 message 包括哪些信息
一个 的 由一个固定长度的 和一个变长的消息体 组成
部分由一个字节的 文件格式和四个字节的 用于判断 消息
体是否正常构成。当 的值为 的时候,会在 和 之间多一个字节的数
据:保存一些相关属性,比如是否压缩、压缩格式等等;如果 的值为
,那么不存在 属性
是由 个字节构成的一个消息体,包含了具体的 消息
2、怎么查看 kafka 的 oset
! 版本以上,可以用最新的 "#"#客户端,有 " $%"#
" &"#可以用于得到当前最新的 ':
3、hadoop 的 shue 过程
一、& 端的 (
& 端会处理输入数据并产生中间结果,这个中间结果会写到本地磁盘,而不是
)*+,。每个 & 的输出会先写到内存缓冲区中,当写入的数据达到设定的阈值时,系统
将会启动一个线程将缓冲区的数据写到磁盘,这个过程叫做 &。
在 & 写入之前,会先进行二次排序,首先根据数据所属的 &" 进行排序,然
后每个 &" 中的数据再按 来排序。&" 的目是将记录划分到不同的
上去,以期望能够达到负载均衡,以后的 就会根据 &" 来读取
自己对应的数据。接着运行 "如果设置了的话," 的本质也是一个
,其目的是对将要写入到磁盘上的文件先进行一次处理,这样,写入到磁盘的数
据量就会减少。最后将数据写到本地磁盘产生 & 文件& 文件保存在
-& .指定的目录中,& 任务结束后就会被删除。
最后,每个 & 任务可能产生多个 & 文件,在每个 & 任务完成前,会通过多路
归并算法将这些 & 文件归并成一个文件。至此,& 的 ( 过程就结束了。
二、 端的 (
端的 ( 主要包括三个阶段,&、和 。
首先要将 & 端产生的输出文件拷贝到 端,但每个 如何知道自己
应该处理哪些数据呢?因为 & 端进行 &" 的时候,实际上就相当于指定了每个
要处理的数据&" 就对应了 ,所以 在拷贝数据的时候
只需拷贝与自己对应的 &" 中的数据即可。每个 会处理一个或者多个
&",但需要先将自己对应的 &" 中的数据从每个 & 的输出结果中拷贝过来。
接下来就是 阶段,也成为 阶段,因为这个阶段的主要工作是执行了归并
排序。从 & 端拷贝到 端的数据都是有序的,所以很适合归并排序。最终在
端生成一个较大的文件作为 的输入。
最后就是 过程了,在这个过程中产生了最终的输出结果,并将其写到 )*+,
上。