这篇文章主要介绍“怎么管理Hadoop”,在日常操作中,相信很多人在怎么管理Hadoop问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”怎么管理Hadoop”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!
均衡器程序是一个hadoop守护进程,它将块从忙碌的datanode移到相对空闲的datanode,从而重新分配块。
在hdfs-site.xml中的dfs.balance.bandwidthPerSec属性指定均衡器在调整集群时,不同节点之间复制数据的带宽大小MB/s。
均衡器坚持块复本放置策略,将复本分散到不同机架,以降低数据损坏率。
它不断移动块,直到集群达到均衡,即每个datanode的使用率(该节点上以使用的空间与空间容量之间的比例)和集群的使用率(集群中已使用的空间与集群的空间容量之间的比率)非常接近,差距不超过给定的阈值。
它不断移动块,直到集群达到均衡,即每个datanode的使用率(该节点上以使用的空间与空间容量之间的比例)和集群的使用率(集群中已使用的空间与集群的空间容量之间的比率)非常接近,差距不超过给定的阈值。
可调用下面指令启动均衡器:
% start-balancer.sh
-threshold参数指定阈值(百分比格式),以判定集群是否均衡。
这个标记是可选的,如果不使用,默认阈值是10%。
在任何时刻,集群中都只运行一个均衡器。
均衡器会一直运行,直到在集群变均衡;之后,均衡器无法移动任何块,或与namenode失去联系。
6、均衡器在不同节点之间复制数据的带宽由哪个属性指定?
为了降低集群负荷、避免干扰其他用户,均衡器被设计为在后台运行。
在不同节点之间复制数据的带宽也是受限的。
默认值是很小的1MB/s,可以通过hdfs-site.xml文件中的dfs.balance.bandwidthPerSec属性指定(单位是字节)。
1)、配置hdfs-site.xml,指向namenode;
2)、配置mapred-site.xml,指向jobtracker;
3)、启动datanode和jobtracker守护进程;
注意:最好指定一些经过审核的节点,新节点包含在其中。(????)
被允许连接到namenode的所有datanode放在一个文件中,文件名称由dfs.hosts属性指定
该文件放在namenode的本地文件系统中,每行对应一个datanode的网络地址(由datanode报告——可以通过namenode的网页查看?????)。
如果需要为一个datanode指定多个网络地址,可将多个网络地址放在一行,由空格隔开。
被允许连接到jobtracker的所有tasktracker也在同一个文件中指定,由mapred.hosts属性指定
通常情况下,由于集群的节点同时运行datanode和tasktracker守护进程,dfs.hosts和mapred.hosts会同时指向一个文件,即include文件。
1)、将新节点的网络地址添加到include中。
2)、运行以下指令,更新namenode的经过审核的一系列datanode集合。
% hadoop dfsadmin -refreshNodes
3)、以新节点更新slaves文件。
这样的话,Hadoop控制脚本会将新节点包括在未来操作之中。
4、启动新的datanode。
5、重启MapReduce集群。
6、检查新的datanode和tasktracker是否都出现在网页界面中。
HDFS能够容忍datanode故障,但这不意味着允许随意终止datanode。
以三复本策略为例,如果同时关闭不同机架上的三个datanode,丢失数据的概率会非常高。
Hadoop的tasktracker也可容忍故障的发生。
如果关闭一个正在运行任务的tasktracker,jobtracker会意识到发生故障,并在其它tasktracker上重新调度任务。
对于HDFS来说,文件名称由dfs.hosts.exclude属性控制;
对于MapReduce来说,文件名称由mapred.hosts.execlude属性控制。
这些文件列出若干未被允许连接到集群的节点。
通常情况下,这两个属性指向同一个文件。
1)、将待解除节点的网络地址添加到exclude文件中。不更新include文件。
2)、重启MapReduce集群,以终止在待解除节点上运行的tasktracker。
3)、执行以下指令,使用一系列新的审核过的datanode来更新namenode设置:
% hadoop dfsadmin -refreshNodes
4)、转到网页界面,查看待解除datanode的管理状态是否已经变为“Decommission In Progress”。
将这些datanode块复制到其它datanode中。
5)、当所有datanode的状态变为“Decommissioned”是,表明所有块都已经复制完毕。关闭已经解除的节点。
6)、从include文件中移除这些节点,并运行以下命令:
% hadoop dfsadmin -refreshNodes
7)、从slaves文件中移除节点。
dfs.hosts和mapred.hosts属性供namenode和jobtracker使用,用来决定可以连接哪个工作节点。
Hadoop控制脚本使用slaves文件执行集群范围的操作,例如重启集群等。
Hadoop守护进程从不使用slaves文件。(???????????)
用户将拟退出的若干datanode告知namenode,方可在这些datanode停机之前将块复制到其它datanode。
仅当tasktracker出现在include文件且不出现在exclude文件中时,才能够连接到jobtracker。
注意:
如果未指定include文件,或include文件为空,则意味着所有节点均在include文件中。
如果一个datanode同时出现在include和exclude文件中,则该节点可以连接,但是很快会被解除委任。
如果未指定include文件或include文件为空,都意味着包含所有节点。
到此,关于“怎么管理Hadoop”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注亿速云网站,小编会继续努力为大家带来更多实用的文章!
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。