摘要:
BlockSender 在DataNode节点上,主要有四个地方会用到数据块发送器BlockSender: 1.当用户向HDFS读取某一个文件时,客户端会根据数据所在的位置转向到具体的DataNode节点请求对应数据块的数据,此时DataNode节点会用BlockSender向该客户端发送数据; 2.当NameNode节点发现某个Block的副本不足时,它会要求某一个存储了该Block的DataNode节点向其它DataNode节点复制该Block,当然此时仍然会采用流水线的复制方式,只不过数据来源变成了一个DataNode节点; 3.HDFS开了一个调节DataNode负载均衡的工具Bal. 阅读全文
摘要:
DataNode上数据块的接受/发送并没有采用我们前面介绍的RPC机制,原因很简单,RPC是一个命令式的接口,而DataNode处理数据部分,往往是一种流式机制。DataXceiverServer和DataXceiver就是这个机制的实现。其中,DataXceiver还依赖于两个辅助类:BlockSender和BlockReceiver。如下是类图DataXceiverServerDataXceiverServer相对比较简单,创建一个ServerSocket来接受请求,每接受一个连接,就创建一个DataXceiver用于处理请求,并将Socket存在一个名为childSockets的Map中 阅读全文
摘要:
http://www.54xiaomeng.com/?p=546模块入门–搜索发表于2012 年 6 月 5 日搜索能够帮助用户在海量的数据库中实现大海捞针,是产品最核心的模块之一。本篇是从设计的角度介绍搜索模块,包含Web和ios两个平台,下面直接开始正文:1.快速搜索搜索是帮助用户简单快速的匹配相关内容,最简单的search box主要包含两个元素:①文本框 ②按钮(可以隐藏用回车代替)快速搜索是最基本的搜索模型,用户输入文字点击按钮或直接回车即可完成搜索。2.垂直搜索如果搜索引擎明确只是在海量数据库中寻找一个特定的子集,那么这时候会使用到垂直搜索。垂直搜索主要元素包括:①文本框 ②... 阅读全文