ubuntu下hadoop的部署

火星人 @ 2014-03-09 , reply:0


  關於linux下hadoop的部署網上有很多教程,但是同一教程對於不同的機器可能效果迥異,而很多和我一樣都新手都不願意去follow官方的英文部署.因此在這裡記下我部署hadoop的過程,兼聽則明,希望對大家有所幫助.

  ****************************************************

  實踐環境:

  1.用戶名:sa,環境:UBUNTU10.04,IP:192.168.0.102,作用:namenode,master,jobtracker

  2.用戶名:sa,環境:UBUNTU9.10,IP:192.168.0.103,作用:datanode,slave,tasktracker

  兩台電腦的用戶名務必保持一樣,否則後面調試時不能成功.

  ****************************************************

  主要步驟:

  1.修改主機名.

  2.安裝SSH,實現SSH無密碼登陸.

  3.關閉防火牆

  4.安裝JDK,Hadoop

  5.配置hadoop

  ****************************************************

  1.修改主機名:

  在/etc/hosts文件裡面修改:

  sa@sa:~$ cd ..

  sa@sa:/home$ cd ..

  sa@sa:/$ cd etc/

  sa@sa:/etc$ sudo gedit hosts

  [sudo] password for sa:

  輸入密碼后,將hosts文件改為:

  127.0.0.1 localhost.localdomain localhost

  192.168.0.102 sa

  192.168.0.103 ubuntu

  ::1 localhost ip6-localhost ip6-loopback

  fe00::0 ip6-localnet

  ff00::0 ip6-mcastprefix

  ff02::1 ip6-allnodes

  ff02::2 ip6-allrouters

  ff02::3 ip6-allhosts

  (此處#可能會無法辨識,去掉那一行)

  /*

  所有機器都改完,對應好之後,可是ping一下,看看是否成功:

  PING ubuntu (192.168.0.103) 56(84) bytes of data.

  64 bytes from ubuntu (192.168.0.103): icmp_seq=1 ttl=64 time=0.393 ms

  64 bytes from ubuntu (192.168.0.103): icmp_seq=2 ttl=64 time=0.374 ms

  64 bytes from ubuntu (192.168.0.103): icmp_seq=3 ttl=64 time=0.373 ms

  ^C

  --- ubuntu ping statistics ---

  3 packets transmitted, 3 received, 0% packet loss, time 1998ms

  rtt min/avg/max/mdev = 0.373/0.380/0.393/0.009 ms

  */

  ****************************************************

  2.安裝SSH,實現SSH無密碼登陸

  2.1 安裝SSH:sudo apt-get install openssh-server

  2.2 實現SSH無密碼登錄:

  此處參考這個文檔:linux.chinaunix.net/techdoc/net/2007/08/08/964784.shtml">http://linux.chinaunix.net/techdoc/net/2007/08/08/964784.shtml

  非常詳盡.摘錄如下:

  *************************

  伺服器之間建立信任關係,對於監控伺服器管理很必要.這裡介紹ssh的無密碼登陸.

  本機ip:192.168.1.6

  [root@codfei ~]# ssh-keygen -t rsa

  Generating public/private rsa key pair.

  Enter file in which to save the key (/root/.ssh/id_rsa):

  /root/.ssh/id_rsa already exists.

  Overwrite (y/n)? y (以為我是第2次建立關係所以此處覆蓋原來的文件)

  Enter passphrase (empty for no passphrase):(直接回車無須輸入密鑰)

  Enter same passphrase again:

  Your identification has been saved in /root/.ssh/id_rsa.

  Your public key has been saved in /root/.ssh/id_rsa.pub.

  The key fingerprint is:

  04:37:13:2a:4b:10:af:c1:2b:03:3f:6b:27:ce:b9:62 root@codfei

  [root@codfei ~]# cd .ssh/

  [root@codfei .ssh]# ll

  -rw------- 1 root root 883 Apr 25 17:51 id_rsa

  -rw-r--r-- 1 root root 221 Apr 25 17:51 id_rsa.pub

  -rw-r--r-- 1 root root 442 Apr 25 17:37 known_hosts

  id_rsa是密鑰文件,id_rsa.pub是公鑰文件.

  [root@codfei .ssh]# scp id_rsa.pub192.168.1.4:/root/.ssh/192.168.1.6

  root@192.168.1.4's password:

  id_rsa.pub 100% 221 0.2KB/s 00:00

  這裡把公鑰文件取名為本機的ip地址就是為了以後和更多的機器建立信任關係不發生混淆.

  現在登陸到192.168.1.4機器

  [root@codfei ~]# cd .ssh/

  [root@codfei .ssh]# cat 192.168.1.6 >> authorized_keys

  然後回到192.168.1.6機器直接

  [root@codfei .ssh]# ssh 192.168.1.4

  Last login: Wed Aug 8 12:14:42 2007 from 192.168.1.6

  這樣就可以了,裡面偶爾涉及到許可權問題.一般./ssh文件夾是755 authorized_keys為600或者644

  *************************

  ****************************************************

  3.關閉防火牆

  sa@sa:~$ sudo ufw disable

  防火牆在系統啟動時自動禁用

  ****************************************************

  4安裝JDK,hadoop

  分別到官網下載tar.gz文件,解壓縮至sa文件夾下.兩台機子文件目錄保持一樣,以免不必要都麻煩.我都機器分別下載的是jdk.1.6.0_21和hadoop-0.20.2.

  之後將下列語句添加至etc/profile文件中:

  export JAVA_HOME=/home/sa/jdk1.6.0_21

  export JRE_HOME=/home/sa/jdk1.6.0_21/jre

  export CLASSPATH=.:$JAVA_HOME/lib:$JRE_HOME/lib:$CLASSPATH

  export PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$PATH

  export HADOOP_HOME=/home/sa/hadoop-0.20.2

  export PATH=$HADOOP_HOME/bin:$PATH

  /*

  改完之後進行測試,參考http://blog.csdn.net/wh62592855/archive/2010/07/14/5733130.aspx

  1.java -version查看版本號.

  sa@sa:/etc$ java -version

  java version "1.6.0_21"

  Java(TM) SE Runtime Environment (build 1.6.0_21-b06)

  Java HotSpot(TM) Server VM (build 17.0-b16, mixed mode)

  2.運行java程序

  在/home/sa下建立一個hello.java都文件,輸入以下內容:

  public class hello

  {

  public static void main(String args [ ])

  {

  System.out.println("Hello World!");

  System.out.println("看到這些代表安裝成功啦!");

  System.out.println("2005/9/5");

  }

  }

  3.編譯:javac hello.java

  4.執行:java hello

  sa@sa:~$ javac hello.java

  sa@sa:~$ java hello

  Hello World! 看到這些代表安裝成功啦!

  2005/9/5

  ****************************************************

  5.配置hadoop

  此處參考www.hadoopor.com網站製作的《Hadoop 開發者入門專刊》

  以下是我針對自己都機器做的工作:

  ***************************

  hadoop 的主要配置都在 hadoop-0.20.2/conf 下.

  (1)在 conf/hadoop-env.sh 中配置 Java 環境(namenode 與 datanode 的都做):

  $ gedit hadoop-env.sh

  $ export JAVA_HOME=/home/sa/jdk1.6.0_21

  (2)配置 conf/masters 和 conf/slaves 文件:

  masters: sa(只在 namenode 上配置)

  slaves:(namenode 與 datanode 的都做)

  ubuntu

  (3)配置 conf/core-site.xml, conf/hdfs-site.xml 及 conf/mapred-site.xml(以下內容namenode 與 datanode 都做)

  core-site.xml:

  *******************

  <configuration>

  <!--- global properties -->

  <property>

  <name>hadoop.tmp.dir</name>

  <value>/home/sa/tmp</value>

  <description>A base for other temporary directories.</description>

  </property>

  <!-- file system properties -->

  <property>

  <name>fs.default.name</name>

  <value>hdfs://sa:9000</value>

  </property>

  </configuration>

  *******************

  hdfs-site.xml:( replication 默認為 3,如果不修改,datanode 少於三台就會報錯)

  *******************

  <configuration>

  <property>

  <name>dfs.replication</name>

  <value>1</value>

  </property>

  </configuration>

  *******************

  mapred-site.xml:

  *******************

  <configuration>

  <property>

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

  <value>sa:9001</value>

  </property>

  </configuration>

  *******************

  在之前所做都工作中,hosts文件中主機名和IP地址對應好,即使IP地址發生變動,只需修改hosts中都文件即可.

  運行hadoop:(以下命令在hadoop-0.20.2/bin下進行)

  進入 hadoop-0.20.2/bin,格式化文件系統:$ hadoop namenode –format

  啟動 Hadoop:$ start-all.sh

  查看集群狀態:$ hadoop dfsadmin -report

  Hadoop 的 web 方式查看:http://sa:50070





[火星人 via ] ubuntu下hadoop的部署已經有198次圍觀

http://www.coctec.com/docs/linux/show-post-50680.html