你好,微信超出20万限额怎么办十万限额咋办

Hadoop集群间数据拷贝 - 推酷
Hadoop集群间数据拷贝
有时候,我们需要做Hadoop集群迁移时,要把大量存储在Hadoop集群上的数据也一并迁移过去。有2种方法可以使用:
1. old hadoop cluster---&old local disks----&transmission----&new local disks-----&new hadoop cluster
2. old hadoop cluster----&mapreduce---&new hadoop cluster
很显然第一种方法很不靠谱,我们采用第二种方式来做。我们使用的Hadoop提供的
来完成集群间的数据拷贝。
说明:只需要在目标(Destination)集群上做如下配置就好了
hdfs-site.xml,加入
&name&dfs.http.address&/name&
&value&0.0.0.0:50070&/value&
&name&dfs.datanode.address&/name&
&value&0.0.0.0:50010&/value&
mapred-site.xml
&property&
&name&mapred.job.tracker&/name&
&value&0.0.0.0:9001&/value&
其它的配置与老的配置一样。
/etc/hosts,在NN内网配置的上方加入外网的配置。如:
内网IP NN主机名
内网IP DN主机名
内网IP DN主机名
/etc/hosts,在NN内网配置的上方加入外网的配置。如:
内网IP NN主机名
内网IP DN主机名
内网IP DN主机名
NameNode、JobTracker、NadaNode
3. 关闭防火墙
命令:server iptables stop
这里只是为了测试方便,所以将防火墙停止了,实际中应该是要加
4. 执行集群间拷贝命令
Hadoop distcp /tmp/lalalala.txt hdfs:// Destination 外网IP:9000/tmp/test/lalalala.txt
命令解释:将老的Hadoop上的lalalala.txt(在/tmp目录下)文件拷贝到新的集群上,
/tmp/test/lalalala.txt。这里只是拿一个文件做了测试,还可以是目录,更多使用可参看
说明:这里的Destination
core-site.xml
fs.default.name
已发表评论数()
请填写推刊名
描述不能大于100个字符!
权限设置: 公开
仅自己可见
正文不准确
标题不准确
排版有问题
主题不准确
没有分页内容
图片无法显示
视频无法显示
与原文不一致12773人阅读
Hadoop(17)
一、 Hadoop 的高可用性
本指南提供了一个HDFS 的高可用性(HA )功能的概述,以及如何配置和管理HDFS 高可用性(HA) 集群。本文档假定读者具有对HDFS 集群的组件和节点类型具有一定理解。有关详情,请参阅Apache 的HDFS 的架构指南。
http://hadoop.apache.org/common/docs/current/hdfs_design.html
CDH4 之前,在HDFS 集群中NameNode 存在单点故障(SPOF )。对于只有一个NameNode 的集群,如果NameNode 机器出现故障,那么整个集群将无法使用,直到NameNode 重新启动。
NameNode 主要在以下两个方面影响HDFS 集群:
(1). NameNode 机器发生意外,比如宕机,集群将无法使用,直到管理员重启NameNode
(2). NameNode 机器需要升级,包括软件、硬件升级,此时集群也将无法使用
HDFS 的HA 功能通过配置Active/Standby 两个NameNodes 实现在集群中对NameNode 的热备来解决上述问题。如果出现故障,如机器崩溃或机器需要升级维护,这时可通过此种方式将NameNode 很快的切换到另外一台机器。
在一个典型的HDFS(HA) 集群中,使用两台单独的机器配置为NameNodes 。在任何时间点,确保NameNodes 中只有一个处于Active 状态,其他的处在Standby 状态。其中ActiveNameNode 负责集群中的所有客户端操作,StandbyNameNode 仅仅充当备机,保证一旦ActiveNameNode
出现问题能够快速切换。
为了保证Standby 节点与Active 节点的状态保持同步,目前是通过两个节点同时访问一个共享的存储设备( 如NFS) 来实现的,在以后的版本中可能会做进一步的改进。
当Active 节点的namespace 发生改变时,存储在共享目录中的日志文件也会被修改,Standby 节点监测到日志变化后,将其作用到自身的namespace 。当Active 节点发生故障需要进行切换时,Standby 节点由Standby 状态转换为Active 状态前将会把所有未读日志作用到自身的namespace
以确保自身的namespace 与主节点的namespace 保持一致。
为了实现快速切换,Standby 节点获取集群的最新文件块信息也是很有必要的。为了实现这一目标,DataNode 需要配置NameNodes 的位置,并同时给他们发送文件块信息以及心跳检测。
任意时间只有一个ActiveNameNode 对于HDFS(HA) 集群的正常运行至关重要,否则两者的namespace 将不能保持同步,面临数据丢失和其它问题的危险性。为了防止出现这种情况,管理员必须为共享存储配置至少一个安全机制。这种机制应该保证: 在切换期间,如果不能证实当前Active 节点已经改变了状态,那么此机制应切断当前Active
节点对共享存储的访问,这样可以防止在切换期间当前Active 节点继续对namespace 进行修改,确保新的Active 节点能够安全的切换。
此版本只支持手动切换,这意味着集群并不能自动检测Active 节点发生故障。
二、 HDFS(HA) 的硬件配置
为了部署一个HA 群集,你应该准备以下几点:
1.NameNode 机器,Active 、Standby 应该具有相同的硬件
2. 共享存储,需要有一个能够保证所有NameNode 读写的共享目录。通常,这应该是一个远程文件系统,支持NFS 和挂载在每个NameNode 机器上。在此版本中,只有一个对共享可编辑目录的支持。这个共享可编辑目录的可用性很有限,因此,为了消除单点故障,必须提高此存储设备的可用性。一个高品质的专用NAS 设备要好过通过一个简单的Linux
服务器提供NFS 服务的方式。
在HDFS(HA) 集群中,Standby 节点还执行着对namespace 状态的checkpoint 功能,因此没有必要再运行SecondaryNameNode 、CheckpointNode 、BackupNode 。
三、 HDFS(HA) 的软件配置
1. 配置概述
对于使用一个NameNode 的集群,HA 的配置与HDFS 的Federation 机制是兼容的,新的配置项被设计用在集群中的所有相同类型的节点具有相同的配置,不需要为相同类型节点的不同机器部署不同的配置文件。
HDFS(HA) 集群使用NameServiceID 来标示NameNode ,作为NameNode 的编号。
2. 现有的配置参数
下面的配置参数发生了变化:
&&& core-site.xml
(1)fs.defaultFS - 如果没有配置则使用fs.default.name
&property&&&&
&&& &name&fs.defaultFS&/name&&&&
&&& &value&hdfs://mycluster&/value&&&&
&/property&&&
3. 新增的配置参数
&&&& hdfs-site.xml
(1)dfs.federation.nameservices --- federation 服务名
&property&&&&
&&& &name&dfs.federation.nameservices&/name&&&&
&&& &value&mycluster&/value&&&&
&/property&&&&
(2) 如果同时还使用HDFS 的Federation 机制,则应该使用逗号分隔nameservices 列表
&property&&&&
&&& &name&dfs.federation.nameservices&/name&&&&
&&& &value&mycluster,mycluster1&/value&&&&
&/property&&&
(3)dfs.ha.namenodes.[nameservice ID] --- 每个NameNode 在名称服务中的唯一标识, 此版本最大只支持两个NameNode
&property&&&&
&&& &name&dfs.ha.namenodes.mycluster&/name&&&&
&&& &value&nn1,nn2&/value&&&&
&/property&&&&
(4)dfs.namenode.rpc-address.[nameservice ID] --- rpc 通信地址
&property&&&&
&&& &name&dfs.namenode.rpc-address.mycluster.nn1&/name&&&&
&&& &value&:8020&/value&&&&
&/property&&&&
&property&&&&
&&& &name&dfs.namenode.rpc-address.mycluster.nn2&/name&&&&
&&& &value&:8020&/value&&&&
&/property&&&&
(5)dfs.namenode.http-address.[nameservice ID] --- http 通信地址
&property&&&&
&&& &name&dfs.namenode.http-address.mycluster.nn1&/name&&&&
&&& &value&:50070&/value&&&&
&/property&&&&
&property&&&&
&&& &name&dfs.namenode.http-address.mycluster.nn2&/name&&&&
&&& &value&:50070&/value&&&&
&/property&&&&
(6)dfs.namenode.shared.edits.dir --- 共享存储目录位置
&property&&&&
&&& &name&dfs.namenode.shared.edits.dir&/name&&&&
&&& &value&file:///mnt/filer1/dfs/ha-name-dir-shared&/value&&&&
&/property&&&&
4. 客户端故障转移配置
(1)dfs.client.failover.proxy.provider.[nameservice ID] --- HDFS 客户端与Active 节点通信的java 类,使用其确定Active 节点是否活跃
&property&&&&
&&& &name&dfs.client.failover.proxy.provider.mycluster&/name&&&&&&&&&&&&&&&&&&
&&&&&&& &value&org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider&/value&&&&
&/property&&&&
5. 安全配置
dfs.ha.fencing.methods --- 用于在Active 节点切换期间的安全机制,确保在任何时间都只有一个NameNode 处于活跃状态。在故障切换期间,haadmin 命令确保在将其它NameNode 转换为Active 状态之前Active 节点处在Standby 状态,或其进程已被终止。
至少应该配置一个,因为没有默认配置,因此如果配置则HA 机制将会失效。
如果要实现自定义的安全机制,参照org.apache.hadoop.ha.NodeFencer
(1)sshfence 方式
&& 通过SSH 连接到ActiveNameNode 杀死监听服务端TCP 监听的进程
&property&&&&
&&& &name&dfs.ha.fencing.methods&/name&&&&
&&& &value&sshfence&/value&&&&
&/property&&&&
&property&&&&
&&& &name&dfs.ha.fencing.ssh.private-key-files&/name&&&&
&&& &value&/home/exampleuser/.ssh/id_rsa&/value&&&&
&/property&&&&
&&& 或者配置非标准的用户名和端口以及超时时间
&property&&&&
&&& &name&dfs.ha.fencing.methods&/name&&&&
&&& &value&sshfence([[username][:port]])&/value&&&&
&/property&&&&
&property&&&&
&&& &name&dfs.ha.fencing.ssh.connect-timeout&/name&&&&
&&& &value& 60000&/value&&&
&/property&&&&
(2)shell 方式
&&& 运行脚本实现安全机制
&property&&&&
&&& &name&dfs.ha.fencing.methods&/name&&&&
&&& &value&shell(/path/to/my/script.sh arg1 arg2 ...)&/value&&&&
&/property&&&&
四、 HDFS (HA) 的初始化
设定所有的必要配置项后,必须首先同步两个NameNode 上的元数据。如果是新建的HDFS 集群,则应首先格式化一个NameNode ,或者想把非HA 集群转换为HA 集群,按照dfs.namenode.name.dir 、dfs.namenode.edits.dir 的配置把当前NameNode 节点的元数据目录复制到另一个NameNode.
还应该确保共享存储目录下(dfs.namenode.shared.edits.dir ) 包含NameNode 所有的元数据。
五、 HDFS(HA) 的管理
sbin/start-dfs.sh
默认以HA 方式启动集群,启动后为Standby 状态,使用如下命令设置Active 节点
# bin/hdfs haadmin –DFSHAadmin –transitionToActive nn1
如果让nn2 成为变为active nn1 变为standby ,则
# bin/hdfs haadmin -DfSHAadmin -failover nn1 nn2
如果失败(is not ready to become active) 则
# bin/hdfs haadmin -DfSHAadmin -failover --forceactive nn1 nn2
Usage: DFSHAAdmin [-ns &nameserviceId&]
[-transitionToActive &serviceId&]
[-transitionToStandby &serviceId&]
[-failover [--forcefence] [--forceactive] &serviceId& &serviceId&]
[-getServiceState &serviceId&]
[-checkHealth &serviceId&]
[-help &command&]
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:118026次
积分:1711
积分:1711
排名:第18964名
原创:55篇
评论:11条
(1)(3)(4)(3)(1)(1)(2)(4)(5)(2)(2)(2)(7)(7)(3)(5)(1)(1)(1)(1)hadoop(11)
一、 Hadoop 的高可用性
本指南提供了一个HDFS 的高可用性(HA )功能的概述,以及如何配置和管理HDFS 高可用性(HA) 集群。本文档假定读者具有对HDFS 集群的组件和节点类型具有一定理解。有关详情,请参阅Apache 的HDFS 的架构指南。
http://hadoop.apache.org/common/docs/current/hdfs_design.html
CDH4 之前,在HDFS 集群中NameNode 存在单点故障(SPOF )。对于只有一个NameNode 的集群,如果NameNode 机器出现故障,那么整个集群将无法使用,直到NameNode 重新启动。
NameNode 主要在以下两个方面影响HDFS 集群:
(1). NameNode 机器发生意外,比如宕机,集群将无法使用,直到管理员重启NameNode
(2). NameNode 机器需要升级,包括软件、硬件升级,此时集群也将无法使用
HDFS 的HA 功能通过配置Active/Standby 两个NameNodes 实现在集群中对NameNode 的热备来解决上述问题。如果出现故障,如机器崩溃或机器需要升级维护,这时可通过此种方式将NameNode 很快的切换到另外一台机器。
在一个典型的HDFS(HA) 集群中,使用两台单独的机器配置为NameNodes 。在任何时间点,确保NameNodes 中只有一个处于Active 状态,其他的处在Standby 状态。其中ActiveNameNode 负责集群中的所有客户端操作,StandbyNameNode 仅仅充当备机,保证一旦ActiveNameNode 出现问题能够快速切换。
为了保证Standby 节点与Active 节点的状态保持同步,目前是通过两个节点同时访问一个共享的存储设备( 如NFS) 来实现的,在以后的版本中可能会做进一步的改进。
当Active 节点的namespace 发生改变时,存储在共享目录中的日志文件也会被修改,Standby 节点监测到日志变化后,将其作用到自身的namespace 。当Active 节点发生故障需要进行切换时,Standby 节点由Standby 状态转换为Active 状态前将会把所有未读日志作用到自身的namespace 以确保自身的namespace 与主节点的namespace 保持一致。
为了实现快速切换,Standby 节点获取集群的最新文件块信息也是很有必要的。为了实现这一目标,DataNode 需要配置NameNodes 的位置,并同时给他们发送文件块信息以及心跳检测。
任意时间只有一个ActiveNameNode 对于HDFS(HA) 集群的正常运行至关重要,否则两者的namespace 将不能保持同步,面临数据丢失和其它问题的危险性。为了防止出现这种情况,管理员必须为共享存储配置至少一个安全机制。这种机制应该保证: 在切换期间,如果不能证实当前Active 节点已经改变了状态,那么此机制应切断当前Active 节点对共享存储的访问,这样可以防止在切换期间当前Active 节点继续对namespace
进行修改,确保新的Active 节点能够安全的切换。
此版本只支持手动切换,这意味着集群并不能自动检测Active 节点发生故障。
二、 HDFS(HA) 的硬件配置
为了部署一个HA 群集,你应该准备以下几点:
1.NameNode 机器,Active 、Standby 应该具有相同的硬件
2. 共享存储,需要有一个能够保证所有NameNode 读写的共享目录。通常,这应该是一个远程文件系统,支持NFS 和挂载在每个NameNode 机器上。在此版本中,只有一个对共享可编辑目录的支持。这个共享可编辑目录的可用性很有限,因此,为了消除单点故障,必须提高此存储设备的可用性。一个高品质的专用NAS 设备要好过通过一个简单的Linux 服务器提供NFS 服务的方式。
在HDFS(HA) 集群中,Standby 节点还执行着对namespace 状态的checkpoint 功能,因此没有必要再运行SecondaryNameNode 、CheckpointNode 、BackupNode 。
三、 HDFS(HA) 的软件配置
1. 配置概述
对于使用一个NameNode 的集群,HA 的配置与HDFS 的Federation 机制是兼容的,新的配置项被设计用在集群中的所有相同类型的节点具有相同的配置,不需要为相同类型节点的不同机器部署不同的配置文件。
HDFS(HA) 集群使用NameServiceID 来标示NameNode ,作为NameNode 的编号。
2. 现有的配置参数
下面的配置参数发生了变化:
&&& core-site.xml
(1)fs.defaultFS - 如果没有配置则使用fs.default.name
&property&&&&
&&& &name&fs.defaultFS&/name&&&&
&&& &value&hdfs://mycluster&/value&&&&
&/property&&&
3. 新增的配置参数
&&&& hdfs-site.xml
(1)dfs.federation.nameservices --- federation 服务名
&property&&&&
&&& &name&dfs.federation.nameservices&/name&&&&
&&& &value&mycluster&/value&&&&
&/property&&&&
(2) 如果同时还使用HDFS 的Federation 机制,则应该使用逗号分隔nameservices 列表
&property&&&&
&&& &name&dfs.federation.nameservices&/name&&&&
&&& &value&mycluster,mycluster1&/value&&&&
&/property&&&
(3)dfs.ha.namenodes.[nameservice ID] --- 每个NameNode 在名称服务中的唯一标识, 此版本最大只支持两个NameNode
&property&&&&
&&& &name&dfs.ha.namenodes.mycluster&/name&&&&
&&& &value&nn1,nn2&/value&&&&
&/property&&&&
(4)dfs.namenode.rpc-address.[nameservice ID] --- rpc 通信地址
&property&&&&
&&& &name&dfs.namenode.rpc-address.mycluster.nn1&/name&&&&
&&& &value&:8020&/value&&&&
&/property&&&&
&property&&&&
&&& &name&dfs.namenode.rpc-address.mycluster.nn2&/name&&&&
&&& &value&:8020&/value&&&&
&/property&&&&
(5)dfs.namenode.http-address.[nameservice ID] --- http 通信地址
&property&&&&
&&& &name&dfs.namenode.http-address.mycluster.nn1&/name&&&&
&&& &value&:50070&/value&&&&
&/property&&&&
&property&&&&
&&& &name&dfs.namenode.http-address.mycluster.nn2&/name&&&&
&&& &value&:50070&/value&&&&
&/property&&&&
(6)dfs.namenode.shared.edits.dir --- 共享存储目录位置
&property&&&&
&&& &name&dfs.namenode.shared.edits.dir&/name&&&&
&&& &value&file:///mnt/filer1/dfs/ha-name-dir-shared&/value&&&&
&/property&&&&
4. 客户端故障转移配置
(1)dfs.client.failover.proxy.provider.[nameservice ID] --- HDFS 客户端与Active 节点通信的java 类,使用其确定Active 节点是否活跃
&property&&&&
&&& &name&dfs.client.failover.proxy.provider.mycluster&/name&&&&&&&&&&&&&&&&&&
&&&&&&& &value&org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider&/value&&&&
&/property&&&&
5. 安全配置
dfs.ha.fencing.methods --- 用于在Active 节点切换期间的安全机制,确保在任何时间都只有一个NameNode 处于活跃状态。在故障切换期间,haadmin 命令确保在将其它NameNode 转换为Active 状态之前Active 节点处在Standby 状态,或其进程已被终止。
至少应该配置一个,因为没有默认配置,因此如果配置则HA 机制将会失效。
如果要实现自定义的安全机制,参照org.apache.hadoop.ha.NodeFencer
(1)sshfence 方式
&& 通过SSH 连接到ActiveNameNode 杀死监听服务端TCP 监听的进程
&property&&&&
&&& &name&dfs.ha.fencing.methods&/name&&&&
&&& &value&sshfence&/value&&&&
&/property&&&&
&property&&&&
&&& &name&dfs.ha.fencing.ssh.private-key-files&/name&&&&
&&& &value&/home/exampleuser/.ssh/id_rsa&/value&&&&
&/property&&&&
&&& 或者配置非标准的用户名和端口以及超时时间
&property&&&&
&&& &name&dfs.ha.fencing.methods&/name&&&&
&&& &value&sshfence([[username][:port]])&/value&&&&
&/property&&&&
&property&&&&
&&& &name&dfs.ha.fencing.ssh.connect-timeout&/name&&&&
&&& &value& 60000&/value&&&
&/property&&&&
(2)shell 方式
&&& 运行脚本实现安全机制
&property&&&&
&&& &name&dfs.ha.fencing.methods&/name&&&&
&&& &value&shell(/path/to/my/script.sh arg1 arg2 ...)&/value&&&&
&/property&&&&
四、 HDFS (HA) 的初始化
设定所有的必要配置项后,必须首先同步两个NameNode 上的元数据。如果是新建的HDFS 集群,则应首先格式化一个NameNode ,或者想把非HA 集群转换为HA 集群,按照dfs.namenode.name.dir 、dfs.namenode.edits.dir 的配置把当前NameNode 节点的元数据目录复制到另一个NameNode. 还应该确保共享存储目录下(dfs.namenode.shared.edits.dir )
包含NameNode 所有的元数据。
五、 HDFS(HA) 的管理
sbin/start-dfs.sh
默认以HA 方式启动集群,启动后为Standby 状态,使用如下命令设置Active 节点
# bin/hdfs haadmin –DFSHAadmin –transitionToActive nn1
如果让nn2 成为变为active nn1 变为standby ,则
# bin/hdfs haadmin -DfSHAadmin -failover nn1 nn2
如果失败(is not ready to become active) 则
# bin/hdfs haadmin -DfSHAadmin -failover --forceactive nn1 nn2
Usage: DFSHAAdmin [-ns &nameserviceId&]
[-transitionToActive &serviceId&]
[-transitionToStandby &serviceId&]
[-failover [--forcefence] [--forceactive] &serviceId& &serviceId&]
[-getServiceState &serviceId&]
[-checkHealth &serviceId&]
[-help &command&]
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:71269次
积分:1471
积分:1471
排名:千里之外
原创:64篇
转载:100篇
(2)(1)(2)(3)(11)(7)(2)(2)(4)(1)(1)(6)(18)(21)(4)(4)(3)(4)(1)(1)(1)(1)(3)(34)(25)(2)1107人阅读
hadoop-2.x(13)
1.基础包(包括工具包和安全包)
包括工具和安全包。其中,hdfs.util包含了一些HDFS实现需要的辅助数据结构;hdfs.security.token.block和hdfs.security.token.delegation结合Hadoop的安全框架,提供了安全访问HDFS的机制。
hdfs.util(一些HDFS实现需要的辅助数据结构)
AtomicFileOutputStream.java----继承实现类:原子文件输出流类;
DataTransferThrottler.java----独立内存类:数据传送时的调节参数配置表;这个类是线程安全的,能够被多个线程所共享;
LightWeightGSet.java----继承实现类:一个低内存占用的实现类;
hdfs.security.token.block(安全访问HDFS机制)
BlockKey.java----继承实现类:Key用于生成和校验块的令牌;
BlockTokenIdentifier.java----继承实现类:块令牌的标识符;
BlockTokenSecretManager.java----继承实现类:块令牌管理类;BlockTokenSecretManager能够被实例化为两种模式,主模式和从模式。主节点能够生成新的块key,并导出块key到从节点。从节点只能导入并且使用从主节点接收的块key。主机和从机都可以生成和验证块令牌。
BlockTokenSelector.java----继承实现类:为HDFS的块令牌选择;
ExportedBlockKeys.java----继承实现类:传递块key对象;
InvalidBlockTokenException.java----继承实现类:访问令牌验证失败;
hdfs.security.token.delegation(安全访问HDFS机制)
DelegationTokenIdentifier.java----继承实现类:特定针对HDFS的代表令牌的标识符;
DelegationTokenRenewer.java----继承实现类:这是一个守护进程,实现等待下一个文件系统的接续;
DelegationTokenSecretManager.java----继承实现类:这个类实现了HDFS特定授权的令牌的管理;这个管理类实现了生成并接受每一个令牌的密码;
DelegationTokenSelector.java----继承实现类:专门针对HDFS的令牌;
2.HDFS实体实现包
这是代码分析的重点,包含8个包:
mon包含了一些名字节点和数据节点共享的功能,如系统升级、存储空间信息等。
hdfs.protocol和hdfs.server.protocol提供了HDFS各个实体间通过IPC交互的接口的定义和实现。
hdfs.server.namenode、hdfs.server.datanode和hdfs分别包含了名字节点、数据节点和客户端的实现。上述代码是HDFS代码分析的重点。
hdfs.server.namenode.metrics和hdfs.server.datanode.metrics实现了名字节点和数据节点上度量数据的收集功能。度量数据包括名字节点进程和数据节点进程上事件的计数,例如数据节点上就可以收集到写入字节数、被复制的块的数量等信息。
mon(一些名字节点和数据节点共享的功能)
GenerationStamp.java----继承实现类:生成时间戳的功能及读写访问类;
HdfsConstants.java----接口类:一些HDFS内部的常数;Hdfs常量字段及取值的定义;
InconsistentFSStateException.java----继承实现类:不一致的文件系统状态异常;文件状态检查出错提示信息;
IncorrectVersionException.java----继承实现类:不正确的版本异常;版本不正确检查时提示信息;
Storage.java----继承实现类:存储信息文件;本地存储信息存储在一个单独的文件版本中;它包含了节点类型、存储布局版本、命名空间ID以及文件系统状态创建时间;内存中以扩展表记录方式记录当前namenode索引信息及状态信息(文件是否在打开);
StorageInfo.java----独立内存类:存储信息的通用类;内存中文件索引信息基本表;基本作用是保存地储上的文件系统元信息;
Upgradeable.java----接口类:分布式升级对象的通用接口;对象升级接口方法集定义;
UpgradeManager.java----独立内存类、抽象:通用升级管理;
UpgradeObject.java----继承实现类:抽象升级对象;包含常用接口方法的实现;可升级对象的接口方法实现;
UpgradeObjectCollection.java----独立内存类:可升级对象的集合容器实现;升级对象在使用前应该先进行注册,才能使用;
UpgradeStatusReport.java----继承实现类:系统升级基类;升级过程状态信息表定义;
Util.java----独立内存类:获取当前系统时间;
hdfs.protocol(HDFS各个实体间通过IPC交互的接口)
AlreadyBeingCreatedException.java----继承实现类:文件已经建立异常;
Block.java----继承实现类:数据块在HDFS中的抽象;Bolck内存基本块结构定义与读写访问;这个类是大量和数据块相关的类的基础,在客户端接口上,这样的类有LocatedBlock、LocateBlocks和BlockLocalPathInfo。
BlockListAsLongs.java----独立内存类:这个类提供了一个访问块列表的接口;Bolck块的索引构成数组;该类的作用,就是将块数组blcokArray中的数据,“原封不动”的转换成一个long类型的数组blockList;
BlockLocalPathInfo.java----继承实现类:应用于ClientDatanodeProtocol接口中,用于HDFS读文件的数据节点本地读优化。当客户端发现它和它要读取的数据块正好位于同一台主机上的时候,它可以不通过数据节点读数据块,而是直接读取本地文件,以获取数据块的内容。这大大降低了对应数据节点的负载。
ClientDatanodeProtocol.java----接口类:客户端与数据节点间的接口。用于客户端和数据节点进行交互,这个接口用得比较少,客户端和数据节点间的主要交互是通过流接口进行读/写文件数据的操作。错误发生时,客户端需要数据节点配合进行恢复,或当客户端进行本地文件读优化时,需要通过IPC接口获取一些信息。
ClientProtocol.java----接口类:客户端与namenode之间的接口;是HDFS客户访问文件系统的入口;客户端通过这个接口访问名字节点,操作文件或目录的元数据信息;读写文件也必须先访问名字节点,接下来再和数据节点进行交互,操作文件数据;另外,从名字节点能获取分布式文件系统的一些整体运行状态信息,也是通过这个接口进行的;用于访问NameNode。它包含了文件角度上的HDFS功能。和GFS一样,HDFS不提供POSIX形式的接口,而是使用了一个私有接口。一般来说,程序员通过org.apache.hadoop.fs.FileSystem来和HDFS打交道,不需要直接使用该接口。
DatanodeID.java----继承实现类:用于在HDFS集群中确定一个数据节点;
DatanodeInfo.java----继承实现类:继承自DatanodeID,在DatanodeID的基础上,提供了数据节点上的一些度量信息;Datanode状态信息结构定义及访问读写类;
DataTransferProtocol.java----接口类:客户端与数据节点之间应用流协议传输数据的实现;
DirectoryListing.java----继承实现类:用于一次返回一个目录下的多个文件/子目录的属性;
DSQuotaExceededException.java----继承实现类:磁盘空间超出配额异常类;
FSConstants.java----接口类:一些有用的常量;
HdfsFileStatus.java----继承实现类:保存了HDFS文件/目录的属性;
LayoutVersion.java----独立内存类:这个类跟踪了HDFS布局版本中的改变信息;
LocatedBlock.java----继承实现类:已经确认了存储位置的数据块;可以用于一次定位多个数据块;
LocatedBlocks.java----继承实现类:块的位置和文件长度集合;一组数据块及文件长度说明信息表的定义及读写;
NSQuotaExceededException.java----继承实现类:命名空间超出配额异常类;
QuotaExceededException.java----继承实现类:超出配额异常;
UnregisteredDatanodeException.java----继承实现类:未注册的数据节点异常;
hdfs.server.protocol(HDFS各个实体间接口的实现)
BalancerBandwidthCommand.java----继承实现类:管理员通过调用&dfsadmin -setBalanacerBandwidth newbandwidth&实现动态的调整balancer的带宽参数;
BlockCommand.java----继承实现类:BlockCommand类实现的是数据节点控制下的块的指令;数据块命令定义及实现类;
BlockMetaDataInfo.java----继承实现类:一个块的元数据信息;数据块的元数据信息定义及实现;
BlockRecoveryInfo.java----继承实现类:块恢复操作信息;
BlocksWithLocations.java----继承实现类:BlockLocations序列的实现类;带位置的块信息的读写;
DatanodeCommand.java----抽象类:数据节点命令;数据节点基本信息定义及实现;
DatanodeProtocol.java----接口类:服务器间接口——数据节点与名字节点间的接口。在HDFS的主从体系结构中,数据节点作为从节点,不断的通过这个接口主节点名字节点报告一些信息,同步信息到名字节点;同时,该接口的一些方法,方法的返回值会带回名字节点指令,根据这些指令,数据节点或移动、或删除,或恢复本地磁盘上的数据块,或者执行其他的操作。
DatanodeRegistration.java----继承实现类:DatanodeRegistration类包含名字节点识别和验证数据节点的所有信息;数据节点的注册信息读写方法定义及实现;
DisallowedDatanodeException.java----继承实现类:不允许的数据节点异常;
InterDatanodeProtocol.java----接口类:服务器间的接口——数据节点与数据节点间的接口。数据节点通过这个接口,和其他数据节点进行通信,恢复数据块,保证数据的一致性。
KeyUpdateCommand.java----继承实现类:key升级命令;
NamenodeProtocol.java----接口类:服务期间接口——第二名字节点、HDFS均衡器与名字节点间的接口。第二名字节点会不停的获取名字节点上某一个时间点的命名空间镜像和镜像的变化日志,然后会合并得到一个新的镜像,并将该结果发送回名字节点,在这个过程中,名字节点会通过这个接口,配合第二名字节点完成元数据的合并。该接口也为HDFS均衡器balancer的正常工作提供一些信息。
NamespaceInfo.java----继承实现类:NamespaceInfo类实现了返回名字节点针对数据节点的握手;
UpgradeCommand.java----继承实现类:这是一个通用的分布式升级命令类;升级数据块命名实现;
hdfs.server.namenode(名字节点的实现)
BlockPlacementPolicy.java----抽象类:这个接口用于选择放置块副本的目标磁盘的所需的数目;
BlockPlacementPolicyDefault.java----继承实现类:这个类实现了选择放置块副本的目标磁盘的所需的数目;
BlockPlacementPolicyWithNodeGroup.java----继承实现类:这个类实现了在node-group层上选择放置块副本的目标磁盘的所需的数目;
BlockInfo.java----独立内存类:这个类维护了块到它元数据的映射;
CancelDelegationTokenServlet.java----继承实现类:取消代表令牌服务;
CheckpointSignature.java----继承实现类:检查点签名类;存贮信息的签名信息表定义;
ContentSummaryServlet.java----继承实现类:文件校验服务;
CorruptReplicasMap.java----独立内存类:存储文件系统中所有损坏的块的信息;
DatanodeDescriptor.java----继承实现类:DatanodeDescriptor类跟踪并统计了给定的数据节点上的信息,比如可用存储空间,上次更新时间等等;数据节点的状态信息定义及实现;
DecommissionManager.java----独立内存类:管理节点的解除;
DfsServlet.java----抽象类:DFS服务的基类;Web方式操作DFS的代理接口;
EditLogInputStream.java----抽象类:一个通用的抽象类用来支持从持久型存储读取编辑日志数据;读取日志数据的类方法定义及实现;
EditLogOutputStream.java----继承实现类:一个通用的抽象类用来支持从持久型存储记录编辑日志数据;写日志数据的类方法定义及实现;
FileChecksumServlets.java----独立内存类:文件校验服务;文件较验web操作命令的代理实现;
FileDataServlet.java----继承实现类:文件数据web操作命令的代理实现;
FsckServlet.java----继承实现类:名字节点上fsck的web服务;文件系统检查web操作命令的代理实现;
FSClusterStats.java----接口类:这个接口用于检索集群相关的统计;
FSDirectory.java----继承实现类:类FSDirectory实现了存储文件系统的目录状态;文件目录结构的定义及实现;
FSEditLog.java----独立内存类:FSEditLog类实现了维护命名空间改动的日志记录;文件系统日志表的定义;
FSImage.java----继承实现类:FSImage实现对命名空间的编辑进行检查点操作和日志记录操作;文件系统的目录、文件、数据的索引及关系信息定义;
FSInodeInfo.java----接口类:文件系统相关信息;
FSNamesystem.java----继承实现类:FSNamesystem类实现了为数据节点进行实际的记账工作;为数据节点命名的信息结构定义;
FSPermissionChecker.java----独立内存类:实现用于检测文件系统权限的类;
GetDelegationTokenServlet.java----继承实现类:获取委托令牌服务;
GetImageServlet.java----继承实现类:这个类用于在命名系统中检索文件;通常用于第二名字节点来检索镜像以及为周期性的检测点进行编辑文件;
Host2NodesMap.java----独立内存类:主机到节点的映射;
INode.java----继承实现类:这个抽象类包含了文件和目录索引节点的通用字段;节点基础信息结构定义;
INodeDirectory.java----继承实现类:表示目录的索引节点的类;
INodeDirectoryWithQuota.java----继承实现类:有配额限制的目录索引节点类;
INodeFile.java----继承实现类:目录索引节点文件;文件节点信息结构定义;
INodeFileUnderConstruction.java----继承实现类:建立目录索引节点文件;在创建之下的文件节点信息结构定义;
JspHelper.java----独立内存类:JSP实现辅助类;
LeaseExpiredException.java----继承实现类:创建的文件已过期异常;
LeaseManager.java----独立内存类:LeaseManager实现了写文件的租赁管理;这个类还提供了租赁恢复的有用的静态方法;契约信息结构定义及实现;
ListPathsServlet.java----继承实现类:获取一个文件系统的元信息;
MetaRecoveryContext.java----独立内存类:正在进行的名字节点恢复进程的上下文数据;
NameCache.java----独立内存类:缓存经常使用的名称以便再用;
NameNode.java----继承实现类:名字节点功能管理和实现类;名称节点的核心服务器类;
NamenodeFsck.java----独立内存类:这个类提供了DFS卷基本的检测;名称节点的系统检测类;
NameNodeMXBean.java----接口类:这个类是名字节点信息的JMX管理接口;
NotReplicatedYetException.java----继承实现类:文件还未赋值异常类;
PendingReplicationBlocks.java----独立内存类:这个类PendingReplicationBlocks实现了所有快复制的记录;正在复制数据块的信息表定义;
PermissionChecker.java----独立内存类:这个类实现了执行权限检查操作;权限检查表结构定义及实现;
RenewDelegationTokenServlet.java----继承实现类:续订令牌服务;
SafeModeException.java----继承实现类:当名字节点处于安全模式的时候抛出这个异常;客户端不能够修改名字空间直到安全模式关闭;
SecondaryNameNode.java----继承实现类:第二名字节点功能的管理和实现类;
SerialNumberManager.java----独立内存类:为用户和组管理名称到序列号的映射;
StreamFile.java----继承实现类:流文件类的实现;
TransferFsImage.java----继承实现类:这个类实现了从名字节点获取一个指定的文件的功能;通过http方式来获取文件的镜像信息;
UnderReplicatedBlocks.java----继承实现类:复制块的类的实现;复制完成后的块信息表定义;
UnsupportedActionException.java----继承实现类:操作不支持的异常;
UpgradeManagerNamenode.java----继承实现类:名字节点升级的管理;
UpgradeObjectNamenode.java----抽象类:名字节点对象更新类;数据节点的更新运行在单独的线程上;升级名称节点的对象信息;
hdfs.server.datanode(数据节点的实现)
BlockAlreadyExistsException.java----继承实现类:目标块已经存在异常;
BlockMetadataHeader.java----独立内存类:数据块头部结构定义及实现;
BlockReceiver.java----继承实现类:这个类实现了接收一个块并写到自己的磁盘的功能,同时也可以复制它到另外一个磁盘;数据块接收容器信息结构及实现写入到盘中;接收一个数据块,并写到本地的磁盘,同时可能会拷贝到其他的节点上;
BlockSender.java----继承实现类:从磁盘读取块,并发送它到接收的目的地;从磁盘中读数据块并发送到相应接收者;
BlockTransferThrottler.java----独立内存类:调节数据块的传输;块传送时的调节参数配置表;
DataBlockScanner.java----继承实现类:数据块的扫描工具实现;DataBlockScanner拥有它单独的线程,能定时地从目前DataNode管理的数据块文件进行校验;其实最重要的方法就是verifyBlock;DataBlockScanner其他的辅助方法用于对DataBlockScanner管理的数据块文件信息进行增加/删除,排序操作;
DataNode.java----继承实现类:数据节点的功能的管理和实现;数据块的核心管理器;
DatanodeBlockInfo.java----独立内存类:这个类用于数据节点保持从数据块到它的元数据的映射的功能;建立块文件和其属于哪个FSVolume之间的映射关系;
DataNodeMXBean.java----接口类:数据节点信息的JMX管理接口的实现;
DataStorage.java----继承实现类:数据存储信息文件;
DataXceiver.java----继承实现类:用于处理输入/输出数据流的线程;
DataXceiverServer.java----继承实现类:用于接收和发送数据块的服务;
FSDataset.java----继承实现类:FSDataset类实现管理数据块集合的功能;
FSDatasetAsyncDiskService.java----独立内存类:这个类实现了每个卷上多个线程池的容器,所以我们能够轻松地调度异步磁盘操作;为每个数据块目录创建一个线程池,并用作为一个线程组,池的最小值为1 ,最大值为4;当前版本,只有delete 操作会将任务经过线程池调度来进行异步处理,读写操作都是调文件操作同步去执行的;
FSDatasetInterface.java----接口类:这是一个接口,这个接口实现了一个数据节点存储块的底层存储;FSDatasetInterface是DataNode对底局存储的抽象;
SecureDataNodeStarter.java----继承实现类:这个类实现在一个安全的集群中启动一个数据节点,在启动前需要获得特权资源,并把它们递交给数据节点;
UpgradeManagerDatanode.java----继承实现类:这个类实现了数据节点的升级管理;
UpgradeObjectDatanode.java----抽象类:这个类是数据节点升级对象的基类;数据节点升级运行在一个单独的线程中;
hdfs(客户端的实现)
BlockReader.java----接口类:这个接口供本地和远程块读取共享;
BlockReaderLocal.java----继承实现类:本地块读取;
ByteRangeInputStream.java----抽象类:为了支持HTTP字节流,每次都需要建立一个针对HTTP服务的新的连接;
ChecksumDistributedFileSystem.java----继承实现类:分布式文件系统检测;
DFSClient.java----独立内存类:DFSClient类能够连接到Hadoop文件系统并执行基本的文件操作;
DFSConfigKeys.java----继承实现类:这个类包含了HDFS中使用的常数;
DFSUtil.java----独立内存类:DFS实用工具;
DistributedFileSystem.java----继承实现类:DFS系统的抽象文件系统实现;分布式文件系统功能的实现;
HftpFileSystem.java----继承实现类:通过HTTP访问文件系统的协议的执行;采用HTTP协议来访问HDFS文件;
HsftpFileSystem.java----继承实现类:通过HTTPs访问文件系统的协议的执行;采用HTTPs协议来访问HDFS文件;
LeaseRenewer.java----独立内存类:更新租赁;
hdfs.server.namenode.metrics(名字节点上度量数据的收集功能)
FSNamesystemMBean.java----接口类:这个接口定义了获取一个名字节点的FSNamesystem状态的方法;取名称节点的文件状态信息;
NameNodeInstrumentation.java----继承实现类:名字节点规范类;
hdfs.server.datanode.metrics(数据节点上度量数据的收集功能)
DataNodeInstrumentation.java----继承实现类:数据节点的一些规范;
FSDatasetMBean.java----接口类:这个接口中定义了方法来获取一个数据节点的FSDataset的状态;数据集的职能定义;
包括hdfs.tools和hdfs.server.balancer,这两个包提供查询HDFS状态信息工具dfsadmin、文件系统检查工具fsck和HDFS均衡器balancer(通过start-balancer.sh启动)的实现。
hdfs.tools(查询HDFS状态信息工具dfsadmin、文件系统检查工具fsck的实现)
DelegationTokenFetcher.java----独立内存类:这个类实现了从当前的名字节点获取DelegationToken,并存储它到指定的文件当中;
DFSAdmin.java----继承实现类:这个类实现了提供一些DFS访问管理;管理员命令的实现;
DFSck.java----继承实现类:这个类实现了对DFS卷进行基本的检查;文件系统检查命令的实现;
HDFSConcat.java----独立内存类:HDFS串接;
hdfs.server.balancer(HDFS均衡器balancer的实现)
Balancer.java----继承实现类:负载均衡进程,各节点基于他来进行任务量的平衡;balance是一个工具,用于当一些数据节点全部使用或者有新的节点加入集群的时候,来平衡HDFS集群上的磁盘空间使用率;
4.WebHDFS相关包
包括hdfs.web.resources、hdfs.server.namenode.metrics.web.resources、hdfs.server.datanode.web.resources和hdfs.web共4个包。
WebHDFS是HDFS 1.0中引入的新功能,它提供了一个完整的、通过HTTP访问HDFS的机制。对比只读的hftp文件系统,WebHDFS提供了HTTP上读写HDFS的能力,并在此基础上实现了访问HDFS的C客户端和用户空间文件系统(FUSE)。
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:90555次
积分:2791
积分:2791
排名:第10325名
原创:197篇
(10)(1)(3)(4)(3)(26)(6)(9)(12)(6)(20)(6)(13)(23)(24)(30)(9)

我要回帖

更多关于 微信超出20万限额怎么办 的文章

 

随机推荐