本節書摘來自華章出版社《r與hadoop大資料分析實戰》一書中的第1章,第1.4節,作者 (印)vignesh prajapati,更多章節内容可以通路雲栖社群“華章計算機”公衆号檢視
現在假定你已經了解了r語言,知道它是什麼,如何安裝它,它的主要特點是什麼,以及為什麼要使用它。現在,我們需要知道r的局限性(這樣能更好地引入對hadoop的介紹)。在處理資料前,r需要将資料加載到随機存取存儲器(ram)。是以,資料應該小于現有機器記憶體。對于資料比機器記憶體還要大的,我們将其看做大資料(由于大資料還有許多其他定義,這隻适用于我們現在所說的例子)。
為了避免這類大資料問題,我們需要擴充硬體配置,但這隻是一個臨時解決方案。為了解決這一問題,我們需要使用一個hadoop叢集,能夠存儲大資料并在大型計算機叢集進行并行計算。 hadoop是最流行的解決方案。 hadoop是一個開源的java架構,它是apache軟體基金會操作下的頂級項目。 hadoop的靈感源于google檔案系統和mapreduce,這兩項技術主要用于進行分布式大資料處理。
hadoop主要支援linux作業系統。若要在windows上運作它,我們需要使用vmware在windows作業系統中加載ubuntu。實際上使用和安裝hadoop的方法有很多種,但在這裡我們考慮支援r語言的最佳方式。在我們整合r和hadoop之前,先來了解什麼是hadoop。
hadoop使用方式有以下三種模式:
the standalone mode(單機版模式):在此模式下,不需要啟動任何hadoop背景程式。相反,隻需要打開~/hadoop-directory/bin/hadoop以單一java程序方式執行hadoop程式。建議此模式用于測試目的。這是預設模式,無須進行任何其他配置。所有的背景程式,如namenode、datanode、jobtracker和tasktracker都以單一java程序運作。
the pseudo mode(虛拟模式):在此模式下,需要在所有節點上配置hadoop。每個hadoop的元件或守護程序使用一個單獨的java虛拟機(jvm),類似于在一個主機上運作最小叢集。
the full distributed mode(全分布模式):在此模式下,hadoop将分布在多台機器中。專用主機根據每個hadoop節點進行配置。是以,不同的jvm程序對所有的守護程序開放。
hadoop的安裝有幾種可行方式,我們将選擇與r整合更好的方式。我們将選擇ubuntu作業系統,因為它易于安裝和操作。
在linux、ubuntu面闆(單節點以及多節點叢集)上安裝hadoop。
在ubuntu上安裝cloudera hadoop。
在linux、ubuntu面闆上安裝hadoop(單節點叢集)
要在ubuntu作業系統安裝hadoop的虛拟模式,需要滿足以下先決條件:
使用sun java 6
成為專用的hadoop系統使用者
配置ssh
禁用ipv6
以上提供的hadoop的安裝可使用hadoop mrv1實作。
按照以下步驟安裝hadoop。
從apache軟體基金會下載下傳最新的hadoop。在這裡,我們采用apache hadoop 1.0.3,盡管最新的版本是1.1.x.
![](https://img.laitimes.com/img/9ZDMuAjOiMmIsIjOiQnIsIyZuBnL2YWZxgDMzMmZiZzNyMTZ2YzMzMzMhZmN1IGMlVjN5QWM0YDMhBTZw8CXt92Yu4GZjlGbh5SZslmZxl3Lc9CX6MHc0RHaiojIsJye.png)
添加$java_home和$hadoop_home變量到hadoop系統使用者的.bashrc檔案。更新後的.bashrc檔案如下:
用conf / * -site.xml指令來更新hadoop的配置檔案。
最後,3個檔案如下。
conf/core-site.xml:
conf/mapred-site.xml:
conf/hdfs-site.xml:
完成這些配置檔案的編輯後,需要在hadoop的叢集或節點上設定分布式檔案系統。
使用下面的指令行通過namenode格式化hadoop分布式檔案系統(hadoop distributed file system,hdfs):
通過使用以下指令行啟動單節點群集:
在linux、ubuntu面闆上安裝hadoop(多節點叢集)
我們已經知道如何在單節點叢集上安裝hadoop。現在看看如何在一個多節點叢集上安裝hadoop(全分布式模式)。
為此,我們需要若幹個已經配置好hadoop單節點叢集的節點。為了在多節點上安裝hadoop,我們需要一台已經配置好上一節描述過的單節點hadoop叢集的機器。
當安裝好了這個單節點hadoop叢集後,我們需要進行下述步驟:
在網絡狀态裡,需要使用兩個節點來建立一個全分布hadoop模式。為了讓節點之間互相通信,節點所在的軟體和硬體配置必須在一個網絡中。
在這兩個節點中,一個節點被設定成主節點,另一個被設定為從節點。為了進行hadoop操作,從節點需要連接配接主節點。我們将主節點設定為192.168.0.1,從節點設定為192.168.0.2。
在兩個節點中更新/etc/hosts目錄。這個目錄将會成為192.168.0.1主節點和192.168.0.2從節點的鏡像。
更新conf/*-site.xml:必須改變所有節點的如下配置檔案。
conf/core-site.xml和conf/mapred-site.xml:在單節點叢集安裝中,已經更新過這些檔案。是以,隻需在value标簽中将localhost改變為master。
conf/hdfs-site.xml:在單節點叢集安裝中,将dfs.replication的值設成1,現在更新這個值為2。
在格式化hdfs階段,需要在啟動多節點叢集前,用以下指令(在主節點)格式化hdfs:
現在,我們已經完成安裝一個多節點叢集的所有步驟。需要進行以下步驟來啟動這個hadoop叢集:
啟動hdfs程序:
啟動mapreduce程序:
通常如下指令啟動所有程序:
停止所有程序:
現在hadoop叢集已經在機器上建立好了。如果想要使用擴充的hadoop元件在單節點或者多節點上安裝相同的hadoop叢集,可以嘗試使用cloudera工具。
在ubuntu上安裝cloudera hadoop
cloudera hadoop(cdh)是cloudera的開源分布式架構,其緻力于應用hadoop技術進行企業級開發。cloudera也是apache軟體基金會的捐助者。cdh有兩個可用的版本:cdh3和cdh4。為了安裝其中任何一個版本,都必須使用10.04 lts版或者12.04 lts版的ubuntu(當然,也可以使用centos、debian和red hat作業系統)。如果在一個叢集上安裝hadoop,可以使用cloudera管理器簡化它的安裝過程,這個管理器提供基于hadoop的gui界面以及覆寫整個叢集的cloudera元件安裝。對于大型叢集來說這個工具十分值得推薦。
我們需要滿足如下先決條件。
具備以下特征的作業系統:
64位的10.04 lts版或者12.04 lts版ubuntu
red hat企業級linux 5或者linux 6
centos 5或6
oracle企業級linux 5
suse linux企業級伺服器11(sp1或者lasso)
debian 6.0
安裝步驟如下。
下載下傳并運作cloudera管理器:為了初始化cloudera管理器的安裝過程,需要首先從cloudera下載下傳版塊下載下傳cloudera-manager-installer.bin檔案。之後,在叢集上儲存它,這樣所有的節點可以讀取這個檔案。給使用者執行cloudera-manager-installer.bin的權限。運作下面的指令來啟動安裝:
閱讀cloudera管理器的readme檔案并點選next。
firefox 11或者更高版本
chrome
internet explorer
safari
使用預設的使用者名和密碼admin登入cloudera管理控制台。以後你可以根據自己的選擇改變它。
通過浏覽器使用cloudera管理進行cdh3的自動化安裝和配置:這一步會将所需的大部分cloudera hadoop安裝包從cloudera安裝到你的機器中。步驟如下:
1)如果你已經選擇了一個完整的軟體版本,安裝并驗證你的cloudera管理密鑰許可檔案。
2)為你的cdh叢集裝置指定主機名或ip位址範圍。
3)使用ssh連接配接每台主機。
4)在每台群集主機上安裝java開發工具包(jdk)(如果尚未安裝)、cloudera管理代理和cdh3或cdh4。
5)在每個節點上配置hadoop并啟動hadoop服務。
在運作該向導并使用cloudera管理器後,應該盡快更改預設的管理者密碼。為了更改管理者密碼,需遵循這些步驟:
1)單擊齒輪符号圖示以顯示管理頁。
2)打開password标簽。
3)輸入新密碼兩次,然後點選update。
測試cloudera hadoop的安裝:可以在群集上通過登入cloudera管理控制台并點選services标簽來檢查cloudera管理的安裝。你應該看到如下圖所示的界面。
可以點選每個服務檢視更詳細的資訊。例如,點選hdfs1連結,會看到類似下面的截圖。