手动处理datanode磁盘间使用不均的问题

http://wiki.apache.org/hadoop/FAQ#On_an_individual_data_node.2C_how_do_you_balance_the_blocks_on_the_disk.3F

关于这个问题,Hadoop暂时未提供自动解决的方案,已经提上日程,jira上有记录。

hadoop wiki上提到了手动处理的解决方案。如上链接如示。

问题描述,一个datanode节点的datanode.dir会配置多个磁盘或目录,而如果因某些原因,如坏盘更换或磁盘选择策略的问题,

造成某一些磁盘目录使用很多,而某些或某个盘的使用率很低,这个时候可以手动进行处理。

1。先把这个datanode节点的datanode进程停掉,这样就不写入数据,才可以进行下一步操作。

2。例如从/data1/ 把block move到/data2/ 则尽可能保证目录结构一致,wiki中提到新版本中子目录不一致也不行。

mv的时候,要注意权限,不要使用root用户mv完之后,不改权限,这也会造成无法读取的问题。

我自己测试的环境cdh5.0.2 hadoop2.3

data.dir /hdp2/dfs/data ,新添加一个路径,/hdp2/dfs/data2

因为data2目录是空的,如果启动datanode 会对该目录进行初始化,如创建 version文件等。

我直接在data2中创建了数据池等目录到finalized ,然后把data下面第一层的block和meta挪了过来,没有把subdir目录挪过来。

我直接启动了datanode进程后,发现我挪过来的数据被删除了(为什么)

不过还好,副制因子是2,这些数据会同步过来。我停掉datanode进程,把subdir10(这里面有数据)直接mv到/data2相应的目录下,

再次启动datanode进程,webui上检查发现,block是被发现了。

为安全起见,在生产环境中操作,一定要对数据进行一下备份,或者是先上传一个大文件,然后针对这个文件的blocks进行测试后再大规模处理。

时间: 2024-10-09 20:02:19

手动处理datanode磁盘间使用不均的问题的相关文章

Linux下手动挂载新增磁盘

1.发现磁盘 新添加磁盘后,虚拟机需要重启,惠普服务器需要给这块盘重新做下raid,才可以识别到. 2.查看磁盘:fdisk -l [[email protected] ~]# fdisk -l Disk /dev/sda: 88.0 GB, 87960846336 bytes 255 heads, 63 sectors/track, 10693 cylinders Units = cylinders of 16065 * 512 = 8225280 bytes Sector size (log

DataNode启动优化改进:磁盘检测并行化

前言 在本篇文章中,本人打算聊一个大家平常都会遇见到的场景:HDFS中的DataNode启动的问题.DataNode启动不是一件非常迅速的事情吗?这其中能有大问题?看到这里,如果你也是这么想的话,那说明一点:你所运维的集群碰到的异常场景还不太多.本文所要讲述的问题并不是DataNode无法启动的问题,而是它启动有时会过慢的问题.DataNode进程启动过慢造成的直接影响是其上数据的服务延时.集群规模在一个很大规模量级的情况下,如果出现了大量DataNode慢启动的现象,这将会对集群本身对外提供服

第八章、Linux 磁盘与文件系统管理

第八章.Linux 磁盘与文件系统管理 1. 认识 EXT2 文件系统 1.1 硬盘组成与分割的复习 1.2 文件系统特性: 索引式文件系统 1.3 Linux 的 EXT2 文件系统(inode): data block, inode table, superblock, dumpe2fs 1.4 与目录树的关系 1.5 EXT2/EXT3 文件的存取与日志式文件系统的功能 1.6 Linux 文件系统的运行 1.7 挂载点的意义 (mount point) 1.8 其他 Linux 支持的文

鸟哥的Linux私房菜 基础学习篇读书笔记(8):Linux磁盘与文件系统管理(1)

Linux最传统的磁盘文件系统就是EXT2了(当然现在已经升级成为EXT4),这一章主要介绍Linux的磁盘文件系统,而这篇文章主要聚焦的是Linux的EXT2文件系统. 我们都知道磁盘分区完成之后要进行格式化,之所以要格式化就是因为每种操作系统所使用的文件系统格式是不一样的.在Linux中,主要就是EXT2这种文件系统格式了,默认情况下Windows操作系统是无法识别Linux的EXT2文件系统.通常情况下,一个分区就是一个文件系统,但是由于新技术的利用,我们可以将多个分区合成一个文件系统,因

linux下磁盘管理机制--RAID

RAID(Redundant Array Of Independent Disks):独立磁盘冗余阵列.RAID的最初出现的目的是为了解决中小型企业因经费原因使用不起SCSCI硬盘,而不得不使用像IDE较廉价的磁盘情况下,将多块IDE磁盘通过某种机制组合起来,使得IDE磁盘在一定程度上提高读写性能的一种机制.当然,现在也可以将SCSCI类的磁盘也可以做成RAID来提高磁盘的读写性能. 一.RAID的级别 RAID机制通过级别来RAID级别来定义磁盘的组合方式.常见的级别有:RAID0,RAID1

手动部署ceph

1. 手动格式化各个磁盘,比如/dev/sdb1为数据分区,/dev/sdb2为日志分区. 2. mkallxfs 3. 修改/etc/ceph/ceph.conf文件: [global] auth supported = none osd pool default size = 2 osd crush chooseleaf type = 0 objecter_inflight_op_bytes=4294967296 objecter_inflight_ops=1024 #debug files

linux自动挂载windows磁盘

自动挂载配置文件: /etc/fstab 1 # /etc/fstab: static file system information. 2 # 3 # Use 'blkid' to print the universally unique identifier for a 4 # device; this may be used with UUID= as a more robust way to name devices 5 # that works even if disks are ad

10-5 脚本编程之八 脚本完成磁盘分区格式化

写一个脚本(前提:请为虚拟机新增一块硬盘,假设它为/dev/sdb),为指定的硬盘创建分区 1.列出当前系统上所有磁盘,让用户选择,如果选择quit则退出脚本,如果用户选择错误,让用户重新选择 2.当用户选择后,提醒用户确认接下来的操作可能会损坏数据,并请用户确认,如果用户选择y就继续,n就退出.否则就让用户重新选择 3.删除那块硬盘上的所有分区(提示,抹除所有分区后执行sync命令,并让脚本睡眠3秒钟后再分区):并为其创建3个主分区    且第三个是swap分区类型.(分区命令通过echo传送

bigdata_hadoop_namenode手动重启错误解决分析

现象: 集群大面积异常,通过ambari启动不起来.逐一排查,顺序 hdfs -> mapreduce->yarn->hive -other hdfs下发现namenode ,datanode启动不起来 namenode报错如下 [namenode.NameNode: Failed to start namenode. java.io.IOException: Gap in tra] 解决方案: step1: /usr/hdp/current/hadoop-hdfs-namenode/b