Hadoopのシリーズ(A) - HDFS分散ファイルシステム

I.はじめに

HDFSHadoopの分散ファイルシステム)のHadoop分散ファイルシステムであり、高いフォールト・トレランス、高スループット特性を有する、低コストのハードウェア上に展開することができます。

二、HDFSの設計原理

https://github.com/heibaiying

2.1 HDFSアーキテクチャ

HDFSは、単一の名前ノード(NN)とからなるデータノード(DN)複数のマスタ/スレーブ・アーキテクチャに従います。

  • 名前ノード:関連の実装を担当する文件系统命名空间など開口部などの操作、ファイルやディレクトリの名前を変更し、閉じます。また、メタデータクラスタ、各ファイルのデータブロックの記録位置情報を格納するための責任があります。
  • データノード:ファイルシステムのクライアントからの読み取りおよび書き込み要求を提供する責任は、削除して、他の操作、実行ブロックを作成します。

2.2ファイルシステムの名前空間

HDFSの文件系统命名空间階層(Linuxなど)ほとんどのファイルシステムと同様に、ディレクトリやファイルの作成をサポートし、移動、ファイルを削除し、名前の変更、ユーザーの設定やアクセス権のためのサポートが、ハードリンクとソフトの接続をサポートしていません。NameNode名前空間またはそのプロパティへの変更を記録するために、ファイルシステムの名前空間を維持するための責任。

2.3データ・レプリケーション

Hadoopのは、ハードウェアが信頼できないことを意味し、低コストのマシン上で動作するように設計されたため、耐障害性を確保するために、HDFSはデータ複製メカニズムを提供します。HDFSファイルの各々は、一連の格納されたブロック、各ブロックは、ブロックサイズおよび複製因子は、それ自体を構成することができ、フォールトトレランスを確保するために複数のコピーで構成されている(デフォルトでは、ブロック・サイズは128Mであり、デフォルトは、複製因子3です)。

https://github.com/heibaiying

2.4データレプリケーションの実装の原則

大型的 HDFS 实例在通常分布在多个机架的多台服务器上,不同机架上的两台服务器之间通过交换机进行通讯。在大多数情况下,同一机架中的服务器间的网络带宽大于不同机架中的服务器之间的带宽。因此 HDFS 采用机架感知副本放置策略,对于常见情况,当复制因子为 3 时,HDFS 的放置策略是:

在写入程序位于 datanode 上时,就优先将写入文件的一个副本放置在该 datanode 上,否则放在随机 datanode 上。之后在另一个远程机架上的任意一个节点上放置另一个副本,并在该机架上的另一个节点上放置最后一个副本。此策略可以减少机架间的写入流量,从而提高写入性能。

<div align="center"> <img src="https://raw.githubusercontent.com/heibaiying/BigData-Notes/master/pictures/hdfs-机架.png"/>; </div>
如果复制因子大于 3,则随机确定第 4 个和之后副本的放置位置,同时保持每个机架的副本数量低于上限,上限值通常为 (复制系数 - 1)/机架数量 + 2,需要注意的是不允许同一个 dataNode 上具有同一个块的多个副本。

2.5 副本的选择

为了最大限度地减少带宽消耗和读取延迟,HDFS 在执行读取请求时,优先读取距离读取器最近的副本。如果在与读取器节点相同的机架上存在副本,则优先选择该副本。如果 HDFS 群集跨越多个数据中心,则优先选择本地数据中心上的副本。

2.6 架构的稳定性

1. 心跳机制和重新复制

每个 DataNode 定期向 NameNode 发送心跳消息,如果超过指定时间没有收到心跳消息,则将 DataNode 标记为死亡。NameNode 不会将任何新的 IO 请求转发给标记为死亡的 DataNode,也不会再使用这些 DataNode 上的数据。 由于数据不再可用,可能会导致某些块的复制因子小于其指定值,NameNode 会跟踪这些块,并在必要的时候进行重新复制。

2. 数据的完整性

由于存储设备故障等原因,存储在 DataNode 上的数据块也会发生损坏。为了避免读取到已经损坏的数据而导致错误,HDFS 提供了数据完整性校验机制来保证数据的完整性,具体操作如下:

当客户端创建 HDFS 文件时,它会计算文件的每个块的 校验和,并将 校验和 存储在同一 HDFS 命名空间下的单独的隐藏文件中。当客户端检索文件内容时,它会验证从每个 DataNode 接收的数据是否与存储在关联校验和文件中的 校验和 匹配。如果匹配失败,则证明数据已经损坏,此时客户端会选择从其他 DataNode 获取该块的其他可用副本。

3.元数据的磁盘故障

FsImageEditLog 是 HDFS 的核心数据,这些数据的意外丢失可能会导致整个 HDFS 服务不可用。为了避免这个问题,可以配置 NameNode 使其支持 FsImageEditLog 多副本同步,这样 FsImageEditLog 的任何改变都会引起每个副本 FsImageEditLog 的同步更新。

4.支持快照

快照支持在特定时刻存储数据副本,在数据意外损坏时,可以通过回滚操作恢复到健康的数据状态。

三、HDFS 的特点

3.1 高容错

由于 HDFS 采用数据的多副本方案,所以部分硬件的损坏不会导致全部数据的丢失。

3.2 高吞吐量

HDFS 设计的重点是支持高吞吐量的数据访问,而不是低延迟的数据访问。

3.3大規模ファイルのサポート

大きなファイルを格納するのに適しHDFSは、ドキュメントのサイズがTBのGBのレベルでなければなりません。

3.3シンプルな一貫性モデル

HDFSは(追記型)アクセスモデルかつて多くのリードライトに適しています。サポートは、ファイルの末尾に追加されますが、データへのランダムアクセスをサポートしていない、あなたはどこにでもファイルからデータを追加することはできません。

3.4クロスプラットフォームの移植性

HDFSは、他の大規模なデータフレームを好適な実施例永続的なデータストレージとして計算されることができ、良好なクロスプラットフォームの移植性を有しています。

附属書:ストレージ原理図HDFS

説明:ブログから参照以下の画像:HDFSの原理を説明するための古典的な漫画の翻訳

1. HDFSはデータの原則を書きます

https://github.com/heibaiying

https://github.com/heibaiying

https://github.com/heibaiying

2. HDFSデータは原則を読みます

https://github.com/heibaiying

3. HDFSの障害種別及び検出方法

https://github.com/heibaiying

https://github.com/heibaiying

パートII:失敗を読み書き

https://github.com/heibaiying

パートIII:データノードのトラブルシューティング

https://github.com/heibaiying

配置戦略のコピー

https://github.com/heibaiying

参考資料

  1. ApacheのHadoopの2.9.2> HDFSのアーキテクチャ
  2. トム・ホワイト。HadoopのDefinitive Guideの[M]。清華大学出版。2017年。
  3. HDFSの原理を説明するための翻訳古典的な漫画

もっと大きなデータ系列は、GitHubのオープンソースプロジェクトを見つけることができますビッグデータははじめに

おすすめ

転載: blog.51cto.com/14183932/2437387