Nutch2.x 集成ElasticSearch 抓取+索引
- <dependency org="org.elasticsearch" name="elasticsearch" rev="0.90.5" conf="*->default"/>
- <dependency org="org.apache.gora" name="gora-hbase" rev="0.3" conf="*->default" />
- <dependency org="log4j" name="log4j" rev="1.2.16" conf="*->master" />
- #gora.sqlstore.jdbc.driver=org.hsqldb.jdbc.JDBCDriver
- #gora.sqlstore.jdbc.url=jdbc:hsqldb:hsql://localhost/nutchtest
- #gora.sqlstore.jdbc.user=sa
- #gora.sqlstore.jdbc.password=
- gora.datastore.default=org.apache.gora.hbase.store.HBaseStore
- <property>
- <name>storage.data.store.class</name>
- <value>org.apache.gora.hbase.store.HBaseStore</value>
- </property>
- <property>
- <name>http.agent.name</name>
- <value>NutchCrawler</value>
- </property>
- <property>
- <name>parser.character.encoding.default</name>
- <value>utf-8</value>
- </property>
- <property>
- <name>http.accept.language</name>
- <value>ja-jp, en-us, zh-cn,en-gb,en;q=0.7,*;q=0.3</value>
- </property>
- <property>
- <name>generate.batch.id</name>
- <value>1</value>
- </property>
- <configuration>
- <property>
- <name>hbase.rootdir</name>
- <value>file:///data/hbase</value>
- </property>
- <property>
- <name>hbase.zookeeper.property.dataDir</name>
- <value>/data/zookeeper</value>
- </property>
- </configuration>
ant clean
- <property>
- <name>plugin.folders</name>
- <value>/home/eryk/workspace/nutch/runtime/local/plugins</value>
- </property>
- <dependency>
- <groupId>net.sourceforge.nekohtml</groupId>
- <artifactId>nekohtml</artifactId>
- <version>1.9.15</version>
- </dependency>
- <dependency>
- <groupId>org.ccil.cowan.tagsoup</groupId>
- <artifactId>tagsoup</artifactId>
- <version>1.2</version>
- </dependency>
- <dependency>
- <groupId>rome</groupId>
- <artifactId>rome</artifactId>
- <version>1.0</version>
- </dependency>
- <dependency>
- <groupId>org.elasticsearch</groupId>
- <artifactId>elasticsearch</artifactId>
- <version>0.90.5</version>
- <optional>true</optional>
- </dependency>
- <dependency>
- <groupId>org.restlet.jse</groupId>
- <artifactId>org.restlet.ext.jackson</artifactId>
- <version>2.0.5</version>
- <exclusions>
- <exclusion>
- <artifactId>jackson-core-asl</artifactId>
- <groupId>org.codehaus.jackson</groupId>
- </exclusion>
- <exclusion>
- <artifactId>jackson-mapper-asl</artifactId>
- <groupId>org.codehaus.jackson</groupId>
- </exclusion>
- </exclusions>
- <optional>true</optional>
- </dependency>
- <dependency>
- <groupId>org.apache.gora</groupId>
- <artifactId>gora-core</artifactId>
- <version>0.3</version>
- <exclusions>
- <exclusion>
- <artifactId>jackson-mapper-asl</artifactId>
- <groupId>org.codehaus.jackson</groupId>
- </exclusion>
- </exclusions>
- <optional>true</optional>
- </dependency>
- Map<String,Object> argMap = ToolUtil.toArgMap(
- Nutch.ARG_THREADS, threads,
- Nutch.ARG_DEPTH, depth,
- Nutch.ARG_TOPN, topN,
- Nutch.ARG_SOLR, solrUrl,
- ElasticConstants.CLUSTER,elasticSearchAddr, //使用es建立索引
- Nutch.ARG_SEEDDIR, seedDir,
- Nutch.ARG_NUMTASKS, numTasks,
- Nutch.ARG_BATCH,batchId, //解决NullPointerException问题
- GeneratorJob.BATCH_ID,batchId); //解决NullPointerException问题,貌似没用
- run(argMap);
- public void open(TaskAttemptContext job) throws IOException {
- String clusterName = job.getConfiguration().get(ElasticConstants.CLUSTER);
- if (clusterName != null && !clusterName.contains(":")) {
- node = nodeBuilder().clusterName(clusterName).client(true).node();
- } else {
- node = nodeBuilder().client(true).node();
- }
- LOG.info(String.format("clusterName=[%s]",clusterName));
- if(clusterName.contains(":")){
- String[] addr = clusterName.split(":");
- client = new TransportClient()
- .addTransportAddress(new InetSocketTransportAddress(addr[0],Integer.parseInt(addr[1])));
- }else{
- client = node.client();
- }
- bulk = client.prepareBulk();
- defaultIndex = job.getConfiguration().get(ElasticConstants.INDEX, "index");
- maxBulkDocs = job.getConfiguration().getInt(
- ElasticConstants.MAX_BULK_DOCS, DEFAULT_MAX_BULK_DOCS);
- maxBulkLength = job.getConfiguration().getInt(
- ElasticConstants.MAX_BULK_LENGTH, DEFAULT_MAX_BULK_LENGTH);
- }
- 2013-11-03 22:57:36,682 INFO elasticsearch.node - [Ikonn] started
- 2013-11-03 22:57:36,682 INFO elastic.ElasticWriter - clusterName=[a2:9300]
- 2013-11-03 22:57:36,692 INFO elasticsearch.plugins - [Electron] loaded [], sites []
- 2013-11-03 22:57:36,863 INFO basic.BasicIndexingFilter - Maximum title length for indexing set to: 100
- 2013-11-03 22:57:36,864 INFO indexer.IndexingFilters - Adding org.apache.nutch.indexer.basic.BasicIndexingFilter
- 2013-11-03 22:57:36,864 INFO anchor.AnchorIndexingFilter - Anchor deduplication is: off
- 2013-11-03 22:57:36,865 INFO indexer.IndexingFilters - Adding org.apache.nutch.indexer.anchor.AnchorIndexingFilter
- 2013-11-03 22:57:37,946 INFO elastic.ElasticWriter - Processing remaining requests [docs = 86, length = 130314, total docs = 86]
- 2013-11-03 22:57:37,988 INFO elastic.ElasticWriter - Processing to finalize last execute
- 2013-11-03 22:57:41,986 INFO elastic.ElasticWriter - Previous took in ms 1590, including wait 3998
- 2013-11-03 22:57:42,020 INFO elasticsearch.node - [Ikonn] stopping ...
- 2013-11-03 22:57:42,032 INFO elasticsearch.node - [Ikonn] stopped
- 2013-11-03 22:57:42,032 INFO elasticsearch.node - [Ikonn] closing ...
- 2013-11-03 22:57:42,039 INFO elasticsearch.node - [Ikonn] closed
- 2013-11-03 22:57:42,041 WARN mapred.FileOutputCommitter - Output path is null in cleanup
- 2013-11-03 22:57:42,057 INFO elastic.ElasticIndexerJob - Done
Nutch2.x 集成ElasticSearch 抓取+索引的更多相关文章
- nutch2.2.1+mysql抓取数据
基本环境:linux centos6.5 nutch2.2.1 源码包, mysql 5.5 ,elasticsearch1.1.1, jdk1.7 1.下载地址http://mirror.bjtu. ...
- 15-分析Ajax请求并抓取今日头条街拍美图
流程框架: 抓取索引页内容:利用requests请求目标站点,得到索引网页HTML代码,返回结果. 抓取详情页内容:解析返回结果,得到详情页的链接,并进一步抓取详情页的信息. 下载图片与保存数据库:将 ...
- 分析Ajax请求并抓取今日头条街拍美图
项目说明 本项目以今日头条为例,通过分析Ajax请求来抓取网页数据. 有些网页请求得到的HTML代码里面并没有我们在浏览器中看到的内容.这是因为这些信息是通过Ajax加载并且通过JavaScript渲 ...
- Python爬虫系列-分析Ajax请求并抓取今日头条街拍图片
1.抓取索引页内容 利用requests请求目标站点,得到索引网页HTML代码,返回结果. 2.抓取详情页内容 解析返回结果,得到详情页的链接,并进一步抓取详情页的信息. 3.下载图片与保存数据库 将 ...
- 【Python爬虫案例学习】分析Ajax请求并抓取今日头条街拍图片
1.抓取索引页内容 利用requests请求目标站点,得到索引网页HTML代码,返回结果. from urllib.parse import urlencode from requests.excep ...
- Nutch2.x 演示抓取第一个网站
http://www.micmiu.com/opensource/nutch/nutch2x-crawl-first-website/?utm_source=tuicool&utm_mediu ...
- Nutch2.1+mysql+solr3.6.1+中文网站抓取
1.mysql 数据库配置 linux mysql安装步骤省略. 在首先进入/etc/my.cnf (mysql为5.1的话就不用修改my.cnf,会导致mysql不能启动)在[mysqld] 下添加 ...
- windows环境下nutch2.x 在eclipse中实现抓取数据存进mysql详细步骤
nutch2.x 在eclipse中实现抓取数据存进mysql步骤 最近在研究nutch,花了几天时间,也遇到很多问题,最终结果还是成功了,在此记录,并给其他有兴趣的人提供参考,共同进步. 对nutc ...
- Nutch 2.2+MySQL+Solr4.2实现网站内容的抓取和索引
原文地址: http://blog.sina.com.cn/s/blog_3c9872d00101p4f0.html Nutch 2.2.1发布快两月了,该版本与Nutch之前版本相比,有较大变化,特 ...
随机推荐
- leetcode705
class MyHashSet { public: /** Initialize your data structure here. */ MyHashSet() { } void add(int k ...
- TThread 线程的例子
TThread 线程的例子 D:\Documents\Embarcadero\Studio\14.0\Samples\CPP\RTL\Threads TThread类 该线程类可以完成大多数的线程 ...
- 太白老师 day06 编码 encode decode
ASCII : 字母, 数字, 特殊字符 字符:1个字节 数字: 1个字节 Unicode: 万国码, 包含所有文字 创建之初 字符: 2个字节 中文: 2个字节 升级: 字符: 4个字节 中文 : ...
- Spyder kernel died 错误
Keras 2.2.4版本和 tensorflow1.2.1 版本不兼容导致的错误.降低Keras 为2.1.2版本 import keras 出现: Using TensorFlow backend ...
- shell编程——变量子串的常用操作
${#字符串} 返回字符串的长度 [root@localhost ~]# a=length [root@localhost ~]# echo ${#a} 6 ${字符串:位置x} 从位置x开始往后截取 ...
- java算法 第七届 蓝桥杯B组(题+答案) 8.四平方和
8.四平方和 (程序设计) 四平方和定理,又称为拉格朗日定理:每个正整数都可以表示为至多4个正整数的平方和.如果把0包括进去,就正好可以表示为4个数的平方和. 比如:5 = 0^2 + 0^2 + ...
- Lucene的查询及高级内容
Lucene查询 基本查询: @Test public void baseQuery() throws Exception { //1. 创建查询的核心对象 FSDirectory d = FSDir ...
- 刷题向》一道关于位运算的神题(BZOJ3668)(HARD-)
个人觉得这道题对于位运算的加深理解很有意义 根据题目所说,我们要求出一个在给定范围里的自变量,使得最终结果最大. 那么因为这道题是针对于位运算的,所以可以想到用对于位运算取极限情况,即对于“0”和“( ...
- 值得一做》关于一道暴搜BZOJ1024(EASY+)
为什么要写这道题的DP捏? 原因很简单,因为为原来在openjudge上有一道题叫分蛋糕,有一个思路和这道题很像:“分锅”. 分锅:即为考虑计算当前情况的最优解时,把当前状态结果,分散为考虑当前状态的 ...
- 高性能Web服务器Nginx的配置与部署研究(5)Nginx配置符号
1. 容量符号 k 千字节 K 千字节 m 兆字节 M 兆字节 2. 时间符号 ms 毫秒 s 秒 m 分 h 时 d 日 w 周 M 月(按照30天计算) y 年(按照365天计算) 3. 示例 1 ...