• 
    

    
    

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

      用Fluent與MongoDB構(gòu)建高效海量日志采集系統(tǒng)

      2014-11-16 07:04:02
      中國新技術(shù)新產(chǎn)品 2014年12期
      關(guān)鍵詞:單機數(shù)據(jù)量批量

      韓 巖 李 曉

      (1.中國科學(xué)院新疆理化技術(shù)研究所,新疆 烏魯木齊 830011; 2.中國科學(xué)院大學(xué),北京 100049)

      1 概述

      日志是一個完整系統(tǒng)里面重要的功能組成部分,其利用特定的形式準(zhǔn)確并且規(guī)范地表達(dá)出系統(tǒng)產(chǎn)生的所有行為,依據(jù)對日志的分析不僅可以對系統(tǒng)自身的性能進行有效的優(yōu)化,而且當(dāng)系統(tǒng)發(fā)生故障時,能夠準(zhǔn)確、及時地定位錯誤,方便加以修正。

      目前,隨著互聯(lián)網(wǎng)web2.0的迅速發(fā)展,一個企業(yè)級的服務(wù)器每天產(chǎn)生日志信息是相當(dāng)可觀的,日志分析研究多集中在如何挖掘數(shù)據(jù),而對如何存儲海量數(shù)據(jù)研究較少。這主要是因為很多日志分析系統(tǒng)采用了關(guān)系數(shù)據(jù)庫存儲或簡單的順序存儲,如商用的Oracle數(shù)據(jù)庫,免費的MySQL。采用關(guān)系數(shù)據(jù)庫存在效率低下的缺點,簡單的順序存儲又存在功能不夠強大、查詢效率低等不足。因此日志處理缺乏一種能高效查詢、適合存儲海量數(shù)據(jù)的管理系統(tǒng)做支撐?,F(xiàn)在處理海量日志系統(tǒng)的方案有很多,大部分是基于分布式的原理來實現(xiàn)解決的。本文提出一種Fluent與MongoDB相結(jié)合的方法來完成海量日志的存儲。

      2 提出問題與方案

      2.1 提出問題與方案

      對于海量日志存儲與查詢,LZ是一個廣告公司的技術(shù)人員,需要對500M行(5億行)的log信息進行存儲和數(shù)據(jù)分析工作,并提出了自己的三種想法:

      (1)將海量數(shù)據(jù)存在MySQL中并對每一個字段做索引。

      (2)將以上數(shù)據(jù)存在MongoDB中并建立索引。

      (3)將所有行加載到Hadoop中,通過MapReduce進行數(shù)據(jù)分析。

      2.2 提出方案的原因

      第一方案選擇MySQL的原因:MySQL是一個開放源碼的小型關(guān)系型數(shù)據(jù)庫管理系統(tǒng),軟件本身具有體積小、速度快、總體擁有成本低的特點。MySQL是跨操作系統(tǒng)、支持多線程、支持多種存儲引擎和查詢速度快的數(shù)據(jù)庫管理系統(tǒng)。MySQL具有關(guān)系數(shù)據(jù)庫的特征,基本可以反映出關(guān)系數(shù)據(jù)庫的特性。

      第二種方案選擇MongoDB的原因:MongoDB是分布式文檔存儲數(shù)據(jù)庫,它的特點是高性能、易部署、易使用,存儲數(shù)據(jù)非常方便。它支持的數(shù)據(jù)結(jié)構(gòu)非常松散,是類似JSON的BSON格式,因此可以存儲比較復(fù)雜的數(shù)據(jù)類型。MongoDB的文檔模型自由靈活,可以讓你在開發(fā)過程中暢順無比。對于大數(shù)據(jù)量、高并發(fā)、弱事務(wù)的互聯(lián)網(wǎng)應(yīng)用,MongoDB可以應(yīng)對自如。MongoDB內(nèi)置的水平擴展機制提供了從百萬到十億級別的數(shù)據(jù)量處理能力,完全可以滿足Web2.0和移動互聯(lián)網(wǎng)的數(shù)據(jù)存儲需求,其開箱即用的特性也大大降低了中小型網(wǎng)站的運維成本。

      第三種方案選擇Hadoop的原因:Hadoop是一個能夠讓用戶輕松架構(gòu)和使用的分布式計算平臺。用戶可以輕松地在Hadoop上開發(fā)和運行處理海量數(shù)據(jù)的應(yīng)用程序。它主要有以下幾個優(yōu)點:

      (1)高可靠性:Hadoop按位存儲和處理數(shù)據(jù)的能力值得人們信賴。

      (2)高擴展性:Hadoop是在可用的計算機集簇間分配數(shù)據(jù)并完成計算任務(wù)的,這些集簇可以方便地擴展到數(shù)以千計的節(jié)點中。

      (3)高效性:Hadoop能夠在節(jié)點之間動態(tài)地移動數(shù)據(jù),并保證各個節(jié)點的動態(tài)平衡,因此處理速度非常快。

      (4)高容錯性:Hadoop能夠自動保存數(shù)據(jù)的多個副本,并且能夠自動將失敗的任務(wù)重新分配。

      (5)低成本:Hadoop是開源的,項目的軟件成本因此會大大降低。

      2.3 解決問題關(guān)鍵點

      針對以上三種解決方案對處理海量的日志信息共同特征,解決海量日志存取主要解決以下幾個問題:

      (1)高并發(fā)讀寫:現(xiàn)今的網(wǎng)站都是實時的生成動態(tài)頁面,及時提供動態(tài)信息,所以數(shù)據(jù)庫的并發(fā)負(fù)載很高。尤其是電子商務(wù)網(wǎng)站,每秒可以是上百萬的請求。

      (2)海量數(shù)據(jù)的高效存儲與訪問:高效的解決海量數(shù)據(jù)的讀取是最核心的問題之一。對海里數(shù)據(jù)而言,如果數(shù)據(jù)存儲速度較慢,就會造成網(wǎng)絡(luò)堵塞甚至網(wǎng)絡(luò)癱瘓。如果數(shù)據(jù)庫的查詢性能較低,就不能及時滿足用戶查詢需求。

      (3)高擴展性與可用性:在增加較少硬件成本下,較大提高軟件的性能與負(fù)載能力,保證其擴展性是可行的。另外,很多服務(wù)是實時的、不間斷的,所以保證其可用性也是必要的。

      3 實驗與結(jié)果分析

      因為日志最主要是寫入與查詢操作,所以用以上三種想法分別對10萬、100萬、1000萬條數(shù)據(jù)只進行讀寫效率的測試。目的是為了驗證海量日志數(shù)據(jù)存儲與查詢有效性和可行性。

      實驗日志數(shù)據(jù)格式如表1:

      表1 日志格式

      3.1 單機實驗

      實驗說明:在單機環(huán)境下,分別對10萬、100萬、1000萬條數(shù)據(jù)只進行讀寫效率的測試。以下實驗是5次運行的平均結(jié)果。

      圖1 單機批量插入數(shù)據(jù)

      圖2 MySQL批量插入性能監(jiān)控圖

      圖3 MongoDB批量插入性能監(jiān)控圖

      圖4 單機批量查詢數(shù)據(jù)

      實驗環(huán)境:單機條件下,在Eclipse下使用Java編寫開發(fā)的項目。分別對MySQL、Hadoop和MongoDB進行批量插入(原因:數(shù)據(jù)量大,逐條插入效率低)與查詢實驗。

      (1)批量插入數(shù)據(jù)

      單機環(huán)境下,批量插入數(shù)據(jù)的實驗結(jié)果如圖1。

      在批量插入數(shù)據(jù)時,對MySQL、MongoDB監(jiān)控信息如圖2、圖3。

      (2)查詢數(shù)據(jù)

      在實驗數(shù)據(jù)中隨機查詢100條數(shù)據(jù)所用的時間,查詢數(shù)據(jù)實驗結(jié)果如圖4。

      在查詢數(shù)據(jù)時,對MySQL、MongoDB監(jiān)控信息如圖5、圖6。

      (3)實驗結(jié)果

      實驗結(jié)論:在數(shù)據(jù)量較小的情況下,無論是批量插入還是查詢基本都是同一個數(shù)據(jù)量級上,都能滿足用戶的需求; 但隨著數(shù)據(jù)量的增大,數(shù)據(jù)庫建立索引后查詢效率明顯增加了,也增大了存儲空間。通過圖2與圖3可知,MongoDB最大插入速度是MySQL最大插入速度的近700倍。通過圖5與圖6可以得知,MongoDB最大查詢速度是MySQL最大查詢速度的近2倍。

      3.2 集群實驗

      實驗說明:在集群環(huán)境下,分別對10萬、100萬、1000萬條數(shù)據(jù)只進行讀寫效率的測試。以下實驗是5次運行的平均結(jié)果。

      實驗環(huán)境:集群條件下,在Eclipse下使用Java編寫開發(fā)的項目。分別對MySQL、Hadoop和MongoDB進行實驗。

      集群環(huán)境如下:①MySQL集群:是在虛擬機下以Amoeba為代理服務(wù)器3臺MySQL數(shù)據(jù)庫構(gòu)成一個集群;②Hadoop集群:是在虛擬機下3個結(jié)點,1個master結(jié)點,2個datanode結(jié)點;③MongoDB集群:是在虛擬機下由MongoDB構(gòu)建的3組復(fù)制集,每組3個分片,3個Configsvr,1個路由節(jié)點。

      (1)批量插入數(shù)據(jù)

      實驗結(jié)果如圖7。

      (2)查詢數(shù)據(jù)

      在實驗數(shù)據(jù)中隨機查詢100條數(shù)據(jù)所用的時間,查詢數(shù)據(jù)實驗結(jié)果如圖8。

      (3) 實驗結(jié)果

      實驗結(jié)論:在集群環(huán)境下,滿足單機條件下的結(jié)論,但時間略微有點增加的主要原因是集群的啟動與集群之間數(shù)據(jù)通信。隨著數(shù)據(jù)量的增大,三類不同的集群在插入與查詢數(shù)據(jù)的時間都有所降低,并且MongoDB在查詢數(shù)據(jù)上表現(xiàn)出明顯的優(yōu)勢??傊瑹o論是在單機環(huán)境下還是在集群環(huán)境下,MongoDB都表現(xiàn)出自己獨特的優(yōu)勢,適合作為海量日志的數(shù)據(jù)倉庫。

      4 構(gòu)建日志系統(tǒng)

      4.1 用Fluent與MongoDB構(gòu)建日志采集系統(tǒng)

      通過以上實驗結(jié)果說明MongoDB可以作為海量日志的數(shù)據(jù)倉庫,以下是用Fluent采集日志信息存儲到MongoDB或集群中的原理與過程。

      (1)整個系統(tǒng)工作原理如圖9。

      (2) 實現(xiàn)步驟:

      a在Linux下,安裝MongoDB或MongoDB集群以及fluent-plugin-mongo。

      b修改/etc/fluent/Fluentd.conf相關(guān)配置,使得Fluent采集信息能存儲到MongoDB中。

      ① 配置輸入信息:

      type tail

      format apache2

      path /var/log/apache2/access_log

      tag mongo.apache.access

      ② 配置單機輸出信息:

      type mongo

      database apache

      collection access

      host localhost

      port 27017

      flush_interval 10s

      ③ 配置復(fù)制集輸出信息:

      type mongo_replset

      database apache

      collection fmongo

      nodes ip1:port1, ip2:port2,…

      flush_interval 10s

      (3) 測試結(jié)果

      a測試命令:

      $ ab -n 100000 -c 100 http://ip地址/

      b輸出結(jié)果如圖10.

      圖5 MySQL查詢性能監(jiān)控圖

      圖6 MongoDB查詢性能監(jiān)控圖

      圖7 集群批量插入數(shù)據(jù)

      圖8 集群批量查詢數(shù)據(jù)

      圖9 整個系統(tǒng)工作原理

      圖10 輸出結(jié)果

      結(jié)語

      本文通過驗證MongoDB存儲與查詢高效性,然后與Fluent相結(jié)合構(gòu)造一個日志采集系統(tǒng)。這種方式可以滿足海量日志采集與存儲工作,將日志信息直接存儲到數(shù)據(jù)庫中,對日志的“增刪改查”更方便、更高效,而且日志信息可以進行分布式的存儲。但這種方式也有很多不足,例如:單機情況下存儲數(shù)據(jù)不穩(wěn)定性,集群情況下存儲數(shù)據(jù)的不平衡性和負(fù)載均衡的問題等。后續(xù)工作還有MongoDB集群的優(yōu)化和日志分析系統(tǒng)的實現(xiàn)等任務(wù)。

      [1]白超,楊靜,吳建國.基于并行計算的海量日志分析系統(tǒng)實現(xiàn)[J].計算機技術(shù)與發(fā)展,2013,23(7):80-83.

      [2]王兆永. 面向大規(guī)模批量日志數(shù)據(jù)存儲方法的研究[D]. 成都: 電子科技大學(xué),2011.

      [3]nosqlfan Inc.. MySQL、MongoDB 還是Hadoop ? [EB/OL].[2010-09-02]. http://blog.nosqlfan.com/html/510.html.

      [4]鄒貴金.深入云計算:MongoDB管理與開發(fā)實戰(zhàn)詳解[M].北京:中國鐵道出版社,2013:72-205.

      [5]Kristina Cbodorow, Micbael Dirolf.MongoDB權(quán)威指南[M]. 北京:人民郵電出版社,2011:45-152.

      [6]程苗,陳華平.基于Hadoop的Web日志挖掘[J].計算機工程,2011,37(11):37-39.

      [7]李存琛.海量數(shù)據(jù)分布式存儲技術(shù)的研究與應(yīng)用[D]. 北京: 北京郵電大學(xué),2013.

      [8]孫巍,譚成翔.基于Amoeba中間件的分布式數(shù)據(jù)庫管理系統(tǒng)[J].計算機與現(xiàn)代化.2013,02:153-156.

      [9]張華強.關(guān)系型數(shù)據(jù)庫與NoSQL數(shù)據(jù)庫[J].電腦知識與技術(shù),2011,7(20):4802-4804.

      猜你喜歡
      單機數(shù)據(jù)量批量
      熱連軋單機架粗軋機中間坯側(cè)彎廢鋼成因及對策
      新疆鋼鐵(2021年1期)2021-10-14 08:45:36
      基于大數(shù)據(jù)量的初至層析成像算法優(yōu)化
      批量提交在配置分發(fā)中的應(yīng)用
      計算Lyapunov指數(shù)的模糊C均值聚類小數(shù)據(jù)量法
      高刷新率不容易顯示器需求與接口標(biāo)準(zhǔn)帶寬
      寬帶信號采集與大數(shù)據(jù)量傳輸系統(tǒng)設(shè)計與研究
      電子制作(2019年13期)2020-01-14 03:15:18
      宇航通用單機訂單式管理模式構(gòu)建與實踐
      水電的“百萬單機時代”
      能源(2017年9期)2017-10-18 00:48:22
      淺議高校網(wǎng)銀批量代發(fā)
      基于AUTOIT3和VBA的POWERPOINT操作題自動批量批改
      洪泽县| 休宁县| 昌江| 昌宁县| 孟州市| 安平县| 龙井市| 蒙城县| 双江| 双牌县| 宕昌县| 微山县| 阜新| 敖汉旗| 安仁县| 天津市| 海盐县| 乐业县| 水富县| 维西| 武隆县| 当雄县| 华容县| 科尔| 马山县| 应用必备| 洪湖市| 文化| 固阳县| 三台县| 巩留县| 新兴县| 沂源县| 仙游县| 佛冈县| 普兰店市| 乌苏市| 垣曲县| 平顶山市| 甘肃省| 尚义县|