• <tr id="yyy80"></tr>
  • <sup id="yyy80"></sup>
  • <tfoot id="yyy80"><noscript id="yyy80"></noscript></tfoot>
  • 99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

    基于Hadoop的云平臺設(shè)計(jì)與實(shí)現(xiàn)

    2016-09-26 11:28:56秦東霞韋家驥齊迎春

    秦東霞 韋家驥 齊迎春

    摘 要:Hadoop是一個(gè)免費(fèi)、可靠、高效、可擴(kuò)展的開源云平臺,允許在分布式集群上處理大數(shù)據(jù)的軟件框架。本文以Hadoop為基礎(chǔ),詳細(xì)介紹了虛擬機(jī)VMware、JDK、CentOS、Hadoop等技術(shù)。在偽分布式環(huán)境下搭建虛擬云平臺,經(jīng)過測試,本系統(tǒng)能正常運(yùn)行MapReduce化的分布式程序,本文還針對用戶權(quán)限、路徑配置和使用SSH服務(wù)程序等問題進(jìn)行了詳細(xì)的闡述,為基于Hadoop的云平臺研究和應(yīng)用程序開發(fā)提供了基礎(chǔ)。

    關(guān)鍵詞:Hadoop;MapReduce;云平臺搭建

    中圖分類號:TP393 文獻(xiàn)標(biāo)識碼:A

    Abstract:Hadoop is a free, reliable, efficient and scalable open source cloud platform, which allows the software framework to deal with large data on a distributed cluster. Based on Hadoop, this paper introduces the technology of CentOS, JDK, Hadoop and VMware in virtual machine. Virtual cloud platform is built in the pseudo distributed environment. After testing, the system can run the MapReduce oriented distributed program. This paper also provides a basis for the research of the SSH based cloud platform and application program based on Hadoop.

    Key words:Hadoop;MapReduce;Construct the cloud computing platform

    0 引言

    隨著互聯(lián)網(wǎng)時(shí)代信息與數(shù)據(jù)的飛速增長,科學(xué)、工程和商業(yè)等研究領(lǐng)域均需要處理大規(guī)模以及超大規(guī)模的數(shù)據(jù), 對計(jì)算能力的需求已遠(yuǎn)遠(yuǎn)超出自身系統(tǒng)架構(gòu)的承載運(yùn)行限度。云計(jì)算是分布式計(jì)算、并行處理和網(wǎng)格計(jì)算的進(jìn)一步發(fā)展,是基于互聯(lián)網(wǎng)的計(jì)算,能夠向各種互聯(lián)網(wǎng)應(yīng)用提供基礎(chǔ)架構(gòu)服務(wù)、硬件服務(wù)、軟件服務(wù)、平臺服務(wù)、存儲服務(wù),這就意味著計(jì)算可以作為一種商品實(shí)現(xiàn)流通,不僅使用方便,費(fèi)用也相對低廉[1]。此外,由于傳統(tǒng)并行編程模型應(yīng)用的設(shè)計(jì)局限,客觀上需要一種容易學(xué)習(xí)、使用和部署的編程框架,而Hadoop就是一個(gè)優(yōu)秀的大數(shù)據(jù)處理框架,性能表現(xiàn)高效穩(wěn)定,非常適合選擇作為云計(jì)算的基礎(chǔ)架構(gòu)。

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

    Hadoop是一個(gè)可運(yùn)行在大量低配硬件設(shè)備上的分布式計(jì)算框架,并且能為其中的應(yīng)用程序提供可靠的接口,構(gòu)建擴(kuò)展性好、可靠性強(qiáng)、具有良好可移植性的分布式系統(tǒng)[2]。Hadoop云平臺主要包括:HDFS分布式文件系統(tǒng)、MapReduce編程模型、HBase數(shù)據(jù)庫和Zookeeper分布式應(yīng)用程序協(xié)調(diào)服務(wù)。這剛好與Google核心技術(shù)GFS、MapReduce和BigTable類似。

    1.1分布式文件系統(tǒng)HDFS

    Hadoop分布式文件系統(tǒng)可以將信息存儲在具有不同節(jié)點(diǎn)的設(shè)備中。具體由2部分組成,分別是:名稱節(jié)點(diǎn)NameNode和數(shù)據(jù)節(jié)點(diǎn)DataNode,NameNode相當(dāng)于管理者,全面管理集群內(nèi)的DataNode,當(dāng)用戶發(fā)送請求信息后,NameNode會根據(jù)情況指定存儲到哪些DataNode上,而并不存儲真實(shí)的數(shù)據(jù)。原理工作流程如圖1所示。

    HDFS在執(zhí)行讀或?qū)懙倪^程中,NameNode和DataNode通過心跳信息保存通信,確定DataNode不是宕機(jī)。如果發(fā)現(xiàn)DataNode停止了工作,就將該DataNode上的數(shù)據(jù)備份到其他節(jié)點(diǎn)中,并讀取該備份數(shù)據(jù),這就是HDFS的容錯機(jī)制[3]。

    1.2 MapReduce 編程模型

    MapReduce提供了一個(gè)并行處理大數(shù)據(jù)集的編程模型,由Map和Reduce這2個(gè)階段組成。只需編寫map 和reduce 2個(gè)函數(shù),即可完成簡單的分布式程序的計(jì)算。map函數(shù)以key/value 對作為輸入,產(chǎn)生另外一系列key/value 對作為中間輸出寫入本地磁盤[4]。MapReduce框架會自動將這些中間數(shù)據(jù)按照鍵值進(jìn)行聚集操作,并且鍵值相同(可設(shè)定聚集方法,默認(rèn)是對鍵值進(jìn)行哈希取模)的數(shù)據(jù)將統(tǒng)一交送reduce函數(shù)進(jìn)行轉(zhuǎn)換處理。reduce函數(shù)以key和其對應(yīng)的value列表作為輸入,經(jīng)合并value相同的值后,產(chǎn)生另外一系列key/value 對作為最終輸出寫入文件系統(tǒng),如圖2所示。

    1.3 HBase數(shù)據(jù)庫

    HBase建立在HDFS上,介于NoSQL和RDBMS之間,僅能通過主鍵(row key)和主鍵的range來檢索數(shù)據(jù),理論上能夠處理單行事務(wù),但可通過Hive支持來實(shí)現(xiàn)多表join等復(fù)雜操作,主要用來存儲非結(jié)構(gòu)化和半結(jié)構(gòu)化的數(shù)據(jù)。與Hadoop一樣,HBase主要依靠橫向擴(kuò)展,通過不斷增加相對廉價(jià)的商用服務(wù)器,來提升和改善計(jì)算和存儲能力[5]。HBase以表的形式存儲數(shù)據(jù),Hbase表可以有上億行,上百萬列,面向列(族)的存儲和權(quán)限。表有行和列組成,列劃分為若干個(gè)列族(row family)控制,對于為空(null)的列,并不占用存儲空間。

    1.4 Zookeeper的工作機(jī)制

    ZooKeeper是一個(gè)開放源碼的分布式應(yīng)用程序協(xié)調(diào)服務(wù),其中包含一個(gè)簡單的原語集?;诖?,分布式應(yīng)用程序可以實(shí)現(xiàn)同步服務(wù),配置維護(hù)和命名服務(wù)等[6]。

    Zookeeper是Hadoop的一個(gè)子項(xiàng)目。在分布式應(yīng)用中,由于不能有效地使用鎖機(jī)制,以及基于消息的協(xié)調(diào)機(jī)制不適合在某些場合中使用,因此需要有一種可靠的、分布式的、可擴(kuò)展的、可配置的協(xié)調(diào)機(jī)制來統(tǒng)一系統(tǒng)的狀態(tài),Zookeeper應(yīng)運(yùn)而生。其完整工作機(jī)制如圖3所示。

    2 集群搭建

    云平臺的搭建是一個(gè)復(fù)雜的過程,包括虛擬機(jī)和操作系統(tǒng)的安裝,JDK的安裝,設(shè)置SSH免密碼登錄、Hadoop的安裝、Zookeeper的安裝、HBase的安裝、Hadoop文件系統(tǒng)格式化以及集群部件的啟動和關(guān)閉命令設(shè)置等步驟。

    2.1 虛擬機(jī)、操作系統(tǒng)安裝

    先安裝VMware10.0虛擬機(jī),宿主機(jī)是Win8.1系統(tǒng),由于Hadoop在類Unix系統(tǒng)上才能運(yùn)行,為此則選擇了Linux系統(tǒng)和免費(fèi)開源版的CentOS6.5版本。

    2.2 JDK的安裝

    安裝時(shí),需要下載JDK1.7版本的包,解壓到指定目錄,同時(shí)修改properties文件配置系統(tǒng)環(huán)境變量,最后可以執(zhí)行一次source功能,使得無需再重啟機(jī)器時(shí)環(huán)境變量就能生效。

    2.3 設(shè)置SSH免密碼登錄

    添加一個(gè)命名為Hadoop用戶,集群運(yùn)行和通信均使用該用戶。如果不進(jìn)行SSH免密碼登錄,每次通信都要輸入密碼,這將是一個(gè)災(zāi)難性的操作[7]。而后修改hosts的文件,把集群IP地址和主機(jī)名對應(yīng)起來,切換到Hadoop用戶,執(zhí)行ssh-keygen生成公鑰與私鑰,此處先不相互復(fù)制公私,虛擬機(jī)設(shè)有一克隆命令,把相同的信息都可以克隆出來,為此需要預(yù)先完成Hadoop的安裝。

    2.4 Hadoop的安裝

    Hadoop的安裝分為以下幾個(gè)步驟:

    1)首先配置Master機(jī)器,下載Hadoop的安裝包,解壓到/usr/目錄下,文件夾重命名為Hadoop。

    2)修改配置文件,首先修改Hadoop-env.sh,添加Hadoop需要的JDK信息,配置JAVA_HOME環(huán)境變量、為Hadoop的JVM指定某特征選項(xiàng)、指定日志文件所在的目錄路徑以及master和slave文件的位置等。

    3)修改core-site.xml,定義系統(tǒng)級別的參數(shù),可作用于全部進(jìn)程及客戶端,Hadoop.tmp.dir屬性用于定義Hadoop的臨時(shí)目錄,其默認(rèn)為/tmp/Hadoop-${username}。HDFS進(jìn)程的許多目錄默認(rèn)均在此目錄中。需要注意的是,要保證運(yùn)行Hadoop進(jìn)程的用戶對其具有全部訪問權(quán)限。

    4)修改hdfs-site.xml文件,對HDFS進(jìn)行如下參數(shù)設(shè)置:文件副本的個(gè)數(shù)、塊大小及是否使用、強(qiáng)制權(quán)限等,同時(shí)將replication 默認(rèn)值設(shè)置為3,如果不修改,datanode少于3臺就會報(bào)錯。

    5)修改mapred-site.xml 配置jobTracker的端口。

    6)編輯masters文件,masters用于指定輔助名稱節(jié)點(diǎn)(SecondaryNameNode)的主機(jī)名或主機(jī)地址,這個(gè)文件只需在master主機(jī)上實(shí)現(xiàn)其編輯[8]。接著克隆另外3臺slave,克隆完畢之后,把每個(gè)slave關(guān)聯(lián)的主機(jī)名修改成相對應(yīng)的slave,在此還要注意,/etc/下的hosts文件對應(yīng)的Ip要改成各個(gè)節(jié)點(diǎn)的Ip地址,并重新生成各個(gè)節(jié)點(diǎn)的公匙和私匙,再利用scp命令把公匙分發(fā)給各個(gè)節(jié)點(diǎn)。

    2.5 Zookeeper的安裝

    下載Zookeeper-3.4并將其解壓到/usr/下,修改權(quán)限,動態(tài)設(shè)定/zookeeper/conf下的zoo.cfg配置文件。將Zookeeper目錄分別復(fù)制到各個(gè)slave中,創(chuàng)建/Hadoop/zookeeper目錄,并在該目錄下創(chuàng)建myid[6]。

    2.6 HBase的安裝

    下載HBase-0.94.8.tar.gz,并解壓到/usr/中,同時(shí)使用mv修改其目錄名為HBase,修改conf/HBase-env.sh,添加HBase所需要的jdk信息,Hadoop的配置文件路徑和Zookeeper的信息[6]。修改HBase-site.xml,把/usr /Hadoop /conf/ hdfs-site.xml文件拷貝至HBase的conf文件夾下,把/usr/zookeeper/conf/zoo.cfg拷貝至/usr /Hadoop /conf/文件夾下,在conf /regionservers中添加所有的datanode節(jié)點(diǎn)—所有的slave刪除/HBase-0.94.8 /lib/Hadoop-core-1.0.3.ja,拷貝/Hadoop /lib /Hadoop-1.0.3-core.jar到/HBase/lib/。在此基礎(chǔ)上,把配置完成的HBase拷貝到其它節(jié)點(diǎn)。

    2.7 Hadoop文件系統(tǒng)格式化

    與普通文件系統(tǒng)一樣,HDFS文件系統(tǒng)需要首先格式化,創(chuàng)建元數(shù)據(jù)數(shù)據(jù)結(jié)構(gòu)以后才能使用。命令如下:[Hadoop@Master Hadoop]$ bin/Hadoop namenode –format。

    2.8 集群各個(gè)部件的啟動命令

    Hadoop的啟動命令是/bin/start-all.sh,Zookeeper的啟動命令是zkServer.sh start。通過jps命令可以看到,此時(shí)多個(gè)進(jìn)程QuorumPeermain;HBase的啟動命令是/start-HBase.sh;通過jps命令查看,此時(shí)又多了一個(gè)進(jìn)程HMaster。

    2.9 集群的關(guān)閉命令

    關(guān)閉集群是有順序的,關(guān)閉HBase后,再關(guān)閉Zookeeper,而后則關(guān)閉Hadoop。具體地,關(guān)閉HBase時(shí),進(jìn)入bin目錄下,執(zhí)行HBase-stop.sh處理關(guān)閉Zookeeper;進(jìn)入bin目錄下,執(zhí)行zkServer.sh stop操作,關(guān)閉Hadoop;進(jìn)入bin目錄下,執(zhí)行stop-all.sh再測試一次jps,發(fā)現(xiàn)只有jps一個(gè)進(jìn)程,這樣集群就成功實(shí)現(xiàn)了關(guān)閉[9]。

    3 集群測試

    在本地創(chuàng)建2個(gè)文件file1.txt,file2.txt,2個(gè)文件分別寫入一段字符,在HDFS上創(chuàng)建輸入文件夾input,上傳file1.txt和file2.txt到input文件夾,復(fù)制Hadoop中的WordCount實(shí)例代碼,在eclipse中執(zhí)行Run on Hadoop命令,運(yùn)行結(jié)果如圖4所示。

    4結(jié)束語

    本文介紹了Hadoop的文件系統(tǒng)、編程模型、HBase的安裝、Zookeeper的安裝以及國內(nèi)外研究應(yīng)用情況,其中詳細(xì)設(shè)計(jì)了Hadoop集群的搭建過程,包括Hadoop文件系統(tǒng)HDFS、計(jì)算框架MapReduce編程、Hadoop生態(tài)系統(tǒng)相關(guān)組件的安裝、運(yùn)用虛擬機(jī)技術(shù)在linux操作系統(tǒng)上搭建Hadoop集群等,旨在剖析云計(jì)算平臺構(gòu)建可能用到的技術(shù),為企業(yè)構(gòu)建公有云和私有云提供技術(shù)參考。當(dāng)然本系統(tǒng)也有一些不足之處,如集群功能簡單等,這些都需要在進(jìn)化的學(xué)習(xí)和研究過程中不斷深化。

    參考文獻(xiàn)

    [1] Konstantin Shvachko, Hairong Kuang, Sanjay Radia, et al.The Hadoop Distributed File System[Z].Sunnyvale,California USA,IEEE 2010: 1-10.

    [2] 夏大文,榮卓波.Hadoop關(guān)鍵技術(shù)的研究與應(yīng)用[J].計(jì)算機(jī)與現(xiàn)代化,2013(5):138-141,148.

    [3]NAMJOSHI J, GUPTE A. Service oriented architecture for cloud based travel reservation software as a service[C]//Proc Of IEEE International Conference on Cloud Computing. New York: IEEEComputer Society Press, 2009: 147-150.

    [4] DEAN J, GHEMAWAT S. MapReduce: Simplified data processing on large clusters[C]//Proc. 6Th Symp on Operating System Design and Implementation. New York:ACM Press, 2004: 137-150.

    [5] 田秀霞,周耀君,畢忠勤,等.基于Hadoop 架構(gòu)的分布式計(jì)算和存儲技術(shù)及其應(yīng)用[J].上海電力學(xué)院學(xué)報(bào),2011,27(1):70-74.

    [6] 崔杰,李陶深,蘭紅星.基于Hadoop 的海量數(shù)據(jù)存儲平臺設(shè)計(jì)與開發(fā)[J].計(jì)算機(jī)研究與發(fā)展,2012,49(Suppl.):12-18.

    [7] TAYLOR R C. An overview of the Hadoop /MapReduce /HBase framework and its current applications in bioinformatics [C]//BMC Bioinformatics. Washington: BMC Bioinformatics, 2010:51-57

    [8] 周鋒,李旭偉.一種改進(jìn)的MapReduce 并行編程模型[J].科協(xié)論壇(下半月),2009(2):65-66.

    [9] 胡光民,周亮,柯立新.基于Hadoop的網(wǎng)絡(luò)日志分析系統(tǒng)研究[J].電腦知識與技術(shù),2010,6(22):6163-6164,6185.

    绍兴县| 定远县| 和顺县| 乐亭县| 新源县| 仁化县| 钟祥市| 富蕴县| 枣强县| 米易县| 合江县| 金坛市| 砀山县| 岫岩| 宽甸| 高唐县| 琼中| 合川市| 徐水县| 庄浪县| 西平县| 施甸县| 稻城县| 明水县| 牟定县| 永平县| 安溪县| 馆陶县| 天峨县| 岳阳市| 喀喇沁旗| 朝阳区| 洞口县| 民权县| 临汾市| 甘德县| 明水县| 太白县| 重庆市| 伊川县| 石屏县|