版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、用 Linux 和 Apache Hadoop 進(jìn)行云計算云計算簡介近 來云計算越來越熱門了,云計算已經(jīng)被看作 IT 業(yè)的新趨勢。云計算可以粗略地定義為使用自己環(huán)境之外的某一服務(wù)提供的可伸縮計算資源,并按使用量付費(fèi)。可以通過 Internet 訪問 “云” 中的任何資源,而不需要擔(dān)心計算能力、帶寬、存儲、安全性和可靠性等問題。 本文簡要介紹 Amazon EC2 這樣的云計算平臺,可以租借這種平臺上的虛擬 Linux® 服務(wù)器;然后介紹開放源碼 MapReduce 框架 Apache Hadoop,這個框架將構(gòu)建在虛擬 Linux 服務(wù)器中以建立云計算框架。但是,Hadoop 不僅可
2、以部署在任何廠商提供的 VM 上,還可以部署在物理機(jī)器上的一般 Linux OS 中。在討論 Apache Hadoop 之前,我們先簡要介紹一下云計算系統(tǒng)的結(jié)構(gòu)。圖 1 顯示云計算的各個層以及現(xiàn)有的一些服務(wù)。關(guān)于云計算的各個層的詳細(xì)信息,請參見 參考資料。基 礎(chǔ)設(shè)施即服務(wù) (Infrastructure-as-a-Service,IaaS)是指以服務(wù)的形式租借基礎(chǔ)設(shè)施(計算資源和存儲)。IaaS 讓用戶可以租借計算機(jī)(即虛擬主機(jī))或數(shù)據(jù)中心,可以指定特定的服務(wù)質(zhì)量約束,比如能夠運(yùn)行某些操作系統(tǒng)和軟件。Amazon EC2 在這些層中作為 IaaS,向用戶提供虛擬的主機(jī)。平臺即服務(wù) (Plat
3、form-as-a-Service,PaaS)主要關(guān)注軟件框架或服務(wù),提供在基礎(chǔ)設(shè)施中進(jìn)行 “云” 計算所用的 API。Apache Hadoop 作為 PaaS,它構(gòu)建在虛擬主機(jī)上,作為云計算平臺。圖 1. 云計算的層和現(xiàn)有服務(wù)回頁首Amazon EC2Amazon EC2 是一個 Web 服務(wù),它允許用戶請求具有各種資源(CPU、磁盤、內(nèi)存等)的虛擬機(jī)器。用戶只需按使用的計算時間付費(fèi),其他事情全交給 Amazon 處理。這些實例 (Amazon Machine Image,AMI) 基于 Linux,可以運(yùn)行您需要的任何應(yīng)用程序或軟件。在從 Amazon 租借服務(wù)器之后,可以像對待物理服務(wù)
4、器一樣使用一般的 SSH 工具設(shè)置連接和維護(hù)服務(wù)器。對 EC2 的詳細(xì)介紹超出了本文的范圍。更多信息請參見 參考資料。 部 署 Hadoop 云計算框架的最好方法是把它部署在 AMI 上,這樣可以利用云資源,不需要考慮計算能力、帶寬、存儲等問題。但是,在本文的下一部分中,我們將在本地的 Linux 服務(wù)器 VMWare 映像中構(gòu)建 Hadoop,因為 Hadoop 不僅適用于云解決方案。在此之前,我們先介紹一下 Apache Hadoop?;仨撌譇pache HadoopApache Hadoop 是一個軟件框架(平臺),它可以分布式地操縱大量數(shù)據(jù)。它于 2006 年出現(xiàn),由 Google、Y
5、ahoo! 和 IBM 等公司支持。可以認(rèn)為它是一種 PaaS 模型。它的設(shè)計核心是 MapReduce 實現(xiàn)和 HDFS (Hadoop Distributed File System),它們源自 MapReduce(由一份 Google 文件引入)和 Google File System。MapReduceMapReduce 是 Google 引入的一個軟件框架,它支持在計算機(jī)(即節(jié)點)集群上對大型數(shù)據(jù)集進(jìn)行分布式計算。它由兩個過程組成,映射(Map)和縮減(Reduce)。在映射過程中,主節(jié)點接收輸入,把輸入分割為更小的子任務(wù),然后把這些子任務(wù)分布到工作者節(jié)點。 工作者節(jié)點處理這些小任務(wù)
6、,把結(jié)果返回給主節(jié)點。然后,在縮減過程中,主節(jié)點把所有子任務(wù)的結(jié)果組合成輸出,這就是原任務(wù)的結(jié)果。圖 2 說明 MapReduce 流程的概念。MapReduce 的優(yōu)點是它允許對映射和縮減操作進(jìn)行分布式處理。因為每個映射操作都是獨立的,所有映射都可以并行執(zhí)行,這會減少總計算時間。HDFS對 HDFS 及其使用方法的完整介紹超出了本文的范圍。更多信息請參見 參考資料。 從最終用戶的角度來看,HDFS 就像傳統(tǒng)的文件系統(tǒng)一樣??梢允褂媚夸浡窂綄ξ募?zhí)行 CRUD 操作。但是,由于分布式存儲的性質(zhì),有 “NameNode” 和 “DataNode” 的概念,它們承擔(dān)各自的責(zé)任。 NameNode
7、是 DataNode 的主節(jié)點。它在 HDFS 中提供元數(shù)據(jù)服務(wù)。元數(shù)據(jù)說明 DataNode 的文件映射。它還接收操作命令并決定哪些 DataNode 應(yīng)該執(zhí)行操作和復(fù)制。DataNode 作為 HDFS 的存儲塊。它們還響應(yīng)從 NameNode 接收的塊創(chuàng)建、刪除和復(fù)制命令。JobTracker 和 TaskTracker在 提交應(yīng)用程序時,應(yīng)該提供包含在 HDFS 中的輸入和輸出目錄。JobTracker 作為啟動 MapReduce 應(yīng)用程序的單一控制點,它決定應(yīng)該創(chuàng)建多少個 TaskTracker 和子任務(wù),然后把每個子任務(wù)分配給 TaskTracker。每個 TaskTracker
8、 向 JobTracker 報告狀態(tài)和完成后的任務(wù)。通常,一個主節(jié)點作為 NameNode 和 JobTracker,從節(jié)點作為 DataNode 和 TaskTracker。Hadoop 集群的概念視圖和 MapReduce 的流程見圖 2。圖 2. Hadoop 集群的概念視圖和 MapReduce 的流程回頁首設(shè)置 Apache Hadoop現(xiàn)在在 Linux VM 上設(shè)置 Hadoop 集群,然后就可以在 Hadoop 集群上運(yùn)行 MapReduce 應(yīng)用程序。Apache Hadoop 支持三種部署模式:· 單獨模式:在默認(rèn)情況下,Hadoop 以非分布的單獨模式運(yùn)行。這個
9、模式適合應(yīng)用程序調(diào)試。· 偽分布模式:Hadoop 還可以以單節(jié)點的偽分布模式運(yùn)行。在這種情況下,每個 Hadoop 守護(hù)進(jìn)程作為單獨的 Java 進(jìn)程運(yùn)行。· 全分布模式:Hadoop 配置在不同的主機(jī)上,作為集群運(yùn)行。要想以單獨或偽分布模式設(shè)置 Hadoop,請參考 Hadoop 的網(wǎng)站。在本文中,我們只討論以全分布模式設(shè)置 Hadoop。準(zhǔn)備環(huán)境在本文中,我們需要三臺 GNU/Linux 服務(wù)器;一個作為主節(jié)點,另外兩個作為從節(jié)點。表 1. 服務(wù)器信息服務(wù)器 IP 服務(wù)器主機(jī)名 角色 59 Vm-9-30-210-159 主節(jié)點(NameNode
10、和 JobTracker) 60 Vm-9-30-210-160 從節(jié)點 1 (DataNode 和 TaskTracker) 61 Vm-9-30-210-161 從節(jié)點 2 (DataNode 和 TaskTracker) 每臺機(jī)器都需要安裝 Java SE 6 和 Hadoop 二進(jìn)制代碼。更多信息見 參考資料。本文使用 Hadoop version 0.19.1。還需要在每臺機(jī)器上安裝 SSH 并運(yùn)行 sshd。SUSE 和 RedHat 等流行的 Linux 發(fā)行版在默認(rèn)情況下已經(jīng)安裝了它們。設(shè)置通信更新 /etc/hosts 文件,確保這三臺
11、機(jī)器可以使用 IP 和主機(jī)名相互通信。因為 Hadoop 主節(jié)點使用 SSH 與從節(jié)點通信,所以應(yīng)該在主節(jié)點和從節(jié)點之間建立經(jīng)過身份驗證的無密碼的 SSH 連接。在每臺機(jī)器上執(zhí)行以下命令,從而生成 RSA 公共和私有密鑰。ssh-keygen t rsa 這會在 /root/.ssh 目錄中生成 id_rsa.pub。重命名主節(jié)點的 id_rsa.pub(這里改名為 59_rsa.pub)并把它復(fù)制到從節(jié)點。然后執(zhí)行以下命令,把主節(jié)點的公共密鑰添加到從節(jié)點的已授權(quán)密鑰中。cat /root/.ssh/59_rsa.pub >> /root/.ssh/authorized_keys
12、現(xiàn)在嘗試使用 SSH 連接從節(jié)點。應(yīng)該可以成功連接,不需要提供密碼。 設(shè)置主節(jié)點把 Hadoop 設(shè)置為全分布模式需要配置 <Hadoop_home>/conf/ 目錄中的配置文件。 在 hadoop-site.xml 中配置 Hadoop 部署。這里的配置覆蓋 hadoop-default.xml 中的配置。表 2. 配置屬性屬性 解釋 NameNode URI mapred.job.tracker JobTracker URI dfs.replication 復(fù)制的數(shù)量 hadoop.tmp.dir 臨時目錄 hadoop-site.xml<
13、;?xml version="1.0"?><?xml-stylesheet type="text/xsl" href="configuration.xsl"?><!- Put site-specific property overrides in this file. -><configuration> <property> <name></name> <value>hdfs:/59:9000&l
14、t;/value> </property> <property> <name>mapred.job.tracker</name> <value>59:9001</value> </property> <property> <name>dfs.replication</name> <value>1</value> </property> <property> <name>hadoop.tmp.
15、dir</name> <value>/root/hadoop/tmp/</value> </property></configuration>通過配置 hadoop-env.sh 文件指定 JAVA_HOME。注釋掉這一行并指定自己的 JAVA_HOME 目錄。export JAVA_HOME=<JAVA_HOME_DIR>在 master 文件中添加主節(jié)點的 IP 地址。在 slave 文件中添加從節(jié)點的 IP 地址。設(shè)置從節(jié)點把 hadoop-site.xml、hadoop-env.sh、masters 和 slave
16、s 復(fù)制到每個從節(jié)點;可以使用 SCP 或其他復(fù)制工具。 對 HDFS 進(jìn)行格式化運(yùn)行以下命令對 HDFS 分布式文件系統(tǒng)進(jìn)行格式化。<Hadoop_home>/bin/hadoop namenode -format檢查 Hadoop 集群現(xiàn)在,可以使用 bin/start-all.sh 啟動 Hadoop 集群。命令輸出指出主節(jié)點和從節(jié)點上的一些日志。檢查這些日志,確認(rèn)一切正常。如果弄亂了什么東西,可以格式化 HDFS 并清空 hadoop-site.xml 中指定的臨時目錄,然后重新啟動。訪問以下 URL,確認(rèn)主節(jié)點和從節(jié)點是正常的。NameNode: http:/9.30.2
17、10.159:50070JobTracker: 59:50030現(xiàn)在,已經(jīng)在云中設(shè)置了 Hadoop 集群,該運(yùn)行 MapReduce 應(yīng)用程序了。回頁首創(chuàng)建 MapReduce 應(yīng)用程序 MapReduce 應(yīng)用程序必須具備 “映射” 和 “縮減” 的性質(zhì),也就是說任務(wù)或作業(yè)可以分割為小片段以進(jìn)行并行處理。然后,可以縮減每個子任務(wù)的結(jié)果,得到原任務(wù)的結(jié)果。這種任務(wù)之一是網(wǎng)站關(guān)鍵字搜索。搜索和 抓取任務(wù)可以分割為子任務(wù)并分配給從節(jié)點,然后在主節(jié)點上聚合所有結(jié)果并得到最終結(jié)果。試用示例應(yīng)用程序Hadoop 附帶一些用于測試的示例應(yīng)用程序。其中之一是單詞計數(shù)器,它統(tǒng)
18、計某一單詞在幾個文件中出現(xiàn)的次數(shù)。通過運(yùn)行這個應(yīng)用程序檢查 Hadoop 集群。首先,把輸入文件放在分布式文件系統(tǒng)中(conf/ 目錄下面)。我們將統(tǒng)計單詞在這些文件中出現(xiàn)的次數(shù)。$ bin/hadoop fs put conf input 然后,運(yùn)行這個示例應(yīng)用程序,以下命令統(tǒng)計以 “dfs” 開頭的單詞出現(xiàn)的次數(shù)。$ bin/hadoop jar hadoop-*-examples.jar grep input output 'dfsa-z.+'命令的輸出說明映射和縮減過程。前兩個命令會在 HDFS 中生成兩個目錄,“input” 和 “output”。可以使用以下命令列出
19、它們。$ bin/hadoop fs ls查看分布式文件系統(tǒng)中已經(jīng)輸出的文件。它以鍵-值對的形式列出以 “dfs*” 開頭的單詞出現(xiàn)的次數(shù)。$ bin/hadoop fs -cat ouput/*現(xiàn)在,訪問 JobTracker 站點查看完成的作業(yè)日志。創(chuàng)建 Log Analyzer MapReduce 應(yīng)用程序現(xiàn) 在創(chuàng)建一個 Portal (IBM WebSphere® Portal v6.0) Log Analyzer 應(yīng)用程序,它與 Hadoop 中的 WordCount 應(yīng)用程序有許多共同點。這個分析程序搜索所有 Portal 的 SystemOut*.log 文件,顯示在特
20、定的時間段內(nèi)應(yīng)用程序在 Portal 上啟動了多少次。在 Portal 環(huán)境中,所有日志分割為 5MB 的片段,很適合由幾個節(jié)點并行地分析。public class PortalLogAnalyzer public static class Map extends MapReduceBase implements Mapper<LongWritable, Text, Text, IntWritable> private static String APP_START_TOKEN = "Application started:" private Text appl
21、ication = new Text(); public void map(LongWritable key, Text value, OutputCollector<Text, IntWritable> output, Reporter reporter) throws IOException String line = value.toString(); if(line.indexOf(APP_START_TOKEN) > -1) int startIndex = line.indexOf(APP_START_TOKEN);startIndex += APP_START_
22、TOKEN.length();String appName = line.substring(startIndex).trim();application.set(appName);output.collect(application, new IntWritable(1); public static class Reduce extends MapReduceBase implements Reducer<Text, IntWritable, Text, IntWritable> public void reduce(Text key, Iterator<IntWrita
23、ble> values, OutputCollector<Text, IntWritable> output, Reporter reporter) throws IOException int sum = 0; while(values.hasNext() sum += values.next().get(); output.collect(key, new IntWritable(sum);public static void main(String args) throws IOException JobConf jobConf = new JobConf(Portal
24、LogAnalyzer.class);jobConf.setJobName("Portal Log Analizer");jobConf.setOutputKeyClass(Text.class);jobConf.setOutputValueClass(IntWritable.class);jobConf.setMapperClass(Map.class);jobConf.setCombinerClass(Reduce.class);jobConf.setReducerClass(Reduce.class);jobConf.setInputFormat(TextInputFormat.class);jobConf.setOutputFormat(TextOutputFormat.class);FileInputFormat.setInputPaths(jobConf, new Path(args0);FileOutputFormat.setOutputPath(jobConf, new Path(args1);JobClient.runJob(jobConf);對 Hadoop API 的完整解釋請參見 Hadoop 網(wǎng)站上的 AP
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年第三方擔(dān)保合同護(hù)航跨境電商交易范本3篇
- 二零二五版發(fā)型師與美發(fā)機(jī)構(gòu)聘用合同3篇
- 二零二五版環(huán)保節(jié)能技術(shù)合作合同模板2篇
- 二零二五年音樂節(jié)餐飲租賃合同2篇
- 二零二五版環(huán)保型建筑砂漿采購合同模板-綠色建筑專用3篇
- 二零二五版海綿城市建設(shè)土石方運(yùn)輸與雨水收集合同3篇
- 二零二五版環(huán)保打印機(jī)銷售與環(huán)保認(rèn)證合同范本3篇
- 二零二五年鋼板樁租賃及拆除作業(yè)合同3篇
- 二零二五年度文化藝術(shù)展覽贊助合同3篇
- 2025年度智能機(jī)器人制造領(lǐng)域技術(shù)轉(zhuǎn)移合同規(guī)范3篇
- 申根簽證申請表模板
- 企業(yè)會計準(zhǔn)則、應(yīng)用指南及附錄2023年8月
- 諒解書(標(biāo)準(zhǔn)樣本)
- 2022年浙江省事業(yè)編制招聘考試《計算機(jī)專業(yè)基礎(chǔ)知識》真題試卷【1000題】
- 認(rèn)養(yǎng)一頭牛IPO上市招股書
- GB/T 3767-2016聲學(xué)聲壓法測定噪聲源聲功率級和聲能量級反射面上方近似自由場的工程法
- GB/T 23574-2009金屬切削機(jī)床油霧濃度的測量方法
- 西班牙語構(gòu)詞.前后綴
- 動物生理學(xué)-全套課件(上)
- 河北省衡水市各縣區(qū)鄉(xiāng)鎮(zhèn)行政村村莊村名居民村民委員會明細(xì)
- DB32-T 2665-2014機(jī)動車維修費(fèi)用結(jié)算規(guī)范-(高清現(xiàn)行)
評論
0/150
提交評論