王麗梅
(甘肅省臨夏中學(xué) 甘肅 臨夏 731100)
基于開源云計(jì)算框架Hadoop技術(shù)支持的具有數(shù)據(jù)可靠些高、架構(gòu)體系可擴(kuò)展性強(qiáng)、基于大規(guī)模廉價(jià)計(jì)算機(jī)集群、兼具故障處理能力和容錯(cuò)機(jī)制等特征。云存儲(chǔ)體系用五元組表示即:£=
HDFS能夠?qū)⒚恳徊糠謹(jǐn)?shù)據(jù)保存3個(gè)副本因子,其相對(duì)于其他分布式文件存儲(chǔ)系統(tǒng)有著眾多共同點(diǎn),但同時(shí)相對(duì)于其他文件系統(tǒng)其也有著明顯優(yōu)勢(shì)。若要在大規(guī)模廉價(jià)計(jì)算機(jī)集群上建立云存儲(chǔ)技術(shù)相對(duì)于專業(yè)的設(shè)備來看,機(jī)器的運(yùn)算穩(wěn)定性和運(yùn)算速度都很差。因此,HDFS必須能夠通過彌補(bǔ)集群機(jī)器的運(yùn)行能力不足、硬件故障等來保證數(shù)據(jù)不會(huì)出現(xiàn)計(jì)算錯(cuò)誤或丟失。HDFS采用了數(shù)據(jù)冗余的方案,相對(duì)于其他系統(tǒng),這樣便大大降低了維護(hù)難度及存儲(chǔ)效率。HDFS還具有一套完整的定期檢測(cè)機(jī)制,其能夠快速發(fā)現(xiàn)和修復(fù)集群中的故障機(jī)器,若一些機(jī)器的故障難以及時(shí)解決,HDFS能夠通過轉(zhuǎn)移任務(wù)給空閑機(jī)器的方式來保證數(shù)據(jù)的完整性和可靠性,提高內(nèi)容利用率。HDFS系統(tǒng)有著良好的擴(kuò)展性,其能夠在各個(gè)平臺(tái)直接遷移,有利于其在廉價(jià)計(jì)算機(jī)集群上構(gòu)建并可以被更多的系統(tǒng)或平臺(tái)應(yīng)用。
由于廉價(jià)計(jì)算機(jī)集群結(jié)合云存儲(chǔ)受一些客觀因素的影響,可使存儲(chǔ)海量數(shù)據(jù)的環(huán)境發(fā)生各種各樣的問題,會(huì)對(duì)存儲(chǔ)的完整性、可用性和可靠性產(chǎn)生不良的影響。如下幾點(diǎn):
(1)云存儲(chǔ)節(jié)點(diǎn)的硬件錯(cuò)誤。云儲(chǔ)存的基礎(chǔ)是大規(guī)模的廉價(jià)計(jì)算機(jī)集群,因此云儲(chǔ)存要能夠兼容存儲(chǔ)節(jié)點(diǎn)的硬件錯(cuò)誤,避免單個(gè)或部分節(jié)點(diǎn)錯(cuò)誤影響整體運(yùn)行。(2)云存儲(chǔ)的過程中會(huì)出現(xiàn)軟性錯(cuò)誤。云存儲(chǔ)過程會(huì)受到存儲(chǔ)節(jié)點(diǎn)網(wǎng)絡(luò)連接情況、存儲(chǔ)節(jié)點(diǎn)運(yùn)行情況、網(wǎng)絡(luò)數(shù)據(jù)傳遞情況等因素的影響,因此要求云存儲(chǔ)體系具有很強(qiáng)的錯(cuò)誤檢測(cè)和自動(dòng)恢復(fù)功能。(3)云存儲(chǔ)體系必須具備很強(qiáng)的可擴(kuò)展性??蓴U(kuò)展性對(duì)于云存儲(chǔ)體系具有很強(qiáng)的實(shí)用價(jià)值,通過動(dòng)態(tài)添加或刪除存儲(chǔ)節(jié)點(diǎn)。(4)必須能夠提高海量數(shù)據(jù)的傳輸、管理和存儲(chǔ)功能。
本研究云儲(chǔ)存的設(shè)計(jì)與實(shí)現(xiàn)基于HDFS,廉價(jià)計(jì)算機(jī)集群采用6臺(tái)服務(wù)器組成,DataNode、Secondary NameNode服務(wù)器選擇MapReduce編程的JobTracker,操作系統(tǒng)采用Ubuntu10.04.主要步驟為:(1)搭建實(shí)驗(yàn)環(huán)境,包括云存儲(chǔ)環(huán)境配置。(2)廉價(jià)計(jì)算機(jī)集群上的云存儲(chǔ)功能分析,主要包括可擴(kuò)展性、云存儲(chǔ)體系的故障處理能力和容錯(cuò)機(jī)制和負(fù)載均衡能力,以及HDFS自帶故障處理機(jī)制。
2.1 實(shí)驗(yàn)集群環(huán)境的搭建
實(shí)驗(yàn)過程中,Secondary Node與NameNode在同一個(gè)節(jié)點(diǎn)上。實(shí)驗(yàn)環(huán)境是以一個(gè)小型計(jì)算機(jī)集群為基礎(chǔ),此集群包含6臺(tái)服務(wù)器,選擇其中的一臺(tái)服務(wù)器作為NameNode、MapReduce和Secondary Node編程模型中的JobTracker,其他5臺(tái)則為DataNode 以及TaskTracker。選擇的根路徑則是通過HADOOP_HOME進(jìn)行安裝的。在集群中所有機(jī)器使用相同路徑,即HADOOP_HOME。操作系統(tǒng)是Ubuntu。
2.2 對(duì)云存儲(chǔ)的環(huán)境進(jìn)行配置。
通過兩個(gè)配置文件對(duì)Hadoop進(jìn)行配置,這兩個(gè)文件在conf/目錄下:
hadoop-default.xml–屬于只讀配置。
hadoop-site.xml–屬于集群特有配置。
HDFS集群在進(jìn)行配置時(shí),對(duì)Hadoop守護(hù)進(jìn)程進(jìn)行配置,配置運(yùn)行環(huán)境和運(yùn)行參數(shù)。Hadoop的守護(hù)進(jìn)程是NameNode、TaskTracker以及DataNode JobTracker/。
Hadoop守護(hù)進(jìn)程進(jìn)行配置,配置運(yùn)行環(huán)境
通過配置選項(xiàng)HADOOP_*_OPTS來分別配置各個(gè)守護(hù)進(jìn)程。其中的一臺(tái)機(jī)器被選作NameNode,另一選臺(tái)機(jī)器用作JobTracker。剩余機(jī)器作為DataNode又可被作為TaskTracker,被稱為slaves。
日志
Hadoop記錄日志是通過Apache log4j的方式,這一過程的實(shí)現(xiàn)需要Apache Commons Logging框架。
全部必要的配置如果已經(jīng)完成,則將文件分到所有機(jī)器的HADOOP_CONF_DIR路徑下,通常是${HADOOP_HOME}/conf。
另外,HDFS認(rèn)為,存儲(chǔ)節(jié)點(diǎn)主要分DataNode及NameNode(Secondary Node),因此在對(duì)云存儲(chǔ)體系進(jìn)行配置時(shí),首先要對(duì)NameNode及DataNode進(jìn)行配置。
主要的兩個(gè)步驟是:
第一步,對(duì)NameNode進(jìn)行配置。選其中一臺(tái)計(jì)算機(jī)的節(jié)點(diǎn)作NameNode,修改/etc/hosts,然后將其他4個(gè)存儲(chǔ)節(jié)點(diǎn)的 IP 地址以及計(jì)算機(jī)名分別添加進(jìn)來。
第二步,DataNode的配置。添加本機(jī)IP地址、計(jì)算機(jī)名和NameNode 到/etc /hosts 中。
2.3 SSH Server安裝完后,進(jìn)行免密鑰的訪問配置。
在DataNode中添加復(fù)制生成的密鑰,并在NameNode的/etc/hosts/中添加計(jì)算機(jī)集群中所有節(jié)點(diǎn)的IP以及計(jì)算機(jī)名,然后覆蓋DataNode中的文件使 用NameNode上的authorized_keys,保證DataNode能夠訪問NameNode免密碼的。
2.4 在NameNode上安裝HDFS云存儲(chǔ)環(huán)境。
設(shè)置conf/hadoop-env.sh中的變量作集群的特有值,就能夠控制Hadoop腳本,隸屬于bin/目錄下的。在配置NameNode時(shí),首先要對(duì)Hadoop環(huán)境變量進(jìn)行配置,解壓Hadoop的安裝包,然后對(duì)HDFS相關(guān)參數(shù)進(jìn)行配置,對(duì)conf/hadoop-site.xml的文件進(jìn)行修改,把dfs.replication的值設(shè)為2。然后對(duì)云存儲(chǔ)體系的主從結(jié)構(gòu)(master/slave)進(jìn)行設(shè)置,master計(jì)算機(jī)名(lib_namenode)被設(shè)置為conf/masters,slave的計(jì)算機(jī)名(lib_datanode01、……、lib_datanode04)被設(shè)置為將conf/slave。
2.5 將所有HDFS云存儲(chǔ)環(huán)境安裝到DataNode,命令是:
$scp–r hadoop-0.21.0 lib_namenode:/home/
2.6 安裝結(jié)束后,可以對(duì)云存儲(chǔ)體系進(jìn)行檢測(cè),觀察構(gòu)建是否完成。
第一步,將NameNode進(jìn)行格式化,執(zhí)行的命令是:$bin/hadoopnamenode–format
第二步,HDFS云存儲(chǔ)系統(tǒng)執(zhí)行命令進(jìn)行啟動(dòng):
若$bin /start-all.sh的測(cè)試比較成功,用戶可對(duì)整個(gè)云存儲(chǔ)體系的運(yùn)行狀況進(jìn)行觀察,通過http://192.168.1.3: 8090查看。
本研究針對(duì)廉價(jià)計(jì)算機(jī)集群上云計(jì)算環(huán)境下云存儲(chǔ)的業(yè)務(wù)需求,實(shí)現(xiàn)構(gòu)建負(fù)載能力較均衡的、并且能夠擴(kuò)展的性能較高的云存儲(chǔ)體系,而且針對(duì)研究中存在的問題進(jìn)行具體分析,制定相應(yīng)的解決措施,提出構(gòu)建于廉價(jià)計(jì)算機(jī)集群上的云存儲(chǔ)的實(shí)現(xiàn)方法。未來云存儲(chǔ)服務(wù)的發(fā)展有較大的研究空間,特別是對(duì)云存儲(chǔ)體系副本的選擇策略研究,將是未來研究的重點(diǎn)問題。
[1] O.Pandithurai.High-Performance Multipath Routing Algorithm Using CPEGASIS Protocol in Wireless Sensor Cloud Environment[J].Circuits and Systems,2016,7(10):3246-3252.