hadoop 2.2.0的datanode中存储block的多个文件夹的负载均衡问题
hadoop的分布式文件系统HDFS的存储方式是,将数据分成block,分布式存储在整个hadoop集群的datanode中,每个block默认的大小是64M,这些block文件的具体存储位置是在hadoop的配置文件中定义的,进入/home/hadoop2/hadoop2/etc/hadoop的配置文件目录(hadoop版本为社区版2.2.0):
vi /home/hadoop2/hadoop2/etc/hadoop/hdfs-site.xml <configuration>
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>master:</value>
</property> <property>
<name>dfs.namenode.name.dir</name>
<value>file:/home/hadoop2/dfs/name</value>
</property> <property>
<name>dfs.datanode.data.dir</name>
<value>file:/home/hadoop2/dfs/data</value>
</property> <property>
<name>dfs.replication</name>
<value></value>
</property> <property>
<name>dfs.webhdfs.enabled</name>
<value>true</value>
</property> </configuration>
其中,标黄色的属性dfs.datanode.data.dir为block存储路径的设置选项。
正常情况下,我们如上图中的设置自己设定的路径就可以了;但是,随着hdfs中的数据量越来越大,会出现datanode上block存储路径所在的挂载点空间不足的情况,本文中的情况就是 /home 挂载点的剩余空间即将不足了,但是在该datanode主机上,/ 挂载点还有非常多的剩余空间,我们希望将数据存储到 / 挂载点的目录下,防止 /home 挂载点被塞满。
这样我们首先需要切换到root管理员用户下,因为 / 挂载点的拥有者是root,我们的hadoop2用户对该目录没有足够的权限。接着我们在该目录下创建一个存储block的文件目录:
su -mkdir /hdfs/data
这样还不能直接设置路径,由于我们是用root用户创建的目录,该目录的拥有者和组群都是root,hadoop2用户没有足够权限,如果设置为datanode的block存储路径,将会抛出异常,导致datanode进程关闭,hadoop集群无法正常启动。我们需要更改/hdfs目录及其子目录的拥有者和组群为hadoop2,如下:
cd / chown hadoop2:hadoop2 -R /hdfs
chown命令用于修改所有者,其中,hadoop2:hadoop2为拥有者和组群,-R为迭代修改所有子目录和文件。
这样我们就可以修改hdfs-site.xml文件的datanode的属性为多个路径:
<property>
<name>dfs.datanode.data.dir</name>
<value>file:///home/hadoop2/dfs/data,/hdfs/data</value>
</property>
路径之间只需用逗号 “ , ”分隔就可以了。
这样设置后,重新启动集群的dfs,bin/start-dfs.sh,通过jps命令查看集群的相关进程是否都正常启动:
jps HQuorumPeer
SecondaryNameNode
NodeManager
ResourceManager
Bootstrap
NameNode
DataNode
HRegionServer
HMaster
Jps
标黄色的为启动dfs后必须存在的进程,其他的进程为Hbase相关进程。这样设置启动以后,再往HDFS中写入数据时,产生的block数据块就会分别写入两个不同的目录中,均匀分布,不会出现一个路径的挂载空间不足的情况,如果再次占满,可以再次挂载新的磁盘,继续添加路径。
另外,不同的datanode中,block的路径属性可以设置为不相同,不影响集群的正常运行。
转载请注明出处:http://www.cnblogs.com/bxljoy/p/3863539.html
hadoop 2.2.0的datanode中存储block的多个文件夹的负载均衡问题的更多相关文章
- 工具:从一个文件夹中复制jar到另一个文件夹中
工具类:从一个文件夹中复制jar到另一个文件夹中 需要的小伙伴可以试一试,很爽哦,有时候真的很需要! 需求:当我们拿到一个maven项目时,而maven项目的jar包都是通过pom.xml文件管理的, ...
- python操作txt文件中数据教程[3]-python读取文件夹中所有txt文件并将数据转为csv文件
python操作txt文件中数据教程[3]-python读取文件夹中所有txt文件并将数据转为csv文件 觉得有用的话,欢迎一起讨论相互学习~Follow Me 参考文献 python操作txt文件中 ...
- Windows7系统中nginx与IIS服务器搭建集群实现负载均衡
10分钟搭建服务器集群——Windows7系统中nginx与IIS服务器搭建集群实现负载均衡 分布式,集群,云计算机.大数据.负载均衡.高并发······当耳边响起这些词时,做为一个菜鸟程序猿无疑 ...
- 【转载】C#代码开发过程中如何快速比较两个文件夹中的文件的异同
在日常的使用电脑的过程中,有时候我们需要比较两个文件夹,查找出两个文件夹中不同的文件以及文件中不同的内容信息,进行内容的校对以及合并等操作.其实使用Beyond Compare软件即可轻松比较,Bey ...
- 在Win7中IIS配置Asp.Net虚拟文件夹的方法及错误总结!
在Win7中IIS配置Asp.Net虚拟文件夹的方法总结! 一.右键[站点].点击[加入虚拟文件夹]或[虚拟应用程序],笔者建议最好建立虚拟应用程序,由于这就跟一个站点差点儿相同.不用考虑路径问题. ...
- 【转】如何打开注册表编辑器中存储用户信息的SAM文件?
sam文件怎么打开 (Security Accounts Manager安全帐户管理器)负责SAM数据库的控制和维护.SAM数据库位于注册表HKLM\SAM\SAM下,受到ACL保护,可以使用rege ...
- 根据Excel文件中的内容,修改指定文件夹下的文件名称
问题:根据Excel文件中内容,把文件名称由第2列,改为第1列.比如:把文件“123.jpg”修改为“1.jpg”.
- 10分钟搭建服务器集群——Windows7系统中nginx与IIS服务器搭建集群实现负载均衡
分布式,集群,云计算机.大数据.负载均衡.高并发······当耳边响起这些词时,做为一个菜鸟程序猿无疑心中会激动一番(或许这是判断是否是一个标准阿猿的标准吧)! 首先自己从宏观把控一下,通过上网科普自 ...
- sublime text3中sass编译后保存到指定文件夹
第一步: tools->builde system->new build system 第二步: 粘贴如下代码到新建文档中: { "cmd": ["sass& ...
随机推荐
- 初测WIN10
WIN10已经发布,通过百度直通车把WIN7升级成了WIN10,改变较大,不太习惯,用着不是很顺手. 吐槽几个问题 1.微软的Visual Studio 2015 Community版本,宣布是免费的 ...
- Java操作MongoDB
上一篇文章: http://www.cnblogs.com/hoojo/archive/2011/06/01/2066426.html 介绍到了在MongoDB的控制台完成MongoDB的数据操作,通 ...
- php 判断字符串在另一个字符串中位置
$email='user@example.com'; //定义字符串$result=strstr($email,'@'); //返回子字符串echo $result; / ...
- [Solved] install Gentoo in VBox: network interface eth0 does not exist
ERROR:interface eth0 does not exist; ensure that you have loaded the correct kernel moudle for your ...
- Selenium 入门
我本身也是一个初学者,就顺手记录一下自己的成长记录,共勉 1, 登录selenium官方网站,download 相关的插件. http://docs.seleniumhq.org/ 我用的是eclip ...
- SQL拼接备份数据库
在SQLserver使用脚本备份数据库的时候需要注意的问题是: 1.指向的文件名必须是有读写权限. 2.在使用批量数据库备份时候需要根据自己需求选择性备份. -- ================== ...
- Ubuntu中设置环境变量详解
1, 为单一用户:.bashrc: 为每一个运行bash shell的用户执行此文件.当bash shell被打开时,该文件被读取.打开用户主目录下的.bashrc,在这个文件中加入export PA ...
- linux设备驱动模型
尽管LDD3中说对多数程序员掌握设备驱动模型不是必要的,但对于嵌入式Linux的底层程序员而言,对设备驱动模型的学习非常重要. Linux设备模型的目的:为内核建立一个统一的设备模型,从而又一个对系统 ...
- mootools和jquery冲突的解决
mootools-jquery 今天在做EcStore前台的做效果时,由于Jquery的插件比较多,于是就使用了Jquery的插件,但是发现会引起Mootools的冲突. 于是猛找资料,终于找到了,现 ...
- bnuoj 33648 Neurotic Network(树形模拟题)
http://www.bnuoj.com/bnuoj/problem_show.php?pid=33648 [题解]:结果先对MOD*2取模,才能得到结果是否是正确的奇偶问题,得到最后结果之后再对MO ...