Ubuntu下偽分散式模式Hadoop的安裝及配置

Ruthless發表於2013-06-21

1、Hadoop執行模式
Hadoop有三種執行模式,分別如下:
單機(非分散式)模式
偽分散式(用不同程式模仿分散式執行中的各類節點)模式
完全分散式模式
注:前兩種可以在單機執行,最後一種用於真實的叢集環境,通常用在生產環境上。我們可以搭建本地的偽分散式模式來模擬分散式環境的執行。

2、Hadoop的安裝及配置
環境:Ubuntu10.10,Hadoop 0.21.0
安裝步驟如下:
1、準備工作:
1)、安裝ssh server,如何安裝ssh server請看http://www.tieguanyin168.com/index.php/ubuntu-ssh-1650.html
2)、安裝sun jdk6,切忌一定要java6及其以上版本,如何安裝jdk6請看http://www.tieguanyin168.com/index.php/ubuntu-jdk-1631.html

2、增加一個使用者組使用者,用於hadoop執行及訪問。
root@ubuntu:~# sudo addgroup hadoop
root@ubuntu:~# sudo adduser –ingroup hadoop hadoop

3、生成SSH證照,配置SSH加密key
hadoop@ubuntu:~$ su – hadoop
Password:
hadoop@ubuntu:~$ ssh-keygen -t rsa -P ""
Generating public/private rsa key pair.
Enter file in which to save the key (/home/hadoop/.ssh/id_rsa):
Your identification has been saved in /home/hadoop/.ssh/id_rsa.
Your public key has been saved in /home/hadoop/.ssh/id_rsa.pub.
The key fingerprint is:
a8:67:6f:bd:04:13:41:5f:a7:13:2d:84:e7:8a:8c:43 hadoop@ubuntu
The key's randomart image is:
+–[ RSA 2048]—-+
|       .o  o+..  |
|         o..o+.  |
|        . .oo.   |
|      E. .  ..   |
|     ..oS. .     |
|     .o oo.      |
|    . o. ..      |
|     o ….      |
|       .. ..     |
+—————–+
hadoop@ubuntu:~$

hadoop@ubuntu:~$ cat $HOME/.ssh/id_rsa.pub >> $HOME/.ssh/authorized_keys
hadoop@ubuntu:~$

4、配置完成,測試一下:
hadoop@ubuntu:~$ ssh localhost
The authenticity of host 'localhost (::1)' can't be established.
RSA key fingerprint is d7:87:25:47:ae:02:00:eb:1d:75:4f:bb:44:f9:36:26.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added 'localhost' (RSA) to the list of known hosts.
Linux ubuntu 2.6.32-22-generic #33-Ubuntu SMP Wed Apr 28 13:27:30 UTC 2010 i686 GNU/Linux
Ubuntu 10.04 LTS
[...snipp...]
hadoop@ubuntu:~$

5、禁用ipV6配置:
開啟sudo gedit /etc/sysctl.conf,此檔案需要root許可權。
再次開啟檔案中,追加如下:
net.ipv6.conf.all.disable_ipv6 = 1
net.ipv6.conf.default.disable_ipv6 = 1
net.ipv6.conf.lo.disable_ipv6 = 1

重啟,測試是否配置成功:
$ cat /proc/sys/net/ipv6/conf/all/disable_ipv6
如果是1就ok了。

下面就是安裝Hadoop(Hadoop儲存在/home目錄下)了。
首先是:下載,解壓縮,分配許可權。
下載就不說了。
下載後執行如下:
root@ubuntu:~# cd /home
root@ubuntu:/home# ls
apache-tomcat-6.0.18  jdk1.6.0_30              study
hadoop                jdk-6u30-linux-i586.bin  ubuntu
hadoop-0.21.0.tar.gz  ljq                      web.war
root@ubuntu:/home# sudo tar xzf hadoop-0.21.0.tar.gz
root@ubuntu:/home# ls
apache-tomcat-6.0.18  hadoop-0.21.0.tar.gz     ljq     web.war
hadoop                jdk1.6.0_30              study
hadoop-0.21.0         jdk-6u30-linux-i586.bin  ubuntu
root@ubuntu:/home# sudo mv hadoop-0.21.0 hadoop
root@ubuntu:/home# sudo chown -R hadoop:hadoop hadoop #chown [OPTION]  [OWNER][:[GROUP]]  FILE
root@ubuntu:/home#

到此就安裝完畢。

配置環境變數(共有4處要配置)
1、在/home/hadoop/hadoop-0.21.0/conf/hadoop-env.sh檔案中新增環境變數資訊。
2、在/etc/profile檔案中新增環境變數資訊。
3、在/home/.bash_profile檔案中新增環境變數資訊。
4、在/home/hadoop/.bashrc檔案中新增環境變數資訊。

環境變數資訊如下:

1
2
3
4
5
6
7
8
HADOOP_HOME=/home/hadoop/hadoop-0.21.0
JAVA_HOME=/home/jdk1.6.0_30
PATH=$JAVA_HOME/bin:$HADOOP_HOME/bin:$PATH
CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$HADOOP_HOME/lib:$CLASSPATH
export HADOOP_HOME
export JAVA_HOME
export PATH
export CLASSPATH

重啟,接著驗證環境變數是否配置成功,如下:
export、echo $HADOOP_HOME、java -version

下面說說如何配置和啟動:
基本思路是配置core-site.xml、mapred-site.xml、hdfs-site.xml。
首先建立一個用來存放資料的目錄:mkdir /home/hadoop/hadoop-datastore

開啟/home/hadoop/hadoop-0.21.0/conf/core-site.xml,配置如下

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<configuration>
  <property>
    <name>hadoop.tmp.dir</name>
    <value>/home/hadoop/hadoop-datastore/</value>
    <description>A base for other temporary directories.</description>
  </property>
 
  <property>
   <!--fs.default.name指定NameNode的IP地址和埠號-->
    <name>fs.default.name</name>
    <value>hdfs://localhost:54310</value>
    <description>The name of the default file system.  A URI whose
  scheme and authority determine the FileSystem implementation.  The
  uri's scheme determines the config property (fs.SCHEME.impl) naming
  the FileSystem implementation class.  The uri's authority is used to
  determine the host, port, etc. for a filesystem.</description>
  </property>
</configuration>

開啟/home/hadoop/hadoop-0.21.0/conf/mapred-site.xml,配置如下

1
2
3
4
5
6
7
8
9
10
<configuration>
<property>
  <name>mapred.job.tracker</name>
  <value>localhost:54311</value>
  <description>The host and port that the MapReduce job tracker runs
  at.  If "local", then jobs are run in-process as a single map
  and reduce task.
  </description>
</property>
</configuration>

開啟/home/hadoop/hadoop-0.21.0/conf/hdfs-site.xml,配置如下

1
2
3
4
5
6
7
8
9
10
<configuration>
<property>
<!--block的副本數,預設為3;你可以設定為1 這樣每個block只會存在一份。-->
  <name>dfs.replication</name>
  <value>1</value>
  <description>Default block replication.
  The actual number of replications can be specified when the file is created.
  The default is used if replication is not specified in create time.
  </description>
</property>
</configuration>

ok,配置完畢

格式化HDFS:
hadoop@ubuntu:~$ /home/hadoop/hadoop-0.21.0/bin/hadoop namenode -format

啟動HDFS和MapReduce
hadoop@ubuntu:~/hadoop-0.21.0/bin$ ./start-all.sh

停止服務的指令碼是:
hadoop@ubuntu:~/hadoop-0.21.0/bin$ ./stop-all.sh

透過jps檢視程式是否啟動成功
hadoop@ubuntu:~/hadoop-0.21.0/bin$ jps
5695 DataNode
5503 NameNode
6181 TaskTracker
6222 Jps
5890 SecondaryNameNode
5991 JobTracker
hadoop@ubuntu:~/hadoop-0.21.0/bin$
出現如上資訊,表示hadoop啟動成功,缺一不可。

netstat -at|grep 50030
netstat -at|grep 50070
檢視埠是否正常

注意:有時候有些啟動不成功,可以在/home/hadoop/hadoop-0.21.0/logs/檢視日誌資訊進行診斷。

訪問http://localhost:50070可以看到NameNode以及整個分散式檔案系統的狀態,瀏覽分散式檔案系統中的檔案以及日誌等。
訪問http://localhost:50030可以檢視JobTracker的執行狀態。

50070是dfs的埠,50030是MR的埠。

參考資料
Ubuntu下安裝及配置單點hadoop
http://www.hadoopor.com/thread-2674-1-1.html
hadoop常見異常總結:
http://www.tieguanyin168.com/index.php/hadoop-exception-1706.html

相關文章