Nutch2.4 存储方式配置
Nutch2.x 存儲方式配置
Nutch2.x存儲映射技術(shù)Gora
在Nutch2.x只后,Nutch存儲映射使用apache的Gora(Gora是一個開源的ORM框架),為了了解Gora是個什么東西,我就從網(wǎng)上隨便搜了一些Gora框架的介紹。
Gora就是一個大數(shù)據(jù)的表示與持久化框架,它有如下特點
數(shù)據(jù)持久化:它可以對列數(shù)據(jù)進行持久化,如HBase,Cassandra,Hypertable; key-value數(shù)據(jù)進行持久化,如Voldermort,Redis等,SQL數(shù)據(jù)庫進行持久化,如MySQL,HSQLDB,也可以對文件進行HDFS存儲 。
數(shù)據(jù)訪問:可以使用Java API對數(shù)據(jù)進行輕松的訪問
索引:可以持久化對象到Lucene或者Solr中去,可以使用Gora API來進行查詢
分析:可以使用Apache Pig,Hive,cascading來對數(shù)據(jù)進行分析
MR的支持:原生支持Hadoop的MR框架,這個已經(jīng)被用在Nutch 2.0上了
支持使用Pig,lucene,hive等針對數(shù)據(jù)進行持久化,索引和分析工作
目前除Nutch2外,在其他開源產(chǎn)品中使用Gora的好像沒有看到
? Nutch2系列通過gora對存儲層進行了擴展,可以選擇使用HBase、Accumulo、Cassandra 、MySQL 、DataFileAvroStore、AvroStore中任何一種來存儲數(shù)據(jù),但其中一些并不成熟。
? 目前gora還亟待改進。對于追求性能極致的朋友來說,nutch2.x還不穩(wěn)定,建議使用nutch1.x,利用HDFS和MapReduce的數(shù)據(jù)本地化及天然的并行性,可以優(yōu)化到非常快的速度。
Apache Gora介紹-阿里云開發(fā)者社區(qū) (aliyun.com)
引用原文發(fā)布時間:2016-05-13
現(xiàn)在:2021-12-03(相隔了5年了,到現(xiàn)在了Gora還在跟新,看來Apache想對NoSQL數(shù)據(jù)庫們提供一套通用的框架)
到Gora的0.9版本已經(jīng)可以適配一下大數(shù)據(jù)框架了,我們這里可以看到Solr這些搜索引擎的適配
Gora 0.9 provides support for the following projects
- Apache Avro 1.8.2
- Apache HBase 2.1.1
- Apache Cassandra 3.11.0 (Datastax Java Driver 3.3.0)
- Apache Solr 8.0.0
- Apache Lucene 8.0.0
- MongoDB (Mongo Java Driver) 3.5.0
- Apache Accumlo 1.7.1
- Apache CouchDB 1.4.2
- Amazon DynamoDB (Amazon Java SDK) 1.10.55
- Infinispan 7.2.5.Final
- JCache 1.0.0 with JCache provider Hazelcast 3.6.4
- OrientDB 2.2.22
- Aerospike 4.2.2
- Apache Ignite 2.6.0
- Apache Pig 0.16.0
- Apache Flink 1.6.2
- Apache Hadoop 2.5.2
- Apache Spark 2.2.1
- Test containers 1.4.2
Nutch2.x默認的存儲方式
- 打開apache-nutch-2.4\conf文件夾下面的nutch-default.xml文件
- 或者在apache-nutch-2.4\runtime\local\conf文件夾下面的nutch-default.xml文件(源碼經(jīng)過ant編譯后才有)
找到storage properties,可以看到如果我們不在nutch-site.xml中不配置storage.data.store.class這個property時,默認是會使用org.apache.gora.memory.store.MemStore作為存儲方式
org.apache.gora.memory.store.MemStore
Gora class for storing data in a Memory based implementation for tests.
從這個可以知道這個默認存儲方式的內(nèi)存的,用于測試使用
<!-- storage properties --><property><name>storage.data.store.class</name><value>org.apache.gora.memory.store.MemStore</value><description>The Gora DataStore class for storing and retrieving data.Currently the following stores are available:org.apache.gora.sql.store.SqlStore Default store. A DataStore implementation for RDBMS with a SQL interface.SqlStore uses JDBC drivers to communicate with the DB. As explained in ivy.xml, currently >= gora-core 0.3 is not backwards compatable with SqlStore.org.apache.gora.cassandra.store.CassandraStoreGora class for storing data in Apache Cassandra.org.apache.gora.hbase.store.HBaseStoreGora class for storing data in Apache HBase.org.apache.gora.accumulo.store.AccumuloStoreGora class for storing data in Apache Accumulo.org.apache.gora.memory.store.MemStoreGora class for storing data in a Memory based implementation for tests.org.apache.gora.mongodb.store.MongoStoreGora class for storing data in MongoDB.org.apache.gora.solr.store.SolrStoreGora class for storing data in Apache Solr.</description> </property>更改Nutch2.x的存儲方式
更改為HBaseStore
- 在apache-nutch-2.4\runtime\local\conf文件夾下面的nutch-site.xml文件(源碼經(jīng)過ant編譯后才有runtime目錄)中添加以下配置
- 查看apache-nutch-2.4\runtime\local\conf文件夾下面的gora.properties文件(源碼經(jīng)過ant編譯后才有runtime目錄),根據(jù)HBaseStore properties注釋,對hbase.site.xml配置有效的hbase.zookeeper.quorum屬性,如果沒配置就默認zookeeper的地址是localhost:2181。
在apache-nutch-2.4\runtime\local\conf中的hbase.site.xml添加屬性hbase.zookeeper.quorum。
<property> <name>hbase.zookeeper.quorum</name><!--更改為自己zookeeper的地址--><value>localhost</value> </property>更改為MySQL
在apache-nutch-2.4\runtime\local\conf文件夾下面的nutch-site.xml文件(源碼經(jīng)過ant編譯后才有runtime目錄)中添加以下配置
<property><name>storage.data.store.class</name><value>org.apache.gora.sql.store.SqlStore</value> </property>- 在apache-nutch-2.4\runtime\local\conf文件夾下面的gora.properties文件(源碼經(jīng)過ant編譯后才有runtime目錄),添加以下配置。
添加對應的jar包
Nutch是使用ivy實現(xiàn)jar包管理的,ivy是類似于maven的jar包管理工具,在使用ant編譯源碼前,對ivy的依賴配置進行修改。
打開apache-nutch-2.4\ivy文件夾,找到ivy.xml文件。
找到Hadoop Dependencies的依賴配置,可以根據(jù)自己的需要修改成自己hadoop版本的jar包。
<!-- Hadoop Dependencies --><dependency org="org.apache.hadoop" name="hadoop-common" rev="2.5.2" conf="*->default"><exclude org="hsqldb" name="hsqldb" /><exclude org="net.sf.kosmosfs" name="kfs" /><exclude org="net.java.dev.jets3t" name="jets3t" /><exclude org="org.eclipse.jdt" name="core" /><exclude org="org.mortbay.jetty" name="jsp-*" /><exclude org="ant" name="ant" /></dependency><dependency org="org.apache.hadoop" name="hadoop-hdfs" rev="2.5.2" conf="*->default"/><dependency org="org.apache.hadoop" name="hadoop-mapreduce-client-core" rev="2.5.2" conf="*->default"/><dependency org="org.apache.hadoop" name="hadoop-mapreduce-client-jobclient" rev="2.5.2" conf="*->default"/><!-- End of Hadoop Dependencies -->找到Gora的依賴配置
<!--================--> <!-- Gora artifacts --> <!--================--> <!-- N.B. To use Gora SNAPSHOT's, replace the 'ref' value with the SNAPSHOT version and add changing="true" alongside the dependency declaration.--> <dependency org="org.apache.gora" name="gora-core" rev="0.8" conf="*->default"/>使用Hbase的時候
把hbase的依賴的注釋去掉
<dependency org="org.apache.gora" name="gora-hbase" rev="0.8" conf="*->default" /> <dependency org="org.apache.hbase" name="hbase-common" rev="1.4.8" conf="*->default" />使用mysql的時候
org.apache.gora.sql.store.SqlStore
Default store. A DataStore implementation for RDBMS with a SQL interface.
SqlStore uses JDBC drivers to communicate with the DB. As explained in
ivy.xml, currently >= gora-core 0.3 is not backwards compatable with
SqlStore.
根據(jù)nutch-site.xml中關(guān)于SqlStore 的解析,需要gora-core的版本要在0.3以下。
<dependency org="org.apache.gora" name="gora-core" rev="0.2.1" conf="*->default"/>并添加gora-sql的依賴和MySQL的驅(qū)動
<!--gora-sql依賴--> <dependency org="org.apache.gora" name="gora-sql" rev="0.1.1-incubating" conf="*->default" /> <!--添加mysql驅(qū)動--> <dependency org="mysql" name="mysql-connector-java" rev="5.1.18" conf="*->default"/>庫表的創(chuàng)建
Hbase的列名映射
使用Hbase時需要對數(shù)據(jù)列進行映射,
MySQL庫表 的創(chuàng)建
使用MySQL整合nutch2.4要給MySQL創(chuàng)建一個表,以存儲爬取的數(shù)據(jù)。
CREATE DATABASE nutch DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci; CREATE TABLE `webpage` (`id` varchar(767) CHARACTER SET latin1 NOT NULL, `headers` blob, `text` mediumtext DEFAULT NULL, `status` int(11) DEFAULT NULL, `markers` blob, `parseStatus` blob, `modifiedTime` bigint(20) DEFAULT NULL, `score` float DEFAULT NULL, `typ` varchar(32) CHARACTER SET latin1 DEFAULT NULL, `baseUrl` varchar(512) CHARACTER SET latin1 DEFAULT NULL, `content` mediumblob, `title` varchar(2048) DEFAULT NULL, `reprUrl` varchar(512) CHARACTER SET latin1 DEFAULT NULL, `fetchInterval` int(11) DEFAULT NULL, `prevFetchTime` bigint(20) DEFAULT NULL, `inlinks` mediumblob, `prevSignature` blob, `outlinks` mediumblob, `fetchTime` bigint(20) DEFAULT NULL, `retriesSinceFetch` int(11) DEFAULT NULL, `protocolStatus` blob, `signature` blob, `metadata` blob, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8;總結(jié)
以上是生活随笔為你收集整理的Nutch2.4 存储方式配置的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 苹果认怂 2024年将在欧洲开放第三方A
- 下一篇: Nomad 推出车用 MagSafe 配