本套技术专栏是作者(秦凯新)平时工作的总结和升华,通过从真实商业环境抽取案例进行总结和分享,并给出商业应用的调优建议和集群环境容量规划等内容,请持续关注本套博客。QQ邮箱地址:1120746959@qq.com,如有任何学术交流,可随时联系。
1 节点扩容
-
配置/etc/hosts添加新节点的IP和主机名
-
配置etc/hadoop/slaves添加新节点的主机名
-
配置hdfs-site.xml,设置节点平衡带宽设置(默认值1M,下面设置为10M)
dfs.datanode.balance.bandwidthPerSec 20971520 -
在新节点上执行datanode
hadoop-daemon.sh start datanode复制代码
-
数据平衡,让各个DataNode中的数据均匀分布,threshold是平衡阈值,默认值允许10%的差异,值越小越平衡,但花费的时间会越长,平衡时先通过NameNode提供的元数据进行平衡规划,然后开启多线程将数据从老节点移到新节点。
start-balancer.sh -threshold 5复制代码
-
设置平衡时使用的网络带宽(字节/秒),在网络带宽受限的情况下,平衡速度较慢,需要耐心等待一段时间才能观察到效果
hdfs dfsadmin -setBalancerBandwidth 20971520复制代码
2 节点缩容
-
在namenode中打开hdfs-site.xml,设置节点排除文件的位置(必须是绝对路径),在excludes文件中添加要排除的节点主机名,一行一个
dfs.hosts.exclude /usr/local/hadoop/etc/hadoop/excludes -
更新节点配置,然后在Hadoop站点上很快就能看到Decommission正在进行,此时NameNode会检查并将数据复制到其它节点上以恢复副本数(要移除的节点上的数据不会被删除,如果数据比较敏感,要手动删除它们)
NameNode中执行下面命令,强制重新加载配置:
hdfs dfsadmin -refreshNodes复制代码
-
查看资源汇报情况
hdfs dfsadmin -report复制代码
-
等状态变成Decommissioned后就可以关闭这个节点了,可在要移除的节点上运行相应的关闭命令,几分钟后,节点将从Decommissioned进入Dead状态。
hadoop-daemon.sh stop datanode复制代码
-
更新集群配置(所有节点同步)
NameNode的excludes文件及slaves文件、hosts文件中去掉已经移除的主机名。复制代码
4 自动数据转移,默认死亡时间
datenode 与namenode 之间的通信是通过心跳的机制,当超过一定的时间则默认为datanode 为死亡 ,默认的死亡的事件为:10分钟+30秒 ,可同一下配置文件配置:
hdfs-site.xml:
heartbeat.recheck.interval 300 设置的大小 复制代码 dfs.heartbeat.interval 5 默认值
总结
最近需要进行集群资源规划,不得进行Hadoop伸缩节点。
秦凯新 于深圳