Cloudera Enterprise 6 beta で Erasure Coding を試してみる

Hadoop 3.0 で導入された HDFS  Erasure Coding を Cloudera Enterprise 6.0 beta の環境で試してみました。
HDFSのErasure Coding は、HDFSのブロックの複製とは異なり、大規模環境においてはストレージに必要なコストを削減できる可能性がある技術です。しかし、小さいデータを格納する際は不利になり、ラック障害やImpala、Spark/MapReduceのようなジョブから利用する場合のパフォーマンス面でも注意が必要です。
Erasure Codingについては過去の投稿Clouderaのブログ、公式ページのドキュメントをご覧ください。整理できたら近いうちに何か書くかもしれません。
“Cloudera Enterprise 6 beta で Erasure Coding を試してみる” の続きを読む

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が特定のディスクに偏ってしまい、効率が良くありません。
“Hadoop3.0の新機能!DataNodeディスク間バランサーを試す” の続きを読む

HDFSの再バランス

HDFSには、DataNode間でディスク使用量の再バランスを行う balaner 機能があります。また、Hadoop3.xで導入される予定の、DataNode内のディスク間のリバランス機能(Disk Balancer)もあります。(この機能はCDH5.8.2以降でも利用できます)
今回はノード間の再バランスについて、次回は新しいディスク間のバランス機能について紹介する予定です。
“HDFSの再バランス” の続きを読む

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

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

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

現時点のディレクトリは下記の通り
[code]
$ 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
[/code]
スナップショットを取得します。
[code]
$ hdfs dfs -createSnapshot hoge snap1
Created snapshot /user/training/hoge/.snapshot/snap1
[/code]
スナップショットを確認します。普通の ls では見えませんが、.snapshot ディレクトリを直接見ることはできます。
[code]
$ 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
[/code]
スナップショットを取得したので、は以下のディレクトリを削除します。比較してみましょう。
[code]
$ 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
[/code]
fugaディレクトリが削除されていますね。.snapshot以下を確認します。
[code]
$ 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
[/code]
さて、スナップショットのあるディレクトリを削除してみましょう。
[code]
$ hdfs dfs -rm -r hoge
rm: The directory /user/training/hoge cannot be deleted since /user/training/hoge is snapshottable and already has snapshots
[/code]
エラーになりました。HDFSのスーパーユーザー、hdfsで削除してみます。同じようにエラーになりますね。
[code]
$ 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
[/code]

まとめ

オペミスで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のイレイジャーコーディング (Erasure Coding)” の続きを読む

HDFSのfsck

HDFSの不良ブロック

先日、CDH5.4へのアップグレード中に仮想マシンが落ちた際、不良ブロックが大量に発生しました。
Cloudera Managerのヘルステストによると、52の紛失したブロックがあると報告されています。 “HDFSのfsck” の続きを読む