herodby
          技術 筆記
          posts - 14,  comments - 14,  trackbacks - 0

          1.     Hadoop基本組成

                NameNode 主要存放文件映射和文件更改日志

                SecondaryNameNode 一個守護進程 定時從NameNode同步文件更改日志并合并成一條日志,方便hadoop每次重啟時 找到上次宕機的還原點。在后續的版本中會被backupNameNodenameNode集群取代。

                Jobtracker 任務調度守護進程

                Tasktracker 任務執行進程

                DataName  數據存儲節點,往往和Tasktracker部署在同一臺機器上。

          1.     安裝平臺:

          GNU/Linux ,hadoop不建議在win32平臺上使用,顧這里只介紹在linux系統上的 安裝和配置

          2.      所需的軟件:

          JavaTM1.5.x及以上的版本,必須安裝,建議選擇Sun公司發行的Java版本。

          ssh 必須安裝并且保證 sshd一直運行,以便用Hadoop 腳本管理遠端Hadoop守護進程。

          3.     下載

            本文使用的是 hadoop-0.20.203.0,筆者當前的穩定版本。

          下載地址 http://hadoop.apache.org/common/releases.html#Download

           

          4.     部署

          本文 使用的是 4 linux機器,hadoop.master 作為namenode節點,hadoop.second作為secondaryNameNode節點,hadoop.slave1 作為第一datanode節點,hadoop.slave2作為第二個datanode節點。

          5.     環境配置

          7.1  公共配置(集群中所有機器都需要的配置)

          Ø        編輯環境變量

          建議直接編輯 /etc/profile文件 增加 JAVA_HOMEHADOOP_HOME環境變量,具體事例如下所示:

             [root@hadoop ~]# vi /etc/profile

             增加如下幾行代碼

          export JAVA_OPTS='-Xms256m -Xmx512m'

          export JAVA_HOME=/usr/local/java

          export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar

          export JRE_HOME=/usr/local/java/jre

          export PATH=$JAVA_HOME/bin:$PATH

          export HADOOP_HOME=/usr/local/hadoop

          export PATH=$PATH:$HADOOP_HOME/bin

          筆者為了以后方便起停hadoop hadoopbin也目錄加到path中。

             : wq

             讓環境變量即時生效

             [root@hadoop ~]# source /etc/profile

          Ø         修改 hosts文件

             [root@hadoop ~]# vi /etc/hosts

             在打開的文件中添加如下配置

             192.168.2.17 hadoop.master

          192.168.2.19 hadoop.slave1

          192.168.2.14 hadoop.slave2

          192.168.1.197 hadoop.second

             增加如上幾個域名,具體ip地址由各自的實際情況定,這里只列出筆者實驗環境所需的。 Hadoop集群環境中 使用域名訪問的,所以需要把slavemaster等域名加到每臺服務器上。

          Ø        建立hadoop專屬用戶

             Groupadd  hadoop

             Useradd hadoop –g hadoop

             Passwd hadoop

             Changing password for user hadoop.

          New UNIX password:

          123456

          Retype new UNIX password:

          123456

          Ø        安裝軟件

             安裝JDK/usr/local下命名為java

          將下載好的hadoop-0.20.3.tar.gz文件上傳到master/usr/local/hadoop
          tar zxvf hadoop-0.20.3.tar.gz #
          解壓文件

          設置hadoop目錄的訪問權限

          chown –R hadoop:hadoop /usr/local/hadoop

          Ø        改機器名

               把每臺機器的 機器名改成localhost。

               Vi /etc/sysconfig/network

               修改HOSTNAME  = localhost

               此處是沒搞清楚為什么的地方,實驗結果表明 必須改成localhost hadoop才能正常啟動。具體原理 目前還沒有搞清楚,只知其然,其所以然有待于以后研究。 

          7.2  每個節點不同的配置

          7.2.1               配置hadoop

             Hadoop的配置文件 在早期版本中都放在同一個文件里 hadoop-site.xml,在新版本中hadoop把配置文件做了區分,分成了:

          Core-site.xml        配置Common組件的屬性

          Hadoop-site.xml      配置HDFS組件的屬性

          Mapred-site.xml      配置map-reduce組件的屬性

          除了這3個配置文件以外 還有 hadoop-env.xml 用來設置 hadoop用到的環境變量;masters文件用來配置 SNN 節點地址 注意必須配置域名;slaves文件 配置所有DN節點的地址,必須是域名

          7.2.2            Core-site.xml 配置實例

           DN節點 以及 NN節點,snn節點配置一至

             <property>

                 <name>fs.default.name</name>           // 配置NN節點地址和端口號

                 <value>hdfs://hadoop.master:9000</value>  //注意格式必須是 host:port的形式

          </property>

          <property>

                 <name>hadoop.tmp.dir</name>           //hadoop臨時目錄用來存放nn臨時文件

                 <value>/usr/local/hadoop/tmp</value>      //該目錄必須預先手工創建不能刪除

          </property>

          <property>

                 <name>fs.checkpoint.period</name>      //snn檢查nn日志的時間周期

                  <value>60</value>                   //單位是秒,正式環境上建議配置成12小時

          </property>

          <property>

                  <name>fs.checkpoint.size</name>      //snn每次從nn上讀取的數據大小

                  <value>67108864</value>            //通常情況下默認值就可以

          </property>

          7.2.3                Hdfs-site.xml

          Ø         NN 節點

              <property>

                  <name>dfs.name.dir</name>        // 指定name 鏡像文件存放目錄,如不指定則

                  <value>/usr/local/hadoop/hdfs/name</value> //默認為core-site中配置的tmp目錄

              </property>

          <property>

                  <name>dfs.replication</name>     //數據節點冗余備份的數量,由于實驗只有2

                  <value>1</value>                // NN 顧設置唯一,實際配置是可由實際情況

              </property>                         //配置,建議盡量大于3

              <property>

                  <name>dfs.permissions</name>    //是否需要角色權限驗證,上傳文件時會用到,

                  <value>false</value>             //如果為true ,需要綁定hadoop用戶角色

              </property>

              <property>

                  <name>dfs.secondary.http.address</name>  //SNN web訪問地址。

                  <value>hadoop.second:50090</value>

              </property>

          Ø         DN節點配置

              <property>

                 <name>dfs.data.dir</name>             // 數據存放的目錄,如果不寫 默認為

                 <value>/usr/local/hadoop/hdfs/data</value>  // core-site中配置的tmp目錄

              </property>

              <property>

                 <name>dfs.replication</name>      //數據節點冗余備份的數量,由于實驗只有2

                 <value>1</value>                 // NN 顧設置唯一,實際配置是可由實際情況

              </property>                         //配置,建議盡量大于3

              <property>

                 <name>dfs.permissions</name>     //是否需要角色權限驗證,上傳文件時會用到

                 <value>false</value>              //如果為true ,需要綁定hadoop用戶角色

              </property>

              <property>

                 <name>dfs.secondary.http.address</name>   //SNN web訪問地址

                 <value>hadoop.second:50090</value>

          </property>

          Ø           SN節點的配置

              <property>

                 <name>dfs.name.dir</name> // 指定name 鏡像文件存放目錄,如不指定則

                 <value>/usr/local/hadoop/hdfs/name</value> //默認為core-site中配置的tmp目錄

              </property>

              <property>

                 <name>dfs.replication</name>    //數據節點冗余備份的數量,由于實驗只有2

                 <value>1</value>                // NN 顧設置唯一,實際配置是可由實際情況

              </property>                       //配置,建議盡量大于3

              <property>

                 <name>dfs.permissions</name>

                 <value>false</value>

              </property>

              <property>

                  <name>dfs.http.address</name>    NN web訪問地址,注意此處和其他節點不同

                  <value>hadoop.master:50070</value>

              </property>

          Ø         Mapred-site.xml配置

          所有節點都一致

            <property>

              <name>mapred.job.tracker</name>

              <value>hadoop.master:9001</value> //必須為hostport的形式,不能直接寫ip

            </property>

          Jobtracker的分布式的配置方法目前沒設置成功,有待于繼續研究

          Ø         Masters文件配置和slaves文件配置 所有節點全部一致

          所有節點的masters 里面均配置 SNN的域名

          所有節點的slaves 里面均配置所有DN的域名,一行一個DN

          Ø         Hadoop-env.sh 文件配置

          里面是hadoop運行時定義的環境變量

          其他的都可以用默認值,但是有一項必須修改 就是javahome環境變量,指定到實際的javahome目錄。實例:

           export JAVA_HOME=/usr/local/java  

          1.     hadoop無用戶登錄配置

          hadoop用戶進入每臺機器:

          進入 /home/hadoop 目錄

          ssh-keygen -t rsa  #建立ssh目錄,敲回車到底

          1)        登錄NN服務器

          2)        進入/home/hadoop/.ssh目錄

          3)        scp -r id_rsa.pub hadoop@hadoop.slave1:/home/hadoop/.ssh/authorized_keys

          #master上的密鑰傳到slave1hadoop用戶下,重命名為authorized_keys

          4)        scp -r id_rsa.pub hadoop@hdoop.slave2:/home/hadoop/.ssh/authorized_keys

          #master上的密鑰傳到slave2hadoop用戶下,重命名為authorized_keys

          5)        scp -r id_rsa.pub hadoop@hadoop.second:/home/hadoop/.ssh/authorized_keys

          #master上的密鑰傳到snnhadoop用戶下,重命名為authorized_keys

           

          6)        hadoop用戶進入hadoop.slave1 /home/hadoop/.ssh目錄

          7)        cat id_rsa.pub >> authorized_keys

          #把自己的id_rsa.pub內容也放到authorized_keys

          8)        scp -r id_rsa.pub hadoop@hadoop.master:/home/hadoop/.ssh/authorized_keys_s1
          #
          slave1上的密鑰傳到masterhadoop用戶下

           

          9)        hadoop用戶進入hadoop.slave2  /home/hadoop/.ssh目錄

          10)     cat id_rsa.pub >> authorized_keys

          #把自己的id_rsa.pub內容也放到authorized_keys

          11)     scp -r id_rsa.pub hadoop@hadoop.master:/home/hadoop/.ssh/authorized_keys_s2
          #
          slave2上的密鑰傳到masterhadoop用戶下

          12)     hadoop用戶進入hadoop.second  /home/hadoop/.ssh目錄

          13)     cat id_rsa.pub >> authorized_keys

          #把自己的id_rsa.pub內容也放到authorized_keys

          14)     scp -r id_rsa.pub hadoop@hadoop.master:/home/hadoop/.ssh/authorized_keys_second
          #
          snn上的密鑰傳到masterhadoop用戶下

           

          15)     master,上執行以下操作

          16)     cat id_rsa.pub >> authorized_keys

          #將本地密鑰添加authorized_keys

          17)     cat authorized_keys_s1 >> authorized_keys

          18)     cat authorized_keys_s2 >> authorized_keys

          19)     cat authorized_keys_second >> authorized_keys

          20)     rm authorized_keys_second

          21)     rm authorized_keys_s1

          22)     rm authorized_keys_s2

          這樣主節點和從節點之間就可以不用密碼直接ssh訪問

          特別注意 authorized_keys 文件的訪問權限 必須設置成600

          登錄每臺機器 執行 chmod 600 authorized_keys

          2.     啟動hadoop

          hadoop用戶進入nn服務器的 /usr/local/hadoop/hadoop-0.20.203.0/bin目錄

          Ø         格式化hadoop

          Hadoop namenode –format

          Ø         啟動hadoop

          ./start-all.ssh  ,不建議這樣啟動 建議單獨啟動守護進程。

          Ø         Hadoop日志目錄

          /usr/local/hadoop/hadoop-0.20.203.0/logs

          啟動完檢查下啟動日志,啟動后 nn上查看

          hadoop-hadoop-namenode-master.log

          hadoop-hadoop-jobtracker-master.log

          因為 我們的 nn jobtracker 部署在同一臺機器上,所有master上會有2個日志

          登錄snn節點服務器 查看

          hadoop-hadoop-secondarynamenode-master.log

          這幾個沒錯誤就OK

          這時候就可以進入管理頁面看看了


          posted on 2011-12-08 13:14 鄧兵野 閱讀(3514) 評論(2)  編輯  收藏

          FeedBack:
          # re: 基于hadoop的云計算 第一篇 安裝配置篇
          2011-12-10 13:03 | tb
          好資料 學習了   回復  更多評論
            
          # re: 基于hadoop的云計算 第一篇 安裝配置篇
          2011-12-16 18:58 | -274°C
          好資料,收藏了,改天仔細看。  回復  更多評論
            

          只有注冊用戶登錄后才能發表評論。


          網站導航:
           

          <2011年12月>
          27282930123
          45678910
          11121314151617
          18192021222324
          25262728293031
          1234567

          常用鏈接

          留言簿(2)

          隨筆分類

          隨筆檔案

          文章分類

          文章檔案

          搜索

          •  

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 两当县| 镇雄县| 元氏县| 常山县| 安阳市| 夏邑县| 满洲里市| 云和县| 广安市| 光泽县| 麻栗坡县| 双辽市| 万盛区| 张掖市| 丰台区| 依安县| 东乌珠穆沁旗| 太仓市| 林西县| 林口县| 印江| 富民县| 托里县| 洛扎县| 三亚市| 彭州市| 舟山市| 乌兰县| 什邡市| 漾濞| 抚州市| 威宁| 宜阳县| 闻喜县| 西林县| 北宁市| 泰顺县| 广饶县| 盐边县| 萨嘎县| 岗巴县|