HDFS架构

HDFS架构:
hdfs是一个应用广泛的分布式文件系统。一个hdfs文件系统由一个NameNode,一个Secondary NameNode和多个DataNode组成。NameNode管理系统的元数据,DataNode是实际存储数据的单元,secondary NameNode用来管理edits文件。

HDFS的优点:
1,适合做大数据的处理(GB,TB,PB级的数据存储,百万以上的文件数量);
2,适合做离线的批处理(高吞吐量)
3,容错率高,安全性好
HDFS的缺点:
1,不适合存储小文件,浪费空间。占用NameNode资源。
2,不支持并发写入,同一时刻只能有一个写入进程,不支持随机修改;

NameNode:
HDFS采用master/slaves架构。一个HDFS集群由一个NameNode和多个DataNode组成。NameNode是一个中心服务器。
NameNode的任务:
(1)负责管理文件系统的名字空间操作。比如打开,关闭,重命名文件或目录。
(2)负责确定数据块到具体DataNode节点的映射。(文件到块的映射,块到DataNode的映射)
(3)监督DataNode的健康状态
(4)协调数据的存储
NameNode特性:
(1)NameNode运行时,所有的数据都会存储到内存中,所以HDFS可存储的文件数受限于NameNode的内存大小;
(2)一个block在NameNode中对应于一条记录,如果是大量的小文件,会占用NameNode大量的内存资源;
(3)NameNode的数据会持久化到本地磁盘,但不会保留block的位置信息。block由DataNode注册时上报,运行时维护;
(4)一旦NameNode失效则整个集群就无法使用,因此要保证NameNode的高可靠;

Secondary NameNone:
Secondary NameNode会定期合并fsimage和edits日志,将edits日志保持在一个可控范围下。Secondary NameNode会连接到NameNode,同步NameNode的edits日志和fsimage文件到一个新文件中,在保存到本地的同时发回给NameNode一份。当NameNode宕机时,保存在Secondary NameNode的文件可以用来回复NameNode。

因为内存需求和NameNode在一个数量级上,所以通常secondary NameNode和NameNode运行在不同的机器上。

DataNode:
DataNode的特点:
(1)保存具体的block数据。
(2)负责数据的读写操作和复制操作。
(3)DataNode启动时会向NameNode报告当前存储的数据块信息,后续也会定时向NameNode报告修改信息。
(4)DataNode之间相互通讯,复制数据块,保证数据的冗余性。
**************************************************************************************************如何动态的给Hadoop新增节点:
1,配置新节点的环境:
Hadoop运行需要Java环境,所以需要安装JDK,要保证与master节点的JDk版本一致。
关闭该节点的防火墙
配置新节点与master的SSH免密登录
2,修改集群的配置文件
修改集群中所有节点(包括master和slave)的${HADOOP_HOME}/conf/slaves文件,将新节点的 ip和hostname追加进去:新节点ip 新节点主机名
同时修改集群中所有节点的/etc/hosts配置文件,增加hostname与ip的映射:新节点ip 新节点主机名。
3,新节点增加Hadoop
将master中的配置文件拷贝到新节点,而且新节点的Hadoop目录最好和其他节点的目录保持一致,便于管理。
scp -r /hadoop安装目录 新节点上的Hadoop用户名@新节点主机ip或主机名
4,启动新节点
新节点增加后没必要将整个集群重启,单独重启该节点就可以了:
./bin/hadoop-deamon.sh start datanode # 启动DataNode
./bin/hadoop-deamon.sh start tasktracker # 启动tasktracker
5,负载均衡
目的是将其他节点的数据分一部分到这个节点上,耗时与集群已有的数据量相关:
hadoop balance
或者:
bin/start-balancer.sh

如何删除Hadoop的节点:
1,修改NameNode节点的hdfs-site.xml,增加:

dfs.hosts.exclude
/soft/hadoop/conf/excludes

2,修改NameNode节点的mapred-site.xml,增加:

mapred.hosts.exclude
/soft/hadoop/conf/excludes
true

3,新建excludes文件,文件里写要删除的节点的hostname:
4,NameNode节点执行:
hadoop mradmin -refreshNodes
hadoop dfsadmin -refreshNodes
5,查看关闭的进程
hadoop dfsadmin -report
当节点处于Decommissioned,表示关闭成功。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值