張子妍
[摘 要] 大數(shù)據(jù)與云計(jì)算技術(shù)都已經(jīng)成為信息社會(huì)最重要的技術(shù)之一, Hadoop是大數(shù)據(jù)與云計(jì)算時(shí)代背景下最熱門的技術(shù)之一, Hadoop的相關(guān)技術(shù)對學(xué)術(shù)研究有重要影響。本文主要對Hadoop技術(shù)進(jìn)行了研究,首先介紹了大數(shù)據(jù)和云計(jì)算的概念,其次介紹了Hadoop的概況以及相關(guān)技術(shù)的原理,比如核心技術(shù)HDFS和MapReduce;再次分析了目前Hadoop所面臨的安全問題,然后描述了Hadoop的發(fā)展瓶頸并提出改進(jìn)方案;最后進(jìn)行了總結(jié)并展望Hadoop、Spark和Storm三者相互結(jié)合,混合架構(gòu)將是未來發(fā)展的方向。
[關(guān)鍵詞] 大數(shù)據(jù);云計(jì)算;Hadoop
doi : 10 . 3969 / j . issn . 1673 - 0194 . 2017. 13. 076
[中圖分類號] TP311.13;TP333 [文獻(xiàn)標(biāo)識碼] A [文章編號] 1673 - 0194(2017)13- 0177- 03
1 概 述
大數(shù)據(jù)是指通過新的信息處理技術(shù)和方式,對數(shù)據(jù)進(jìn)行收集、存儲(chǔ)、分析以及處理等,并且能夠利用全新的數(shù)據(jù)處理技術(shù)和方式產(chǎn)生相關(guān)聯(lián)的預(yù)測效應(yīng),協(xié)助決策,發(fā)揮海量快速增長數(shù)據(jù)的價(jià)值。
云計(jì)算是指一種特殊的計(jì)算模式,它將計(jì)算任務(wù)分布在資源池中,池中的資源包括計(jì)算服務(wù)器、存儲(chǔ)服務(wù)器、寬帶資源,使用戶能夠按需獲取各種服務(wù)。
大數(shù)據(jù)與云計(jì)算之間相得益彰,相輔相成,因?yàn)樵朴?jì)算本質(zhì)上是數(shù)據(jù)處理技術(shù),其核心是業(yè)務(wù)模型,大數(shù)據(jù)是云計(jì)算的延伸,是云計(jì)算的資產(chǎn)。
目前,海量非結(jié)構(gòu)化的數(shù)據(jù)分析處理需一種高效并行的編程模型,此時(shí)Apache項(xiàng)目基金會(huì)研發(fā)的Hadoop迅速崛起,Hadoop主要用來進(jìn)行大數(shù)據(jù)分析處理。Hadoop的出現(xiàn)解決了大數(shù)據(jù)并行計(jì)算、存儲(chǔ)、管理等關(guān)鍵問題,這樣用戶即使對分布式底層細(xì)節(jié)不了解,也可以開發(fā)分布式程序。Hadoop得到了廣泛認(rèn)可,其優(yōu)點(diǎn)是不容忽視的,主要有:高擴(kuò)展性、低成本、高效率、高可靠性。
2 Hadoop相關(guān)的技術(shù)
Hadoop可以部署在廉價(jià)機(jī)器上的處理海量文件存儲(chǔ)與并行計(jì)算的云計(jì)算開發(fā)平臺。Hadoop由HDFS、MapReduce、HBase、Hive、Zookeeper、Pig、Ambari、Sqoop等組成,其中主要部分是HDFS和MapReduce。
2.1 HDFS
HDFS是構(gòu)建在PC服務(wù)器上的高度容錯(cuò)的分布式文件系統(tǒng),目的是用于海量數(shù)據(jù)的處理。HDFS的架構(gòu)形式是主從架構(gòu),HDFS的元數(shù)據(jù)服務(wù)器和數(shù)據(jù)塊服務(wù)器命名為NameNode和DataNode。
NameNode是一個(gè)中心服務(wù)器,是HDFS的核心結(jié)構(gòu),負(fù)責(zé)客戶端對文件的訪問以及管理文件系統(tǒng)的名字空間,存儲(chǔ)HDFS分布式文件系統(tǒng)的元數(shù)據(jù)信息, NameNode可判斷DataNode是否處在工作狀態(tài),并管理著DataNode上的分塊信息。
DataNode負(fù)責(zé)管理其所在的節(jié)點(diǎn)上的所有數(shù)據(jù),能夠根據(jù)用戶的請求來查詢數(shù)據(jù),周期性地與NameNode通信來告知自己保存的數(shù)據(jù)塊信息。
2.2 MapReduce
MapReduce設(shè)計(jì)之初是為了處理一些互聯(lián)網(wǎng)數(shù)據(jù),MapReduce有簡單的接口和透明的編程環(huán)境,極大地節(jié)省了開發(fā)周期。MapReduce通過處理大量數(shù)據(jù)來精簡和優(yōu)化數(shù)據(jù)集,以便將數(shù)據(jù)集載入到數(shù)據(jù)庫管理系統(tǒng)中。
MapReduce也采用了主從架構(gòu),將數(shù)據(jù)處理任務(wù)分為兩大過程,分別為:Map過程和Reduce過程。Map過程的任務(wù)主要為數(shù)據(jù)的過濾處理,Reduce過程的任務(wù)主要為數(shù)據(jù)的聚集處理。在Map過程中,第一,要將輸入的數(shù)據(jù)集分成若干數(shù)據(jù)塊,再為每一個(gè)數(shù)據(jù)塊分配一個(gè)Map小任務(wù);第二,將這些任務(wù)分配到集群中的各個(gè)節(jié)點(diǎn)上,此時(shí)在計(jì)算過程中會(huì)出現(xiàn)一個(gè)數(shù)據(jù)集合(中間結(jié)果);第三,將這些數(shù)據(jù)集合進(jìn)行排序再產(chǎn)生一個(gè)新的數(shù)據(jù)集合,此時(shí)新的數(shù)據(jù)集合中的數(shù)據(jù)都具有相同的鍵值;第四,進(jìn)入Reduce過程,產(chǎn)生最終結(jié)果,并輸出到HDFS中。
2.3 Hadoop中的其他技術(shù)
Hadoop生態(tài)系統(tǒng)除了有HDFS、MapReduce之外還有其他相關(guān)技術(shù):
(1)HBase
HBase是用于服務(wù)海量數(shù)據(jù)的存儲(chǔ)以及快速讀寫,它可以通過添加節(jié)點(diǎn)來進(jìn)行線性的擴(kuò)展,但是卻不支持向后擴(kuò)。
(2)Hive
Hive是構(gòu)建在Hadoop之上的數(shù)據(jù)倉庫基礎(chǔ)架構(gòu)。可實(shí)現(xiàn)數(shù)據(jù)的提取、轉(zhuǎn)化、加載等功能。
(3)Zookeeper
Zookeeper分布式協(xié)調(diào)服務(wù)是由許多服務(wù)器節(jié)點(diǎn)組成的,其目的是對Hadoop集群的運(yùn)維進(jìn)行管理。
(4)Pig
Pig可為用戶提供多種接口,用于查詢大型半結(jié)構(gòu)化的數(shù)據(jù)集,為大型數(shù)據(jù)提供了一個(gè)高層次的抽象,是大數(shù)據(jù)分析平臺。
(5)Ambari
Ambari是一個(gè)基于Web的管理工具,可快速部署、監(jiān)控以及管理集群。
(6)Sqoop
Sqoop是在Hadoop系統(tǒng)與傳統(tǒng)的數(shù)據(jù)庫間進(jìn)行數(shù)據(jù)交換的工具,它是基于MapReduce來對數(shù)據(jù)進(jìn)行操作和處理的。
Hadoop中各個(gè)子項(xiàng)目在云計(jì)算大數(shù)據(jù)處理中扮演著不同的角色,以保證底層海量數(shù)據(jù)可以為頂層應(yīng)用發(fā)揮最大作用,具體架構(gòu)如下所示。
3 Hadoop的安全問題
Hadoop項(xiàng)目是近期較流行的云計(jì)算和大數(shù)據(jù)分析框架,其安全問題也受到越來越廣泛的重視。
3.1 缺乏安全授權(quán)機(jī)制
當(dāng)用戶掌握數(shù)據(jù)塊的Block ID后就可不通過NameNode的服務(wù)權(quán)限和身份認(rèn)證,訪問相應(yīng)的DataNode,也可以隨意啟動(dòng)假的DataNode和TaskTracker,對于JobTracker,用戶可以任意修改其他作業(yè),并不受限制。
3.2 缺乏用戶以及服務(wù)器的安全認(rèn)證機(jī)制
在缺乏安全認(rèn)證的情況下,惡意用戶都可以冒充其他用戶,并非法訪問集群、修改JobTracker狀態(tài)、任意提交作業(yè),惡意用戶可以冒充合法服務(wù)器接受JobTracker和NameNode發(fā)布的任務(wù)或數(shù)據(jù)。
4 Hadoop的瓶頸與改進(jìn)
4.1 實(shí)時(shí)性處理
Hadoop采用的主要思想是“分而治之”,對大數(shù)據(jù)的計(jì)算進(jìn)行分解,接下來交由眾多的計(jì)算機(jī)節(jié)點(diǎn)分別完成,最后統(tǒng)一匯總計(jì)算結(jié)果。然而Hadoop結(jié)構(gòu)在處理實(shí)時(shí)性要求較高的業(yè)務(wù)時(shí),卻產(chǎn)生了瓶頸。
Storm是由Twitter公司開發(fā)的,是一個(gè)開源分布式的,容錯(cuò)的實(shí)時(shí)計(jì)算系統(tǒng),提供良好的實(shí)時(shí)性。將Storm的實(shí)時(shí)流處理和Hadoop的批處理進(jìn)行融合集成,會(huì)提高集群的處理性能、及穩(wěn)定性和擴(kuò)展性。既可以支撐增量的實(shí)時(shí)流處理,也可以實(shí)現(xiàn)批量處理的方式,通過擴(kuò)展數(shù)據(jù)存儲(chǔ)層以及增強(qiáng)高可用性,進(jìn)一步擴(kuò)展大數(shù)據(jù)業(yè)務(wù)場景。文獻(xiàn)[3]中提出一種基于Storm和Hadoop的新型大數(shù)據(jù)處理方案,將Storm的實(shí)時(shí)流處理與Hadoop的批處理進(jìn)行融合集成,提高集群的性能。
4.2 MapReduce算法
MapReduce的缺陷主要有三點(diǎn),第一,僅支持?jǐn)?shù)據(jù)密集型運(yùn)算,不支持任務(wù)密集型計(jì)算;第二,不支持顯示的迭代計(jì)算;第三,處理緊耦合數(shù)據(jù)效率低。Spark的使用可以很好地改善上述不足。
Spark是2009年美國加州大學(xué)伯克利分校研發(fā)的,立足于內(nèi)存計(jì)算,增強(qiáng)了多迭代批量處理能力,提高了大數(shù)據(jù)處理的時(shí)效性。其核心技術(shù)是彈性分布式數(shù)據(jù)集(RDD),該框架包括內(nèi)存計(jì)算、迭代計(jì)算、流式計(jì)算批處理計(jì)算,數(shù)據(jù)查詢分析計(jì)算以及圖計(jì)算,是MapReduce模型的代替模型。Spark支持單節(jié)點(diǎn)和多節(jié)點(diǎn)集群,可以在Hadoop文件系統(tǒng)中并行運(yùn)行,通過Mersos第三方集群框架可以支持。
5 結(jié) 語
大數(shù)據(jù)和云計(jì)算的快速發(fā)展,作為應(yīng)用平臺的Hadoop起到了至關(guān)重要的作用,但是Hadoop的缺陷也是不容忽視的。Hadoop今后的發(fā)展方向可能著重和Spark、Storm三者完美結(jié)合,混合架構(gòu),各顯神通。由于Hadoop的兼容性很好,可以很容易地同Spark和Storm相結(jié)合,以改進(jìn)Hadoop在時(shí)效性、流處理、圖處理迭代式計(jì)算上的不足。
主要參考文獻(xiàn)
[1]胡俊,胡賢德,程家興.基于Spark的大數(shù)據(jù)混合計(jì)算模型[J].計(jì)算機(jī)系統(tǒng)應(yīng)用,2015,24(4):214-218
[2]付東華. 基于HDFS的海量分布式文件系統(tǒng)的研究與優(yōu)化[D].北京:北京郵電大學(xué),2012.
[3]繆璐瑤. Hadoop安全機(jī)制研究[D].南京:南京郵電大學(xué),2015.