Hadoop副本数配置

一个文件,上传到hdfs上时指定的是几个副本就是几个。修改了副本数(dfs.replications),对已经上传了的文件也不会起作用。
当然可以在上传文件的同时指定创建的副本数
hadoop dfs -D dfs.replication=2 -put abc.txt /tmp
可以通过命令来更改已经上传的文件的副本数:
hadoop fs -setrep -R 2 /

查看当前hdfs的副本数
hadoop fsck -locations
某个文件的副本数,可以通过ls中的文件描述符看到
hadoop dfs -ls

如果你只有3个datanode,但是你却指定副本数为4,是不会生效的,因为每个datanode上只能存放一个副本

当一个文件上传时,client并不立刻联系namenode,而是先在本地缓存数据,当 HDFS block size时, 联系namenode, namenode将文件名插入到文件系统结构中,并为期分配一个数据块。
namenode以datanode主机名和数据块的位置来相应client的请求。客户端从本地临时文件中将数据刷新到指定的datanode。
当file关闭时,未刷新的临时文件将传输到datanode,client通知namenode 文件关闭。 此时,namenode将文件创建操作提交到永久存储。
如果namenode在file closes之前die,则文件丢失。

创建副本
当client写文件到hdfs时,像前面提到的,先写文件到本地临时文件,假设设定hdfs的副本系数为3.当缓存的文件达到hdfs block size时,client从namenode检索一个datanode的列表。该列表包含将host该副本的datanode列表。
client刷新数据到列表中的第一个datanode。
第一个datanode以4kb为单位接收数据,将数据写到本地并传输到列表中的第二个datanode,第二个datanode也做同样操作。
一个datanode可以从上一个数据管道获取数据,并同时将数据发送到下一个数据管道。

配置参数可以不止一次被指定
最高优先级值优先
优先顺序(从低到高):
- *-site.xml on the slave node
- *-site.xml on the client machine
- Values set explicitly in the JobConf object for a MapReduce job

如果在配置文件中的值标记为final,它覆盖所有其他
<property>
<name>some.property.name</name>
<value>somevalue</value>
<final>ture</final>
</property>

对于类似副本数、data.dir,fs相关的参数建议在datanode节点配成final=true的

问:预处理主机的dfs.replication设置的是几?
答:预处理设置dfs.replication参数的hdfs-site.xml配置文件,修改后重新重启预处理服务,副本数问题搞定。

block的备份数是由写入数据的client端配置决定的,所以该类问题一般是由client的配置引起。

【参考】http://blog.sina.com.cn/s/blog_edd9ac0e0101it34.html

时间: 2024-12-21 03:56:59

Hadoop副本数配置的相关文章

【大数据系列】使用api修改hadoop的副本数和块大小

package com.slp.hdfs; import org.apache.commons.io.output.ByteArrayOutputStream; import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.fs.FSDataInputStream; import org.apache.hadoop.fs.FSDataOutputStream; import org.apache.hadoop.fs.F

Hadoop完全分布式配置

  一.首先说一下,Hadoop有三种运行模式. 第一个是独立(或本地)运行模式:无需运行任何守护进程,所有程序都在一个同一个JVM上执行. 第二个是伪分布模式:Hadoop守护进程运行在本地机器上,模拟一个小规模的集群. 第三个是全分布模式,也就是通常所说的完全分布式模式:Hadoop守护进程运行在一个集群上.     下面简单介绍下完全分布式的配置:   首先准备三台机器,系统公共配置部分:   系统信息: [[email protected] ~]# cat /etc/redhat-rel

初识Hadoop一,配置及启动服务

一.Hadoop简介: Hadoop是由Apache基金会所开发的分布式系统基础架构,实现了一个分布式文件系统(Hadoop Distributed File System),简称HDFS:Hadoop框架最核心设计就是HDFS和MapReduce,HDFS为海量数据提供了存储,MapReduce为海量数据提供了计算. Hadoop要解决的问题:海量数据的存储(HDFS).海量数据的分析(MapReduce)和资源管理调度(YARN) Hadoop主要作用于分布式 二.Hadoop实现机制 1.

hadoop安装、配置

环境: 三台机器 ubuntu14.04 hadoop2.7.5 架构: machine101 :名称节点.数据节点.SecondaryNaemnode.ResourceManager.NodeManger     machine102.machine103 :数据节点.NodeManger 1.安装jdk\hadoop (1)解压hadoop.tar.gz到/soft/ (2)配置环境变量 JAVA_HOME=/soft/jdk1.7.0_45 (必须要写,hadoop会去找名叫JAVA_HO

HDFS上文件块的副本数设置

一.使用 setrep 命令来设置 # 设置 /javafx-src.zip 的文件块只存三份 hadoop fs -setrep 3 /javafx-src.zip 二.文件块在磁盘上的路径 # 设置的 hdfs 目录为/opt/hadoop-tmp/ # hdfs 文件块的路径为 /opt/hadoop-tmp/dfs/data/current/BP-362764591-192.168.8.136-1554970906073/current/finalized/subdir0/subdir0

设置hdfs和hbase副本数。hadoop2.5.2 hbase0.98.6

hdfs副本和基本读写. core-site.xmlhdfs-site.xml 从/etc/hdfs1/conf下拷贝到工作空间 import java.io.IOException;import org.apache.hadoop.conf.Configuration;import org.apache.hadoop.fs.FSDataOutputStream;import org.apache.hadoop.fs.FileSystem;import org.apache.hadoop.fs.

ES集群修改index副本数报错 :index read-only / allow delete

ES集群修改index副本数,报错 :index read-only / allow delete (api) 原因: es集群数据量增速过快,导致个别es node节点磁盘使用率在%80以上,接近%90 ,由于ES新节点的数据目录data存储空间不足,导致从master主节点接收同步数据的时候失败,此时ES集群为了保护数据,会自动把索引分片index置为只读read-only. 故障处理办法: 1:集群加节点,简单粗暴: 2:降低集群index副本数量: 3:其它:增加磁盘.删除历史数据等:

设置elasticsearch的默认分区数和副本数

日志是从logstash传输给ES的,但是logstash配置中只能配置host和index,所以只能在es中进行配置 但是在es配置文件中配置,也就是新增如下参数的话会报错:node settings must not contain any index level settings index.number_of_shards: 1 index.number_of_replicas: 0 所以采用索引模板的方式进行设置 POST /_templates/index_patterns { "o

hadoop本地模式配置

我使用的是VMware虚拟机,ubuntu14.04LTS,64位,已经安装java,如果不知道如何配置网上有很多教程,不再赘述,我安装的是1.6.0_30版本.建议不要安装太高版本,我原来安装了1.8版本的,尝试配置hadoop-2.6,死活都不成功,最后改成1.7版本的才配置成功. 此处再温馨提示一下,很多人使用命令:wget  http://www.us.apache....... 去下载压缩包,但是总是下载失败,原因是时间隔太久下载地址变了.在我写这篇博文的时候可以通过以下地址下载到2.