整套大数据学习资料(视频+笔记)百度网盘无门槛下载:http://www.edu360.cn/news/content?id=3377

10.3.2委任和解除节点

Hadoop集群的管理员经常需要向集群中添加节点,或从集群中移除节点。 例如,为了扩大存储容量,需要委任节点。相反的,如果想要缩小集群规 模,则需解除节点。如果某些节点表现反常,例如故障率过高或性能过于 低下,则需要解除该节点。

通常情况下,节点同时运行datanode ,和tasktracker,因而两者一般同时被 委任或解除。

1.委任新节点

委任一个新节点非常简单。首先,配置hdfs-site.xml文件,指向namenode; 其次,配置mapred-site.xml文件,指向jobtracker;最后,启动datanode和 jobtracker守护进程。然而,预先指定一些经过审核的节点以从中挑选新节 点仍不失为一种好的方法。

随便允许一台机器以datanode身份连接到namenode是不安全的,因为该机 器很可能会访问未授权的数据。此外,这种机器并非真正的datanode,不 在集群的控制之下,随时可能停止,从而导致潜在的数据丢失。(想象一 下,如果有多台这类机器连接到集群,而且某一个块的全部复本恰巧只存 储在这类机器上,安全性如何?)即使这些机器都在本机构的防火墙之内, 这种做法的风险也很髙。如果配置错误,datanode(以及tasktracker)可能会 被所有集群管理。

被允许连接到namenode的所有datanode放在一个文件中,文件名称由 dfs. hosts属性指定。该文件放在namenode的本地文件系统中,每行对应 一个datanode的网络地址(由datanode报告 可以通过namenode的网页查看)。如果需要为一个datanode指定多个网络地址,可将多个网络地址放 在一行,由空格隔开。

类似的,可能连接到jobtracker的各个tasktracker也在同一个文件中指定 (该文件的名称由mapred.hosts属性指定。在通常情况下,由于集群中的 节点同时运行datanode和tasktracker守护进程,dfs.hosts和 mapred.hosts会同时指向一个文件,即include文件。

dfs.hosts属性和mapred.hosts属性指定的(一个或多个)文件不同 于slaves文件。前者供namenode和jobtracker使用,用于决定可以 连接哪些工作节点。Hadoop控制脚本使用slaves文件执行面向整个 集群范围的操作,例如重启集群等。Hadoop守护进程从不使用slaves文件。

向集群添加新节点的步骤如下。

(1)将新节点的网络地址添加到办文件中。

(2)运行以下指令,将经过审核的一系列datanode集合更新至 namenode 信息:

% hadoop dfsadmin -refreshNodes

(3)运行以下指令,将经过审核的一系列tasktracker信息更新至 jobtracker:

% hadoop mradmin -refreshNodes

(4)以新节点更新s/avM文件。这样的话,Hadoop控制脚本会将新节 点包括在未来操作之中。

(5)启动新的 datanode 和 tasktracker。

(6)检查新的datanode和tasktracker是否都出现在网页界面中。

HDFS不会自动将块从旧的datanode移到新的datanode以平衡集群。用户 需要自行运行均衡器,详情参考10.1.4节对均衡器的讨论。

2.解除旧节点

HDFS能够容忍datanode故障,但这并不意味着允许随意终止datanode。以 三复本策略为例,如果同时关闭不同机架上的三个datanode,则数据丢失的概率会非常高。正确的方法是:用户将拟退出的若干datanode告知 namenode,Hadoop系统就可在这些datanode停机之前将块复制到其他datanode。

 有了 tasktracker的支持,Hadoop对故障的容忍度更高。如果关闭一个正在 运行任务的tasktracker, jobtracker会检测到故障,并在其他tasktracker上 重新调度任务。

若要解除一个节点,则该节点需要出现在办文件。对于HDFS来说, 文件名称由dfs. hosts, exclude属性控制;对于MapReduce来说,文件 名称由mapred.hosts.exclude属性控制。这些文件列出若干未被允许连 接到集群的节点。通常情况下,这两个属性指向同一个文件。

判断一个tasktracker能否连接到jobtracker非常简单。仅当tasktracker出现 在include文件且不出现在exclude文件中时,才能够连接到jobtracker。注 意:如果未指定include文件,或include文件为空,则意味着所有节点都 包含在文件中。

HDFS的规则稍有不同。如果一个datanode同时出现在include和exclude文件中,则该节点可以连接,但是很快会被解除委任。表10-4总结了 datanode的不同组合方式。与tasktracker类似,如果未指定include文件或include 文件为空,都意味着包含所有节点。

10-4. HDFS 的 include 文件和 exclude 文件

节点是否出现在include文件中

节点是否出现在exclude文件中

解释

节点无法连接

节点无法连接

节点可连接

节点可连接,将被解除

从集群中移除节点的步骤如下。

(1)将待解除节点的网络地址添加到exclude文件中,不更新include文件。

(2)执行以下指令,使用一组新的审核过的datanode来更新namenode 设置:

% hadoop dfsadmin -refreshNodes

(3)使用一组新的审核过的datanode来更新jobtracker设置:

% hadoop mradmin -refreshNodes

(4)转到网页界面,査看待解除datanode的管理状态是否已经变为“正 在解除”(Decommission In Progress),因为此时相关的 datanode 正 在被解除过程之中。这些datanode会把它们的块复制到其他 datanode 中。

(5)当所有datanode的状态变为“解除完毕”(Decommissioned)时,表 明所有块都已经复制完毕。关闭已经解除的节点。

(6)从办文件中移除这些节点,并运行以下命令:

% hadoop dfsadmin -refreshNodes

% hadoop mradmin -refreshNodes

(7)从文件中移除节点。

转载请注明:全栈大数据 » 10.3.2委任和解除节点

喜欢 (0)or分享 (0)
发表我的评论
取消评论

表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址