vim encoding
摘要:在 Vim 中,有四个与编码有关的选项,它们是:fileencodings、fileencoding、encoding和termencoding。在实际使用中,任何一个选项出现错误,都会导致出现乱码。因此,每一个 Vim 用户都应该明确这四个选项的含义。下面,我们详细介绍一下这四个选项的含义和作用。1encodingencoding是 Vim 内部使用的字符编码方式。当我们设置了encoding之后,Vim 内部所有的 buffer、寄存器、脚本中的字符串等,全都使用这个编码。Vim 在工作的时候,如果编码方式与它的内部编码不一致,它会先把编码转换成内部编码。如果工作用的编码中含有无法转换为内
阅读全文
[hadoop源码阅读][8]-datanode-datanode
摘要:datanode的定义 public class DataNode extends Configured implements InterDatanodeProtocol, ClientDatanodeProtocol, FSConstants, Runnable, DataNodeMXBeanDataNode实现了两个通信接口,其中ClientDatanodeProtocol是用于和Clien...
阅读全文
[hadoop源码阅读][8]-datanode-BlockSender,BlockReceiver
摘要:BlockSender 在DataNode节点上,主要有四个地方会用到数据块发送器BlockSender: 1.当用户向HDFS读取某一个文件时,客户端会根据数据所在的位置转向到具体的DataNode节点请求对应数据块的数据,此时DataNode节点会用BlockSender向该客户端发送数据; 2.当NameNode节点发现某个Block的副本不足时,它会要求某一个存储了该Block的DataNode节点向其它DataNode节点复制该Block,当然此时仍然会采用流水线的复制方式,只不过数据来源变成了一个DataNode节点; 3.HDFS开了一个调节DataNode负载均衡的工具Bal.
阅读全文
[hadoop源码阅读][8]-datanode-DataXceiver
摘要: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.垂直搜索如果搜索引擎明确只是在海量数据库中寻找一个特定的子集,那么这时候会使用到垂直搜索。垂直搜索主要元素包括:①文本框 ②...
阅读全文
[hadoop源码阅读][8]-datanode-FSDataset
摘要:与块相关的操作由Dataset相关的类处理,存储结构由大到小是卷(FSVolume)、目录(FSDir)和文件(Block和元数据等) block相关 block类有三个属性 private long blockId;//blockidprivate long numBytes;//block大小private long generationStamp;//block版本号 Block是对一个数据块的抽象,通过前面的讨论我们知道一个Block对应着两个文件,其中一个存数据,一个存校验信息,如下: blk_3148782637964391313 blk_314878263796439...
阅读全文
[hadoop源码阅读][8]-datanode-StorageDirectory
摘要:DataNode节点中的存储路径会分别存储不同的文件数据块。HDFS对节点存储路径的实现被抽象成了一个StorageDirectory类。 StorageDirectory文件 StorageDirectory类主要包含三个属性: File root; // 节点存储目录所在本地文件系统的目录 dfs.data.dir中配置的一个本地路径FileLock lock; // 排它锁,同步控制节点对该存储目录的操作 in_use.lockStorageDirType dirType; // namenode 或者datanoderoot目录下的文件结构在上一篇中已经介绍过了.不过datanode和
阅读全文
[hadoop源码阅读][8]-datanode-DataStorage
摘要:datanode的存储大体上可以分为两部分: 1.与Storage相关的类从宏观上刻画了每个存储目录的组织结构,管理由HDFS属性dfs.data.dir指定的目录,如current、previous、detach、tmp、storage等目录和文件,并定义了对整个存储的相关操作; 2.与Dataset相关的类描述了块文件及其元数据文件的组织方式,如current目录中的文件组织结构,以及对块文件的相关操作。 因为namenode也会用到Storage相关,而namenode并不存储块文件,因而将存储分成这两部分。 Storage类相关 先从一个datanode的配置看起,datanod...
阅读全文
[hadoop源码阅读][7]-HDFS概述(为读源码做准备)
摘要:1.GFS论文 HDFS是GFS的简化开源实现版本,了解GFS是不可缺少的.英文版本论文:http://research.google.com/archive/gfs.html论文中文翻译版:http://blademaster.ixiezi.com/2010/03/27/the-google-file-system%E4%B8%AD%E6%96%87%E7%89%88/其他参考:http://www.nosqlnotes.net/archives/2372.HDFS设计官方文档:http://hadoop.apache.org/common/docs/r0.19.2/cn/hdfs_desi
阅读全文