我们在执行wordcount的时候看到报错,提示机器上的系统时间可能不同步,检查系统时间和时区。
可以看到我们遇到报错,提示 机器上的系统时间可能不同步,检查系统时间和时区。我们来结局这个问题,思路是查看每个节点的时间并进行同步。
master:
slave1:
slave2:
看到我们三个节点的时间确定是不同步的,我们来进行同步,同步的方式:找一个机器,作为时间服务器,所有的机器与这台集群时间进行定时同步,比如,每隔十分钟,同步一次时间。
检查 ntp 是否安装
# rpm -qa|grep ntp
我们先安装ntp命令
# yum install -y ntp
同步互联网时间:
# ntpdate -u ntp.api.bz
修改ntp配置文件
# vim /etc/ntp.conf
修改内容如下
修改一,授权192.168.115.0-192.168.115.255网段上的所有机器可以从这台机器上查询和同步时间;
修改二,集群在局域网中,不使用其他互联网上的时间
注释掉以下内容:
server 0.centos.pool.ntp.org iburst
server 1.centos.pool.ntp.org iburst
server 2.centos.pool.ntp.org iburst
server 3.centos.pool.ntp.org iburst
修改/etc/sysconfig/ntpd 文件
# vim /etc/sysconfig/ntpd
增加内容如下(让硬件时间与系统时间一起同步)
SYNC_HWCLOCK=yes
重新启动ntpd服务
# service ntpd status
# service ntpd start
设置ntpd服务开机启动
# chkconfig ntpd on
设置定时任务
# crontab -e
设置定时任务如下: 我这里设置1分钟同步一次,可以自己修改
*/1 * * * * /usr/sbin/ntpdate master(主机名)
关闭从节点上(slave1、slave2)的ntp服务和自启
# systemctl stop ntpd
# systemctl disable ntpd
在从节点(slave1、slave2)编写定时任务
# crontab -e
*/1 * * * * /usr/sbin/ntpdate master(主机名)
我们可以尝试修改机器时间
1 分钟后查看机器是否与时间服务器同步
可以看到从节点的时间已经向主节点同步了,问题解决。
我们首先需要删除输出目录,否则会报错提示已有该目录
# hdfs dfs -rm -r /output/data
我们再执行以下命令:
# hadoop jar /usr/cstor/Hadoop/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.10.2.jar wordcount /input/data.txt /output/data
运行成功,我们来查看一下结果
# hdfs dfs -cat /output/data/part-r-00000