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的多个文件夹的负载均衡问题的更多相关文章

  1. 工具:从一个文件夹中复制jar到另一个文件夹中

    工具类:从一个文件夹中复制jar到另一个文件夹中 需要的小伙伴可以试一试,很爽哦,有时候真的很需要! 需求:当我们拿到一个maven项目时,而maven项目的jar包都是通过pom.xml文件管理的, ...

  2. python操作txt文件中数据教程[3]-python读取文件夹中所有txt文件并将数据转为csv文件

    python操作txt文件中数据教程[3]-python读取文件夹中所有txt文件并将数据转为csv文件 觉得有用的话,欢迎一起讨论相互学习~Follow Me 参考文献 python操作txt文件中 ...

  3. Windows7系统中nginx与IIS服务器搭建集群实现负载均衡

    10分钟搭建服务器集群——Windows7系统中nginx与IIS服务器搭建集群实现负载均衡   分布式,集群,云计算机.大数据.负载均衡.高并发······当耳边响起这些词时,做为一个菜鸟程序猿无疑 ...

  4. 【转载】C#代码开发过程中如何快速比较两个文件夹中的文件的异同

    在日常的使用电脑的过程中,有时候我们需要比较两个文件夹,查找出两个文件夹中不同的文件以及文件中不同的内容信息,进行内容的校对以及合并等操作.其实使用Beyond Compare软件即可轻松比较,Bey ...

  5. 在Win7中IIS配置Asp.Net虚拟文件夹的方法及错误总结!

    在Win7中IIS配置Asp.Net虚拟文件夹的方法总结! 一.右键[站点].点击[加入虚拟文件夹]或[虚拟应用程序],笔者建议最好建立虚拟应用程序,由于这就跟一个站点差点儿相同.不用考虑路径问题. ...

  6. 【转】如何打开注册表编辑器中存储用户信息的SAM文件?

    sam文件怎么打开 (Security Accounts Manager安全帐户管理器)负责SAM数据库的控制和维护.SAM数据库位于注册表HKLM\SAM\SAM下,受到ACL保护,可以使用rege ...

  7. 根据Excel文件中的内容,修改指定文件夹下的文件名称

    问题:根据Excel文件中内容,把文件名称由第2列,改为第1列.比如:把文件“123.jpg”修改为“1.jpg”.

  8. 10分钟搭建服务器集群——Windows7系统中nginx与IIS服务器搭建集群实现负载均衡

    分布式,集群,云计算机.大数据.负载均衡.高并发······当耳边响起这些词时,做为一个菜鸟程序猿无疑心中会激动一番(或许这是判断是否是一个标准阿猿的标准吧)! 首先自己从宏观把控一下,通过上网科普自 ...

  9. sublime text3中sass编译后保存到指定文件夹

    第一步: tools->builde system->new build system 第二步: 粘贴如下代码到新建文档中: { "cmd": ["sass& ...

随机推荐

  1. 初测WIN10

    WIN10已经发布,通过百度直通车把WIN7升级成了WIN10,改变较大,不太习惯,用着不是很顺手. 吐槽几个问题 1.微软的Visual Studio 2015 Community版本,宣布是免费的 ...

  2. Java操作MongoDB

    上一篇文章: http://www.cnblogs.com/hoojo/archive/2011/06/01/2066426.html 介绍到了在MongoDB的控制台完成MongoDB的数据操作,通 ...

  3. php 判断字符串在另一个字符串中位置

    $email='user@example.com';        //定义字符串$result=strstr($email,'@');         //返回子字符串echo $result; / ...

  4. [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 ...

  5. Selenium 入门

    我本身也是一个初学者,就顺手记录一下自己的成长记录,共勉 1, 登录selenium官方网站,download 相关的插件. http://docs.seleniumhq.org/ 我用的是eclip ...

  6. SQL拼接备份数据库

    在SQLserver使用脚本备份数据库的时候需要注意的问题是: 1.指向的文件名必须是有读写权限. 2.在使用批量数据库备份时候需要根据自己需求选择性备份. -- ================== ...

  7. Ubuntu中设置环境变量详解

    1, 为单一用户:.bashrc: 为每一个运行bash shell的用户执行此文件.当bash shell被打开时,该文件被读取.打开用户主目录下的.bashrc,在这个文件中加入export PA ...

  8. linux设备驱动模型

    尽管LDD3中说对多数程序员掌握设备驱动模型不是必要的,但对于嵌入式Linux的底层程序员而言,对设备驱动模型的学习非常重要. Linux设备模型的目的:为内核建立一个统一的设备模型,从而又一个对系统 ...

  9. mootools和jquery冲突的解决

    mootools-jquery 今天在做EcStore前台的做效果时,由于Jquery的插件比较多,于是就使用了Jquery的插件,但是发现会引起Mootools的冲突. 于是猛找资料,终于找到了,现 ...

  10. bnuoj 33648 Neurotic Network(树形模拟题)

    http://www.bnuoj.com/bnuoj/problem_show.php?pid=33648 [题解]:结果先对MOD*2取模,才能得到结果是否是正确的奇偶问题,得到最后结果之后再对MO ...