所有過程都由名稱為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
(過程寫在另外文章 標題是寫安裝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>
<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網頁管理介面