Hadoop 2.0:分佈式環境搭建安裝配置

集羣環境:

1 NameNode(真實主機):

Linux yan-Server 3.4.36-gentoo #3 SMP Mon Apr 1 14:09:12 CST 2013 x86_64 AMD Athlon(tm) X4 750K Quad Core Processor AuthenticAMD GNU/Linux

2 DataNode1(虛擬機):

Linux node1 3.5.0-23-generic #35~precise1-Ubuntu SMP Fri Jan 25 17:13:26 UTC 2013 x86_64 x86_64 x86_64 GNU/Linux

3 DataNode2(虛擬機):

Linux node2 3.5.0-23-generic #35~precise1-Ubuntu SMP Fri Jan 25 17:13:26 UTC 2013 x86_64 x86_64 x86_64 GNU/Linux

4 DataNode3(虛擬機):

Linux node3 3.5.0-23-generic #35~precise1-Ubuntu SMP Fri Jan 25 17:13:26 UTC 2013 x86_64 x86_64 x86_64 GNU/Linux

1.安裝VirtualBox虛擬機

Gentoo下直接命令編譯安裝,或者官網下載二進制安裝包直接安裝:

emerge -av virtualbox

2.虛擬機下安裝Ubuntu 12.04 LTS

使用Ubuntu鏡像安裝完成後,然後再克隆另外兩臺虛擬主機(這裏會遇到克隆的主機啓動的時候主機名和MAC地址會是一樣的,局域網會造成衝突)

主機名修改文件

/etc/hostname

MAC地址修改需要先刪除文件

/etc/udev/rules.d/70-persistent-net.rules

然後在啓動之前設置VirtualBox虛擬機的MAC地址

啓動後會自動生成刪除的文件,配置網卡的MAC地址。

爲了更方便的在各主機之間共享文件,可以啓動主機yan-Server的NFS,將命令加入/etc/rc.local中,讓客戶端自動掛載NFS目錄。

刪除各虛擬機的NetworkManager,手動設置靜態的IP地址,例如node2主機的/etc/network/interfaces文件配置如下:

  1. auto lo 
  2. iface lo inet loopback 
  3. auto eth0 
  4. iface eth0 inet static 
  5. address 192.168.137.202 
  6. gateway 192.168.137.1 
  7. netmask 255.255.255.0 
  8. network 192.168.137.0 
  9. broadcast 192.168.137.255 

主機的基本環境設置完畢,下面是主機對應的IP地址

類型

主機名

IP

NameNode

yan-Server

192.168.137.100

DataNode

node1

192.168.137.201

DataNode

node2

192.168.137.202

DataNode

node3

192.168.137.203

爲了節省資源,可以設置虛擬機默認啓動字符界面,然後通過主機的TERMINAL ssh遠程登錄。(SSH已經啓動服務,允許遠程登錄,安裝方法不再贅述)

設置方式是修改/etc/default/grub文件將下面的一行解除註釋

GRUB_TERMINAL=console

然後update-grub即可。

3.Hadoop環境的配置

3.1配置JDK環境(之前就做好了,這裏不再贅述)

3.2在官網下載Hadoop,然後解壓到/opt/目錄下面(這裏使用的是hadoop-2.0.4-alpha)

然後進入目錄/opt/hadoop-2.0.4-alpha/etc/hadoop,配置hadoop文件

修改文件hadoop-env.sh

  1. export HADOOP_FREFIX=/opt/hadoop-2.0.4-alpha 
  2. export HADOOP_COMMON_HOME=${HADOOP_FREFIX} 
  3. export HADOOP_HDFS_HOME=${HADOOP_FREFIX} 
  4. export PATH=$PATH:$HADOOP_FREFIX/bin 
  5. export PATH=$PATH:$HADOOP_FREFIX/sbin 
  6. export HADOOP_MAPRED_HOME=${HADOOP_FREFIX} 
  7. export YARN_HOME=${HADOOP_FREFIX} 
  8. export HADOOP_CONF_HOME=${HADOOP_FREFIX}/etc/hadoop 
  9. export YARN_CONF_DIR=${HADOOP_FREFIX}/etc/hadoop 
  10. export JAVA_HOME=/opt/jdk1.7.0_21 

修改文件hdfs-site.xml

  1. <configuration> 
  2. <property> 
  3.   <name>dfs.namenode.name.dir</name> 
  4.   <value>file:/opt/hadoop-2.0.4-alpha/workspace/name</value> 
  5.   <description>Determines where on the local filesystem the DFS name node should store the 
  6. name table.If this is a comma-delimited list of directories,then name table is 
  7. replicated in all of the directories,for redundancy.</description> 
  8.   <final>true</final> 
  9. </property> 
  10. <property> 
  11.   <name>dfs.datanode.data.dir</name> 
  12.   <value>file:/opt/hadoop-2.0.4-alpha/workspace/data</value> 
  13.   <description>Determines where on the local filesystem an DFS data node should 
  14. store its blocks.If this is a comma-delimited list of directories,then data will 
  15. be stored in all named directories,typically on different devices.Directories that do not exist are ignored. 
  16.   </description> 
  17.   <final>true</final> 
  18. </property> 
  19. <property> 
  20.   <name>dfs.replication</name> 
  21.   <value>1</value> 
  22. </property> 
  23. <property> 
  24.   <name>dfs.permission</name> 
  25.   <value>false</value> 
  26. </property> 
  27. </configuration> 

修改文件mapred-site.xml

  1. <configuration> 
  2. <property> 
  3.   <name>mapreduce.framework.name</name> 
  4.   <value>yarn</value> 
  5. </property> 
  6. <property> 
  7.   <name>mapreduce.job.tracker</name> 
  8.   <value>hdfs://yan-Server:9001</value> 
  9.   <final>true</final> 
  10. </property> 
  11. <property> 
  12.   <name>mapreduce.map.memory.mb</name> 
  13.   <value>1536</value> 
  14. </property> 
  15. <property> 
  16.   <name>mapreduce.map.java.opts</name> 
  17.   <value>-Xmx1024M</value> 
  18. </property> 
  19. <property> 
  20.   <name>mapreduce.reduce.memory.mb</name> 
  21.   <value>3072</value> 
  22. </property> 
  23. <property> 
  24.   <name>mapreduce.reduce.java.opts</name> 
  25.   <value>-Xmx2560M</value> 
  26. </property> 
  27. <property> 
  28.   <name>mapreduce.task.io.sort.mb</name> 
  29.   <value>512</value> 
  30. </property> 
  31. <property> 
  32.   <name>mapreduce.task.io.sort.factor</name> 
  33.   <value>100</value> 
  34. </property> 
  35. <property> 
  36.   <name>mapreduce.reduce.shuffle.parallelcopies</name> 
  37.   <value>50</value> 
  38. </property> 
  39. <property> 
  40.   <name>mapred.system.dir</name> 
  41.   <value>file:/opt/hadoop-2.0.4-alpha/workspace/systemdir</value> 
  42.   <final>true</final> 
  43. </property> 
  44. <property> 
  45.   <name>mapred.local.dir</name> 
  46.   <value>file:/opt/hadoop-2.0.4-alpha/workspace/localdir</value> 
  47.   <final>true</final> 
  48. </property> 
  49. </configuration> 

修改文件yarn-env.xml

  1. export HADOOP_FREFIX=/opt/hadoop-2.0.4-alpha 
  2. export HADOOP_COMMON_HOME=${HADOOP_FREFIX} 
  3. export HADOOP_HDFS_HOME=${HADOOP_FREFIX} 
  4. export PATH=$PATH:$HADOOP_FREFIX/bin 
  5. export PATH=$PATH:$HADOOP_FREFIX/sbin 
  6. export HADOOP_MAPRED_HOME=${HADOOP_FREFIX} 
  7. export YARN_HOME=${HADOOP_FREFIX} 
  8. export HADOOP_CONF_HOME=${HADOOP_FREFIX}/etc/hadoop 
  9. export YARN_CONF_DIR=${HADOOP_FREFIX}/etc/hadoop 
  10. export JAVA_HOME=/opt/jdk1.7.0_21 

修改文件yarn-site.xml

  1. <configuration> 
  2. <property> 
  3.   <name>yarn.resourcemanager.address</name> 
  4.   <value>yan-Server:8080</value> 
  5. </property> 
  6. <property> 
  7.   <name>yarn.resourcemanager.scheduler.address</name> 
  8.   <value>yan-Server:8081</value> 
  9. </property> 
  10. <property> 
  11.   <name>yarn.resourcemanager.resource-tracker.address</name> 
  12.   <value>yan-Server:8082</value> 
  13. </property> 
  14. <property> 
  15.   <name>yarn.nodemanager.aux-services</name> 
  16.   <value>mapreduce.shuffle</value> 
  17. </property> 
  18. <property> 
  19.   <name>yarn.nodemanager.aux-services.mapreduce.shuffle.class</name> 
  20.   <value>org.apache.hadoop.mapred.ShuffleHandler</value> 
  21. </property> 
  22. </configuration> 

將配置好的Hadoop複製到各DataNode(這裏DataNode的JDK配置和主機的配置是一致的,不需要再修改JDK的配置)

3.3 修改主機的/etc/hosts,將NameNode加入該文件

192.168.137.100yan-Server

192.168.137.201node1
192.168.137.202node2
192.168.137.203node3

3.4 修改各DataNode的/etc/hosts文件,也添加上述的內容

192.168.137.100yan-Server
192.168.137.201node1
192.168.137.202node2
192.168.137.203node3

3.5 配置SSH免密碼登錄(所有的主機都使用root用戶登錄)

主機上運行命令

ssh-kengen -t rsa

一路回車,然後複製.ssh/id_rsa.pub爲各DataNode的root用戶目錄.ssh/authorized_keys文件

然後在主機上遠程登錄一次

ssh root@node1

首次登錄可能會需要輸入密碼,之後就不再需要。(其他的DataNode也都遠程登錄一次確保可以免輸入密碼登錄)

4.啓動Hadoop

爲了方便,在主機的/etc/profile配置hadoop的環境變量,如下:

  1. export HADOOP_PREFIX="/opt/hadoop-2.0.4-alpha" 
  2. export PATH=$PATH:$HADOOP_PREFIX/bin 
  3. export PATH=$PATH:$HADOOP_PREFIX/sbin 
  4. export HADOOP_MAPRED_HOME=${HADOOP_PREFIX} 
  5. export HADOOP_COMMON_HOME=${HADOOP_PREFIX} 
  6. export HADOOP_HDFS_HOME=${HADOOP_PREFIX} 
  7. export YARN_HOME=${HADOOP_PREFIX} 

4.1 格式化NameNode

hdfs namenode -format

4.2 啓動全部進程

start-all.sh


在瀏覽器查看,地址:

http://localhost:8088/

所有數據節點DataNode正常啓動。

4.3 關閉所有進程

stop-all.sh

至此,Hadoop環境搭建基本結束。

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