ubuntu搭建hadoop

搭建hadoop也有一段時間了,真是太沒有效率了,小小的記錄一下。

我的OS是ubuntu11.04,hadoop版本是0.20.203.0,jdk是1.6.0_33。

一共3臺電腦:

ip                               作用

172.16.95.50           namenode,jobtracker

172.16.95.51           datanode1,tasktracker

172.16.95.52           datanode2,tasktracker

3臺電腦通過交換機組成局域網,保證能相互ping通,當然,之前用虛擬機按照同樣的做法也成功了,只是要注意VM虛擬機網絡連接要用橋接方式,如果是虛擬機,完全可以配置好一臺後複製或者克隆~

步入主題:

1.修改hosts

sudo gedit /etc/hosts
當然也可以使用vi,nano等任何你喜歡的編輯器。

修改爲:

127.0.0.1	localhost
172.16.95.50	namenode
172.16.95.51	datanode1
172.16.95.52    datanode2

2.修改hostname(如何需要的話)

sudo gedit /etc/hostname
改成相應的主機名,172.16.95.50 的改爲namenode,兩外兩臺分別改爲datanode1和datanode2.

3.3臺主機建立相同的用戶,我這裏是ubuntu,分組名也是ubuntu。本身我是沒有通過創建過程的,因爲我在安裝系統時就是用的同樣的用戶名ubuntu,這裏提供創建用戶和用戶組的方式:
先創建ubuntu用戶組:
sudo addgroup ubuntu
然後創建ubuntu用戶:
sudo adduser -ingroup ubuntu ubuntu
給ubuntu用戶添加權限,打開/etc/sudoers文件:
sudo gedit /etc/sudoers
按回車鍵後就會打開/etc/sudoers文件了,給ubuntu用戶賦予root用戶同樣的權限。
在root   ALL=(ALL:ALL)   ALL下添加ubuntu   ALL=(ALL:ALL)  ALL,
ubuntu  ALL=(ALL:ALL) ALL

4.安裝jdk

兩種方法,一種是自己下載jdk安裝包,然後手動安裝,配置環境變量,第二種是用ubuntu強大的apt-get install搞定,自選。

方法一:

我這裏是自己下載的jdk的bin文件,然後

         (1)把jdk安裝文件拷貝到/home/ubuntu目錄下,然後安裝

cp jdk-6u33-linux-i586.bin /home/ubuntu

cd/home/ubuntu

chmodu+x chmod(賦予可執行權限)

./jdk-6u33-linux-i586.bin(安裝)

(2)安裝已完成修改環境變量並且把java安裝到系統

修改/etc/environment如下

PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/home/ubuntu/jdk1.6.0_33/bin:/home/ubuntu/jdk1.6.0_33/jre/bin"
CLASSPATH=.:/home/ubuntu/jdk1.6.0_33/lib:/home/ubuntu/jdk1.6.0_33/jre/lib
JAVA_HOEM=/home/ubuntu/jdk1.6.0_33


方法二:

ubuntu下一條命令即可:

sudo apt-get install openjdk-6-jre

查看Java版本確定已經安裝到系統:

java-version

如果看到版本說明安裝成功。


5.安裝ssh

使用命令

sudo apt-get install ssh openssh-server
或者
sudo apt-get install ssh

6.配置ssh,無密碼登錄

做這一步之前首先建議所有的機子全部轉換爲hadoop用戶,以防出現權限問題的干擾。

切換的命令爲:

su -ubuntu

ssh生成密鑰有rsa和dsa兩種生成方式,默認情況下采用rsa方式。

1. 創建ssh-key,,這裏我們採用rsa方式

ssh-keygen -t rsa -P ""
(注:回車後會在~/.ssh/下生成兩個文件:id_rsa和id_rsa.pub這兩個文件是成對出現的)

2. 進入~/.ssh/目錄下,將id_rsa.pub追加到authorized_keys授權文件中,開始是沒有authorized_keys文件的;

cd ~/.ssh
cat id_rsa.pub >> authorized_keys

7.爲namenode安裝hadoop(很多步驟可以用圖形界面操作,如果喜歡用命令行,這裏也提供些命令)
(1)首先下載hadoop,一般會下載到/home/ubuntu/下載裏面,進入/home/ubuntu/將其複製到/home/ubuntu/hadoop下,我之前在/home/ubuntu新建了一個hadoop文件夾,並且在hadoop文件夾下建立tmp文件夾,以後用到。
sudo cp hadoop-0.20.203.0rc1.tar.gz /home/ubuntu/hadoop
解壓hadoop-0.20.203.tar.gz;
cd /home/ubuntu/hadoop
sudo tar -zxvf hadoop-0.20.203.0rc1.tar.gz
將該hadoop文件夾的屬主用戶設爲ubuntu,
sudo chown -R ubuntu:ubuntu hadoop-0.20.203.0
(2)修改hadoop的hadoop-env.sh文件
配置conf/hadoop-env.sh(找到#export JAVA_HOME=...,去掉#,然後加上本機jdk的路徑);
export JAVA_HOME=/usr/lib/jvm/java-6-openjdk(這裏是用ubuntu自動安裝的路徑,如果是手動安裝的,選擇自己的jdk安裝路徑,我的是
export JAVA_HOME=/home/ubuntu/jdk1.6.0_33
(3)配置core-site.xml文件
<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>

<configuration>
<property>
 <name>fs.default.name</name>
  <value>hdfs://namenode:9000</value>
</property>
<property>
  <name>hadoop.tmp.dir</name>
 <value>/home/ubuntu/hadoop/tmp</value>
</property>
</configuration>
(4)配置mapred-site.xml文件

<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>

<configuration>
<property>
  <name>mapred.job.tracker</name>
  <value>namenode:9001</value>
</property>
<property>
  <name>mapred.local.dir</name>
 <value>/home/ubuntu/hadoop/tmp</value>
</property>
</configuration>

(5)配置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.name.dir</name>
<value>/home/ubuntu/hadoop/name1, /home/ubuntu/hadoop/name2</value>
<description>  </description>
</property>
<property>
<name>dfs.data.dir</name>
<value>/home/ubuntu/hadoop/data1, /home/ubuntu/hadoop/data2</value>
<description> </description>
</property>
<property>
  <name>dfs.replication</name>
  <value>2</value>
</property>
</configuration>
(注意tmp文件夾已經建立,這裏的name1,name2,data1,data2不要建立,格式化的時候自動生成)
(6)打開conf/masters文件,添加作爲secondarynamenode的主機名,這裏需填寫ubuntuOk了

(7)打開conf/slaves文件,添加作爲slave的主機名,一行一個。

8.將namenode上的文件傳到兩個datanode上
(1)公鑰的複製
scp /home/ubuntu/.ssh/id_rsa.pub ubuntu@datanode1:/home/ubuntu/.ssh/
scp /home/ubuntu/.ssh/id_rsa.pub ubuntu@datanode2:/home/ubuntu/.ssh/
在每個子節點的自己種都要操作
cat /home/ubuntu/.ssh/id_rsa.pub >>  /home/ubuntu/.ssh/authorized_keys
在namenode使用ssh登錄datanode,看看是不是可以不是用密碼登錄,如果可以,就說明ssh配置成功。如果不成功,看看第二次是否可以,如果還不行,可能就是配置或者網絡出錯了。
(2)hadoop文件夾的複製,其中的配置也就一起復制過來了
scp -r /home/ubuntu/hadoop ubuntu@datanode1:/home/ubuntu
scp -r /home/ubuntu/hadoop ubuntu@datanode2:/home/ubuntu
複製過來後,基本不用改變,注意hadoop中關於java的安裝路徑的配置,確保一樣。

9.啓動hadoop
(1)首先格式化,進入hadoop目錄
cd /home/ubuntu/hadoop/hadoop-0.20.203.0
執行:bin/hadoop namenode -format
這時會在hadoop目錄下建造name1,在hadoop-0.20.203.0目錄下建立一個沒有名稱的目錄。
(2)啓動hadoop:bin/start-all.sh
顯示如下:
starting namenode, logging to /home/ubuntu/hadoop/hadoop-0.20.203.0/bin/../logs/hadoop-ubuntu-namenode-namenode.out
datanode2: starting datanode, logging to /home/ubuntu/hadoop/hadoop-0.20.203.0/bin/../logs/hadoop-ubuntu-datanode-datanode2.out
datanode1: starting datanode, logging to /home/ubuntu/hadoop/hadoop-0.20.203.0/bin/../logs/hadoop-ubuntu-datanode-datanode1.out
namenode: starting secondarynamenode, logging to /home/ubuntu/hadoop/hadoop-0.20.203.0/bin/../logs/hadoop-ubuntu-secondarynamenode-namenode.out
starting jobtracker, logging to /home/ubuntu/hadoop/hadoop-0.20.203.0/bin/../logs/hadoop-ubuntu-jobtracker-namenode.out
datanode1: starting tasktracker, logging to /home/ubuntu/hadoop/hadoop-0.20.203.0/bin/../logs/hadoop-ubuntu-tasktracker-datanode1.out
datanode2: starting tasktracker, logging to /home/ubuntu/hadoop/hadoop-0.20.203.0/bin/../logs/hadoop-ubuntu-tasktracker-datanode2.out

namenode輸入:jps
9393 NameNode
9670 JobTracker
9592 SecondaryNameNode
9779 Jps
在datanode輸入jps會顯示有Datanode和Tasktracker.
說明啓動正常。
(3)停止:
bin/stop-all.sh
顯示如下:
stopping jobtracker
datanode1: stopping tasktracker
datanode2: stopping tasktracker
stopping namenode
datanode1: stopping datanode
datanode2: stopping datanode
namenode: stopping secondarynamenode

這樣,hadoop的搭建暫告結束。
如果有什麼錯誤,請指出討論。

參考文章http://www.db89.org/post/2012-06-05/hadoopjiqunhuanjing



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章