close

 [實驗目標&說明]

   JAVA: Java jdk 1.7.0.5 64 bit

   OS: CentOS 6.3 64bit  #因為太多人用Ubuntu建Hadoop不悅故改用CentOS版本擔任OS

   Hadoop 套件: 1.0.3 version stable 


  本Lab實作目標為:
 
  雲端分散式雲端平台建置維運與程式運行正常為目標

  PS:
先一單一節點測試,日後擴展多個節點分散式,與多個子專案整合之心得再放上本部落格做分享




Hadoop 官網:
  http://hadoop.apache.org/   

尚提到Hadoop平台可以整個一個專案tools,也是接下來Near延伸學習的目標


Avro™: A data serialization system.

Chukwa™: A data collection system for managing large distributed systems.

HBase™: A scalable, distributed database that supports structured data storage for large tables.

Hive™: A data warehouse infrastructure that provides data summarization and ad hoc querying.

Mahout™: A Scalable machine learning and data mining library.

Pig™: A high-level data-flow language and execution framework for parallel computation.

ZooKeeper™: A high-performance coordination service for distributed applications.


 

(1.) Hadoop 環境運行之配置

        1-1:  官網下載java jdk 與hadoop 相關套件_再此不多言

                 本例
: java jdk使用1.7.0.5  hadoop使用1.0.3 

                 安裝Jdk:  rpm -Uvh jdk-7u3-linux-x64.rpm   #升級RPM方式安裝JDK

                 修改/etc/profile 檔案加入JAVA環境變數配置
 
                  vi /etc/profile                #修改完成,生效設定: source  /etc/profile

                 
JAVA_HOME=/usr/java/jdk7.05

                 CLASSPATH=.:$JAVA_HOME/lib
                 PATH=$JAVA_HOME/bin:$PATH
                export JAVA_HOME CLASSPATH PATH
                  
   驗證JAVA配置是否正確運行
   #  java  -version           #可得到jave版本為1.7.0_05 為配置正確            

                  

    1-2: 配置User/Group  Hadoop 身分專門執行Hadoop平台

             useradd  hadoop

    1-3: 配置/etc/hosts檔案,與check hostname 主機對應外部IP為正確(多台主機可互PING)

            本例:  192.168.0.201 ma201   #NameNode & DataNode 本例為單一台主機測試
 
            192.168.0.202  ma202  #PS:若要施作多台主機分散運算請加入該主機/IP紀錄

   1-4: 切換Hadoop 身份產生SSH 安全傳輸金鑰:  讓節點間同步時金鑰驗證無須再詢問密碼

            su  hadoop


            ssh-keygen -t rsa -P ""

            cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys  #chmod 600 ~/.ssh/authorized 

             ssh ma201  
     #登入無訪問密碼即可(本圖中MA_201請替換為ma201實驗後面已修改過)
 
                                           環境中有多節點請將authorized_keys複製到各節點主機即可

 

(2.)  Hadoop 程式安裝與配置檔組態

         2-1:解壓縮hadoop.103.tar.gz 檔並更名目錄hadoop103 #個人喜好變更hadoop名稱

       su hadoop   #切換hadoop身分與/home/hadoop目錄

        tar zxvf hadoop.1.0.3.tar.gz  

        mv  hadoop.1.0.3   hadoop103  #hadoop程式執行目錄位址:/home/hadoop/hadoop103

        2-2 : 編輯hadoop主要設定檔:

        hadoop-env.sh ,core-site.xml , hdfs-site.xml mapred-site.xml

        cd ~/hadoop103/conf
 
        vi   hadoop-env.sh   #hadoop運行環境變數配置,參考如下

       export JAVA_HOME=/usr/java/jdk7.05  #指定java執行位址,本例:/usr/java/jdk7.05

       export HADOOP_HOME=/home/hadoop/hadoop103  #指定hadoop home目錄
       export HADOOP_HOME_WARN_SUPPRESS=1 #1.0.3 Warn訊息出現解決請加入
       
                     

        vi core-site.xml  #hadoop設定檔案,以網頁監控各節點NameNode主機設定檔

     
  configuration>
       <property>
       <name>fs.default.name</name>    #指定namenode主機資訊為本機:9000 _單機測試
        <value>hdfs://localhost:9000</value>
       </property>
     </configuration>


      
vi  hdfs-site.xml  #HDFS 分散檔案資源配置:可指定 NameNode及DataNode位置  

     
<property>
    <name>dfs.replication</name>  #預設沒指定資源路徑:分配到hadoop底下dfs資料夾
    <value>1</value>
    </property>


 
    vi  mapred-site.xml  #此程式檔案專用於監控MAP/REDUCE程式設定檔

   
<configuration>
  <property>
    <name>mapred.job.tracker</name>
    <value>localhost:9001</value>
  </property>
</configuration>



(3.)  Hadoop NameNode 初始化與啟動 

      3-1

     
       cd ~/hadoop103/bin  
 #bin目錄底下為hadoop相關操作指令 

       ./hadoop  namenode -format   #格式化NameNode,若遭遇錯誤建議修正錯誤後

                                                                將/home/hadoop/dfs 資料夾移除,重新格式化如下
  

   3-2  格式化完成後我們要啟動Hadoop NameNode 

    ./start-all.sh              #start-all.sh將啟動所有服務,部分指令支援獨立啟動與停止
    

  啟動完成我們可以開啟Broswer確定以下幾個Port號是否啟動運作正常,反之檢查設定
 
   50030:  #查看NameNode資訊
   50070:  #查看Job Tracker 資訊

  
(3.)  Hadoop範例程式執行測試

      3-1

      WordCount: 測試每一種英文字出現在總次數統計

      
cd /home/hadoop/hadoop103   #切換在hadoop home目錄下

      mkdir wordcount           #目錄可自取名
 
      echo "wrere rerere rererer rerere" > wordcount/file1   #新增隨意英文字到數個檔案做測試
      echo  "twrw uco smala ouem tpt p" > wordcount/file2

      將wordcount 這目錄裡檔案預先指定為Map/Reduce 工作item

      hadoop dfs -put ./wordcount input
 
      hadoop  jar hadoop-1.0.3.jar wordcount input ouput   #執行Map/Reduce程式工作

   
     3-2: Log 事件偵錯

     hadoop 產生log 為於hadoop103/logs 資料夾底下,以利我司偵錯
     
  3-3 : job checker 頁面可瀏覽map/reduce 工作情況

       http://192.168.0.108:55030  #本例IP主機為192.168.0.108,Port號為: 55030

     下圖中我們可以看到有一個task 名 wordcount 正在Runing , DataNode由於是單機測試

       故只有一個Data Node運行(日後將分散主機測試成果附上),下一步我們點選

       編號: job2012_07181010_0001  進一步查看工作內容3-2
 

  3-2: 下圖中我們可以看到有兩個map 1個reduce 工作完成,

   job setsup : success   #job成功執行之字樣工作完成時間1min多(多數節點運算效率更佳) 



   3-3: 最後我們還可以使用Name Node 專屬監控界面監控一些資訊

   
 http://192.168.0.108:55070  #本例IP主機為192.168.0.108,Port號為: 55070
    
 總結: 
 
 Hadoop 很有彈性整個數個子專案為本人後續研究目標,當然有一些指令本篇未介紹日後將慢漫分享

arrow
arrow
    文章標籤
    hadoop
    全站熱搜
    創作者介紹
    創作者 終極.凱因斯 的頭像
    終極.凱因斯

    NEIL`s_IT技術學習分享發表Blog

    終極.凱因斯 發表在 痞客邦 留言(0) 人氣()