大数据采集的技术
一、系統日志采集系統。許多公司的業務平臺每天都會產生大量的日志數據。對于這些日志信息,我們可以得到出很多有價值的數據。通過對這些日志信息進行日志采集、收集,然后進行數據分析,挖掘公司業務平臺日志數據中的潛在價值。為公司決策和公司后臺服務器平臺性能評估提高可靠的數據保證。系統日志采集系統做的事情就是收集日志數據提供離線和在線的實時分析使用。目前常用的開源日志收集系統有Flume、Scribe等。 Apache Flume是一個分布式、可靠、可用的服務,用于高效地收集、聚合和移動 大量的日志數據,它具有基于流式數據流的簡單靈活的架構。其可靠性機制和許多故障轉移和恢復機制,使Flume具有強大的容錯能力。Scribe是Facebook開源的日志采集系統。Scribe實際上是一個分布式共享隊列,它可以從各種數據源上收集日志數據,然后放入它上面的共享隊列中。Scribe可以接受thrift client發送過來的數據,將其放入它上面的消息隊列中。然后通過消息隊列將數據Push到分布式存儲系統中,并且由分布式存儲系統提供可靠的容錯性能。如果最后的分布式存儲系統crash時,Scribe中的消息隊列還可以提供容錯能力,它會還日志數據寫到本地磁盤中。Scribe支持持久化的消息隊列,來提供日志收集系統的容錯能力。
二、網絡數據采集系統。通過網絡爬蟲和一些網站平臺提供的公共API(如Twitter和新浪微博API)等方式從網站上獲取數據。這樣就可以將非結構化數據和半結構化數據的網頁數據從網頁中提取出來。并將其提取、清洗、轉換成結構化的數據,將其存儲為統一的本地文件數據。目前常用的網頁爬蟲系統有Apache Nutch、Crawler4j、Scrapy等框架。Apache Nutch是一個高度可擴展和可伸縮性的分布式爬蟲框架。Apache通過分布式抓取網頁數據,并且由Hadoop支持,通過提交MapReduce任務來抓取網頁數據,并可以將網頁數據存儲在HDFS分布式文件系統中。Nutch可以進行分布式多任務進行爬取數據,存儲和索引。由于多個機器并行做爬取任務,Nutch利用多個機器充分利用機器的計算資源和存儲能力,大大提高系統爬取數據能力。Crawler4j、Scrapy都是一個爬蟲框架,提供給開發人員便利的爬蟲API接口。開發人員只需要關心爬蟲API接口的實現,不需要關心具體框架怎么爬取數據。Crawler4j、Scrapy框架大大降低了開發人員開發速率,開發人員可以很快的完成一個爬蟲系統的開發。
三、數據庫采集系統。一些企業會使用傳統的關系型數據庫MySQL和Oracle等來存儲數據。除此之外,Redis和MongoDB這樣的NoSQL數據庫也常用于數據的采集。企業每時每刻產生的業務數據,以數據庫一行記錄形式被直接寫入到數據庫中。通過數據庫采集系統直接與企業業務后臺服務器結合,將企業業務后臺每時每刻都在產生大量的業務記錄寫入到數據庫中,最后由特定的處理分許系統進行系統分析。
針對大數據采集技術,目前主要流行以下大數據采集分析技術。Hive是Facebook團隊開發的一個可以支持PB級別的可伸縮性的數據倉庫。這是一個建立在Hadoop之上的開源數據倉庫解決方案。 Hive支持使用類似SQL的聲明性語言(HiveQL)表示的查詢,這些語言被編譯為使用Hadoop執行的MapReduce作業。另外,HiveQL使用戶可以將自定義的map-reduce腳本插入到查詢中。該語言支持基本數據類型,類似數組和Map的集合以及嵌套組合。 HiveQL語句被提交執行。首先Driver將查詢傳遞給編譯器compiler,通過典型的解析,類型檢查和語義分析階段,使用存儲在Metastore中的元數據。編譯器生成一個邏輯任務,然后通過一個簡單的基于規則的優化器進行優化。最后生成一組MapReduce任務和HDFS Task的DAG優化后的Task。 然后執行引擎使用Hadoop按照它們的依賴性順序執行這些Task。Hive簡化了對于那些不熟悉Hadoop MapReduce接口的用戶學習門檻,Hive提供了一些列簡單的HiveQL語句,對數據倉庫中的數據進行簡要分析與計算。
在大數據采技術中,其中有一個關鍵的環節就是transform操作。它將清洗后的數據轉換成不同的數據形式,由不同的數據分析系統和計算系統進行處理和分析。將批量數據從生產數據庫加載到Hadoop HDFS分布式文件系統中或者從Hadoop HDFS文件系統將數據轉換為生產數據庫中,這是一項艱巨的任務。 用戶必須考慮確保數據一致性,生產系統資源消耗等細節。使用腳本傳輸數據效率低下且耗時。Apache Sqoop就是用來解決這個問題,Sqoop允許從結構化數據存儲(如關系數據庫,企業數據倉庫和NoSQL系統)輕松導入和導出數據。使用Sqoop,您可以將來自外部系統的數據配置到HDFS上,并將表填入Hive和HBase中。運行Sqoop時,被傳輸的數據集被分割成不同的分區,一個只有mapper Task的Job被啟動,mapperTask負責傳輸這個數據集的一個分區。Sqoop使用數據庫元數據來推斷數據類型,因此每個數據記錄都以類型安全的方式進行處理。
總結
- 上一篇: OpenCV中cvResize函数图象放
- 下一篇: Python Socket通信黏包问题分