Hadoop维护

hdfs节点管理

1)增加节点

  1. 启动一个新的系统,设置SSH免密码登录
  2. 在所有节点修改/etc/hosts,增加新节点的主机信息
  3. 安装java运行环境(java-1.8.0-openjdk)
  4. 修改 NameNode slaves的文件增加该节点
  5. 拷贝 NamNode的/usr/local/hadoop到本机
  6. 在该节点启动DataNode
[root@node4 hadoop] ./sbin/hadoop-daemon.sh start datanode
  1. 设置同步带宽并同步数据
[root@node4 hadoop] ./bin/hdfs dfsadmin -setBalancerBandwidth 60000000   #设置同步带宽
[root@node4 hadoop] ./sbin/start-balancer.sh    #同步数据
  1. 在NameNode检查DataNode./bin/hdfs dfsadmin -report

如果使用playbook,则修改文件/etc/hosts/、ansible的主机列表文件hosts、hadoop的slaves,运行playbook就可以完成添加,在新节点启动DataNode即可。

2)修复节点

  • 修复节点与增加节点基本一致
  • 新节点的ip和主机名要与损坏节点的一致
  • 启动服务 /sbin/hadoop-daemon.sh start datanode
  • 数据恢复是自动的
  • 上线以后会自动恢复数据,如果数据量非常巨大,可能需要一定的时间

3)删除节点

  1. 配置NameNode的hdfs-site.xml
  2. 增加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>
  1. 增加exclude配置文件,写入要删除的节点主机名
] vim /usr/local/hadoop/etc/hadoop/exclude
node4
  1. 更新数据./bin/hdfs dfsadmin -refreshNodes

  2. 查看状态 ./bin/hdfs dfsadmin -report

  • Normal:正常状态
  • Decommissioned in Program:数据正在迁移
  • Decommissioned:数据迁移完成
  • 注意:仅当状态变成Decommissioned才能down机下线
  1. 修改文件/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)环境准备

  1. 在NameNode和nfsgw上添加用户和组
groupadd -g 800 nfsuser    #两台主机的用户必须一样
useradd -u 800 -g 800 -r -d /var/hadoop nfsuser
  1. 修改配置文件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主机同步配置文件

  1. 停止所有服务,启动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

  1. 卸载nfs-utils、rpcbind,卸载后需要重启系统

  2. nfsgw配置/etc/hosts,使其可以找到所有hadoop主机

[root@ansible ~] scp /etc/hosts nfsgw:/etc/
  1. nfsgw安装openjdk软件包
[root@nfsgw ~] yum -y install java-1.8.0-openjdk java-1.8.0-openjdk-devel
  1. 同步Name Node的/usr/local/hadoop/到本机
[root@nfsgw ~] rsync -av nn1:/usr/local/hadoop /usr/local/
  1. 配置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)启动服务

  1. 创建缓存目录,授权
mkdir /var/nfstmp
chown nfsuser:nfsuser /var/nfstmp
  1. 日志文件加授权
setfacl -m u:nfsuser:rwx /usr/local/hadoop/logs
  1. 启动portmap,必须先启动,必须使用root用户启动
./sbin/hadoop-daemon.sh --script ./bin/hdfs start portmap
  1. 启动nfs3,必须使用代理用户nfsuser启动
sudo -u nfsuser ./sbin/hadoop-daemon.sh --script ./bin/hdfs start nfs3

附:如果需要重启服务,则应该先停止nfs3,再停止portmap,再启动portmap,再启动nfs3.

  1. 验证测试(使用另外的主机进行挂载)
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,它可以最小化避免重排序写入造成不可预测的吞吐量,未指定同步选项可能会导致上传大文件时出现不可靠行为
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值