Hadoop节点的增删

        1.增加新的节点

        添加一个新的节点虽然只用配置hdfs-site.xml文件和mapred-site.xml文件,但最好还是配置一个授权节点列表。

        如果允许任何机器都可以连接到NameNode上并充当DataNode,这是存在安全隐患的,因为这样的机器可能能够获得未授权文件的访问权限。此外这样的机器并不是真正的DataNode,但它可以存储数据,却又不在集群的控制之下,并且任何时候都有可能停止运行,从而造成数据丢失。由于配置简单或存在配置错误,即使在防火墙内这样的处理也可能存在风险,因此在集群中也要对DataNode进行明确的管理。

        要向集群添加新的节点,需要执行以下步骤:

        1.向include文件中添加新节点的网络地址;

        2.使用以下命令更新NameNode中具有连接权限的DataNode集合:hadoop dfsadmin refreshNodes

        3.更新带有新节点的slaves文件,以便Hadoop控制脚本在执行后续操作时可以使用更新后的slaves文件中的所有节点;

        4.启动新的数据节点;

        5.重新启动MapReduce集群

        6.检查网页用户界面是否有新的DataNode和TaskTracker.

        需要注意的是,HDFS不会自动将旧DataNode上的数据转移到新的DataNode中,但我们可以运行平衡器命令进行集群均衡。


        2.删除节点

        撤销数据节点时要避免数据的丢失。在撤销前,需要先通知NameNode要撤销的节点,然后在撤销此节点前将上面的数据块转移出去。而如果关闭了正在运行的TaskTracker,那么JobTracker会意识到错误并将任务分配到其他TaskTracker中去。

        撤销节点过程由exclude文件控制:对于HDFS来说,可以通过dfs.hosts.exclude属性来控制;对于MapReduce来说。可以由mapred.hosts.exclude来设置。

        需要从集群中撤销节点,需要执行以下步骤:

        1.将需要撤销的节点的网络地址增加到exclude文件中,注意,不要在此时更新include文件;

        2.重新启动MapReduce集群来终止已撤销节点的TaskTracker;

        3.用以下命令更新具有新的许可DataNode节点集的NameNode:hadoop  dfsadmin  -refreshNode

        4.进入网络用户界面,先检查已撤销的DataNode的管理状态是否变为"DecommissionInProgress",然后把数据块复制到集群的其他DataNode中;

        5.当所有DataNode报告其状态为“Decommissioned”时,所有数据块也都会被复制,此时可以关闭已撤销的节点;

        6.从include中删除节点网络地址,然后再次运行命令:Hadoop dfsadmin -refreshNodes

        7.从slaves文件中删除节点。

猜你喜欢

转载自blog.csdn.net/xiaoyutongxue6/article/details/79842567