總網頁瀏覽量

2013年6月29日 星期六

Hadoop安裝(初步完成) hadoop 1.1.2版

共有三台VM機器,一台Master,兩台Slave
所有過程都由名稱為hadoop的帳號完成
以確保建立的資料擁有者一致

Ubuntu 12.04 LTS版本  32bit(如果是64bit 很有可能遇到unable to load hadoop native lib 要重新去抓hadoop原始碼重新編譯成jar包)
JDK6
hadoop 1.1.2


前言

安裝hadoop 步驟很繁瑣


安裝前

關閉防火牆
 sudo ufw disable,關閉ufw

第一步安裝JDK6

(過程寫在另外文章  標題是寫安裝jdk7  不過最好安裝jdk6)

(有些文章在.bashrc
加上export HADOOP_HOME = /usr/local/hadoop
主要目的是之後要加上
export $HADOOP_HOME/bin
想要使用bin之下的.sh檔案
)

第二步安裝ssh-server並設定不用密碼可登入ssh
(過程寫在另外文章)
hadoop使用ssh來實現cluster中各node的登錄認證



第三步新增網卡 static
(過程寫在另外文章)



第四步安裝hadoop
安裝穩定版本
1.1.X - current stable version, 1.1 release

下載hadoop
hadoop-1.1.2.tar.gz
放在home目錄

解壓縮
tar zxvf hadoop-1.1.2.tar.gz
更改資料夾名稱,好方便管理
mv hadoop-1.1.2 hadoop
將資料夾搬到/usr/local/之下
mv hadoop /usr/local/   (使用者安裝程式都放這裡)


第五步:
1.
在/usr/local/底下新增一個存放紀錄hadoop運作過程的file
(待確認這資料夾功能)
sudo mkdir hadoopDir
因為建立之後檔案擁有者是root,所以要更改檔案擁有者
sudo chown -R hadoop:hadoop hadoopDir
(sudo chown -R 帳號名稱:帳號名稱  資料夾名稱,-R是連同裡面檔案通通變更擁有者)


2.
在/opt底下新增一個存放hadoop備份資料的資料夾
sudo mkdir hadoopDir
sudo chown -R hadoop:hadoop hadoopDir
(sudo chown -R 帳號名稱:帳號名稱  資料夾名稱,-R是連同裡面檔案通通變更擁有者)



第六步:修改部署檔案

1. 修改家目錄之下的.bashrc
在export PATH=.....這行添加上 :/usr/local/hadoop/bin
這樣終端機可以恣意使用usr/local/hadoop/bin的指令惹

2.修改/usr/local/hadoop/conf/hadoop-env.sh(Hadoop運行時所用到的環境變數)
加入java路徑
         找到#export JAVA_HOME=........,改上java的路徑
         改後結果應為:
         export JAVA_HOME=/usr/lib/jvm/jdk7

3.修改/usr/local/hadoop/conf/core-site.xml: Hadoop核心的組態設定,例如HDFS和MapReduce共通的I/O設定


 <configuration>
     <property>  
        <name>fs.default.name</name>  
        <value>hdfs://HadoopNameNode1:9000</value>    (HadoopNameNode1主機名稱,9000是port碼)
     </property>  
 <property>
    <name>hadoop.tmp.dir</name>
    <value>/usr/local/hadoopDir/hadoop-${user.name}</value>
  </property>
(暫存資料夾)
     </configuration>


4.
hdfs-site.xml: HDFS背景服務的組態設定:namenode,datanodes,secondary namenode

<configuration>

<property>
<name>dfs.name.dir</name>
<value></value>
</property>

<property>
<name>dfs.data.dir</name>
<value></value>
</property>

<property>
<name>fs.checkpoint.dir</name>
<value></value>  #默认是3份
</property>


</configuration>

5.mapred-site.xml: MapReduce的背景服務的組態設定:jobtracker,tasktrackers

<configuration>  
          <property>  
            <name>mapred.job.tracker</name>  
            <value>HadoopNameNode1:9001</value>(HadoopNameNode1是主機名稱,9001是埠號)  
          </property>  
          <property>  
            <name>mapred.local.dir</name>
 <value>/usr/local/hadoopDir/mapred/local,
/opt/hadoopDir/mapred/local</value></property>

          <property>  
            <name>mapred.system.dir</name>
            <value>/usr/local/hadoopDir/mapred/system,
/opt/hadoopDir/mapred/system</value>
          </property>


        </configuration>

6.master:一行代表一個運行namenode的主機清單,可以設定多個
(表示secondary namenode)
將localhost改為linux自己的主機名稱


7.slaves:一行代表一個運行datanode和tasktracker的主機清單
將localhost拿掉(如果NameNode也想兼任DataNode的話就改成主機名字)
加上DataNode主機名稱
HadoopDataNode1
HadoopDataNode2



第七步:建立其他的node
因為ssh公鑰匙同一把
且hadoop環境設定一致
所以採用複製方式建立node

複製HadoopNameNode1虛擬硬碟
建立HadoopDataNode1與HadoopDataNode2
(筆者使用VirtualBox所以複製時必須更替uuid)
建立之後網卡設定跟HadoopNameNode1衝突
所以更改HadoopDataNode1與HadoopDataNode2的網卡設定
ssh測試看看互相能否登入
以及確保ping的到8.8.8.8

第八步:

hadoop namenode -format
格式化

(好像只有NameNode需要format而已)

















第九步:
NameNode啟動hadoop
指令:start-all.sh
之後會依序啟動NameNode與DataNode


第十步:驗證
1.分別在NameNode與DataNode打上jps
(可以在NameNode使用ssh登入DataNode後再打jps)
查看啟動什麼服務







2.
在NameNode打上
hadoop dfsadmin -report
看看有多少個datanode在運行



3.
在NameNode主機打開browser
打上localhost:50070/dfshealth.jsp
進入hadoop管理介面


4.
在NameNode主機打上
localhost:50030/jobtracker.jsp
進入mapreduce網頁管理介面


沒有留言:

張貼留言