hadoophdfs

82次阅读

共计 1212 个字符,预计需要花费 4 分钟才能阅读完成。

整体:https://segmentfault.com/a/11…
HDFS 是 hadoop 的最底层存储部分
官方:http://hadoop.apache.org/docs…
HDFS 是每台机器运行的守护进程,对外暴露网络服务,允许其他节点访问存储在该机器上的文件
NameNode 跟踪哪个文件块存储在哪台机器上

架构


先从 namenode 获取元数据,再到具体的 datanode 中读取数据。

namespace: 允许每个命名空间的 NN 自定义 DNid 的 ip,无需和另一个 NS 商议。删除命名空间可删除自己的 dn,nn。比如在 NN1 的 DN1:IP2,NN3 的 DN2:IP4 的配置:

<property>
  <name>dfs.nameservices</name>
  <value>ns1,ns2</value>
</property>
<property>
  <name>dfs.nameservices.ns1</name>
  <value>nn1,nn2</value>
</property>
<property>
  <name>dfs.namenode.rpc-addr.ns1.nn1</name>
  <value>ip1:8082</value>
</property>
<property>
  <name>dfs.nameservices.ns2</name>
  <value>nn3,nn4</value>
</property>
<property>
  <name>dfs.namenode.rpc-addr.ns2.nn3</name>
  <value>ip4:8082</value>
</property>

NN:存放每个节点的路由。可以每个机器放一个 + n 个 dn。为了保证可靠性,每个 NS 都有两个 NN,多 NN 的 HA 保证:
1. 使用共享存储,存放 nnlog,一个写一个读同步 +zk 自动故障转移

SNN 在升级前确保 log 同步全,两个机器同时发心跳和 block-map,
为了保证只有一个 ANN 写入 NFS,一个 ANN 发出写 DN,只有一个 ANN 对客户端做响应。必须在 ANN 降级后切段写入,确保网络延时的数据等不再写入。
2.QJM。
QJM 奇数个节点,轻量级,可以混部,QJM 负责 NN 的接管转换隔离,写入持久化,读写一致性,自动故障还是要用 zk。

还可以增加集中式缓存,DN 将缓存上报到 NN,NN 路由到缓存节点
存储:DISK,ARCHIVE(pb 级,冷存档),RAM_DISK(HDFS 支持写入由数据节点管理的堆外内存。数据节点将异步刷新内存中的数据到磁盘,从而从性能敏感的 IO 路径中删除昂贵的磁盘 IO 和校验和计算,因此我们称这种写入为 Lazy Persist 写入。HDFS 为 Lazy Persist Writes 提供尽力而为的持久性保证。如果在将副本持久保存到磁盘之前重新启动节点,则可能会丢失数据。应用程序可以选择使用 Lazy Persist Writes 来换取一些持久性保证,以减少延迟),SDD

正文完
 0