• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

      網(wǎng)絡(luò)數(shù)據(jù)采集框架Nutch及其應(yīng)用研究

      2019-10-15 12:43:22周飚
      中國管理信息化 2019年18期
      關(guān)鍵詞:分布式

      周飚

      [摘 要]隨著大數(shù)據(jù)與云計算、物聯(lián)網(wǎng)、人工智能進一步融合,各行各業(yè)產(chǎn)生了海量電子化數(shù)據(jù),建立大數(shù)據(jù)應(yīng)用首要解決的問題就是采集數(shù)據(jù),其中,Apache Nutch是用于數(shù)據(jù)采集的爬蟲框架。為采集若干人才招聘網(wǎng)站職位需求數(shù)據(jù),采用MySQL數(shù)據(jù)庫進行數(shù)據(jù)存儲,采用Nutch實現(xiàn)網(wǎng)站數(shù)據(jù)采集,采用排程框架Quartz實現(xiàn)數(shù)據(jù)定時采集和更新。

      [關(guān)鍵詞]Nutch;分布式;爬蟲框架;Crawler Quartz排程

      doi:10.3969/j.issn.1673 - 0194.2019.18.078

      [中圖分類號]TP391.1[文獻標(biāo)識碼]A[文章編號]1673-0194(2019)18-0-03

      0? ? ?引 言

      未來大數(shù)據(jù)產(chǎn)業(yè)發(fā)展出現(xiàn)兩大趨勢:①與云計算、人工智能等前沿創(chuàng)新技術(shù)深度融合,實現(xiàn)超大規(guī)模數(shù)據(jù)運算,智能化、自動化的海量數(shù)據(jù)分析,在短時間內(nèi)完成復(fù)雜度較高、精密度較高的信息處理;②制造業(yè)產(chǎn)品從市場規(guī)劃、設(shè)計、制造、銷售到維護整個生命周期會產(chǎn)生大量結(jié)構(gòu)化和非結(jié)構(gòu)化數(shù)據(jù),形成制造業(yè)大數(shù)據(jù),為使產(chǎn)品制造全過程變得更加敏捷、精準(zhǔn)和智能,企業(yè)不斷升級制造業(yè)的大數(shù)據(jù)解決方案,助力傳統(tǒng)制造業(yè)迅速轉(zhuǎn)型與發(fā)展。

      世界各國已將大數(shù)據(jù)上升為國家戰(zhàn)略,大數(shù)據(jù)在推動我國經(jīng)濟轉(zhuǎn)型升級過程中發(fā)揮著至關(guān)重要的作用。從大數(shù)據(jù)產(chǎn)業(yè)層級來看,主要分為3層,從底層到上層分別是基礎(chǔ)支撐層、數(shù)據(jù)服務(wù)層和融合應(yīng)用層。面對來自政府、工業(yè)、農(nóng)業(yè)、交通、商品交易和互聯(lián)網(wǎng)等各方面巨大的數(shù)據(jù),發(fā)展大數(shù)據(jù)應(yīng)用亟待建立起穩(wěn)定高效的數(shù)據(jù)采集和存儲的基礎(chǔ)設(shè)施。數(shù)據(jù)從哪里來,如何采集數(shù)據(jù),是首先要解決的問題。

      1? ? ?網(wǎng)站數(shù)據(jù)采集

      互聯(lián)網(wǎng)網(wǎng)站會產(chǎn)生大量開放的非結(jié)構(gòu)化和結(jié)構(gòu)化網(wǎng)頁數(shù)據(jù)。對于這些數(shù)據(jù),企業(yè)可以通過網(wǎng)站提供的公共API和網(wǎng)頁爬蟲從網(wǎng)站上獲取。網(wǎng)頁爬蟲適用所有可以訪問的網(wǎng)站,無論網(wǎng)站是否提供了API,都可以進行數(shù)據(jù)采集,這種方案不存在局限性。目前,常用的網(wǎng)頁爬蟲系統(tǒng)有Nutch、Crawler4j、Scrapy等框架。本文將對Nutch在網(wǎng)頁數(shù)據(jù)采集方面進行初步研究。

      2? ? ?Nutch技術(shù)介紹

      Apache Nutch是一個高度可擴展和可伸縮性的分布式爬蟲框架。Nutch通過分布式抓取網(wǎng)頁數(shù)據(jù),并由Hadoop支持,通過提交MapReduce任務(wù)來抓取網(wǎng)頁數(shù)據(jù),可以將網(wǎng)頁數(shù)據(jù)存儲在HDFS分布式文件系統(tǒng)中。Nutch可以進行分布式多任務(wù)的數(shù)據(jù)爬取、存儲和索引。由于多個計算機并行做爬取任務(wù),Nutch可以充分利用多個計算機的計算資源和存儲能力,大大提高系統(tǒng)爬取數(shù)據(jù)能力。Nutch在搜索引擎中負責(zé)爬取網(wǎng)頁,同時自動維護網(wǎng)頁的URL信息,例如,相同網(wǎng)頁去重、網(wǎng)頁定時更新、網(wǎng)頁重定向。Nutch采用了MapReduce分布式爬取和解析,具有良好的水平擴展性。Nutch 2.x引入了Gora作為存儲抽象層,從而支持各種傳統(tǒng)SQL數(shù)據(jù)庫和NoSQL數(shù)據(jù)庫,如MySQL、HBase、Cassandra等。

      只看Apache Nutch單任務(wù)網(wǎng)頁爬蟲,從總體上分為3個主要部分,即爬行、索引和搜索,各部分之間的協(xié)作關(guān)系是Nutch根據(jù)目標(biāo)網(wǎng)址列表及層級訪問網(wǎng)站,抓取內(nèi)容并進行存儲,然后對這些內(nèi)容建立索引,在索引的基礎(chǔ)上完成所需數(shù)據(jù)的搜索。Nutch基本運行流程包含5個步驟:①將起始URL集合注入Nutch系統(tǒng)中;②生成片段文件,其中,包含將要抓取的URL地址,然后根據(jù)URL地址在互聯(lián)網(wǎng)上抓取相應(yīng)內(nèi)容;③解析所抓取到的網(wǎng)頁,并分析其中的文本和數(shù)據(jù);④根據(jù)新抓取網(wǎng)頁中的URL集合更新起始URL集合,并再次進行抓取;⑤對抓取到的網(wǎng)頁內(nèi)容建立索引,生成索引文件存放在系統(tǒng)中。從用戶角度來看,Nutch提供了一個基于Tomcat的查詢應(yīng)用程序,允許用戶輸入詞條,Nutch以Lucene為搜索引擎在索引文件中進行搜索,并將相應(yīng)的結(jié)果返回給用戶。

      3? ? ?案例及解決方案研究

      本文基于Nutch2.1爬蟲框架結(jié)合其他技術(shù)來研究如何采集各個人才招聘網(wǎng)站職位需求數(shù)據(jù),為中、高等職業(yè)院校主管部門在專業(yè)設(shè)置、招生就業(yè)方面提供數(shù)據(jù)分析依據(jù)。

      (1)建立Eclipse開發(fā)環(huán)境下Nutch+MySQL二次開發(fā)環(huán)境。下載Nutch 2.2.1源碼,修改相關(guān)配置文件,利用ant工具構(gòu)建Eclipse二次開發(fā)項目,在Eclipse開發(fā)環(huán)境中導(dǎo)入該項目。創(chuàng)建Java Maven項目,在pom.xml文件中配置好Nutch,依賴各個jar包并自動下載。

      (2)安裝MySQL數(shù)據(jù)庫服務(wù)器,創(chuàng)建后臺數(shù)據(jù)庫及webpage表。

      (3)配置Nutch,使其采用MySQL關(guān)系型數(shù)據(jù)庫存儲數(shù)據(jù)。修改/ivy/ivy.xml文件的代碼如下。

      (4)項目數(shù)據(jù)庫連接配置。修改gora.properties,以連接到指定的后臺數(shù)據(jù)庫,

      ora.sqlstore.jdbc.driver=com.mysql.jdbc.Driver

      gora.sqlstore.jdbc.url=jdbc:mysql://數(shù)據(jù)庫服務(wù)器IP地址:端口/后臺數(shù)據(jù)庫名

      gora.sqlstore.jdbc.user=XXXX(連接數(shù)據(jù)庫的用戶名)

      gora.sqlstore.jdbc.password=******(連接數(shù)據(jù)庫的密碼)

      (5)配置nutch-site.xml文件,添加6個property。第1個property的name為http.agent.name,value為YourNutchSpider;第2個property的name為http.accept.language,value為ja-jp, en-us,en-gb,en;q=0.7,*;q=0.3;第3個property的name為storage.data.store.class,value為org.apache.gora.sql.store.SqlStore;第4個property的name為parser.character.encoding.default,value為utf-8;第5個property的name為plugin.includes,value為protocol-http|urlfilter-regex|parse-(html|tika)|index-(basic|anchor)|urlnormalizer-(pass|regex|basic)|scoring-opic;第6個property的name為generate.batch.id,value為*。

      配置格式如下所示:

      屬性名

      屬性值

      描述

      (6)配置Nutch要訪問的種子網(wǎng)站域名。在項目根目錄下,建立urls目錄,然后在目錄下建立一個文本文件,文件名為seed.txt,內(nèi)容是爬取的人才網(wǎng)站域名。

      (7)調(diào)用Nutch API。Nutch本身提供了Crawler類來執(zhí)行數(shù)據(jù)爬蟲的命令??梢允褂肏adoop的ToolRunner來運行Crawl工具,自定義Java類MyCrawler.java,在main方法中調(diào)用ToolRunner.run方法運行Crawler,主要代碼如下。

      public class MyCrawler {

      public static void main(String[] args) {

      String crawlArg = "urls -depth 1";

      try {

      ToolRunner.run(NutchConfiguration.create(), new Crawler(), tokenize(crawlArg));

      } catch (Exception e) {

      e.printStackTrace();

      return;

      }

      }

      public static String[] tokenize(String str) {

      StringTokenizer tok = new StringTokenizer(str);

      String tokens[] = new String[tok.countTokens()];

      int i = 0;

      while (tok.hasMoreTokens()) {

      tokens[i] = tok.nextToken();

      i++;

      }

      return tokens;

      }

      }

      (8)為了解決定時采集最新人才招聘網(wǎng)站的職位需求數(shù)據(jù),引入java排程框架Quartz。將上面實現(xiàn)網(wǎng)頁抓取的代碼封裝進Job接口的實現(xiàn)類CrawJob,再利用Quartz排程API實現(xiàn)定時執(zhí)行數(shù)據(jù)采集,主要代碼如下。

      //1、創(chuàng)建Scheduler的工廠

      SchedulerFactory sf = new StdSchedulerFactory();

      //2、從工廠中獲取調(diào)度器實例

      Scheduler scheduler = sf.getScheduler();

      //3、創(chuàng)建JobDetail

      JobDetail jobDetail = JobBuilder.newJob(CrawlJob.class)

      .withDescription("This is a crawl web data job by nutch to DB.")

      .withIdentity("crawlJob", "crawGroup")

      .build();

      //4、創(chuàng)建Trigger

      Trigger t = TriggerBuilder.newTrigger()

      .withDescription("This is a trigger of crawl web data.")

      .withIdentity("crawlTrigger", "crawlTriggerGroup")

      .startAt(startTime)

      .withSchedule(CronScheduleBuilder.cronSchedule("0 */1 * * * ?")).build();

      //5、注冊任務(wù)和定時器

      scheduler.scheduleJob(jobDetail, t);

      scheduler.scheduleJob(historyJobDetail, historyTrigger);

      //6、啟動調(diào)度器

      scheduler.start();

      上述代碼實現(xiàn)每隔1分鐘采集一次人才網(wǎng)站的最新數(shù)據(jù)。

      4? ? ?為數(shù)據(jù)分析做準(zhǔn)備

      Nutch將采集到的數(shù)據(jù)存儲到webpage數(shù)據(jù)表中,可根據(jù)數(shù)據(jù)分析需要再定義相關(guān)數(shù)據(jù)表,每隔一段時間將webpage中的數(shù)據(jù)進行解析,存入數(shù)據(jù)表中??紤]性能需要,定時清除webpage中的歷史數(shù)據(jù)。存入相關(guān)數(shù)據(jù)表中的結(jié)構(gòu)化數(shù)據(jù)為數(shù)據(jù)分析解決了數(shù)據(jù)從哪里來的問題。經(jīng)過數(shù)據(jù)采集、解析和結(jié)構(gòu)化,接著可以根據(jù)業(yè)務(wù)需求進行數(shù)據(jù)分析和統(tǒng)計,并可借助圖形展現(xiàn)框架將這些定義良好的有價值的數(shù)據(jù)進行可視化展現(xiàn)。

      5? ? ?下一步研究方向

      以上是以MySQL數(shù)據(jù)庫作為數(shù)據(jù)存儲來研究Nutch數(shù)據(jù)采集,下一步將MySqL關(guān)系型數(shù)據(jù)庫存儲轉(zhuǎn)換成Hoodap分布式存儲,利用Nutch相關(guān)技術(shù)建立爬蟲集群,進一步研究Nutch的分布式數(shù)據(jù)采集,為更大規(guī)模、更快響應(yīng)數(shù)據(jù)采集做準(zhǔn)備。把Nutch與Hoodap整合起來,Nutch負責(zé)抓取數(shù)據(jù),Hoodap負責(zé)存儲數(shù)據(jù),真正建立大數(shù)據(jù)應(yīng)用平臺,結(jié)合全文檢索引擎Lucene/Solr實現(xiàn)數(shù)據(jù)實時索引和快速檢索。

      主要參考文獻

      [1]朱應(yīng)堅,陳雪梅,向勇.基于Nutch的分布式電商數(shù)據(jù)采集數(shù)據(jù)研究[J].廣東通信技術(shù),2015(10).

      [2]孫立偉,何國輝,吳禮發(fā).網(wǎng)絡(luò)爬蟲技術(shù)的研究[J].電腦知識與技術(shù),2010(15).

      [3]宋豪.基于WiFi的分布式無線數(shù)據(jù)采集系統(tǒng)研究與實現(xiàn)[D]. 西安:西安理工大學(xué),2018.

      [4]王烽.新型互聯(lián)網(wǎng)中服務(wù)信任自動管理機制設(shè)計與實現(xiàn)[D].北京:北京交通大學(xué),2018.

      [5]龔延倫.A公司三期工程可行性研究項目的范圍管理[D].成都:電子科技大學(xué),2010.

      [6]王思賢.基于DSP的直接轉(zhuǎn)矩控制系統(tǒng)研究[D].長沙:中南大學(xué),2009.

      [7]唐湘越.基于DSP的直接轉(zhuǎn)矩控制系統(tǒng)研究[D].大連:大連交通大學(xué),2009.

      [8]宋志堅.基于LXI的高性能數(shù)據(jù)采集系統(tǒng)的軟件設(shè)計與實現(xiàn)[D].成都:西南交通大學(xué),2008.

      [9]陳美華.面向P2P環(huán)境的SLBLTrust信任模型及其安全擴展機制研究[D].上海:華東師范大學(xué),2009.

      猜你喜歡
      分布式
      基于RTDS的分布式光伏并網(wǎng)建模研究
      湖南電力(2022年3期)2022-07-07 08:56:58
      光伏:從嚴控制發(fā)展規(guī)模 分布式限定10GW
      能源(2018年5期)2018-06-15 08:55:58
      分布式光伏發(fā)展的四大矛盾
      能源(2017年7期)2018-01-19 05:05:03
      分布式光伏熱錢洶涌
      能源(2017年10期)2017-12-20 05:54:07
      基于預(yù)處理MUSIC算法的分布式陣列DOA估計
      分布式光伏:爆發(fā)還是徘徊
      能源(2017年5期)2017-07-06 09:25:54
      基于點估計法的分布式電源的配置優(yōu)化
      一種用于微電網(wǎng)分布式發(fā)電的新型Buck-Boost逆變器
      基于DDS的分布式三維協(xié)同仿真研究
      雷達與對抗(2015年3期)2015-12-09 02:38:50
      西門子 分布式I/O Simatic ET 200AL
      平顶山市| 瑞昌市| 淮南市| 苍梧县| 南昌县| 芒康县| 贺兰县| 鹤庆县| 新竹市| 永年县| 湾仔区| 沿河| 宽甸| 开鲁县| 台安县| 建昌县| 法库县| 广西| 界首市| 沂水县| 九龙县| 大足县| 云安县| 留坝县| 当雄县| 蒙山县| 孝义市| 安西县| 大邑县| 开封县| 孟州市| 郑州市| 咸丰县| 文昌市| 北流市| 嘉义市| 双鸭山市| 武威市| 遂平县| 年辖:市辖区| 洱源县|