- 浏览: 80929 次
- 性别:
- 来自: 北京
最新评论
文章列表
基于Lucene的SOLR一直以稳定、高性能著称,虽然其在高并发下对CPU要求较高,但能解决复杂的查询并能以如此快的速度内返回搜索结果,实在是开发搜索的一大利器。公司部署在Linux服务器上的Master-Slave架构的SOLR在过去1年多以来运行都比较稳定。
最近一周,有开发人员反馈索引更新速度非常慢,造成一大堆数据还未等待索引操作,客户端提交索引的逻辑优化很多遍都没有效果。对于索引性能的检查,主要是从客户端和服务端两个地方入手:
1、客户端,检查结果发现多线程并未出现死锁,通过solrj发送索引命令因为执行速度太慢一直被阻塞在线程池中,客户端使用的是官方推荐的 ...
转:http://kenwublog.com/theory-of-java-biased-locking
阅读本文的读者,需要对Java轻量级锁有一定的了解,知道lock record, mark word之类的名词。可以参考我的一篇博文:Java轻量级锁原理详解(Lightweight Locking)
Java偏向锁(Biased Locking)是Java6引入的一项多线程优化。它通过消除资源无竞争情况下的同步原语,进一步提高了程序的运行性能。
轻量级锁也是一种多线程优化,它与偏向锁的区别在于,轻量级锁是通过CAS来避免进入开销较大的互斥操作,而偏向锁是在无竞争场景下完全消除同步 ...
主要类分析:一、 org.apache.nutch.crawl.Injector: 1,注入url.txt 2,url标准化 3,拦截url,进行正则校验(regex-urlfilter.txt) 4,对符URL标准的url进行map对构造<url, CrawlDatum>,在构造过程中给CrawlDatum初始化得分,分 ...
nutch源码阅读(10)-Fetch
- 博客分类:
- nutch
private static class QueueFeeder extends Thread {
private RecordReader<Text, CrawlDatum> reader;
private FetchItemQueues queues; //生产者和消费者的共享序列,分层,一层对应一个host
private int size;
private long timelimit = -1;
public QueueFeeder(RecordReader<Text, CrawlDatum&g ...
nutch源码阅读(9)-Fetch
- 博客分类:
- nutch
Fetcher这个模块在Nutch中有单独一个包在实现,在org.apache.nutch.fetcher,其中有Fetcher.java, FetcherOutput 和FetcherOutputFormat来组成,看上去很简单,但其中使用到了多线程,多线程的生产者与消费者模型,MapReduce的多路径输出等方法。下 ...
(转)hadoop/mapred 优化方法
- 博客分类:
- hadoop
谭东的空间:http://thethethethethethe.spaces.live.com/default.aspx 从三个方面着手优化 :1. hadoop配置2. 设计mapred/job3. 代码级别.4. 改造hadoop一. conf/hadoop-site.xml配置.经验要求高, 特别需要结合实际情况.典型参数如复制因子,mapred.child.java.opts,mapred.tasktracker.map.tasks.maximum,mapred.tasktracker.reduce.tasks.maximum,mapred.map.tasks,mapred.reduce ...
nutch源码阅读(8)-Generator
- 博客分类:
- nutch
接着看下最后一个Job
...................
...................
...................
//判断是否更新
if (getConf().getBoolean(GENERATE_UPDATE_CRAWLDB, false)) {
// update the db from tempDir
// 产生临时目录
Path tempDir2 = new Path(getConf().get("mapred.temp.dir", ".") + "/ ...
nutch源码阅读(7)-Generator
- 博客分类:
- nutch
继续向下看,第二个Job
....................
....................
....................
// read the subdirectories generated in the temp
// output and turn them into segments
List<Path> generatedSegments = new ArrayList<Path>();
//读取上个job生成的多个fetchlist的segment
FileStatus[ ...
nutch源码阅读(6)-Generator
- 博客分类:
- nutch
for (i = 0; i < depth; i++) {
// generate new segment
//根据传入参数depth来决定循环次数,生成segment
Path[] segs = generator.generate(crawlDb, segments, -1, topN, System
.currentTimeMillis());
if (segs == null) {
LOG.info("Stopping at depth=&quo ...
转:http://www.cnblogs.com/xleequ/archive/2013/01/07/2849449.html
本文包括4部分内容:
1.基本流程(阅读README和README-builds.html)2.安装基础软件包3.配置变量4.检查环境是否配置ok与编译jdk源码
下载源码openjdk-7u6-fcs-src-b24-28_aug_2012.zip,解压
1.基本流程(阅读README和README-builds.html)
README-builds.html中包含有详细的安装信息,最好能完整的阅读一下。---------README---- ...
Hadoop重温(4)--ipc
- 博客分类:
- hadoop
依赖于Hadoop Writable类型的支持。Hadoop Writable接口要求每个实现类都得确保将本类的对象正确序列化(writeObject)与反序列化(readObject)。因此,Hadoop RPC使用Java动态代理与反射实现对象调用方式,客户端到服务器数据的序列化与反序列化由Hadoop框架或用户自己来实现,也就是数据组装是定制的。
Hadoop IPC在org.apache.hadoop.ipc
RemoteException:远程异常,表示远程调用过程中的错误。
Status:枚举类,包括 SUCCESS (0) 成功, ERROR (1)一般错误, ...
重温hadoop(3)--序列化
- 博客分类:
- hadoop
Hadoop的序列化机制特征:
紧凑:带宽是hadoop集群中最稀缺的资源,一个紧凑的序列化机制可以充分利用带宽。
快速:mapreduce会大量的使用序列化机制。因此,要尽可能减少序列化开销。
可扩张:序列化机制需要可定制
互操作:可以支持不同开发语言间的通信。
java本身的序列化,将要序列化的类,类签名、类的所有非暂态和非静态成员的值,以及所有的父类都要写入,导致序列化的对象过于充实。可能比原来扩大了几十上百倍。
由上面的条件,hadoop自定义了序列化机制,引入org.apache.hadoop.io.Writable
/**
* A ...
nutch源码阅读(5)-Injector总结
- 博客分类:
- nutch
nutch的inject 有二个job 第一个job 如下图 map :InjectMapper 功能如下 1 url是否有tab分割的k-v 对如果有记录下来, 2 如果配置了过滤使用 URLNormalizers和 URLFilters 对url 进行格式化和过滤, 3 如果过滤的url 不为空则创建CrawlDatum ...
JobConf mergeJob = CrawlDb.createJob(getConf(), crawlDb);
//可以看到上一个MP的输出tempDir,就是这个MP的输入
FileInputFormat.addInputPath(mergeJob, tempDir);
mergeJob.setReducerClass(InjectReducer.class);
JobClient.runJob(mergeJob);
CrawlDb.install(mergeJob, crawlDb);
public void co ...