• 
    

    
    

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

      ?

      基于hive的日志倉庫構(gòu)建研究

      2016-12-19 20:49:07蔣煥亮
      計(jì)算機(jī)時(shí)代 2016年11期
      關(guān)鍵詞:數(shù)據(jù)倉庫日志

      蔣煥亮

      摘 要: 隨著電商平臺(tái)、門戶網(wǎng)站的訪問量越來越大,產(chǎn)生的日志信息也越來越多,傳統(tǒng)的日志文件處理方法無法滿足需求。通過分析Hadoop分布式文件系統(tǒng)(HDFS)、并行計(jì)算框架MapReduce和數(shù)據(jù)倉庫Hive技術(shù)特點(diǎn),研究日志倉庫的體系結(jié)構(gòu)及關(guān)鍵技術(shù)并建立日志數(shù)據(jù)倉庫。與數(shù)據(jù)庫相比,數(shù)據(jù)處理效率顯著提升。

      關(guān)鍵詞: 日志; 數(shù)據(jù)倉庫; MapReduce; Hive

      中圖分類號(hào):TP393 文獻(xiàn)標(biāo)志碼:A 文章編號(hào):1006-8228(2016)11-21-04

      Establishment of Web logs data warehouses based on Hive

      Jiang Huanliang

      (Shaoxing Vocational&Technical College, Shaoxing, Zhejiang 312000, China)

      Abstract: With the amount of access to the web-portal and electronic business platform more and more, the related Web logs is steadily increasing and the traditional Web logs file is unable to meet the requirements. The Web logs data warehouse is finally established by analyzing the technical characteristics of HDFS, MapReduce and Hive, and studying the architecture and key technology of logs data warehouse. Compared with the database, the data processing efficiency is significantly improved.

      Key words: Web logs; data warehouses; MapReduce; Hive

      0 引言

      隨著電商平臺(tái)、門戶網(wǎng)站的訪問量越來越大,產(chǎn)生的日志信息也越來越多,傳統(tǒng)的日志文件存儲(chǔ)和日志處理難于滿足要求。Web訪問日志中包含了大量的用戶行為信息,如訪問信息、瀏覽信息、購買信息、偏好、關(guān)注點(diǎn)等。通過對(duì)日志的處理,并進(jìn)行用戶行為建模,可以得到有價(jià)值的信息,如用戶的屬性信息、用戶標(biāo)簽、用戶興趣愛好、購買意向、再對(duì)這些用戶的信息進(jìn)行聚類,劃分用戶集,為Web個(gè)性化應(yīng)用提供服務(wù)[1]。因此,日志文件的存儲(chǔ)和處理具有非常重要的意義。

      1 相關(guān)技術(shù)

      1.1 hadoop技術(shù)

      Hadoop系統(tǒng)運(yùn)行于一個(gè)由普通服務(wù)器組成的計(jì)算集群,集群的主控節(jié)點(diǎn)控制和管理集群的正常工作、協(xié)調(diào)管理集群中從節(jié)點(diǎn)的數(shù)據(jù)存儲(chǔ)和數(shù)據(jù)計(jì)算,每個(gè)節(jié)點(diǎn)均具數(shù)據(jù)存儲(chǔ)和數(shù)據(jù)計(jì)算兩種功能。Hadoop分布式文件系統(tǒng)(Hadoop Distributed File System,HDFS)負(fù)責(zé)控制和管理的主控節(jié)點(diǎn)是NameNode,而每個(gè)具體負(fù)責(zé)存儲(chǔ)的從節(jié)點(diǎn)是DataNode。數(shù)據(jù)存儲(chǔ)節(jié)點(diǎn)DataNode和計(jì)算機(jī)節(jié)點(diǎn)TaskTracker會(huì)設(shè)置在同一物理的從節(jié)點(diǎn)服務(wù)器上。為了能進(jìn)行并行化計(jì)算,Hadoop提供了MapReduce并行計(jì)算框架,該框架能有效管理和調(diào)度整個(gè)集群中的節(jié)點(diǎn)來完成并行化程序的執(zhí)行和數(shù)據(jù)處理,負(fù)責(zé)管理和調(diào)度整個(gè)集群進(jìn)行計(jì)算的主控節(jié)點(diǎn)成為JobTracker,而每個(gè)負(fù)責(zé)具體的數(shù)據(jù)計(jì)算的是從節(jié)點(diǎn)TaskTracker。JobTracker和NameNode設(shè)置在同一物理的主控服務(wù)器上,但系統(tǒng)規(guī)模較大則可分開設(shè)置 [2]。Hadoop分布式存儲(chǔ)與并行計(jì)算框架如圖1所示。

      HDFS提供的大規(guī)模數(shù)據(jù)分布式存儲(chǔ)管理系統(tǒng)具有可擴(kuò)展、高可靠、高可用特性,采用多副本的數(shù)據(jù)冗余存儲(chǔ)機(jī)制,并提供了有效的數(shù)據(jù)出錯(cuò)檢查和數(shù)據(jù)恢復(fù)機(jī)制,大大提高數(shù)據(jù)冗余存儲(chǔ)的可靠性[2]。

      MapReduce并行計(jì)算框架將負(fù)責(zé)調(diào)度和分配計(jì)算資源,劃分和輸入數(shù)據(jù),調(diào)度程序執(zhí)行,監(jiān)控程序執(zhí)行狀態(tài),并負(fù)責(zé)程序執(zhí)行時(shí)各計(jì)算節(jié)點(diǎn)的同步以及中間結(jié)果的收集整理,程序執(zhí)行流程如圖2,分Map和Reduce兩階段并行處理。TaskTracker節(jié)點(diǎn)從HDFS讀取數(shù)據(jù),InputFormat負(fù)責(zé)讀取數(shù)據(jù)輸入格式,然后數(shù)據(jù)劃分多個(gè)分片(Split),RecoredREader讀取每個(gè)分片交,轉(zhuǎn)換成Key-Value鍵值對(duì),然后交由Map處理,Map所輸出的數(shù)據(jù)進(jìn)行分區(qū)(Partitioner)后,發(fā)送到合適的Reduce節(jié)點(diǎn),Reduce節(jié)點(diǎn)完成計(jì)算后經(jīng)OutPutFormat輸出格式處理,最終將輸出數(shù)據(jù)寫回到HDFS[3]。

      1.2 hive技術(shù)

      Hive是基于Hadoop的開源數(shù)據(jù)倉庫,分析查詢結(jié)構(gòu)化的海量數(shù)據(jù),Hive執(zhí)行與SQL類似的HiveQL語句,具有選擇、插入、合并、子查詢、分析等功能。Hive與關(guān)系數(shù)據(jù)相似,支持?jǐn)?shù)據(jù)庫、表和視圖等。通過命令行界面和java數(shù)據(jù)庫編程連接數(shù)據(jù)庫。HiveQL可以擺脫復(fù)雜的MapReduce程序設(shè)計(jì),將中心放在數(shù)據(jù)分析、業(yè)務(wù)需求上[4]。Hive架構(gòu)如圖3所示。

      2 日志倉庫體系結(jié)構(gòu)

      2.1 體系結(jié)構(gòu)

      從架構(gòu)上看,基于Hive的日志數(shù)據(jù)倉庫有用戶接口層(Client)、數(shù)據(jù)分析層和數(shù)據(jù)存儲(chǔ)及處理層構(gòu)成,如圖4所示。具體功能如下[5]。

      用戶接口層:負(fù)責(zé)接收用戶輸入指令,并將指令發(fā)送到Hive引擎進(jìn)行處理。用戶層接口包括數(shù)據(jù)庫方法編程接口(JDBC)、命令行接口(Command—Line Interface,CLI)。

      數(shù)據(jù)分析層:包含元數(shù)據(jù)存儲(chǔ)層(Metostore)、Hive驅(qū)動(dòng)(Driver)、編譯器(compiler)、執(zhí)行引擎(Execution Engine)組建,主要功能:存儲(chǔ)、數(shù)據(jù)轉(zhuǎn)換、會(huì)話處理、查詢獲取、執(zhí)行驅(qū)動(dòng)、HiveQL編譯、HiveQL語言分析、執(zhí)行計(jì)劃、優(yōu)化、數(shù)據(jù)查詢等執(zhí)行操作。

      數(shù)據(jù)存儲(chǔ)及處理層:存儲(chǔ)數(shù)據(jù)并從數(shù)據(jù)分析層(Hive引擎)接收指令,通過HDFS、MapReduce實(shí)現(xiàn)數(shù)據(jù)處理。日志數(shù)據(jù)倉庫關(guān)鍵技術(shù)如下。

      2.2 按時(shí)間劃分表

      按時(shí)間劃分表是一種模式,即在表中加入時(shí)間戳。日志數(shù)據(jù)會(huì)隨時(shí)間不斷增加,按時(shí)間創(chuàng)建表(如按天劃分表),實(shí)現(xiàn)時(shí)間順序存儲(chǔ)日志[2]。如:

      Hive>create table weblogs_2016_08_28(id int,….);

      Hive>select * from weblogs_2016_08_28

      >union all

      >select * from weblogs_2016_08_29;

      當(dāng)Hive查詢分區(qū)表時(shí),通過where子句中的表達(dá)式來選擇查詢所需的指定分區(qū),查詢執(zhí)行效率高。

      Hive>select * from weblogs where day>=

      20160828 and day<=20160830;

      2.3 分區(qū)與分區(qū)裁剪

      Hive通過分區(qū)表來提高數(shù)據(jù)庫性能,可以從一個(gè)數(shù)據(jù)源產(chǎn)生多個(gè)數(shù)據(jù)聚合,減少遍歷時(shí)間,對(duì)于大的數(shù)據(jù)輸入集,處理數(shù)據(jù)時(shí)間效率顯著[6]。數(shù)據(jù)以字段進(jìn)行分片存儲(chǔ)。當(dāng)查詢的where子句中包含此分區(qū)字段時(shí),只查詢與where條件匹配的表分區(qū)范圍內(nèi)的數(shù)據(jù),減少掃描的數(shù)據(jù)量而提高查詢速度[2]。如:

      Hive>CREATE TABLE WEBLOGS2016_08_26

      (ID INT, ……)

      >PARTITION BY(day STRING, ……);

      Hive>INSERT OVER TABLE WEBLOGS2016_08_26

      >PARTITION (day='20160826', ……);

      數(shù)據(jù)寫入時(shí),Hive不分析數(shù)據(jù)內(nèi)容,需手工指定存儲(chǔ)分區(qū)。數(shù)據(jù)倉庫將按日期數(shù)據(jù)存儲(chǔ)在同一目錄中。

      當(dāng)需要對(duì)目標(biāo)表的某一區(qū)域內(nèi)的數(shù)據(jù)進(jìn)行分析而不要涉及其他區(qū)域時(shí),使用分區(qū)裁剪,將目標(biāo)區(qū)域以條件形式存放在HiveQL中,如執(zhí)行SELECT * FROM WEBLOGS WHERE DATE='20160826'查詢時(shí),Hive將直接指向所需目錄,而不是對(duì)表中的所有數(shù)據(jù)進(jìn)行遍歷。

      2.4 分桶表數(shù)據(jù)

      分區(qū)提供一個(gè)隔離數(shù)據(jù)和優(yōu)化數(shù)據(jù)查詢的便利方式,但是并非所有的數(shù)據(jù)集都可以形成合理的分區(qū),如按天劃分分區(qū),每天的日志量并不一定一樣,要確定合適劃分大小分區(qū)是非常困難。

      分桶是將數(shù)據(jù)集處理成更容易管理的技術(shù)。為了取樣更高效和更好的查詢處理效率,Hive可以將表組織桶(Bucket)。桶是通過對(duì)指定列進(jìn)行哈希計(jì)算來實(shí)現(xiàn),并使每個(gè)桶對(duì)應(yīng)于列名下的一個(gè)存儲(chǔ)文件。如表的一級(jí)分區(qū)是日期(day),二級(jí)分區(qū)是性別,有可能會(huì)產(chǎn)生過多的小分區(qū),而Hive的動(dòng)態(tài)分區(qū)數(shù)量上是有限的。如:對(duì)表進(jìn)行分桶,并使用用戶id字段作為分桶字段,則字段值會(huì)根據(jù)用戶指定的值進(jìn)行哈希分發(fā)到桶中。同一用戶id的日志會(huì)存儲(chǔ)在同一個(gè)桶內(nèi)。一個(gè)桶可能會(huì)包含多個(gè)用戶記錄。

      Hive>SET hive.enforce.bucketing = true ;

      Hive>CREATE TABLE WEBLOG (user_id INT, ……)

      >PARTITION BY (day STRING, ……)

      >CLUSTERED BY (user_id ) INTO 20 BUCKETS;

      分桶的數(shù)量是固定的,沒有數(shù)量變化,桶對(duì)于抽樣非常合適。若兩個(gè)表都以用戶id進(jìn)行分桶,hive可以創(chuàng)建邏輯上正確的抽樣,并對(duì)map-side JOIN執(zhí)行效率提升[2]。

      3 日志倉庫構(gòu)建

      實(shí)驗(yàn)采用虛擬環(huán)境測(cè)試,物理機(jī)和虛擬機(jī)配置如下:物理機(jī)處理器是Intel(R) Core (TM) i7-4500u 1.8GHz,內(nèi)存4.0GB,操作系統(tǒng)是Windows 8。虛擬機(jī)采用VMware Workstation,Master和Slave節(jié)點(diǎn)均使用Centos6,Hadoop-2.5.1,JDK1.7.0,Kafka_0.13.1。

      啟動(dòng)Hadoop集群,打開Hive客戶端創(chuàng)建數(shù)據(jù)庫、外部表和分區(qū)表并灌入數(shù)據(jù),如下是創(chuàng)建分區(qū)數(shù)據(jù)表。

      Hive>CREATE DATABASE weblogs;

      Hive>CREATE EXTERNAL TABLE

      weblogs_20160826_partition (

      uid STRING,

      …… )

      COMMENT 'This is the weblogs search data by partition'

      PARTITIONED BY (

      year INT,

      month INT,

      day INT,

      hour IN T,

      CLUSTERED BY (user_id ) INTO 20 BUCKETS;

      ROW FORMAT DELIMITED

      FIELDS TERMINATED BY '\t'

      STORED AS TEXTFILE;

      Hive日志倉庫與MySQL數(shù)據(jù)庫相比,在數(shù)據(jù)量較少的情況下,插入和查詢時(shí)間效率相似,當(dāng)數(shù)據(jù)量較大時(shí)(5000萬行),MySQL的select進(jìn)程killed,而Hive日志倉庫能高效查詢。測(cè)試結(jié)果如表1。

      4 結(jié)束語

      本文根據(jù)Hadoop和Hive的特點(diǎn),利用分時(shí)、分區(qū)和分桶技術(shù),設(shè)計(jì)并實(shí)現(xiàn)了基于Hive 的日志數(shù)據(jù)倉庫。實(shí)驗(yàn)表明,在Hive上構(gòu)建日志數(shù)據(jù)倉庫是可行且性能良好,特別是當(dāng)數(shù)據(jù)量較大時(shí),數(shù)據(jù)操作性能明顯提高?;趆ive的數(shù)據(jù)倉庫可用于離線數(shù)據(jù)的處理,但對(duì)于實(shí)時(shí)數(shù)據(jù)處理還需進(jìn)一步研究。

      參考文獻(xiàn)(Reference):

      [1] 江三鋒,王元亮.基于Hive的海量Web日志分析系統(tǒng)設(shè)計(jì)研

      究[J].軟件,2015.4(36):93-96.

      [2] 黃宜華,苗凱翔.深入理解大數(shù)據(jù)[M].機(jī)械工業(yè)出版社,2014.

      [3] Tansel Dokeroglu, Serkan Ozal, Murat Ali Bayir. Improving

      the performance of Hadoop Hive by sharing scan and computation tasks[J]. Journal of Cloud Computing,2014.3:1-12

      [4] 王德文,肖凱,肖磊.基于Hive的電力設(shè)備狀態(tài)胸襲數(shù)據(jù)倉庫[J].

      電力系統(tǒng)保護(hù)與控制,2011.9(41):125-130

      [5] 王德文,肖凱,肖磊.基于Hive的電力設(shè)備狀態(tài)胸襲數(shù)據(jù)倉庫[J].

      電力系統(tǒng)保護(hù)與控制,2011.9(41):125-130

      [6] 卡普廖洛,萬普勒,盧森格.Hive編程指南[M].人民郵電出版

      社,2013.

      猜你喜歡
      數(shù)據(jù)倉庫日志
      一名老黨員的工作日志
      扶貧日志
      心聲歌刊(2020年4期)2020-09-07 06:37:14
      基于數(shù)據(jù)倉庫的住房城鄉(xiāng)建設(shè)信息系統(tǒng)整合研究
      游學(xué)日志
      分布式存儲(chǔ)系統(tǒng)在液晶面板制造數(shù)據(jù)倉庫中的設(shè)計(jì)
      電子制作(2016年15期)2017-01-15 13:39:15
      探析電力系統(tǒng)調(diào)度中數(shù)據(jù)倉庫技術(shù)的應(yīng)用
      基于數(shù)據(jù)倉庫的數(shù)據(jù)分析探索與實(shí)踐
      一種基于粗集和SVM的Web日志挖掘模型
      叶城县| 宁德市| 闽清县| 乃东县| 仲巴县| 泗洪县| 新密市| 偏关县| 昭通市| 界首市| 辰溪县| 清水县| 宜阳县| 余庆县| 晋中市| 宝应县| 惠安县| 沈丘县| 当阳市| 汝阳县| 历史| 榆社县| 石景山区| 丰镇市| 伊吾县| 彝良县| 萨嘎县| 绥滨县| 彩票| 永登县| 阿克苏市| 林周县| 崇信县| 望城县| 沧州市| 双流县| 民权县| 门头沟区| 东乌珠穆沁旗| 涿州市| 苍梧县|