HDFSの新しい機能3つ

HDFSは分散ファイルシステムとして確固たる地位を築きましたが、NFSのサポートやスナップショットなど、多くの機能が追加されています。

その中で、今後 Hadoop 3 で重要となる「HDFSのイレイジャーコーディング」を含めたClouderaのHDFSに関するブログ記事を日本語に翻訳しました。

全3回にわたって掲載する予定なので、興味があればご覧ください。

第1弾:Apache HadoopのHDFS Erasure Codingの紹介

第2弾:How-to: Apache Hadoopで新しいHDFS DataNodeディスク間バランサを使用する

第3弾:HDFSのメンテナンスステート

Hadoop3.0の新機能!DataNodeディスク間バランサーを試す

DataNodeディスク間バランサー

昨日紹介したHDFSの再バランスは、DataNode間でディスク使用量を平準化するための機能でした。一方で、DataNodeが複数のディスクを持っている場合、それぞれのディスクの使用量のバランスが崩れてしまうこともあります。一例として、データの削除が激しく行われたり、もっとわかりやすい例は新しいディスクを増設した場合です。このように偏りが生じるとI/Oが特定のディスクに偏ってしまい、効率が良くありません。

(続きを読む)

HDFSの再バランス

HDFSには、DataNode間でディスク使用量の再バランスを行う balaner 機能があります。また、Hadoop3.xで導入される予定の、DataNode内のディスク間のリバランス機能(Disk Balancer)もあります。(この機能はCDH5.8.2以降でも利用できます)

今回はノード間の再バランスについて、次回は新しいディスク間のバランス機能について紹介する予定です。

(続きを読む)

HDFSスナップショットのメモ

HDFSのスナップショット。以前にHDFSスナップショットのブログを書きましたが、何点か自分用のメモを残しておきます。

HDFSのスナップショットを取得して削除する

現時点のディレクトリは下記の通り


$ hdfs dfs -ls -R /user/training/
drwxrwxrwx   - training supergroup          0 2016-07-12 19:12 /user/training/.Trash
drwxrwxrwx   - training supergroup          0 2016-08-09 01:40 /user/training/hoge
drwxrwxrwx   - training supergroup          0 2016-08-09 01:40 /user/training/hoge/fuga
-rw-rw-rw-   1 training supergroup        158 2016-08-09 01:40 /user/training/hoge/fuga/hosts
-rw-rw-rw-   1 training supergroup       1934 2016-08-09 01:40 /user/training/hoge/passwd

スナップショットを取得します。


$ hdfs dfs -createSnapshot hoge snap1
Created snapshot /user/training/hoge/.snapshot/snap1

スナップショットを確認します。普通の ls では見えませんが、.snapshot ディレクトリを直接見ることはできます。


$ hdfs dfs -ls hoge/
Found 2 items
drwxrwxrwx   - training supergroup          0 2016-08-09 01:40 hoge/fuga
-rw-rw-rw-   1 training supergroup       1934 2016-08-09 01:40 hoge/passwd
$ hdfs dfs -ls hoge/.snapshot
Found 1 items
drwxrwxrwx   - training supergroup          0 2016-08-09 01:41 hoge/.snapshot/snap1

スナップショットを取得したので、は以下のディレクトリを削除します。比較してみましょう。


$ hdfs dfs -rm -r hoge/fuga
Deleted hoge/fuga

$ hdfs snapshotDiff hoge snap1 .
Difference between snapshot snap1 and current directory under directory /user/training/hoge:
M    .
-    ./fuga

fugaディレクトリが削除されていますね。.snapshot以下を確認します。


$ hdfs dfs -ls hoge/.snapshot
Found 1 items
drwxrwxrwx   - training supergroup          0 2016-08-09 01:41 hoge/.snapshot/snap1
$ hdfs dfs -ls hoge/.snapshot/snap1
Found 2 items
drwxrwxrwx   - training supergroup          0 2016-08-09 01:40 hoge/.snapshot/snap1/fuga
-rw-rw-rw-   1 training supergroup       1934 2016-08-09 01:40 hoge/.snapshot/snap1/passwd

さて、スナップショットのあるディレクトリを削除してみましょう。


$ hdfs dfs -rm -r hoge
rm: The directory /user/training/hoge cannot be deleted since /user/training/hoge is snapshottable and already has snapshots

エラーになりました。HDFSのスーパーユーザー、hdfsで削除してみます。同じようにエラーになりますね。


$ sudo -u hdfs hdfs dfs -rm -r /user/training/hoge
rm: The directory /user/training/hoge cannot be deleted since /user/training/hoge is snapshottable and already has snapshots

まとめ

オペミスでHDFSのディレクトリを削除してしまうような経験をしたことがある方もいらっしゃるかと思いますが、HDFSのスナップショットを定期的に取得しておくことで最悪の事態は回避することができるかもしれませんね。

HDFSのイレイジャーコーディング (Erasure Coding)

2017/5/19追記: ClouderaのHDFS Erasure Codingのブログ翻訳しました -> Apache HadoopのHDFS Erasure Codingの紹介


以前紹介したHDFSのイレイジャーコーディング「HDFSが変わる?HDFSのイレイジャーコーディング対応」について詳しく書かれたブログがClouderaから公開されました。Hadoop 3.0をターゲットにして開発されているようです。

http://blog.cloudera.com/blog/2015/09/introduction-to-hdfs-erasure-coding-in-apache-hadoop/

背景から設計の方針、評価まで幅広くかなり詳しく網羅されており読み応えがあります。しかし、日本語訳が出るかわからないので、自分用にまとめてみました。間違いを発見したらご指摘下さい。

※Erasure Coding、イレージャーコーディングとイレイジャーコーディングのどちらが良いか迷いましたが、Erasureの発音より「イレイジャー」にしました。

(続きを読む)

HDFSのfsck

HDFSの不良ブロック

先日、CDH5.4へのアップグレード中に仮想マシンが落ちた際、不良ブロックが大量に発生しました。

Cloudera Managerのヘルステストによると、52の紛失したブロックがあると報告されています。 (続きを読む)

HDFSが変わる?HDFSのイレイジャーコーディング対応

Hadoopの分散ファイルシステムであるHDFSはビッグデータ用のストレージ用に広く利用され、ビッグデータにおけるファイルシステムのデファクトスタンダードになっていると言っても過言ではありません。最近では暗号化の対応アクセス制御(ACL)NFSv3への対応など、セキュリティの強化や利便性の向上なども進化しています。

このように進化を続けているHDFSですが、現在開発が進んでいる機能のひとつにイレージャーコーディングへの対応というものがあります。

HDFS-7285:Erasure Coding Support inside HDFS

イレージャーコーディングとはソフトウェアエンジニアには耳慣れない言葉ですが、興味深かったのでまとめてみました。 (続きを読む)