1hadoop分布式安装

hadoop完全分布式安装:3个及以上的实体机或者虚拟机组件的机群。

目标:

  分布结构 主节点(1个,是hadoop0):NameNode、JobTracker、SecondaryNameNode
                   从节点(2个,是hadoop1、hadoop2):DataNode、TaskTracker

1.1建立三台虚拟机

  虚拟机在开启完,然后关机后再复制;

  点击虚拟机,然后右击鼠标,点击管理-->克隆-->...>选择完整克隆(这台虚拟机是独立的);(内存不够,可以修改内存,这里修改为400MB)

  CentOS、CentOS1、CentOS2

  

1.2先配置第一台CentOS(参考hadoop的伪分布式安装)

  ip地址修改:CentOS1,192.168.80.101;CentOS2,192.168.80.102

  执行命令:service network restart(如果出现错误,那么删除修改的网络,重新启动虚拟机,然后重新修改ip)

1.3修改CentOS1和CentOS2的主机名为hadoop1和hadoop2

  执行命令:vi /etc/sysconfig/network

  为了使主机名生效,重启虚拟机,执行命令:reboot -h now

1.4在hadoop1和hadoop2上删除.ssh文件、local下的文件、profile下的文件(删除克隆虚拟机hadoop0改过的文件,即将配置时增加的内容删除)

  执行命令:

cd /root/.ssh

ls

rm -rf *
cd /usr/local/

ls

rm -rf *

vi /etc/profile

  或者

rm -rf /root/.ssh/*
rm -rf /usr/local/*
vi /etc/profile

1.5在hadoop1和hadoop2上设置ssh免密码登录

  先对hadoop1处理:

  执行命令:ssh-keygen -t rsa

  创建文件:

  执行命令:cd /root/.ssh/

               cat id_rsa.pub>>authorized_keys

               ssh localhost

               exit

               ssh hadoop1(不能解析)

               vi /etc/hosts(ip与主机名映射,192.168.80.101 hadoop1)

               ssh hadoop1

  hadoop2同上述命令。

1.6主机hadoop0,hadoop1,hadoop2之间可以互相ping,即互相访问。

  (1)要求:ip与主机名映射。

  执行命令:vi /etc/hosts(在hadoop0,hadoop1,hadoop2上都添加对应缺少的ip,192.168.80.100;192.168.80.101;192.168.80.102)

  (2)或者:

  改好一台虚拟机hadoop0,然后运用复制,将hadoop0上的地址信息复制到hadoop1和hadoop2上。

  要求:主机hadoop0,hadoop1,hadoop2相互之间可以免密码登录。(将hadoop0的公钥复制到hadoop1和hadoop2,同样的道理,也就是说三台主机各自都需要3个公钥)

  执行命令:(在cd /root/.ssh/文件下,输入ls,查看公钥)(将hadoop0的公钥复制到hadoop1)

               ssh-copy-id -i hadoop1(在hadoop0上输入)

               ls(查看.ssh文件下的公钥,在hadoop1上输入)

               more authorized_keys(在hadoop1上查看是否复制过来)

  同理其它的复制。

  如果想要将hadoop1的公钥(已经配置好)全部复制到hadoop0的公钥上(缺hadoop1和hadoop2),那么:

  执行命令:scp /root/.ssh/authorized_keys  hadoop0:/root/.ssh/

  执行命令:ssh hadoop1(在hadoop0上输入,两两之间都可以互相免密码登录)

1.7将配置好的hadoop0上的hadoop和jdk复制到hadoop1和haoop2上。

  在复制之前先要删除hadoop0上的hadoop文件下的logs(存放的日志文件)和tmp(存放的数据文件和namenode文件)

  执行命令:rm -rf logs/

               rm -rf tmp/

  开始复制

  执行命令:scp -r jdk  hadoop1:/usr/local/(在hadoop0的/usr/local)

                 scp -r jdk  hadoop2:/usr/local/

       scp -r hadoop  hadoop1:/usr/local/

                 scp -r hadoop  hadoop2:/usr/local/

1.8将配置好的hadoop0上的/etc/profile复制到hadoop1和hadoop2上

  执行命令:scp /etc/profile  hadoop1:/etc/

                   scp /etc/profile  hadoop2:/etc/

  然后执行命令:

                  source /etc/profile(在hadoop1上输入)

                  source /etc/profile(在hadoop2上输入)

1.9确定主节点和从节点,编辑hadoop0的配置文件

  执行命令:cd hadoop/conf/(在hadoop0上)

                 vi slaves(去掉localhost,添加hadoop1,hadoop2)

1.10启动

  执行命令:hadoop namenode -format(在hadoop0上输入,但是经常出现未找到命令,在hadoop文件下的bin下可以运行

               start-all.sh

1.11在Windows的浏览器中查看

  首先在C:\Windows\System32\drivers\etc的host文件进行修改,添加以下内容:

    192.168.80.100 hadoop0

    192.168.80.101 hadoop1

    192.168.90.102 hadoop2

  在浏览器中输入hadoop0:50030或者hadoop0:50070

1.12(可选)将namenode移到hadoop1上,因为namenode很费内存。

  先停止运行:stop-all.sh

  然后执行命令:vi masters(去掉localhost,添加hadoop1)

  重新启动start-all.sh,就可以看到hadoop1上的任务(命令jps)

2动态的增加一个hadoop节点

2.1配置新节点的环境(像配置hadoop1和hadoop2一样)

2.2把新节点的hostname配置到主节点的slaves文件中

2.3在新节点,启动进程

    hadoop-daemon.sh start datanode

    hadoop-daemon.sh start tasktracker

2.4在主节点执行脚本hadoop dfsadmin -refreshNodes

3动态的下架一个hadoop节点

  比如关闭hadoop0上的namenode节点

  执行命令:kill -9 4549(在hadoop0上)

  在浏览器上hadoop0:50070上查看变化。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

               

 

 

 

               

 

 

 

posted on 2015-08-15 10:52  chamie  阅读(191)  评论(0编辑  收藏  举报