在
Hadoop 单机环境搭建和伪分布环境搭建
基础之上,利用虚拟机的克隆技术,把hadoop1虚拟机克隆出2台分别是hadoop2、hadoop3
环境说明
我的环境是在虚拟机中配置的,Hadoop集群中包括4个节点:1个Master,2个Salve,节点之间局域网连接,可以相互ping通
Master机器主要配置NameNode和JobTracker的角色,负责总管分布式数据和分解任务的执行;3个Salve机器配置DataNode 和TaskTracker的角色,负责分布式数据存储以及任务的执行。其实应该还应该有1个Master机器,用来作为备用,以防止Master服务器宕机,还有一个备用马上启用。后续经验积累一定阶段后补上一台备用Master机器(可通过配置文件修改备用机器数)。
注意:由于hadoop要求所有机器上hadoop的部署目录结构要求相同(因为在启动时按与主节点相同的目录启动其它任务节点),并且都有一个相同的用户名账户。参考各种文档上说的是所有机器都建立一个hadoop用户,使用这个账户来实现无密码认证。这里为了方便,分别在三台机器上都重新建立一个hadoop用户。
这里hadoop1--->配置NameNode和JobTracker的角色,负责总管分布式数据和分解任务的执行
hadoop2和hadoop3---->配置DataNode 和TaskTracker的角色,负责分布式数据存储以及任务的执行
然后分别修改hadoop2、hadoop3的主机名称、添加映射虚拟机和ip地址+配置slaves文件
vi /etc/hostname
#修改虚拟机名称
vi /etc/hosts
#添加映射虚拟机
vi /etc/sysconfig/network-scripts/ifcfg-ens33
#修改固定ip地址
静态网络配置
注意:1)该项的所有操作步骤需要使用root用户进行。
2)该项需要在集群中每台主机上进行单独设置。
进入网络配置文件目录:cd /etc/sysconfig/network-scripts/
命令:
#vi ifcfg-ens33
i插入,Esc退出编辑模式,:wq保存退出。
配置文件,以下配置项若在文件中已存在则修改其属性值,若不 存在则进行添加:
# 设置该网络通过配置文件管理,而不通过网络管理器管理
NM_CONTROLLED=no
# 设置该网络为开机自动启动
ONBOOT=yes
# 设置采用静态IP模式
BOOTPROTO=static
#该网络的IP地址,可以使用DHCP获得的IP地址,也可以自行规划
IPADDR=192.168.10.111
#该网络的子网掩码
NETMASK=255.255.255.0
#该网络的网关地址
GATEWAY=192.168.10.1
输入完成后 Esc 退出编辑模式,:wq 保存退出。
#service network restart
#ip addr
测试是否可以相互ping通 并用ssh命令联通成功
配置slaves文件(只有hadoop1主机需要配置)
有两种方案:
(1)第一种
去掉"localhost",每行添加一个主机名,把剩余的Slave主机名都填上。
例如:添加形式如下:
hadoop2
hadoop3
(2)第二种
去掉"localhost",加入集群中所有Slave机器的IP,也是每行一个。
例如:添加形式如下
192.168.1.123
192.168.1.124
配置hdfs-site.xml文件
修改复制节点个数为2
剩余的就是停止hadoop服务:stop-all.sh
三台虚拟机都需要清理namenode和datanode目录下文件都删除掉
hdoop1---->重新格式化namenode:hdfs namenode -format
然后分别启动hadoop服务:start-all.sh
效果;
测试:用dfs 创建文件夹后 上传文件
hdfs dfs -mkdir /dir #创建文件夹
hdfs dfs -put <linux目录下>/<要上传的文件> /dir #dir为hdfs里面创建的文件
访问http://<hostname>:50070---->查看dir目录下文件对应的信息
block---默认大小128m分割一个块出来 这里的文件大小小于128所以只有一个块出现