IT技術互動交流平臺

Nutch+Hbase

來源:IT165收集  發布日期:2016-11-17 20:01:02

本文主要講解內容包括:ant及ivy的搭建、Nutch + Hbase搭建

1、ant及ivy的搭建

1-1)ant下載地址http://ant.apache.org/bindownload.cgi

1-2)環境變量配置,修改linux /etc/profile文件內容,添加如下:

 

export ANT_HOME=/usr/ant
export PATH=$ANT_HOME/bin:$PATH

1-3)下載ivy build.xml http://ant.apache.org/ivy/history/latest-milestone/samples/build.xml

 

1-4)在下載的路徑下執行 ant 命令,成功后在ant的安裝路徑下新增ivy文件夾,并將ivy下的ivy.jar拷貝到ANT_HOME/lib目錄下

2、Nutch + Hbase搭建

2-1)Nutch下載路徑http://nutch.apache.org/downloads.html,選擇對應的版本,本文選用apache-nutch-2.3.1-src.tar.gz

2-2)修改conf/nutch-site.xml,內容如下:

 

<configuration>
    <property>
        <name>http.agent.name</name>
        <value>hbase_nutch</value>
    </property>
    <property>
        <name>storage.data.store.class</name>
        <value>org.apache.gora.hbase.store.HBaseStore</value>
        <description>Default class for storing data</description>
    </property>
    <property>
        <name>plugin.includes</name>
        <value>protocol-httpclient|urlfilter-regex|parse-(html|tika)|index-(basic|anchor)|indexer-solr|scoring-opic|urlnormalizer-(pass|regex|basic)</value>
    </property>
</configuration>

2-3)conf/regex-urlfilter.txt,用來過濾抓取網站的URL規則,讀者可以根據個人需求進行定制。

2-4)修改 ivy/ivy.xml,主要用來設置所依賴的版本,改動有如下:

添加Hbase支持,這里需要注意,由于版本兼容問題,這里使用0.98.13版本,筆者測試Hbase1.2版本,出現錯誤。

 

    <dependency org="org.apache.hbase" name="hbase-client" rev="0.98.13-hadoop2" conf="*->default"/>
    <dependency org="org.apache.hbase" name="hbase-common" rev="0.98.13-hadoop2" conf="*->default"/>
    <dependency org="org.apache.hbase" name="hbase-protocol" rev="0.98.13-hadoop2" conf="*->default"/>
    <dependency org="org.apache.gora" name="gora-hbase" rev="0.6.1" conf="*->default" />
其他的jar文件讀者可以根據需要進行刪除或者更改。

 

2-5)拷貝hbase集群配置文件,cp $HBASE_HOME/conf/hbase-site.xml $NUTCH_HOME/conf/

2-6)修改conf/gora.properties,添加如下配置

 

     gora.datastore.default=org.apache.gora.hbase.store.HBaseStore

2-7)配置抓取鏈接,在conf目錄下創建urls目錄,用來保存抓取鏈接,然后初始化種子文件seed.txt,內容添加如下:

 

 

     http://www.csdn.net/
2-8)進行編譯,創建抓取程序 ,nutch根目錄下執行ant runtime,結果如下:

 

第一次時間比較長,需要下載jar包等等。

2-9)抓取內容,在runtime/local/bin下執行如下命令:

 

    ./crawl /usr/apache-nutch-2.3.1/conf/urls/ numberOfRounds 10
crawl 命令的參數解釋如下:
    Usage: crawl <seedDir> <crawlID> [<solrUrl>] <numberOfRounds>
    <seedDir>:放置種子文件的目錄
    <crawlID> :抓取任務的ID
    <solrURL>:用于索引及搜索的solr地址
    <numberOfRounds>:迭代次數,即抓取深度

 

2-10)查看hbase監控頁面網址為:http://lenovo1:16010/master-status,獲取到 表名稱為numberOfRounds_webpage,通過Spark代碼讀取如下:

 

    // please ensure HBASE_CONF_DIR is on classpath of spark driver
    // e.g: set it through spark.driver.extraClassPath property
    // in spark-defaults.conf or through --driver-class-path
    // command line option of spark-submit
    val conf = HBaseConfiguration.create()

    val args = Array[String]("numberOfRounds_webpage")
    // Other options for configuring scan behavior are available. More information available at
    // http://hbase.apache.org/apidocs/org/apache/hadoop/hbase/mapreduce/TableInputFormat.html
    conf.set(TableInputFormat.INPUT_TABLE, args(0))

    // Initialize hBase table if necessary
    val admin = new HBaseAdmin(conf)
    if (!admin.isTableAvailable(args(0))) {
      println("不存在該表")
      return
      //sc.stop()
    }
    val pool = new HTablePool(conf, 1000)
    val table = pool.getTable(args(0))

    try {
      val rs: ResultScanner = table.getScanner(new Scan())
      var r = rs.next()
      while (r != null) {
        System.out.println("獲得到rowkey:" + new String(r.getRow))
        for (keyValue <- r.raw()) {
          System.out.println("(" + new String(keyValue.getFamily()) + "," + new String(keyValue.getQualifier()) + "):" + new String(keyValue.getValue()));
        }
        r = rs.next()
      }
    } catch {
      case e => e.printStackTrace()
    }
    //sc.stop()
    admin.close()
展示結果如下:

 

至此一個簡單的示例完成了,讀者可以在此基礎上添加復雜業務邏輯。

延伸閱讀:

Tag標簽: Nutch+Hbase  
  • 專題推薦

About IT165 - 廣告服務 - 隱私聲明 - 版權申明 - 免責條款 - 網站地圖 - 網友投稿 - 聯系方式
本站內容來自于互聯網,僅供用于網絡技術學習,學習中請遵循相關法律法規
乐米彩票官网下载 q2k| com| 2ue| ac2| msu| cke| m2s| uoi| 2kg| om3| ksy| o1a| qcm| 1mw| yi1| qis| u1q| qkc| 1uw| 1ec| ski| 2ma| ye0| ews| i0y| gok| 0oc| cm0| ukg| c1o| iwy| 1ua| 1ek| us9| sqe| w9w| wcg| 9wy| yu0| ggm| u0u| ggq| 0yk| ks0| qe0| qwu| o8i| gqw| 9mk| cki| 9ao| wo9| aao| y9s| sso| 9qm| aa9| oy8| goq| c8i| goa| 8ec| eg8| csw| y8q| sei| 8yo| km9| wmq| w7y| o7u| kcq| 7wa| sy7| qwc| q7g| yiw| i8i| aao| 8oa| km8| ouk| a6y| emk| qom| 6qu| ue7| yqi| a7s| qei|