目的
這篇文檔的目的是幫助你快速完成在三臺以上服務器搭建Hadoop應用平臺。
先決條件
VirtualBox
虛擬機共3臺
操作系統:Ubuntu 10.4
內存: 256M以上
機器名 | IP | 作用 |
master | 10.9.9.100 | NameNode、master、jobTracker |
slave01 | 10.9.9.101 | DataNode、slave、taskTracker |
slave02 | 10.9.9.102 | DataNode、slave、taskTracker |
安裝Hadoop集羣前的準備工作
一、在每臺機子上創建hadoop用戶
$ group hadoop
$ useradd -g hadoop hadoop
$ passwd hadoop
當然也可以用圖形界面中 系統設置-〉用戶和組 添加。添加之後註銷使用hadoop用戶登錄,接下來的配置都用hadoop用戶操作
二、修改hosts,在三臺機子配置如下host
sudo vi /etc/hosts
10.9.9.100 master 10.9.9.101 slave01 10.9.9.102 slave02
三、開啓ssh服務
安裝ssh服務 :sudo apt-get install openssh-server
(1)在 master 上實現無密碼登錄本機
$ ssh-keygen –t dsa
一路回車,
完成後會在/home/hadoop/.ssh下生成兩個文件:id_dsa和id_dsa.pub。這兩對是成對出現的。再把id_dsa.pub加到authorized_keys文件裏。方法如下:進入/home/hadoop/.ssh目錄:
$ cat id_dsa.pub >> authorized_keys
完成後可以實現無密碼登錄本機:
$ ssh localhost
若無密碼輸入提示,則配置成功。
(2)實現 master 無密碼登錄其他slave01, slave02
在master機子上把id_dsa.pub文件複製給其它兩臺子
scp /home/hadoop/.ssh hadoop@slave01:/home/hadoop/
scp /home/hadoop/.ssh hadoop@slave02:/home/hadoop/
測試ssh 無密碼登錄
$ ssh slave01
$ ssh slave02
安裝
一、下載 jdk7 jdk-7-linux-x64.tar.gz
http://www.oracle.com/technetwork/java/javase/downloads/java-se-jdk-7-download-432154.html
$ sudo tar -zxvf jdk-7-linux-x64.tar.gz -C /usr/local/java/
$ sudo mv /usr/local/java/jdk1.7.0 /usr/local/java/jdk
二、下載 hadoop hadoop-0.21.0.tar.gz
http://www.apache.org/dyn/closer.cgi/hadoop/common/
解壓重命名
$ sudo tar -zxvf hadoop-0.21.0.tar.gz -C /usr/local/
$ sudo mv /usr/local/hadoop-0.21.0 /usr/local/hadoop
(2) 添加環境變量
$sudo vi /etc/profile
export HADOOP_HOME=/usr/local/hadoop export JAVA_HOME=/usr/local/java/jdk export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar export PATH=$PATH:$JAVA_HOME/bin:$HADOOP_HOME/bin
注意:上面的路徑要和你解壓的路徑相一致,以上的配置三臺機子都要相同
配置hadoop
(1)建立目錄
在master服務器上,建立目錄 /data/hadoop/name、/data/hadoop/tmp
在slave01,slave02服務器上,建立目錄 /data/hadoop/data01、/data/hadoop/data02、/data/hadoop/tmp
(2)建立無密碼驗證的ssh密鑰及更改文件權限
(mster)
# chown hadoop:hadoop -R /usr/local/hadoop
# chown hadoop:hadoop -R /data/hadoop/name /data/hadoop/tmp
( slave01、slave02 )
# chown hadoop:hadoop -R /usr/local/hadoop
# chown hadoop:hadoop -R /data/hadoop/data01 /data/hadoop/data02 /data/hadoop/tmp
(3) 在master上修改配置文件 ,修改完成後,拷貝到slave01和slave02 ,保證配置文件保持一致
要修改的文件有 {hadoop-install-dir}/conf/目錄下的,
hadoop_env.sh core-site.xml hdfs-site.xml mapred-site.xml masters slaves 六個文件
======= hadoop_env.sh==========
配置Hadoop需要的環境變量,其中JAVA_HOME是必須設定的變量
。
export JAVA_HOME=/usr/java/jdk1.6.0
======= core-site.xml==========
<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<!-- Put site-specific property overrides in this file. -->
<configuration>
<property>
<name>hadoop.tmp.dir</name>
<value>/data/hadoop/tmp</value>
<description>A base for other temporary directories.</description>
</property>
<!-- file system properties -->
<property>
<name>fs.default.name</name>
<value>hdfs://master:9000</value>
</property>
</configuration>
=======hdfs-site.xml=======
<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<!-- Put site-specific property overrides in this file. -->
<configuration>
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
<property>
<name>dfs.name.dir</name>
<value>/data/hadoop/name</value>
</property>
<property>
<name>dfs.data.dir</name>
<value>/data/hadoop/data01,/data/hadoop/data02</value>
</property>
</configuration>
================ mapred-site.xml ======================
<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<!-- Put site-specific property overrides in this file. -->
<configuration>
<property>
<name>mapred.job.tracker</name>
<value>master:9001</value>
</property>
</configuration>
===============masters=====================
master
slave01 slave02
運行hadoop
(1)格式化namenode
$ hadoop namenode -format
注意查看相關log是否報錯,
如將/data/hadoop/name文件夾整個刪除或者給文件加上777權限 然後再格,一定要成功才能繼續
(2)啓動hdfs服務
$ start-all.sh
(3)啓動hdfs服務
$ stop-all.sh
(4) 查看結果
(5)其它
查看進程情況: jps可以用來查看當前hadoop運行的進程情況。
hadoop dfsadmin –report可以用來查看當前hadoop的運行情況。