网上的资料很多都不是最新的,坑死宝宝了。踩过很多坑后宝宝挥泪写下详细过程。
本文主要讲解Hadoop完全分布式的搭建,使用vm建立三个相同配置的主机进行搭建。本文讲解所有详细步骤希望对大家有用。
全部软件下载百度云链接:失效请评论告诉我密码:1kcl
1.准备工作
-
主机操作系统:处理器:i5,主频:3.2G,内存:8G,Windows64
-
虚拟机软件:VMware Workstation 10
-
虚拟操作系统:CentOs-6.6 64位
-
JDk:1.8.0_121 64位
-
Hadoop:2.8.0
集群包括3个节点,1个Namenode、2个Datanode,其中节点之间可以相互ping通。节点IP地址和主机名如下:
序号 |
IP地址 |
机器名 |
类型 |
用户名 |
1 |
192.168.6.67 |
Master.Hadoop |
Namenode |
Hadoop/root |
2 |
192.168.6.68 |
Slave1.Hadoop |
Datanode |
Hadoop/root |
3 |
192.168.6.70 |
Slave2.Hadoop |
Datanode |
Hadoop/root |
所有节点均是CentOS系统,防火墙均禁用,所有节点上均创建了一个Hadoop用户,用户主目录是/home/Hadoop。所有节点上均创建了一个目录/usr/hadoop,并且拥有者是hadoop用户。因为该目录用于安装hadoop,用户对其必须有rwx权限。(一般做法是root用户下在/usr下创建hadoop目录,并修改该目录拥有者为hadoop(chown –R Hadoop: /usr/hadoop),否则通过SSH往其他机器分发Hadoop文件会出现权限不足的提示。
如果不想用Hadoop用户,用root也可以。我刚开始用的是Hadoop,但对linux玩不转授权什么的没弄好,后期怒改root.博文大部分是之前写的,故只需要把ssh免密部分改成用root用户免密登录即可。
由于Hadoop要求所有机器上Hadoop的部署目录结构要求相同(因为在启动时按与主节点相同的目录启动其它任务节点),并且都有一个相同的用户名账户。参考各种文档上说的是所有机器都建立一个hadoop用户,使用这个账户来实现无密码认证。这里为了方便,分别在三台机器上都重新建立一个hadoop用户。
对于Datanode类型的系统,可以先安装一个系统,然后利用VMWare的克隆功能,克隆多个相同的系统。如下图所示。
VMWare下安装CentOs系统的教程直接在网上找。特别注意的是:所有系统的网络选择为桥接模式,并且由于本机是在无线网络上进行上网的,故还要设置VMnet0的信息:在编辑->虚拟网络编辑器···如下图:
桥接网络是指本地物理网卡和虚拟网卡通过VMnet0虚拟交换机进行桥接,物理网卡和虚拟网卡在拓扑图上处于同等地位,那么物理网卡和虚拟网卡就相当于处于同一个网段,虚拟交换机就相当于一台现实网络中的交换机,所以两个网卡的IP地址也要设置为同一网段。
在”桥接到”那一栏里选择所用的网卡类型。
-
(1)网络配置
采用桥接来连接网络(适合有路由、交换机用户),配置静态IP来实现上网,局域网内通信。
下图是盗来的
vim /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0 #描述网卡对应的设备别名 BOOTPROTO=static #设置网卡获得ip地址的方式,为static HWADDR=”00:23:54:DE:01:69” ONBOOT=”yes” #系统启动时是否设置此网络接口,设置为yes TYPE=”Ethernet” USERCTL=no IPV6INIT=no PEERDNS=yes NETMASK=255.255.255.0 #网卡对应的网络掩码 IPADDR=192.168.1.127 #只有网卡设置成static时,才需要此字段 GATEWAY=192.168.1.1 #设置为路由器地址,一般都是这个 DNS1=202.112.17.33 #设置为本网络对应的,或者8.8.8.8 #google域名服务器 |
本次操作的配置图如下所示:
(可以直接在Master机上设置好,然后通过scp命令将该文件传递给所有的Slave,然后在Slave中修改相应的IPADDR即可,其它不变)
注意:这里需要注意还要改一个东西,因为scp过去的硬件地址是一样的必须修改下:
第一:修改vim /etc//etc/udev/rules.d/ 70-persistent-net.rules
将其中的名为eth0的网卡删掉。同时将eth1的网卡名修改为eth0
第二:修改vim /etc/sysconfig/network-scripts/ifcfg-eth0
将H