【正文】
圍都偏主流,對一些定制化程度化高和遺留應(yīng)用就很有可能束手無策,但是這些往往都屬于一個企業(yè)最核心de應(yīng)用,比如Mainframe,Unix等平臺de應(yīng)用。(5)不影響現(xiàn)有IT管理de流程對大型企業(yè)而言,流程是其管理de核心,如果沒有完善de流程,企業(yè)將會成為一盤散沙。在這方面,私有云de適應(yīng)性比公有云超出很多,因為IT部門能完全控制私有云,所以他們能使私有云比公有云更好地與現(xiàn)有流程進行整合。但也正因為如此,我們才有了將私有云與公共云進行比較de意義。首先,從控制范圍來說,私有云基本上是根據(jù)用戶de要求來確定數(shù)據(jù)存放de位置,而公共云則是由服務(wù)提供商根據(jù)服務(wù)de需要或成本預算等來確定數(shù)據(jù)存放de位置。其次,從安全系數(shù)上來說,私有云因為在物理上可控,相比于不可控de公共云安全系數(shù)在物理上看起來是要更高一些。同時,由于私有云de私有性,可能在安全技術(shù)de支持上,主觀上或客觀上都很可能比公共云要薄弱。最后,從成本上,建立私有云必然是比使用公共云需要更多de成本支出??俤e來說,私有云與公共云各有各de優(yōu)勢,對于一般de中小企業(yè)來說,公共云是一種比較務(wù)實de選擇,而對于有一定de規(guī)模,對安全指數(shù)要求較高de企業(yè),私有云也不失為一種謹慎de選擇。在云計算機中應(yīng)該具有6個組成成分:主服務(wù)控制機群、存儲節(jié)點機群、應(yīng)用節(jié)點機群、計算節(jié)點機群、輸入設(shè)備和輸出設(shè)備,如圖17所示:圖17下面,我們對云計算機de設(shè)計思想進行具體de講解。它是由一組或多組主引導服務(wù)機群和多組分類控制機群所組成de機群系統(tǒng)。(2)存儲節(jié)點機群和應(yīng)用節(jié)點機群相當于傳統(tǒng)計算機體系結(jié)構(gòu)中de存儲器部分,但又有所區(qū)別。這里同時提出了一個新de概念云盤,所謂云盤就是由云端主服務(wù)控制機群為云腦用戶所分配de、建立在存儲節(jié)點機群上de存儲空間,它雖不是用戶本地硬盤,但卻完全由用戶進行應(yīng)用和管理,操作感與本地硬盤一致。這兩個節(jié)點機群是完全按照主服務(wù)控制機群de任務(wù)控制流程運行de,其本身不能擁有系統(tǒng)流程控制權(quán)。對于計算節(jié)點機群,它是由多組架構(gòu)完善de云計算機群所組成,其主要工作是處理超大運算量要求de計算,并不提供小計算量服務(wù)。這些小計算量運算服務(wù)只需在應(yīng)用節(jié)點機群或計算節(jié)點機群de某臺機器中完成即可。下圖便是我們所要實現(xiàn)de系統(tǒng)架構(gòu)圖,最左邊de是用戶終端,也就是我們所說de云客戶端,不論是什么樣de設(shè)備,只要擁有瀏覽器,就可以像使用普通電腦一樣de使用云腦,所以瀏覽器也是我們不可缺少de一個部分。圖18首先,當用戶打開Hadoop,做de第一件事情應(yīng)當和我們在使用普通計算機時一樣,就是登錄,所以此處絕不可馬虎。經(jīng)過了注冊/登錄后de用戶便真正進入了云腦de世界。對于組織云腦系統(tǒng)de整體結(jié)構(gòu)和程序人員de具體實現(xiàn)來說,必然會有4個新模塊de產(chǎn)生。二是業(yè)務(wù)定制模塊,它是一個動態(tài)de業(yè)務(wù)訂制模塊,隨時為用戶提供云腦可支持de服務(wù)事項,而用戶只需輕松點擊選擇,就可獲得他想要de應(yīng)用,構(gòu)造專屬于自己de個性化云腦。最后不能少de是文件管理模塊,這是相當重要de,它將提供給用戶新建、刪除以及應(yīng)用文件等一系列問題de解決策略。 首先對于用戶de操作,云客戶端將進行操作判斷,不同類型de操作將以不同方式交給服務(wù)器端進行處理。其次,當用戶進行業(yè)務(wù)應(yīng)用時,由于并非簡單操作,所以主服務(wù)器會根據(jù)各節(jié)點狀況進行負載均衡,把最適于用戶應(yīng)用de應(yīng)用節(jié)點和計算節(jié)點分配給用戶,使用戶de操作達到最高效率。最后,監(jiān)控機群de工作就是為主服務(wù)器進行負載均衡時提供各節(jié)點de狀態(tài)信息,并對節(jié)點進行狀態(tài)控制,以使其正常、高效而穩(wěn)定de工作。它和現(xiàn)有de分布式文件系統(tǒng)有很多共同點。HDFS是一個高度容錯性de系統(tǒng),適合部署在廉價de機器上。HDFS放寬了一部分POSIX約束,來實現(xiàn)流式讀取文件系統(tǒng)數(shù)據(jù)de目de。(1)硬件錯誤 硬件錯誤是常態(tài)而不是異常。我們面對de現(xiàn)實是構(gòu)成系統(tǒng)de組件數(shù)目是巨大de,而且任一組件都有可能失效,這意味著總是有一部分HDFSde組件是不工作de。 (2)流式數(shù)據(jù)訪問 運行在HDFS上de應(yīng)用和普通de應(yīng)用不同,需要流式訪問它們de數(shù)據(jù)集。比之數(shù)據(jù)訪問de低延遲問題,更關(guān)鍵de在于數(shù)據(jù)訪問de高吞吐量。為了提高數(shù)據(jù)de吞吐量,在一些關(guān)鍵方面對POSIXde語義做了一些修改。HDFS上de一個典型文件大小一般都在G字節(jié)至T字節(jié)。它應(yīng)該能提供整體上高de數(shù)據(jù)傳輸帶寬,能在一個集群里擴展到數(shù)百個節(jié)點。 (4)簡單de一致性模型 HDFS應(yīng)用需要一個“一次寫入多次讀取”de文件訪問模型。這一假設(shè)簡化了數(shù)據(jù)一致性問題,并且使高吞吐量de數(shù)據(jù)訪問成為可能。目前還有計劃在將來擴充這個模型,使之支持文件de附加寫操作。因為這樣就能降低網(wǎng)絡(luò)阻塞de影響,提高系統(tǒng)數(shù)據(jù)de吞吐量。HDFS為應(yīng)用提供了將它們自己移動到數(shù)據(jù)附近de接口。這種特性方便了HDFS作為大規(guī)模數(shù)據(jù)應(yīng)用平臺de推廣。一個HDFS集群是由一個Namenode和一定數(shù)目deDatanodes組成。集群中deDatanode一般是一個節(jié)點一個,負責管理它所在節(jié)點上de存儲。從內(nèi)部看,一個文件其實被分成一個或多個數(shù)據(jù)塊,這些塊存儲在一組Datanode上。它也負責確定數(shù)據(jù)塊到具體Datanode節(jié)點de映射。在Namenodede統(tǒng)一調(diào)度下進行數(shù)據(jù)塊de創(chuàng)建、刪除和復制。這些機器一般運行著GNU/Linux操作系統(tǒng)(OS)。由于采用了可移植性極強deJava語言,使得HDFS可以部署到多種類型de機器上。這種架構(gòu)并不排斥在一臺機器上運行多個Datanode,只不過這樣de情況比較少見。Namenode是所有HDFS元數(shù)據(jù)de仲裁者和管理者,這樣,用戶數(shù)據(jù)永遠不會流過Namenode。用戶或者應(yīng)用程序可以創(chuàng)建目錄,然后將文件保存在這些目錄里。當前,HDFS不支持用戶磁盤配額和訪問權(quán)限控制,也不支持硬鏈接和軟鏈接。 Namenode負責維護文件系統(tǒng)de名字空間,任何對文件系統(tǒng)名字空間或?qū)傩詃e修改都將被Namenode記錄下來。文件副本de數(shù)目稱為文件de副本系數(shù),這個信息也是由Namenode保存de。新建系統(tǒng)hadoop用戶Hadoop要求所有機器上hadoopde部署目錄結(jié)構(gòu)要相同,并且都有一個相同de用戶名de帳戶,所以需要每臺機器見一個同名de用戶。SSH設(shè)置Hadoop需要namenode到datanodede無密碼SSH,所以需要設(shè)置namenode到其他datanodede無密碼公鑰認證方式deSSH。(3)(也包括本機)de/home/cloud/.ssh/authorized_keys文件中,如果機器上已經(jīng)有authorized_keys這個文件了,如果沒有authorized_keys這個文件,直接cp或者scp就好了,下面de操作假設(shè)各個機器上都沒有authorized_keys文件。另外幾臺datanode也一樣拷貝。其他機器一樣測試。(1)下載JDK 。(3) 加上執(zhí)行權(quán)限。chmod a+x (4)執(zhí)行./ 進行安裝。mkdir /usr/java cp r /usr/java/ (6)這樣安裝就完成了,接著我們設(shè)置環(huán)境變量,修改etc/profile。export JAVA_HOME=/usr/java/ export PATH=$PATH :$JAVA_HOME/bin:$JAVA_HOME/jre/bin: export CLASSPATH=$CLASSPATH:$JAVA_HOME/lib:$JAVA_HOME/jre/lib 注意上面de都是:,而不是。在命令行中鍵入:source /etc/profile //使環(huán)境變量設(shè)置生效 測試一下:which java /usr/java/恭喜,JDK配置完成,這樣就可以運行你dejava程序了。(1)在 /home/hadoop 目 錄 下 新 建 hadoopinstall 下 載 had。(4)在/home/cloud/.bashrc文件中設(shè)置環(huán)境變量$HADOOP_CONF_DIR:export HADOOP_CONF_DIR=$HOME/hadoopinstall/hadoopconf/)Hadoop環(huán)境變量設(shè)置在/home/hadoop/hadoopinstall/hadoop/conf/:export JAVA_HOME=/usr/java/export HADOOP_HOME=/home/hadoop/hadoopinstall/hadoop添加namenode在/home/hadoop/HadoopInstall/hadoop/conf/masters文件中設(shè)置namenode:cloud1添加datanode在/home/hadoop/HadoopInstall/hadoop/conf/slaves文件中設(shè)置namenode:cloud2 cloud3 cloud4 cloud5 cloud6 cloud7 在/home/hadoop/HadoopInstall/hadoop/conf/目錄下。configuration property name/name valuehdfs://cloud1//value /property /configuration 1在/home/hadoop/HadoopInstall/hadoop/conf/目錄下。Scp r /home/cloud/hadoopinstall cloudx:/home/cloud/(x=2~7)1格式化namenode進入/home/hadoop/HadoopInstall/hadoop/bin目錄,格式化系統(tǒng)namenode:[cloudcloud1 bin]$ ./hadoop namenode –format1 測試hadoop在/home/hadoop/HadoopInstall/:* 啟動所有deHadoop守護,包括namenode, datanode,jobtracker,tasktrack,secondarynamenode。* 啟動Map/Reduce守護,包括Jobtracker和Tasktrack。* 啟動Hadoop DFS守護,Namenode和Datanode???到 localhost: no datanode to stop, 說 明 datanode 服 務(wù) 沒 有 啟 動。 datanode namespaceID = 1744145012 (:298) (:142) (:236)at .init(:162) (:2510)at (:2454)(:2475)at (:2671) property name/name value/home/zxf/hadoop/tmp//value /propertyde屬性,重新namenode format。再次datanode format,再啟動系統(tǒng),又出現(xiàn)datanode啟動失敗,大概明白了原因:每次namenod format會重新創(chuàng)建一個namenodeId,而tmp/dfs/data下包含了上次format下deid,namenode format清空了namenode下de數(shù)據(jù),但是沒有晴空datanode下de數(shù)據(jù),導致啟動時失敗,所要做de就是每次fotmat前,清空tmp一下de所有目錄,即可啟動正常。后臺在網(wǎng)上查到了這個問題,應(yīng)該是一個bug,到現(xiàn)在還沒有修復,以下是顧忌deDatanodes should be reformatted whenever the namenode is. I see 2 approaches here:1) In order to reformat the cluster we call startdfs format or make a special script formatdfsThis would format the cluster ponents all together. The question is whether it should startthe cluster after formatting?2) Format the namenode only. When datanodes connect to the namenode it will tell them toformat their storage directories if it sees that the namespace is empty and its cTime=0.The drawback of this approach is that we can loose blocks of a datanode from another clusterif it connects by mistake to the empty namenode.至此a singlenode in a pseudodistributed mode運行成功no tasktracker to stop ,no datanode to stop問題de原因是hadoop在stopde時候依據(jù)de是datanode上 demapred和dfs進程號。因 兩個文件后,namenode 自然就找不到datanode上de這兩個進程了。如本此配置就是在NameNode上刪除/home/hadoop/NameData,在DataNode上刪除/home/hadoop/DataNode1和/home/hadoop/DataNode2。這樣才可以使namedode和datanode記錄de信息版