<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    The NoteBook of EricKong

      BlogJava :: 首頁 :: 聯系 :: 聚合  :: 管理
      611 Posts :: 1 Stories :: 190 Comments :: 0 Trackbacks
    隨著互聯網的發展,大數據運算需求日益劇增,開源的hadoop出現至今,幾乎已成為了業界的默認標準,下面,筆者就開始構建一個簡單的hadoop并行運算集群。

    一、    環境介紹

    模擬環境使用三臺rhel5.8 32bit,各自IP和主機名如下:

    1. IP                            主機名        
    2. 192.168.88.253                none.mos.com    
    3. 192.168.88.129                lab1.mos.com 
    4. 192.168.88.130                lab2.mos.com 

    其中

    1. none.mos.com負責任務管理和數據名稱節點,在生產環境中,建議將此兩項分開; 
    2.  
    3. lab1.mos.com為第二名稱節點,其并不提供名稱節點的功能,但默認情況下,負責周期性的將編輯日志合并至名稱節點,并自己也保存一份,其提供了名稱節點的冗余,但其數據依然落后于名稱節點; 
    4.  
    5. lab3.mos.com為實際數據存儲節點和任務執行節點。 

    使用的軟件版本及下載地址:

    1. JDK: jdk-7u5-linux-i586.rpm 
    2. 下載地址: http://www.oracle.com/technetwork/java/javase/downloads/java-archive-downloads-javase7-521261.html
    3. Hadoop: hadoop-0.20.2-cdh3u5.tar.gz 
    4. 下載地址: http://hadoop.apache.org/releases.html
    5.  


    二、    準備工作
    2.1 修改每個主機的/etc/hosts文件如下:

    1. 192.168.88.253      none.mos.com    none 
    2. 192.168.88.129      lab1.mos.com    lab1 
    3. 192.168.88.130      lab2.mos.com    lab2 

    2.2 在集群的每個節點建立用于運行hadoop的用戶及設定密碼

    1. # useradd hduser && echo "redhat" | passwd --stdin hduser 

    2.3 為master節點的hduser用戶能夠管理并監控其他節點,在none節點做如下操作。

    1. # su – hduser 
    2. $ ssh-keygen -t rsa -P '' 
    3. $ ssh-copy-id -i .ssh/id_rsa.pub hduser@lab1 
    4. $ ssh-copy-id -i .ssh/id_rsa.pub hduser@lab2 

    2.4 確保每個節點時間的一致性,并清空iptables和關閉selinux,此處操作略


    三、    配置hadoop運行所需的java環境,此操作需在每個節點執行一遍。

    3.1 安裝jdk

    1. # rpm -ivh ~/root/Download/jdk-7u5-linux-i586.rpm 

    3.2 配置java環境變量

    1. # vim /etc/profile.d/java.sh 
    2. JAVA_HOME=/usr/java/latest 
    3. PATH=$JAVA_HOME/bin:$PATH 
    4. export JAVA_HOME PATH 

    3.3 使剛才配置的環境其生效(或重新登陸控制臺亦可)

    1. # source /etc/profile.d/java.sh 

    3.4 測試java環境是否OK

    1. # su – hduser 
    2. $ java –version 
    3. java version "1.7.0_05" 
    4. Java(TM) SE Runtime Environment (build 1.7.0_05-b05) 
    5. Java HotSpot(TM) Server VM (build 23.1-b03, mixed mode) 



    四、    安裝Hadoop,此步驟操作略長,但也需在每個節點執行。
    4.1 解壓至/usr/local目錄,并做軟件鏈接使其易于訪問

    1. # tar xf ~/Download/hadoop-0.20.2-cdh3u5.tar.gz –C /usr/local/ 
    2. # ln -sv /usr/local/hadoop-0.20.2-cdh3u5 /usr/local/hadoop 

    4.2 修改hadoop目錄的屬主屬組,并配置hadoop環境變量

    1. # chown -R hduser. /usr/local/hadoop-0.20.2-cdh3u5 
    2. # vim /etc/profile.d/hadoop.sh 
    3. HADOOP_HOME=/usr/local/hadoop 
    4. PATH=$HADOOP_HOME/bin:$PATH 
    5. export HADOOP_HOME PATH 

    4.3 使hadoop環境變量生效并使用hduser測試其是否就緒

    1. # source /etc/profile.d/hadoop.sh 
    2. # su – hduser 
    3. $ hadoop version 
    4. Subversion git://ubuntu-slave02/var/lib/jenkins/workspace/CDH3u5-Full-RC/build/cdh3/hadoop20/0.20.2-cdh3u5/source -r 30233064aaf5f2492bc687d61d72956876102109 
    5. Compiled by jenkins on Fri Oct  5 17:21:34 PDT 2012 
    6. From source with checksum de1770d69aa93107a133657faa8ef467 



    五、    配置Hadoop,集群中每個節點只能通過配置文件來得知自身的角色,因此,以下配置需在每個節點都做同樣修改。

    5.1    定義第二名稱節點的主機名或IP地址

    1. # echo ‘lab1.mos.com’ > /usr/local/hadoop/conf/masters 

    5.2    定義數據節點和任務執行節點,筆者這里只有一個,而生成環境中,數據節點一般最少3個以上。

    1. # echo ‘lab2.mos.com’ > /usr/local/hadoop/conf/slaves 

    5.3    定義系統級別的參數如下:

    1. # vim /usr/local/hadoop/conf/core-site.xml 
    2. <?xml version="1.0"?> 
    3. <?xml-stylesheet type="text/xsl" href="configuration.xsl"?> 
    4. <!-- Put site-specific property overrides in this file. --> 
    5. <configuration> 
    6.  
    7. <!-- 定義hadoop的分布式文件系統hdfs的名稱節點。--> 
    8.     <property> 
    9.         <name>fs.default.name</name>   
    10.         <value>hdfs://none.mos.com:8020</value> 
    11.     </property> 
    12.  
    13. <!--定義臨時文件的位置,需確保此目錄存在,且hadoop的執行用戶hduser對其有足夠的權限. --> 
    14.     <property>     
    15.         <name>hadoop.tmp.dir</name> 
    16.         <value>/hadoop/temp</value> 
    17.     </property> 
    18.  
    19. <!--定義回收站,可不定義,設置在hdfs中刪除的文件先放在回收站內,超時才會被刪除,時間單位為分鐘,筆者此處定義為100小時。--> 
    20.     <property> 
    21.         <name>fs.trash.interval</name>   
    22.         <value>6000</value> 
    23.     </property> 
    24.  
    25. </configuration> 

    5.4    定義任務管理管理節點

    1. # vim /usr/local/hadoop/conf/mapred-site.xml 
    2. <?xml version="1.0"?> 
    3. <?xml-stylesheet type="text/xsl" href="configuration.xsl"?> 
    4.  
    5. <!-- Put site-specific property overrides in this file. --> 
    6.  
    7. <configuration> 
    8.     <property> 
    9.         <name>mapred.job.tracker</name> 
    10.         <value>none.mos.com:8021</value> 
    11.     </property> 
    12. </configuration> 

    5.5    定義hadoop的分布式文件系統相關屬性

    1. # vim /usr/local/hadoop/conf/hdfs-site.xml 
    2. <?xml version="1.0"?> 
    3. <?xml-stylesheet type="text/xsl" href="configuration.xsl"?> 
    4.  
    5. <!-- Put site-specific property overrides in this file. --> 
    6.  
    7. <configuration> 
    8.  
    9. <!-- 為了保證數據的冗余,定義切割后的數據塊在幾個節點上存儲,生產環境中,建議最少3份以上,筆者這里就一個數據節點,因此,此處為1即可--> 
    10.      <property> 
    11.     <name>dfs.replication</name> 
    12.     <value>1</value> 
    13.      </property> 
    14.  
    15.     <!-- 數據名稱節點用于存儲HDFS文件數據塊的本地目錄,存儲多份時,可寫多個路徑,以逗號隔開即可--> 
    16.      <property> 
    17.         <name>dfs.data.dir</name> 
    18.         <value>/hadoop/data</value> 
    19.         <final>ture</final> 
    20.      </property> 
    21.      
    22. <!-- 數據節點用于存儲名稱空間和事務日志的本地文件系統路徑,存儲多份時,可寫多個路徑,以逗號隔開即可 --> 
    23.      <property> 
    24.         <name>dfs.name.dir</name> 
    25.         <value>/hadoop/name</value> 
    26.         <final>ture</final> 
    27.      </property> 
    28.     
    29.     <!-- 用于定義HDFS元數據冗余的復制到這個目錄 --> 
    30.      <property> 
    31.         <name>fs.checkpoint.dir</name> 
    32.         <value>/hadoop/namesecondary</value> 
    33.         <final>ture</final> 
    34.      </property> 
    35.  
    36. </configuration> 

    5.6    創建hadoop配置中定義的目錄,且給予相應的權限

    1. # mkdir -pv /hadoop/temp && chown -R hduser. /hadoop  

     

     

    六、    格式化hadoop的分布式文件系統(HDFS),并檢測hadoop是否就緒。
     

    6.1 以hduser的身份格式,切記一定要將第五步的操作在三個節點全部完成

    1. # su - hduser 
    2. $ hadoop namenode –format 
    3. 出現“Storage directory /hadoop/temp/dfs/name has been successfully formatted”此行,才表示格式化成功,否則需檢查是否配置出錯。 

    6.2 以hduser的身份啟動hadoop

    1. $ start-all.sh 

    6.3 使用jps在每個節點,檢查是否啟動正常.



    七、    使用hadoop提供的字符統計應用程序算法樣例做簡單的計算實現

    7.1 在hadoop的分布式文件系統(hdfs)中創建目錄,并上傳要計算的文件

    1. $ hadoop fs -mkdir mos-test 
    2. $ hadoop fs -put /etc/services mos-test 

    7.2 調用hadoop提供的字符統計程序,計算上傳的services文件的每個字符個數,并輸出到hdfs的test-out目錄中,此目錄hadoop會自行創建。

    1. $ hadoop jar /usr/local/hadoop/hadoop-examples-0.20.2-cdh3u5.jar wordcount mos-test test-out 

    7.3 等命令執行完成后,下載執行結果到本地當前目錄,并查看相關內容

    1. $ hadoop fs -get ./test-out/part-r-00000 ./ 
    2. $ head part-r-00000 

    7.4 也可不用下載直接查看HDFS的文件或目錄

    1. $ hadoop fs –ls /  #查看hdfs的根位置 
    2. $ hadoop fs –cat  /user/hduser/test-out/part-r-00000   #不下載直接查看計算結果 
    3. Ps:  hadoop fs命令的相關用法,可通過:hadoop fs --help獲得 

     



        到此為止,一個簡單的分布式hadoop并行運算集群已經已然完成,哈哈,是不是很簡單,但是需要說明的是,各位其實也看到了,并且想必各位也充滿了各種 疑惑:這些命名神馬的怎么這么奇怪?hdfs是怎么工作的?數據怎么分開存儲的?數據怎么在被切開存儲后還能計算?各個節點的高可用怎么實現?如果需要更 為復雜的運算怎么處理等等?相關內容,筆者也在慢慢的整理和學習,敬請關注哈。
     


    補充一點相關知識:
    當hadoop正常啟動后,不同的節點,會開放不同的幾個端口,可以直接通過web頁面查看其相關信息的端口,實際上,開放的端口 遠不止這些,(詳情可以通過  netstat -tnlp|grep java)查看, 但是只有這些可以通過web直接打開查看。具體如下:
     

    1. 端口                    工作節點                 本此實驗的web查方式 
    2. 0.0.0.0:50030     任務管理節點(JobTracker)                192.168.88.253:5030 
    3. 0.0.0.0:50070     HDFS的數據名稱節點(NameNode)         192.168.88.253:5070 
    4. 0.0.0.0:50090     第二數據名稱節點(SecondaryNameNode)     192.168.88.129:50090 
    5. 0.0.0.0:50060     任務執行節點(TaskTracker)               192.168.88.130:5060 
    6. 0.0.0.0:50075     數據節點(DataNode)                    192.168.88.130:5075 


    下圖是之前執行計算時筆者的截圖:

     

    posted on 2012-12-18 16:56 Eric_jiang 閱讀(241) 評論(0)  編輯  收藏 所屬分類: Linux
    主站蜘蛛池模板: 久久亚洲成a人片| 久久久久久久国产免费看| 久久久青草青青亚洲国产免观| 无码国产精品一区二区免费虚拟VR| 一级特黄色毛片免费看| 亚洲av色香蕉一区二区三区| 久久精品国产亚洲av日韩| 中文字幕在亚洲第一在线| 日韩a级毛片免费视频| 91香蕉成人免费网站| 国产精品区免费视频| 国产高清视频免费在线观看| 男女猛烈xx00免费视频试看| 亚洲午夜成人精品无码色欲| 亚洲日韩在线视频| 亚洲日本一区二区三区| 精品亚洲综合久久中文字幕| 中文字幕在亚洲第一在线| 亚洲精品无码激情AV| 波多野结衣中文一区二区免费 | 免费无码又爽又刺激高潮的视频| 59pao成国产成视频永久免费| 在线观看黄片免费入口不卡| 一本大道一卡二大卡三卡免费| 国产亚洲精品仙踪林在线播放| 亚洲av无一区二区三区| 亚洲乱色伦图片区小说| 久久久久精品国产亚洲AV无码| 中国国语毛片免费观看视频| 免费国产高清毛不卡片基地| 在线观看亚洲网站| 免费看又黄又爽又猛的视频软件 | 免费v片视频在线观看视频| 日韩在线a视频免费播放| 在线中文高清资源免费观看| 免费看片A级毛片免费看| 永久黄网站色视频免费观看| 在线观看国产情趣免费视频| 免费国产成人高清在线观看麻豆| 国产成人精品男人免费| 久久国产乱子精品免费女 |