Open Source
文章平均质量分 87
千与
系统架构设计,分布式系统,海量数据处理,机器学习。
展开
-
对SolrCloud集群Collection进行手动二次Sharding
我们已经基于SolrCloud 4.3.1+Tomcat 7搭建了搜索服务器集群,一个Collection对应3个节点上的3个分片(Shard),同时包含对应分片的副本(Replica),此时,该Collection一共有6000万左右Document,平均每个分片大约接近2000万。SolrCloud集群节点的具体分布,如图所示:只有shard1有一个副本,并且位原创 2013-08-05 18:32:35 · 18257 阅读 · 4 评论 -
理解Lucene得分计算公式
Lucene通过计算文档的得分来确定查询结果文档的相似度。如果你希望通过干预Lucene查询来改变查询结果的排序,你就需要对Lucene的得分计算有所理解。Lucene得分计算公式如下所示:score(q,d) = coord(q,d)·queryNorm(q)·∑( tf(t in d)·idf(t)^2·t.getBoost()·norm(t,d) )其中,t in q。下原创 2011-09-17 17:17:53 · 12184 阅读 · 5 评论 -
Nutch 1.0配置与运行
有一段时间没有关注Nutch了,借最近假期,尝试一下,以后可能会慢慢深入了解Nutch及其相关的内容(像Hadoop),话不多说,先把最简单配置的Nutch运行起来。 这次下载了Nutch 1.0,貌似和之前版本在配置上有轻微的变化。由于Nutch基于Hadoop项目,肯定需要满足Hadoop运行的一些配置,为了更能详细地说明实际的配置和运行过程,还是采用按步骤进行解释的方式来表达。我直接原创 2010-10-05 01:12:00 · 3135 阅读 · 2 评论 -
Lucene增强功能:Payload的应用
有关Lucene的Payload的相关内容,可以参考如下链接,介绍的非常详细,值得参考:http://www.ibm.com/developerworks/cn/opensource/os-cn-lucene-pl/http://www.lucidimagination.com/blog/2009/08/05/getting-started-with-payloads/例如,有这样的一原创 2011-09-17 19:50:13 · 7277 阅读 · 3 评论 -
基于Solr 3.5搭建搜索服务器
Solr已经发布3.5版本了,同时它是基于Lucene 3.5的。我们在基于Solr进行二次开发之前,首先要搭建起一个搜索服务器,在熟悉Solr的基本功能的基础上,可以根据实际应用的需要进行个性化定制开发。因为Solr提供了一种插件机制,我们可以根据自己的需要进行定制,然后在Solr的配置文件中(solrconfig.xml)进行配置即可达到预期的要求。在Solr的发行包中给出了一个配置的例子,我原创 2011-12-07 18:12:38 · 7580 阅读 · 5 评论 -
Hadoop 0.20.0+RHEL 5+Eclipse plugin+Makefile开发环境搭建
Hadoop框架已经将MapReduce的运行机制封装好,程序员在实际开发过程中,只需要将精力专注于各自的业务逻辑,而不必花费过多的时间和精力来考虑具体怎么调度和执行,因为MapReduce框架已经将这些做好了,这样降低了MapReduce程序开发的难度,具有很好的易用性。这里通过在Linux系统下,搭建基于Hadoop + Eclipse plugin的开发环境,并在实际中使用。下面详述具体原创 2010-10-08 23:52:00 · 3957 阅读 · 2 评论 -
在Linux单机上运行Hadoop-0.20.0实例
其实,Hadoop-0.20.0与Hadoop-0.19.0的入门运行非常相似,基本步骤都是相同的。不同的是:Hadoop-0.19.0的配置文件hadoop-site.xml中内容,在Hadoop-0.20.0的配置中进行了拆分,分别放在三个配置文件中,如下:1、core-site.xml配置文件内容配置如下所示: fs.default.name原创 2010-08-02 21:27:00 · 5055 阅读 · 4 评论 -
Hadoop格式化HDFS报错java.net.UnknownHostException: localhost.localdomain: localhost.localdomain
异常描述在对HDFS格式化,执行hadoop namenode -format命令时,出现未知的主机名的问题,异常信息如下所示: [shirdrn@localhost bin]$ hadoop namenode -format11/06/22 07:33:31 INFO namenode.NameNode: STARTUP_MSG: /*******************原创 2011-06-22 23:04:00 · 67914 阅读 · 5 评论 -
在Linux单机上运行Hadoop-0.19.0实例
Hadoop-0.19.0的代码可以到Apache上下载,链接为http://archive.apache.org/dist/hadoop/core/hadoop-0.19.0/,我使用的Linux机器是RHEL 5,Linux上安装的Java版本为1.6.0_16,并且JAVA_HOME=/usr/java/jdk1.6.0_16。 实践过程 1、ssh无密码验证登陆localh原创 2010-08-02 01:28:00 · 13628 阅读 · 2 评论 -
基于Lucene多索引进行索引和搜索
Lucene支持创建多个索引目录,同时存储多个索引。我们可能担心的问题是,在索引的过程中,分散地存储到多个索引目录中,是否在搜索时能够得到全局的相关度计算得分,其实Lucene的ParallelMultiSearcher和MultiSearcher支持全局得分的计算,也就是说,虽然索引分布在多个索引目录中,在搜索的时候还会将全部的索引数据聚合在一起进行查询匹配和得分计算。索引目录处理原创 2011-12-13 13:17:26 · 9161 阅读 · 3 评论 -
开发更新Solr索引的工具
Solr搜索服务器直接部署到Web容器之中,如果想要在服务器外部管理索引(创建、更新、删除),需要向Solr服务器进程发送待处理的请求数据或者命令,实际索引变更是在Solr服务器程序中完成,自然而然底层是调用Lucene的API来实现这一操作的。为了便于平时在开发中,随时向Solr服务器发送索引更新请求,来观察实际执行状况,或验证Solr的最新功能,我们基于Solr自带的SimplePostToo原创 2011-12-08 21:17:27 · 8218 阅读 · 1 评论 -
Solr实现Low Level查询解析(QParser)
Solr基于Lucene提供了方便的查询解析和搜索服务器的功能,可以以插件的方式集成,非常容易的扩展我们自己需要的查询解析方式。其中,Solr内置了一些QParser,对一些没有特殊要求的应用来说,可以直接使用这些查询解析组件,而无需做任何修改,只需要了解这些查询解析组件提供的基本参数(Local Params),就可以实现强大的搜索功能。对于Solr来说,它的设计目标就是尽可能屏蔽底层Luc原创 2011-11-03 22:31:18 · 5142 阅读 · 2 评论 -
SolrCloud 4.3.1+Tomcat 7安装配置实践
我们使用Solr Replication可以实现Solr服务器的可用性,即使某一个索引副本由于磁盘介质故障或者误操作删除等,其他的多个复制副本仍然可以提供服务。如果只是单纯的基于Solr Replication技术,只能对一个索引进行管理维护,当索引数据达到一定规模,搜索的性能成了瓶颈,除了重新规划设计索引,实现逻辑划分以外,没有更好地方法实现查询服务器的可扩展性。SolrCloud就是为了解原创 2013-08-02 16:35:30 · 17290 阅读 · 13 评论 -
Ubuntu系统下Hadoop 2.0.4集群安装配置
Hadoop 2已经将HDFS和YARN分开管理,这样分开管理,可以是HDFS更方便地进行HA或Federation,实现HDFS的线性扩展(Scale out),从而保证HDFS集群的高可用性。从另一个方面们来说,HDFS可以作为一个通用的分布式存储系统,而为第三方的分布式计算框架提供方便,就像类似YARN的计算框架,其他的如,Spark等等。YARN就是MapReduce V2,将原来Ha原创 2013-08-03 12:44:38 · 10788 阅读 · 3 评论 -
RHEL 5下配置Hadoop集群:java.net.NoRouteToHostException: No route to host问题的解决
最近,要把原来基于Ubuntu下配置的Hadoop集群迁移到RHEL 5下,结果在启动的时候,出现了莫名其妙的问题:Namenode进程启动起来了,但是在登录到Datanode上启动集群slaves的时候,出现了Datanode无法连接到Namenode的问题,根据Datanode日志,可以很容易地定位到问题,肯定是在集群启动之初,Datanode向Namenode注册的时候失败了,在Data原创 2012-02-21 16:26:43 · 58394 阅读 · 3 评论 -
HBase-0.90.4集群安装配置
HBase是Hadoop数据库,能够实现随机、实时读写你的Big Data,它是Google的Bigtable的开源实现,可以参考Bigtable的论文Bigtable: A Distributed Storage System for Structured。HBase的存储模型可以如下三个词来概括:distributed, versioned, column-oriented。HBase并非原创 2012-01-09 01:22:13 · 14372 阅读 · 1 评论 -
Hadoop-0.22.0分布式集群配置
Hadoop集群的安装和配置,主要分为两个部分:一部分是主机环境配置,主要是指Hadoop集群所依赖的操作系统及其相关软件的安装配置,包括操作系统安装、JDK安装配置、主机规划与IP地址映射配置、无密码认证会话配置;另一部分是Hadoop基本配置,主要是指Hadoop集群的各种基本组件的配置,包括HDFS的配置、MapReduce配置。下面根据上面总结的两个部分进行详细配置实践。在配置之前原创 2011-12-31 01:24:13 · 5902 阅读 · 1 评论 -
ZooKeeper-3.3.4集群安装配置
ZooKeeper是一个分布式开源框架,提供了协调分布式应用的基本服务,它向外部应用暴露一组通用服务——分布式同步(Distributed Synchronization)、命名服务(Naming Service)、集群维护(Group Maintenance)等,简化分布式应用协调及其管理的难度,提供高性能的分布式服务。ZooKeeper本身可以以Standalone模式安装运行,不过它的长处在原创 2012-01-08 23:16:32 · 132107 阅读 · 22 评论 -
Solr集群Replication配置与实践
Solr作为一个搜索服务器,在并发搜索请求的场景下,可能一台服务器很容易就垮掉,这是我们可以通过使用集群技术,设置多台Solr搜索服务器同时对外提供搜索服务,在前端使用类似Nginx的负载均衡软件,可以通过配置使得并发到达的搜索请求均匀地反向代理到Solr集群中的每一台服务器上,这样每台Solr搜索服务器搜索请求的压力可以大大减小,增强了每台服务器能够持续提供服务器的能力。然而,这时我们面临的原创 2011-12-09 19:07:14 · 21430 阅读 · 11 评论 -
使用Solrj管理Solr索引
Solrj是Solr搜索服务器的一个比较基础的客户端工具,可以非常方便地与Solr搜索服务器进行交互,最基本的功能就是管理Solr索引,包括添加、更新、删除和查询等。对于一些比较基础的应用,用Solj基本够用,而且你可以非常容易地通过使用Solrj的API实现与Solr搜索服务器进行交互,实现对Solr的基本管理功能。如果你的应用比较复杂,可以扩展Solrj来满足需要。下面是一个使用Solrj原创 2011-12-22 11:17:20 · 16244 阅读 · 3 评论 -
Hadoop-0.20.0源代码分析(17)
继续为分析org.apache.hadoop.hdfs.server.namenode.FSNamesystem类做准备,这里分析与FSEditLog相关的几个类,当然,FSEditLog类才是核心的。FSEditLog.EditLogFileOutputStream内部静态类该类是定义在org.apache.hadoop.hdfs.server.namenode.FSEditLo原创 2009-10-05 16:42:00 · 4165 阅读 · 0 评论 -
Hadoop-0.20.0源代码分析(07)
前面分析了与操作系统有关的Shell命令,它们用于与操作系统进行命令行方式的交互。在Hadoop中,自定义了FileSystem文件系统,这是基于Unix操作系统之上的文件系统,为了方便对FileSystem的管理,通过org.apache.hadoop.fs.FsShell类定义了对Hadoop FileSystem文件系统进行命令行方式管理的命令实现。先给出对Hadoop文件系统进行管理的原创 2009-09-22 21:45:00 · 5422 阅读 · 0 评论 -
Hadoop-0.20.0源代码分析(06)
在阅读Hadoop源代码过程中,在org.apache.hadoop.security.UnixUserGroupInformation类中,需要获取到Unix系统的用户名和所属组的信息,就需要通过执行Shell命令得到相应的结果,这里,通过阅读Hadoop项目org.apache.hadoop.util包、org.apache.hadoop.fs.shell包、org.apache.hadoop原创 2009-09-22 21:01:00 · 5998 阅读 · 1 评论 -
Hadoop-0.20.0源代码分析(05)
以文件流作为一个切面,阅读Hadoop源代码org.apache.hadoop.fs包中源代码。关于流,分为输入流和输出流两种,下面也这样简单划分为两类进行阅读分析。输入流类与输入流相关的接口和类的继承层次关系如下所示:◦java.io.InputStream(java.io.Closeable) ◦java.io.FilterInputStream ◦ja原创 2009-09-21 19:05:00 · 6595 阅读 · 0 评论 -
Hadoop-0.20.0源代码分析(04)
前面,分析了org.apache.hadoop.fs.Filesystem抽象类,我们已经了解到,要实现一个最基本的文件系统都需要包含哪些要点。下面具体到某个实现Filesystem的具体实现类,基于该抽象类Filesystem派生的类的继承关系: ◦org.apache.hadoop.fs.FileSystem (implements java.io.Closeable)原创 2009-09-21 02:41:00 · 7304 阅读 · 0 评论 -
Hadoop-0.20.0源代码分析(03)
在Hadoop框架源代码org.apache.hadoop.fs包中,都是关于Hadoop文件系统实现的相关类,主要包括文件系统模型的建立,及其在该文件系统定义、实现基本的文件操作。例如给出文件系统抽象,对文件系统上存储的文件执行基本操作进行抽象,等等。在该包中,类的继承关系如下所示:◦java.lang.Object ◦org.apache.hadoop.fs.BlockLoc原创 2009-09-20 14:11:00 · 7175 阅读 · 1 评论 -
Hadoop-0.20.0源代码分析(01)
Hadoop 框架是两个模型实现的有机整合,亦即Hadoop分布式文件系统(HDFS)与MapReduce并行编程模型,也就是说,Hadoop框架要能够提供的基本功能就是,在存储系统HDFS上进行MapReduce并行计算,所以,如果想要了解Hadoop框架的工作原理和运行机制,主要从这两个方面着手。其实,Hadoop中MapReduce并行计算应该是在HDFS实现的,因此了解计算所基于HDF原创 2009-09-19 13:08:00 · 16121 阅读 · 2 评论 -
Hadoop-0.20.0源代码分析(14)
Hadoop集群中,不同进程之间通信需要使用合适的协议才能够进行交互,之前对Hadoop给出的协议接口做了分析。在协议接口中约定了通信双方的特定行为,那么,在实现这些通信协议的实现类中,就能看到指定进程是如何实现协议接口中约定的行为的。这里,阅读分析org.apache.hadoop.hdfs.server.namenode.Namenode实现类。首先,看一下Namenode类实现的接口,下原创 2009-09-28 18:53:00 · 4757 阅读 · 0 评论 -
Hadoop-0.20.0源代码分析(15)
我们已经分析了org.apache.hadoop.hdfs.server.namenode.Namenode类的实现,而且知道,一个Namenode提供的主要服务是基于其内部定义的org.apache.hadoop.hdfs.server.namenode.FSNamesystem属性来实现的。可见,org.apache.hadoop.hdfs.server.namenode.FSNamesyst原创 2009-09-28 21:41:00 · 5706 阅读 · 0 评论 -
Hadoop-0.20.0源代码分析(02)
UserGroupInformation类定义了一个与文件系统相关的用户和组信息抽象的内容,Hadoop框架实现了一个基于Unix系统的用户和组信息的实现类UnixUserGroupInformation,该类继承自UserGroupInformation抽象类。从UserGroupInformation抽象类与其子类UnixUserGroupInformation的属性字段可以看出,抽象类所原创 2009-09-19 23:59:00 · 6391 阅读 · 0 评论 -
Hadoop-0.20.0源代码分析(08)
这里,继续对FsShell类中一些命令进行阅读分析,主要是看与拷贝文件有关的几个命令。cp命令该命令实现对文件的拷贝操作,并且支持在不同的文件系统之间进行文件的拷贝。拷贝文件涉及的操作比较复杂,核心拷贝操作还是调用了org.apache.hadoop.fs.FileUtil类的copy方法实现的。 先看该类中定义的其中一个copy方法的实现: private int copy原创 2009-09-23 20:48:00 · 3924 阅读 · 1 评论 -
Hadoop-0.20.0源代码分析(09)
通过前面,对Hadoop的org.apache.hadoop.fs包中内容进行分析,已经基本了解到,一个文件系统应该具备哪些基本要素和基本操作。最显著的一个特点就是,FileSystem文件系统是基于流式数据访问的,并且,可以基于命令行的方式来对文件系统的文件进行管理与操作。而且,基于FileSystem文件系统的抽象定义,我们可以了解到,继承自该抽象的一切具体实现的文件系统,都具有统一的文件访问原创 2009-09-24 21:21:00 · 4054 阅读 · 0 评论 -
Hadoop-0.20.0源代码分析(19)
这里,对重要的FSImage类进行阅读分析。该类的继承层次关系如下所示: ◦org.apache.hadoop.hdfs.server.common.StorageInfo ◦org.apache.hadoop.hdfs.server.common.Storage ◦org.apache.hadoop.hdfs.server.namenode.FSImag原创 2009-10-07 14:57:00 · 5152 阅读 · 3 评论 -
Hadoop-0.20.0源代码分析(11)
这里分析一下IPC模型中的Server端的实现。该Server类的实现有点复杂,而且涉及到网络中字节流缓冲区的操作问题,及其字节数据的反序列化。Server类该Server是服务端的抽象实现,定义了一个抽象的IPC服务。 该IPC服务器接收Client发送的参数值,并返回响应值。同时,作为IPC模型的服务端,它要维护Client端到Server端的一组连接。首先看Server类定义的几原创 2009-09-26 19:24:00 · 3994 阅读 · 1 评论 -
Hadoop-0.20.0源代码分析(12)
在org.apache.hadoop.ipc包中,Server类是一个抽象类,抽象了IPC模型中Server端的基本行为。下面对RPC类进行阅读分析。RPC类给出了一个简单的RPC机制,它的协议是基于一个Java接口,协议界定,所有的参数和返回类型必须是下面之一:1、一个基本类型:boolean、byte、char、short、int、long、float、double,或void;2原创 2009-09-26 20:10:00 · 3796 阅读 · 2 评论 -
Hadoop-0.20.0源代码分析(16)
这里对与org.apache.hadoop.hdfs.server.namenode.FSDirectory类相关的类进行阅读分析。INodeDirectoryWithQuota类该类org.apache.hadoop.hdfs.server.namenode.INodeDirectoryWithQuota的继承层次关系如下所示:◦org.apache.hadoop.hdfs.原创 2009-10-04 09:40:00 · 4767 阅读 · 1 评论 -
Hadoop-0.20.0源代码分析(18)
这里,对Hadoop实现的与升级管理相关的实现类进行分析。通过升级管理器,可以对文件系统的状态进行定时升级更新,保证最良好的工作状态。下面从不同的侧面对与分布式升级相关的内容分类分析。升级命令与升级命令相关的实现类的继承层次关系如下所示:◦org.apache.hadoop.hdfs.server.protocol.DatanodeCommand(implements org.原创 2009-10-06 16:03:00 · 3582 阅读 · 2 评论 -
Hadoop-0.20.0源代码分析(10)
DFSClient是分布式文件系统客户端,它能够连接到Hadoop文件系统执行指定任务,那么它要与Namenode与Datanode基于一定的协议来进行通信。这个通信过程中,涉及到不同进程之间的通信。在org.apache.hadoop.ipc包中,定义了进程间通信的Client端与Server端的抽象,也就是基于C/S模式进行通信。这里先对org.apache.hadoop.ipc包中有关类的源原创 2009-09-25 17:23:00 · 4441 阅读 · 1 评论 -
Hadoop-0.20.0源代码分析(13)
通过对org.apache.hadoop.ipc包中,Hadoop实现了基于IPC模型的RPC机制,可以不需要像Java中实现的RMI机制一样,在RPC调用的C/S两端分别创建Stub和Skeleton,而是通过一组协议来进行RPC调用就可以实现通信。这主要是由于Hadoop所采用的序列化机制简化了RPC调用的复杂性。Hadoop定义了自己的通信协议,这些协议都是建立在TCP/IP协议之上的,规范原创 2009-09-28 11:31:00 · 4904 阅读 · 1 评论