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& ...
随机推荐
- MATLAB light material lighting
clf;[X,Y,Z]=sphere(40);colormap(jet)subplot(1,2,1),surf(X,Y,Z),axis off square,shading interplight(' ...
- Google Ajax Library API使用方法(JQuery)
Google Ajax Library API使用方法 1.传统方式: <script src="//ajax.googleapis.com/ajax/libs/jquery/1.7. ...
- jcscriput
关于h5,相比前端的同事们都很了解了吧!h5里面有个canvas,现在用的蛮火.但是canvas里面的代码确实是有点繁多,特别是要对于图形做什么操作的时候...我昨天无意间发现了一个canvas的插件 ...
- Ubuntu下PHP开发配置(新增redis、sphinx、sqlserver相关配置)
由于本人比较懒,所以一般都是用xampp的直接拿来改的…………(当然xampp中一般php版本都是比较新的用的过程中请大家注意哈,可能会和老版本冲突) 此次除了使用xampp外,还扩展了sphinx, ...
- cadence原理图绘制方法
仅记录了绘制好原理图后的一些处理: 1 重写编写元件编号 1)Tool -> Annotate 在Packing选项卡中 的Action 选中 Reset part references ...
- XenServer安装虚拟机---先扩容存放ISO镜像文件
我们都知道xenserver安装后,不管你的盘有多大,只有4G的空间. 故操作是:新建LV卷,可自定义大小 1.vgdisplay #先查看剩余空间 [root@XenServer /]# vgdis ...
- virtualbox centos安装增强工具
系统的,VBoxLinuxAdditions-amd64.run 是用于64位系统的.执行以下命令来安装sh ./VBoxLinuxAdditions-x86.run 5.安装成功后重启系统.
- adbd cannot run as root in production builds
首先必须保证手机已经root过,可以通过以下验证: $ adb shell root@dior:/ $ su root@dior:/ # 1 2 3 执行命令后,$ 变为 # 即 root 成功 但是 ...
- C++实现数字媒体二维图像变换
C++实现数字媒体二维图像变换 必备环境 glut.h 头文件 glut32.lib 对象文件库 glut32.dll 动态连接库 程序说明 C++实现了用glut画正方形,画三角形的功能.并附带放大 ...
- 【BZOJ 1090】[SCOI2003]字符串折叠
Description 折 叠的定义如下: 1. 一个字符串可以看成它自身的折叠.记作S S 2. X(S)是X(X>1)个S连接在一起的串的折叠.记作X(S) SSSS…S(X个S). ...