hdfs节点管理
1)增加节点
- 启动一个新的系统,设置SSH免密码登录
- 在所有节点修改/etc/hosts,增加新节点的主机信息
- 安装java运行环境(java-1.8.0-openjdk)
- 修改 NameNode slaves的文件增加该节点
- 拷贝 NamNode的/usr/local/hadoop到本机
- 在该节点启动DataNode
[root@node4 hadoop] ./sbin/hadoop-daemon.sh start datanode
- 设置同步带宽并同步数据
[root@node4 hadoop] ./bin/hdfs dfsadmin -setBalancerBandwidth 60000000 #设置同步带宽
[root@node4 hadoop] ./sbin/start-balancer.sh #同步数据
- 在NameNode检查DataNode
./bin/hdfs dfsadmin -report
如果使用playbook,则修改文件/etc/hosts/
、ansible的主机列表文件hosts
、hadoop的slaves
,运行playbook就可以完成添加,在新节点启动DataNode即可。
2)修复节点
- 修复节点与增加节点基本一致
- 新节点的ip和主机名要与损坏节点的一致
- 启动服务
/sbin/hadoop-daemon.sh start datanode
- 数据恢复是自动的
- 上线以后会自动恢复数据,如果数据量非常巨大,可能需要一定的时间
3)删除节点
- 配置NameNode的hdfs-site.xml
- 增加dfs.hosts.exclude配置
] vim /usr/local/hadoop/etc/hadoop/hdfs-site.xml
<property>
<name>dfs.hosts.exclude</name>
<value>/usr/local/hadoop/etc/hadoop/exclude</value>
</property>
- 增加exclude配置文件,写入要删除的节点主机名
] vim /usr/local/hadoop/etc/hadoop/exclude
node4
-
更新数据
./bin/hdfs dfsadmin -refreshNodes
-
查看状态
./bin/hdfs dfsadmin -report
Normal
:正常状态Decommissioned in Program
:数据正在迁移Decommissioned
:数据迁移完成- 注意:仅当状态变成Decommissioned才能down机下线
- 修改文件
/etc/hosts/
、ansible的主机列表文件hosts
、hadoop的slaves
,运行playbook
yarn节点管理
- 增加节点:安装服务,配置/etc/hosts,启动nodemanager
[root@node4 hadoop] ./sbin/yarn-daemon.sh start nodemanager #在yarn添加该节点
- 删除节点:关闭服务就行
[root@node4 hadoop] ./sbin/yarn-daemon.sh stop nodemanager #删除节点
NFS网关
1)介绍
nfs网关用途
- 用户可以通过操作系统兼容的本地NFSv3客户端来浏览HDFS文件系统
- 用户可以从HDFS文件系统下载文档到本地文件系统
- 用户可以通过挂载点直接流化数据,支持文件附加, 但是不支持随机写
- NFS网关支持NFSv3和允许HDFS作为客户端文件系统的一部分被挂载
特性 注意事项
- HDFS超级用户NameNode是与进程本身具有相同标识的用户,超级用户可以执行任何操作,因为权限检查永远不会认为超级用户失败
注意事项
- 在非安全模式下,运行网关进程的用户是代理用户
- 在安全模式下, Kerberos keytab中的用户是代理用户
配置代理用户
- 在 Namenode和 NFSGW上添加代理用户
- 代理用户的UID,GID,用户名必须完全相同
- 如果因特殊原因客户端的用户和NFS网关的用户UID不能保持致,需要我们配置ηfs.map的静态映射关系
- nfs map
uid 10 100 # Map the remote uid 10 the local UID 100
gid 11 101 # Map the remote GID 1l to the local GID 101
2)环境准备
- 在NameNode和nfsgw上添加用户和组
groupadd -g 800 nfsuser #两台主机的用户必须一样
useradd -u 800 -g 800 -r -d /var/hadoop nfsuser
- 修改配置文件core-site.xml
- 这里的{代理用户}是主机上真实运行的nfs3的用户
- 在非安全模式下,运行nfs网关的用户为代理用户
- groups为挂载点用户所使用的组
- hosts为挂载点主机地址
] vim core-site.xml
<property>
<name>hadoop.proxyuser.nfsuser.groups</name> #授权代理用户组,*代表所有
<value>*</value>
</property>
<property>
<name>hadoop.proxyuser.nfsuser.hosts</name> #授权代理主机,*代表所有
<value>*</value>
</property>
使用playbook为所有hadoop主机同步配置文件
- 停止所有服务,启动hdfs,确认集群状态
[root@nn1 hadoop] ./sbin/stop-all.sh
[root@nn1 hadoop] ./sbin/start-dfs.sh
[root@nn1 hadoop] ./bin/hdfs dfsadmin -report #查看DataNode
[root@all hadoop] jps #所有主机确认角色
3)配置nfsgw
-
卸载nfs-utils、rpcbind,卸载后需要重启系统
-
nfsgw配置/etc/hosts,使其可以找到所有hadoop主机
[root@ansible ~] scp /etc/hosts nfsgw:/etc/
- nfsgw安装openjdk软件包
[root@nfsgw ~] yum -y install java-1.8.0-openjdk java-1.8.0-openjdk-devel
- 同步Name Node的/usr/local/hadoop/到本机
[root@nfsgw ~] rsync -av nn1:/usr/local/hadoop /usr/local/
- 配置hdfs-site.xml
-
nfs.exports.allowed.hosts
- 默认情况下,export可以被任何客户端挂载。为了更好的控制访问,可以设置属性。值和字符串对应机器名和访问策略,通过空格来分割。机器名的格式可以是单一的主机、Java的正则表达式或者IPv4地址
- 使用rw或ro可以指定导出目录的读写或只读权限。如果访问策略没被提供,默认为只读。每个条目使用”;“来分割
-
nfs.dump.dir
- 用户需要更新文件转储目录参数.NFS客户端经常重新安排写操作,顺序的写操作会随机到达NFS网关。这个 目录常用于临时存储无序的写操作。对于每个文件, 无序的写操作会在他们积累在内存中超过一定阈值(如, 1M)时被转储。需要确保有足够的空间的目录
- .如:应用上传10个100M,那么这个转储目录推荐1GB左右的空间,以便每个文件都发生最坏的情况。只有NFS网关需要在设置该属性后重启
[root@nfsgw ~] vim etc/hadoop/hdfs-site.xml
<property>
<name>nfs.exports.allowed.hosts</name>
<value>* rw</value>
</property>
<property>
<name>nfs.dump.dir</name>
<value>/var/nfstmp</value>
</property>
4)启动服务
- 创建缓存目录,授权
mkdir /var/nfstmp
chown nfsuser:nfsuser /var/nfstmp
- 日志文件加授权
setfacl -m u:nfsuser:rwx /usr/local/hadoop/logs
- 启动portmap,必须先启动,必须使用root用户启动
./sbin/hadoop-daemon.sh --script ./bin/hdfs start portmap
- 启动nfs3,必须使用代理用户nfsuser启动
sudo -u nfsuser ./sbin/hadoop-daemon.sh --script ./bin/hdfs start nfs3
附:如果需要重启服务,则应该先停止nfs3,再停止portmap,再启动portmap,再启动nfs3.
- 验证测试(使用另外的主机进行挂载)
yum install nfs-utils
showmount -e 192.168.1.65
mount -t nfs -o vers=3,proto=tcp,nolock,noatime,noacl,sync 192.168.1.65:/ /mnt/
参数:
- 目前NFS只能使用v3版本
vers=3
- 仅使用TCP作为传输协议
proto=tcp
- 不支持NLM
nolock
- 禁用 access time的时间更新
noatime
- 禁用ac扩展权限
noacl
- 建议使用安装选项
sync
,它可以最小化避免重排序写入造成不可预测的吞吐量,未指定同步选项可能会导致上传大文件时出现不可靠行为