Linux和ApacheHadoop實現云計算,有關Hadoop集群概念介紹
本節和大家一起學習一下有關使用Linux和ApacheHadoop進行云計算的相關內容,主要包括Hadoop集群的概念視圖和MapReduce的流程,歡迎大家一起來學習有關云計算方面的知識。
Hadoop集群的概念視圖和MapReduce的流程
設置ApacheHadoop
現在在LinuxVM上設置Hadoop集群,然后就可以在Hadoop集群上運行MapReduce應用程序。
ApacheHadoop支持三種部署模式:
單獨模式:在默認情況下,Hadoop以非分布的單獨模式運行。這個模式適合應用程序調試。
偽分布模式:Hadoop還可以以單節點的偽分布模式運行。在這種情況下,每個Hadoop守護進程作為單獨的Java?進程運行。
全分布模式:Hadoop配置在不同的主機上,作為集群運行。
要想以單獨或偽分布模式設置Hadoop,請參考Hadoop的網站。在本文中,我們只討論以全分布模式設置Hadoop。
準備環境
在本文中,我們需要三臺GNU/Linux服務器;一個作為主節點,另外兩個作為從節點。
表1.服務器信息
服務器IP服務器主機名角色
9.30.210.159Vm-9-30-210-159主節點(NameNode和JobTracker)
9.30.210.160Vm-9-30-210-160從節點1(DataNode和TaskTracker)
9.30.210.161Vm-9-30-210-161從節點2(DataNode和TaskTracker)
每臺機器都需要安裝JavaSE6和Hadoop二進制代碼。更多信息見參考資料。本文使用Hadoopversion0.19.1。
還需要在每臺機器上安裝SSH并運行sshd。SUSE和RedHat等流行的Linux發行版在默認情況下已經安裝了它們。
設置通信
更新/etc/hosts文件,確保這三臺機器可以使用IP和主機名相互通信。
因為Hadoop主節點使用SSH與從節點通信,所以應該在主節點和從節點之間建立經過身份驗證的無密碼的SSH連接。在每臺機器上執行以下命令,從而生成RSA公共和私有密鑰。
ssh-keygen–trsa
這會在/root/.ssh目錄中生成id_rsa.pub。重命名主節點的id_rsa.pub(這里改名為59_rsa.pub)并把它復制到從節點。然后執行以下命令,把主節點的公共密鑰添加到從節點的已授權密鑰中。
cat/root/.ssh/59_rsa.pub>>/root/.ssh/authorized_keys
現在嘗試使用SSH連接從節點。應該可以成功連接,不需要提供密碼。
設置主節點
把Hadoop設置為全分布模式需要配置<Hadoop_home>/conf/目錄中的配置文件。
在hadoop-site.xml中配置Hadoop部署。這里的配置覆蓋hadoop-default.xml中的配置。
表2.配置屬性
屬性解釋
fs.default.nameNameNodeURI
mapred.job.trackerJobTrackerURI
dfs.replication復制的數量
hadoop.tmp.dir臨時目錄
通過配置hadoop-env.sh文件指定JAVA_HOME。注釋掉這一行并指定自己的JAVA_HOME目錄。
exportJAVA_HOME=<JAVA_HOME_DIR>
在master文件中添加主節點的IP地址。
9.30.210.159
在slave文件中添加從節點的IP地址。
9.30.210.160
9.30.210.161
設置從節點
把hadoop-site.xml、hadoop-env.sh、masters和slaves復制到每個從節點;可以使用SCP或其他復制工具。
對HDFS進行格式化
運行以下命令對HDFS分布式文件系統進行格式化。
<Hadoop_home>/bin/hadoopnamenode-format
檢查Hadoop集群
現在,可以使用bin/start-all.sh啟動Hadoop集群。命令輸出指出主節點和從節點上的一些日志。檢查這些日志,確認一切正常。如果弄亂了什么東西,可以格式化HDFS并清空hadoop-site.xml中指定的臨時目錄,然后重新啟動。
訪問以下URL,確認主節點和從節點是正常的。
NameNode:http://9.30.210.159:50070
JobTracker:http://9.30.210.159:50030
現在,已經在云中設置了Hadoop集群,該運行MapReduce應用程序了。
建MapReduce應用程序
MapReduce應用程序必須具備“映射”和“縮減”的性質,也就是說任務或作業可以分割為小片段以進行并行處理。然后,可以縮減每個子任務的結果,得到原任務的結果。這種任務之一是網站關鍵字搜索。搜索和抓取任務可以分割為子任務并分配給從節點,然后在主節點上聚合所有結果并得到最終結果。
試用示例應用程序
Hadoop附帶一些用于測試的示例應用程序。其中之一是單詞計數器,它統計某一單詞在幾個文件中出現的次數。通過運行這個應用程序檢查Hadoop集群。
首先,把輸入文件放在分布式文件系統中(conf/目錄下面)。我們將統計單詞在這些文件中出現的次數。
$bin/hadoopfs–putconfinput
然后,運行這個示例應用程序,以下命令統計以“dfs”開頭的單詞出現的次數。
$bin/hadoopjarhadoop-*-examples.jargrepinputoutput'dfs[a-z.]+'
命令的輸出說明映射和縮減過程:
前兩個命令會在HDFS中生成兩個目錄,“input”和“output”。可以使用以下命令列出它們。
$bin/hadoopfs–ls
查看分布式文件系統中已經輸出的文件。它以鍵-值對的形式列出以“dfs*”開頭的單詞出現的次數。
$bin/hadoopfs-catouput/*
現在,訪問JobTracker站點查看完成的作業日志。
創建LogAnalyzerMapReduce應用程序:
現在創建一個Portal(IBMWebSphere?Portalv6.0)LogAnalyzer應用程序,它與Hadoop中的WordCount應用程序有許多共同點。這個分析程序搜索所有Portal的SystemOut*.log文件,顯示在特定的時間段內應用程序在Portal上啟動了多少次。在Portal環境中,所有日志分割為5MB的片段,很適合由幾個節點并行地分析。本節關于使用Linux和ApacheHadoop進行云計算中Hadoop集群方面的內容介紹完畢。
【編輯推薦】