192.168.1.60 nn01 # 角色:namenode、secondarynamenode、resourcemanager
192.168.1.61 node1 # 角色:datanode、nodemanager
192.168.1.62 node2 # 角色:datanode、nodemanager
192.168.1.63 node3 # 角色:datanode、nodemanager
一、HDFS基本使用:
# hadoop命令和shell基本类似
在nn01上操作
cd /usr/local/hadoop
./bin/hadoop fs -mkdir /abc # 在集群中创建/abc目录,fs表示集群命令
./bin/hadoop fs -ls / # 查看 / 下的所有文件
./bin/hadoop fs -touchz /file # 创建文件,是touchz不是touch
./bin/hadoop fs -put 主机目录 集群目录 # 将本地文件上传到集群中
./bin/hadoop fs -get 集群目录 本机目录 # 从集群中下载文件到本地
# 案例:统计单词个数
cd /usr/local/hadoop
./bin/hadoop fs -mkdir /input # 在集群中创建目录
./bin/hadoop fs -put *.txt /input # 将本地文件上传到集群中
./bin/hadoop jar ./share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.7.jar wordcount /input/output # 执行系统提供的程序
./bin/hadoop fs -cat /output/* # 查看集群中对应文件内容
二、HDFS节点管理
1、添加datanode
准备主机192.168.1.64 node4
在node4上安装openjdk-devel # yum -y install java-1.8.0-openjdk-devel
设置nn01对node4的免密登陆 # ssh-copy-id 192.168.1.64
修改nn01的/etc/hosts文件,将node4添加进去,并且将这个文件同步给node4
修改nn01(namenode所在节点)的slave文件,将node4添加进去
将nn01上的hadoop文件拷贝到node4上 # scp /usr/local/hadoop root@node4:/usr/local
在node4上运行 ./sbin/hadoop-daemon.sh start datanode
# 将node4添加到集群中,node4是没有数据的
# 需要从其他主机中获取一部分数据,从而保证整个集群的一致性
# 在node4上执行如下命令,设置同步带宽。
./bin/hdfs dfsadmin -setBalancerBandwidth 60000000
./sbin/start-balancer.sh
2、修复
如果出现出现死机的情况,只需要重启主机然后重启对应的服务
如果主机磁盘损坏,则需要找一台新的主机加入到集群中,配置的主机名和ip要和损坏的主机一致,需要在新的主机上设置同步带宽,启动服务,数据会自动同步。(本质上相当于增加了一台新的节点)
3、删除
修改nn01(namenode)上slave中的node4
修改nn01上的hdfs-site.xml
vim /usr/local/hadoop/etc/hadoop/hdfs-site.xml
<property>
<name>dfs.hosts.exclude</name>
<value>/usr/local/hadoop/etc/hadoop/exclude</value>
</property>
vim /usr/local/hadoop/etc/hadoop/exclude
node4 # 将node4添加到这个文件中
./bin/hdfs dfsadmin -refreshNodes # 为了迁移node4上的数据,(在nn01上执行)
./bin/hdfs dfsadmin -report # 查看集群主机状态,(在nn01上执行)
# 以下是node4的信息
Name: 192.168.1.64:50010 (node4)
Hostname: node4
Decommission Status : Decommissioned # 主机状态变为Decommissioned,表示数据迁移成功
# 关闭node4
./sbin/hadoop-daemon.sh stop datanode
三、yarn节点管理
1、添加
和添加hdfs节点一样,只需启动nodemanager就可以了
./sbin/yarn-daemon.sh start nodemanager
2、删除(关闭nodemanager )
./sbin/yarn-daemon.sh stop nodemanager
./bin/yarn node -list # 查看nodemanager状态,删除之后需要过一段时间节点才会消失