完全分布式HDFS集群搭建

1.配置静态IP

因为每次虚拟机重新启动,它原有的ip地址都有可能发生变化,因为我们要先固定集群中各个节点的ip防止以后无法解析对应的节点

cd /etc/sysconfig/network-scripts/
vi ifcfg-eth0 

修改配置文件

ONBOOT=yes
BOOTPROTO=none

在末尾添加

IPADDR=192.168.23.130(最好修改为本次虚拟机启动后的ip防止自己手动修改引起不必要的冲突)
PREFIX=24
GATEWAY=192.168.23.2
DNS1=8.8.8.8

修改完毕后重启服务使改动生效

service network restart

准备工作完成,现在开始搭建集群(默认已经配置好JDK环境,如果没有请参考上一篇博客)

2.同步时间

因为安装centos镜像时的选项不同,可能会导致我们各个节点的系统时间不一致,这会导致接收到的信息因为时间相差过大而被认为是过时信息(你肯定不会理会在元宵节时别人发给你的春节祝福吧@~@)
为了同步各个节点之间的时间,我们借用ntp工具

yum install ntp

然后我们可以去往上搜索那些开放的时间服务器,这里我们采用阿里云的时间服务器

ntpdate ntp1.aliyun.com

同步完成后我们可以在终端打印时间信息

date

在这里插入图片描述请依次确认各个节点的时间信息是否已经保持一致

3.配置密钥

这次我们搭建的是完全分布式集群,存在多组节点之间的通信,所以我们需要将密钥分发给多个节点,在此之前,我们需要配置所有节点的hosts文件

vi /etc/hosts

配置的格式为
虚拟机IP 虚拟机主机名
/注意主机名一定要书写正确,不然在格式化目录时,错误的主机名将导致节点将无法创建目录/
主机名可以通过hostname命令来查看
在这里插入图片描述

127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.23.130 hadoop01
192.168.23.128 hadoop02
192.168.23.129 hadoop03
192.168.23.131 hadoop04

注意,请在所有节点都配置以上信息不要有遗漏
并且关闭所有节点的防火墙

service iptables stop

关闭放火墙后开始配置密钥

ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa

其在所有节点运行此命令
并在主节点运行以下命令

ssh-copy-id -i ~/.ssh/id_rsa.pub root@hadoop01
ssh-copy-id -i ~/.ssh/id_rsa.pub root@hadoop02
ssh-copy-id -i ~/.ssh/id_rsa.pub root@hadoop03
ssh-copy-id -i ~/.ssh/id_rsa.pub root@hadoop04

配置完毕后,我们开始配置hadoop的一些文件

4.HDFS文件配置

将hadoop文件放到任意目录并且解压
首先修改(hadoop目录)/etc/hadoop下的hdfs-site.xml文件

<property>
        <name>dfs.replication</name>
        <value>3</value>
</property>
<property>   
  
 <name>dfs.namenode.secondary.http-address</name>
     <value>hadoop02:50090</value>
</property>

第一个配置信息为节点备份数量 默认为3
第二个为secondaryNameNode的启动节点和端口信息

保存后接着修改同目录下的core-site.xml

<property>
        <name>fs.defaultFS</name>
        <value>hdfs://hadoop01:9000</value>
</property>
<property>
        <name>hadoop.tmp.dir</name>
        <value>/var/abc/hadoop/cluster</value>
</property>

第一个配置信息为默认文件系统的位置
第二个为工作目录的位置(格式化节点时会自动生成)

保存后接着修改同目录下的slaves

hadoop02
hadoop03
hadoop04

注意每一个从节点都需要换行且后面不允许有空格,不然会导致启动失败

配置好以上信息后,我们就可以将hadoop的包分发给其他的节点了

scp -r hadoop-2.6.5 root@hadoop02:(目标路径)

请确保传输完成后的路径和当前节点的hadoop包路径一致,或者通过手动移动的方式使其他节点的hadoop包路径和当前节点的一致
为了方便起见我们也可以采用第二种方式
先进入hadoop包所在的目录
在这里插入图片描述

scp -r hadoop-2.6.5 root@hadoop02:`pwd`

pwd代表当前节点的路径,使用该命令可以确保所有节点的hadoop包位置一致
当所有节点都接收到hadoop包后就可以启动集群了

5.启动集群

建议先配置hadoop环境变量,具体操作参照上一篇博客
在主节点上运行

	hdfs namenode -format

运行完成后,节点会自动生成刚刚配置的工作目录
接着继续运行

start-dfs.sh

执行完成后使用jps命令检查各个节点

在这里插入图片描述主节点为一个NameNode进程
在这里插入图片描述第二个节点为secondaryNameNode和一个DataNode进程
在这里插入图片描述第三个节点为一个DataNode进程

在这里插入图片描述第四个节点也为一个DataNode进程
在第一台虚拟机上运行浏览器输入localhost:50070查看集群运行情况
在这里插入图片描述
在这里插入图片描述
启动成功,到此集群搭建完毕

6.问题总结

搭建集群的过程中会遇到各种各样的问题,在此稍稍总结一下几个常见的问题,仅供参考
1.防火墙设置
为了防止发生一些奇怪的错误,请务必关闭所有节点的防火墙,他可能会导致浏览器无法获取集群信息和文件上传集群失败
2.hosts文件配置和主机名
因为这是完全分布式的集群,所以配置hosts文件至关重要,不然你的私钥配置和以后节点的格式化都会出错,他将会提示你无法解析主机名
具体的配置流程已在上面给出,请仔细配置
3.请在关闭所有HDFS服务后在执行-format格式化命令
如果存在节点未关闭,而你运行了格式化命令,这可能导致该节点与其他节点的目录ID不一致,从而导致“网络分区”问题
在这里插入图片描述我们可以进去再配置文件设置的工作目录的位置去查看目录的ID信息,请务必保证所有节点的clusterID一致
并且在格式化前最好清空所有节点的工作目录

rm -rf /var/abc/hadoop/cluster

4.遇到问题我们可以查看hadoop下的日志信息,通过报出的错误我们可以更快的地位错误的位置
在这里插入图片描述各个节点的日志信息会在启动集群时打印在终端上,我们可以去查看那些未能正常启动的节点的日志信息(.log文件)

  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值