设为首页 收藏本站
查看: 959|回复: 0

[经验分享] virtualbox 虚拟3台虚拟机搭建hadoop集群

[复制链接]

尚未签到

发表于 2015-4-15 05:05:47 | 显示全部楼层 |阅读模式
  用了这么久的hadoop,只会使用streaming接口跑任务,各种调优还不熟练,自定义inputformat , outputformat, partitioner 还不会写,于是干脆从头开始,自己搭一个玩玩,也熟悉一下整体架构。
  整体环境:
  主机Win7 i5 4核 8G内存 笔记本;
  虚拟机(客户机)采用Centos5.9 ( 用这个的原因是不想用图形界面,并且以后还想试着装一下ICE)
  

  3台互联的虚拟机搭建Hadoop集群:

    1. 选用virtualbox V4.2.18 + Centos 5.9
  virtualbox V4.2.18 下载地址:http://dlc.sun.com.edgesuite.net/virtualbox/4.2.18/VirtualBox-4.2.18-88781-Win.exe
  Centos 5.9 下载地址(共9个iso文件):http://mirror.bit.edu.cn/centos/5.9/isos/x86_64/

    2. 安装virtualbox 和 Centos5.9

    3. hadoop集群用3台机器,拓扑如下:
  master:  ip:192.168.56.120
  机器名:  master
  启动NameNode
  启动JobTracker
  slave1:   ip: 192.168.56.121
  机器名:slave1
  启动SecondaryNameNode
  启动DataNode
  启动TaskTracker
  
  
  slave2:   ip: 192.168.56.122
  机器名:slave2
  启动DataNode
  启动TaskTracker
  


    4. 配置Centos5.9
  要求: 在任何环境下主机和客户机都要能够联通,正常工作。包括:笔记本插网线;笔记本不插网线;笔记本联通无线网络;笔记本完全没有网络等情况。
  最复杂的情况是笔记本既没有有线网也没有无线网络且没有插网线的情况,这种情况下必须采用host-only的方式。具体原因不细说,因为我也不清楚这四种网络设置的区别到底有哪些 -_-!!!
  配置方式参考:http://www.douban.com/group/topic/15558388/    也可以google搜索  "virtualbox host-only unplug cable"
  还是要说一下我对host-only 方式配置的理解:virtualbox安装好之后在windows的”网络和共享中心“ (XP系统叫做网上邻居)中会出现一个新的虚拟网卡"VirtualBox Host-Only Network"。当虚拟机配置为host-only方式的时候,主机和虚拟机通过这个虚拟网卡进行通讯,因此无论主机的外部网络如何,都能和虚拟机联通。因此需要将虚拟机的ip设置到此虚拟网卡的网段内。
  我的配置:
  VirtualBox Host-Only Network  ipv4设置: ip地址: 192.168.56.1
  子网掩码:255.255.255.0
  centos ip设置:    参考:http://os.iyunv.com/art/201001/177909.htm
  执行:【vi /etc/sysconfig/network】
  

NETWORKING=yes
NETWORKING_IPV6=yes
HOSTNAME=master
GATEWAY=192.168.56.1
  
  执行:【vi /etc/sysconfig/network-scripts/ifcfg-eth0】
  

DEVICE=eth0
BOOTPROTO=static
NM_CONTROLLED=yes
TYPE=Ethernet
IPADDR=192.168.56.120
HWADDR=08:00:27:XX:XX:XX
NETMASK=255.255.255.0
NETWORK=192.168.56.0
ONBOOT=yes
  
  执行:【vi /etc/resolv.conf】添加dns     
  

nameserver 192.168.56.1
  
                                             执行:【vi
/etc/hosts】  设置本机名和静态域名解析
  
  

127.0.0.1       master localhost
::1             master6 localhost6
#hadoop
192.168.56.120 master
192.168.56.121 slave1
192.168.56.122 slave2
  
  执行:【vi /etc/hostname】  设置本机名
  

master
  设置完成后运行:【service network restart】  重启网络服务以使设置生效。
  测试设置是否成功: a) 从主机ping虚拟机 和 从虚拟机ping主机都要通。如果不通则需要关闭主机和虚拟机的防火墙。
  b) 如果还不通则检查virtualbox设置,如下图红圈的地方需要特别注意。
DSC0000.jpg

  

  注意: 上面对机器的ip和机器名设置非常重要,因为hadoop的master与slave的连接是通过机器名来做的

      5. 安装ssh服务(比较简单,google)



          安装完成后执行:【ps -ef | grep ssh】


          看到有一个进程名为 sshd 的则安装成功。


          测试ssh, 执行:【ssh localhost】需要输入密码  
      6. 为虚拟机添加hadoop账户



          以root账户登陆:执行 【useradd  hadoop】


                                                  【passwd   hadoop】


          测试账户,执行:【su   -   hadoop】
      7. 安装jdk1.6 (据说1.7有些问题)
  (此步如果centos自带了1.6的jdk的话,可以省略,但是要找到java的安装路径,因为后面配置环境变量要用)



               下载jdk1.6  :  http://download.oracle.com/otn-pub/java/jdk/6u35-b10/jdk-6u35-linux-x64-rpm.bin?AuthParam=1381058664_954e59f9391e5a0cf7ae446c5e0c7813


得到文件: jdk-6u35-linux-x64-rpm.bin


               以 root账户登录


               执行:【mkdir /usr/java】  (当然也可以是其他目录,此目录将作为java的安装目录,即为JAVA_HOME)


               执行:【cd  /usr/java】        


       执行:【rz -be】  #选择jdk文件上传到    /usr/java   目录下


               执行:【./jdk-6u35-linux-x64-rpm.bin】   


               此时虽然安装完成了jdk,但是如果centos自带的java没有被卸载掉的话,使用java -version 还是会检测到老版本java, 因为还没有配置环境变量。


      8. 安装hadoop



          下载hadoop安装包:http://mirrors.ustc.edu.cn/apache/hadoop/common/stable/hadoop-1.2.1-bin.tar.gz


           得到文件:hadoop-1.2.1-bin.tar.gz


           执行: 【su - hadoop】


           执行:【cd   】           #切换到hadoop账户的根目录


           执行:【tar -zxvf  hadoop-1.2.1-bin.tar.gz】     # 解压,解压后会出现 hadoop-1.2.1 目录
      9. 配置hadoop



          执行:【cd  hadoop-1.2.1/conf】


          执行:【vi  hadoop-env.sh】


                      找到JAVA_HOME那一行,取消注释并配置为:export JAVA_HOME=/usr/java/jdk1.6.0_35


           执行:【mkdir /home/hadoop/hadoop_tmp】 为下一步做准备


           执行:【vi core-site.xml】   配置NameNode节点运行在master上的9000端口和hadoop临时目录

                    


fs.default.name
hdfs://master:9000


hadoop.tmp.dir
/home/hadoop/hadoop_tmp/


           执行:【vi mapred-site.xml】 配置 JobTracker运行在master上的9001端口




mapred.job.tracker
master:9001


           执行:【vi hdfs-site.xml】 配置hdfs 备份数量(不能超过机器数)




dfs.replication
3


           执行:【vi  masters】 配置SecondaryNameNode;指定SecondaryNameNode运行在slave1上。


slave1
           执行:【vi  slaves】  配置DataNode 和   TaskTracker


slave1
slave2
      10. 配置环境变量


           设置环境变量HADOOP_HOME,并将 $HADOOP_HOME/bin加入PATH

           执行:【cd  】 #切换到hadoop账户的根目录

           执行:【vi .bashrc】设置环境变量

      
#配置java相关的环境变量
export JAVA_HOME=/usr/java/jdk1.6.0_35
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export PATH=$JAVA_HOME/bin:$PATH
#配置hadoop相关环境变量
export HADOOP_HOME=/home/hadoop/hadoop-1.2.1
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
export CLASSPATH=$CLASSPATH:$HADOOP_HOME/hadoop-core-1.2.1.jar
      11. 克隆两台虚拟机(使用链接复制即可)并设置主机名和ip


          ( 放在这里进行克隆是因为hadoop集群中的所有机器的java 和 hadoop的安装路径必须都一样)

            以root 身份分别登陆到克隆得到的2台虚拟机上。

              执行:【vi /etc/sysconfig/network】
              修改:HOSTNAME=slave1   和  HOSTNAME=slave2)


      /etc/sysconfig/network-scripts/ifcfg-eth0     (修改:IPADDR=192.168.56.121  和 IPADDR=192.168.56.122)

       /etc/hosts    (对slave1修改:127.0.0.1       master localhost    --> 127.0.0.1       slave1 localhost
                                      ::1             master6 localhost6  --> ::1             slave16 localhost6 )
                      (对slave2修改:127.0.0.1       master localhost    --> 127.0.0.1       slave2 localhost
                                      ::1             master6 localhost6  --> ::1             slave26 localhost6 )


       /etc/hostname  (修改: master  -->  slave1  和 slave2 )
      12. 配置master  ssh无密码登陆到所有机器(包括本机)



          在master上用hadoop账户登录。


          执行:【ssh -keygen -t rsa】 会在.ssh目录下生成  id_rsa  id_rsa.pub  known_hosts  三个文件。


          执行:【cd  .ssh】


          执行:【cp  id_rsa.pub  authorized_keys】


          测试是否可以无密码登录:


          执行:【ssh  hadoop@master】 第一次运行时会有一个选择,填yes, 如果不需要输入密码则成功。


          执行:【scp  authorized_keys  hadoop@slave1:~/.ssh】


          执行:【scp  authorized_keys  hadoop@slave2:~/.ssh】


          测试是否可以从master无密码登录到slave1 和 slave2上:


          执行:【ssh hadoop@slave1】 若有个选项则填yes, 如果不需要输入密码则表示成功。  

      13. 测试



          OK, 到此为止所有配置都已完成,来测试一下是否可以启动hadoop集群。


          以hadoop登录到master


          执行:【hadoop  namenode  -format】 # 此步只需执行一次即可,不需要每次启动都执行


          执行:【start-all.sh】


          执行:【jps】 查看java进程得到结果:


8192 Jps
6438 NameNode
6614 JobTracker


           执行:【ssh  hadoop@slave1】


          执行:【jps】


4606 DataNode
4692 SecondaryNameNode
5980 Jps
4784 TaskTracker




          执行:【ssh  hadoop@slave1】

          执行:【jps】
4283 TaskTracker
5437 Jps
4190 DataNode

          执行:【hadoop fs -ls /】


drwxr-xr-x   - hadoop supergroup          0 2013-10-07 22:14 /home


Oh my god!  终于完成了!!!
  

  

  

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-57060-1-1.html 上篇帖子: VirtualBox 如何重复使用复制的硬盘文件 下篇帖子: virtualbox 安装 mac os x lion 10.7的屏幕分辨率问题
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表