提高hadoop的可靠性(上)

提高hadoop可靠性已经有很多方法了,我尝试着收集整理了5种,通过修改Hadoop默认配置就可以极大的提升Hadoop的可靠性,本文先列举了前3种:

(1)文件的删除和恢复

为了避免误删文件,hadoop提供了回收站功能,配置文件如下

core-site.xml

<property>

<name>fs.trash.interval</name>

<value>1440</value>

</property>

和windows的回收站一样,HDFS会在用户目录下创建一个.Trash目录,删除的文件会自动放入/user/用户名/.Trash下。fs.trash.interval参数的单位是分钟,回收站中的文件保留1天后,会被回收线程(Emptier)删除。当然,用户也可以手动删除。如果需要恢复数据的话,可以使用mv命令将文件移动回原有目录即可。

(2)复制份数的更改

hdfs默认保存的份数为3份,可以通过以下配置文件更改

hdfs-site.xml

<property>

<name>dfs.replication</name>

<value>3</value>

</property>

当前的复制份数可以通过以下命令查看到:

hadoop fsck -locations

也可以通过hdfs基本操作命令查看。

如:

[hadoop@test1 hadoop]$ hadoop dfs -ls /tmp

-rw-r--r-- 5 hadoop supergroup 1281 2016-01-05 18:24 /tmp/file3

-rw-r--r-- 1 hadoop supergroup 1281 2016-01-05 18:26 /tmp/file4

在/tmp下的file3 存储了5份,其他文件存储1份。注意: 这里的份数超过了datanode的个数会失败,通过日志可以体现

在生产环境修改了全局份数的配置文件后需要重启hadoop生效,也可以使用命令修改复制份数,如修改file4 为3份:

hadoop fs -setrep -R 3 /tmp/file4

也可以对指定目录修改,目录下所有文件的份数都会变化。这样可以实时修改复制份数

在上传时也可以指定复制份数,如上传file3时指定复制的份数为1份:

hadoop dfs -D dfs.replication=1 -copyFromLocal /etc/passwd /tmp/file3

(3)在线添加和移除datanode节点

由于各种原因经常需要调整datanode或yarn的数量,那就需要在线更改。首先看下在线增加datanode

首先为新增加的datanode建立ssh信任关系,然后修改配置文件slaves以便下次重启hadoop集群时能加载此datanode,并同步到新添加的datanode上。

启动独立的datanode方式如下:

hadoop-daemon.sh start datanode

yarn-daemon.sh start nodemanager

通过在新增节点执行jps 命令或者执行以下都可以查看。

yarn node -list

hadoop dfsadmin -report

还需要注意新添加节点之后不包含任何数据,hadoop需要进行数据平衡。默认每个节点的使用比例占相差10%,可以通过脚本设置平衡的比例

start-balancer.sh -threshold 80

也可以限制同步的带宽,这里以100M为例

hdfs dfsadmin -setBalancerBandwidth 104857600

另外值得一提的是hadoop能支持机架感知功能,可以利用预先设置好的机架位置确定多份数据的存储节点,提高可靠性

在线删除datanode操作其实利用了hadoop的Decommission状态。修改mapred-site.xml配置文件,增加

<property>

<name>dfs.hosts.exclude</name>

<value>/home/hadoop/hadoop/etc/hadoop/deny.list</value>

</property>

然后在deny.list写入要删除的datanode,每行一个。执行

hadoop dfsadmin -refreshNodes

刷新之后观察datanode状态,如果为Decommissioned即可停止datanode节点了。

原文发布于微信公众号 - 奇点(qddata)

原文发表时间:2016-01-11

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏hotqin888的专栏

EngineerCMS增加项目日志、大事记的时间轴

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/hotqin888/article/det...

1342
来自专栏算法channel

完整教程:使用caffe测试mnist数据集

想要入门深度学习没有几个趁手的兵器是不行的,目前流行的框架tensorflow、pytorch、caffe等,笔者也是最近接触了caffe,发现caffe非常适...

1596
来自专栏用户2442861的专栏

win64 IDEA meaven 配置安装Thrift自动生成代码到目录

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/haluoluo211/article/details...

5561
来自专栏debugeeker的专栏

《coredump问题原理探究》windows版第四章函数的逆向

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/xuzhina/article/detai...

951
来自专栏电光石火

maven-source-plugin 自动将源码打包并发布

1923
来自专栏ml

PIL中的Image和numpy中的数组array相互转换

1. PIL image转换成array img = np.asarray(image) 需要注意的是,如果出现read-only错误,并不是转换的错...

3979
来自专栏Ryan Miao

在idea中maven项目jdk编译version总是跳到1.5

bug描述 项目ide: idea 项目构建工具:maven bug现象:每次修改pom之后,idea自动扫描一遍,然后发现默认的compile级别跳到5....

36310
来自专栏ppjun专栏

记录一个SQLException

我前端form-data上传图文到后台时,返回一个服务器内部异常SQLException: Incorrect string value: '\xE5\x92\...

1254
来自专栏C/C++基础

Linux下Socket网络编程send和recv使用注意事项

ssize_t send( SOCKET s, const char *buf, size_t len, int flags );

1623
来自专栏性能与架构

Linux入侵检测工具 - RKHunter

RKHunter是Linux系统平台下的一款开源入侵检测工具 特点 (1)安装便捷,运行快速 (2)扫描范围全,能够检测各种已知的rootkit特征码、端...

5437

扫码关注云+社区

领取腾讯云代金券