変更点とか、追加機能についていくつかメモ書き。
概要
リリースノートはこちら。2.5.0になって、ようやくこのページが更新されました。次回以降のリリースでも、このページが更新されるようにしていきたいですね。
Hadoopユーザにとって嬉しい機能としては、こんなのがあります。
- A new Hadoop metrics sink that allows writing directly to Graphite.
- YARN's REST APIs now support write/modify operations. Users can submit and kill applications through REST APIs.
また、HDFS Rolling Upgradeが適用可能な最初のマイナーバージョンアップでもあります。(2.4 -> 2.5.0)
ちなみに、
- Using the OfflineImageViewer, clients can now browse an fsimage via the WebHDFS API.
これは自分が実装しました。ほぼ全てHortonworksのHaohuiさんにレビュー・コミットしてもらっていて、彼にはとても感謝しています。
OfflineImageViewerで特定のディレクトリの情報だけ取りたい、というような場合に役に立ちます。後ろのほうに説明があります。
(dist)cpに関するオプション
cpコマンドにACLを保持するオプション(-pa)と、XAttrを保持するオプション(-px)が追加されました(distcpも同様)
- ドキュメントはこちら
- 全てを保持したいときは、
$ cp -ptopax src dst
で大丈夫
t: time
o: owner
p: permission
a: ACL (自動的にpermissionも保持する)
x: XAttr
注意点
-
cp -p
は今までどおり、time, owner, permissionを保持する - ただし、
cp -pa
だとtime, ownerは保持されない -
src
のFileSystemがACLに対応していない場合、もしくは、src
がACLを保持しているがdst
のFileSystemがACLに対応していない場合、cp -pa src dst
は失敗する - XAttrの場合でも、同様
oiv_legacyコマンドの追加
Hadoop 2.4でfsimageの形式が変わった(HDFS-5698)ため、それを読み込んでdumpするツールであるOfflineImageViewerも変化した。
2.3以前のoivでできたこと
- Ls: ls形式で出力
- XML: XML形式で出力
- Indented: インデントした状態で出力
- Delimited: 任意のdelimiterで出力
- FileDistribution: ファイルサイズの統計情報を出力
- NameDistribution: ファイル名・ディレクトリ名の統計情報を出力(NameNodeではファイル名・ディレクトリ名をStringで保持するので、使い回せばその分ヒープが節約できる)
2.4のoivでできること
- Ls
- XML
- FileDistribution
デグレ!
2.5のoivでできるようになったこと
-
Web: 指定したポートにWebHDFS REST API(read-only)を提供するHTTPサーバを起動する。
hdfs dfs -ls webhdfs://localhost:5978/path/to/dir
のようにアクセスすることで、interactiveにfsimageの情報を出力させることが可能。要はjhat的なもの。(HDFS-5978)- 今後、dfs -findコマンドと組み合わせることで様々な条件で検索できるようになる予定。
- findコマンドはまだマージされていないけど、2.6では使えるようにしたい。
XML
FileDistribution
これでもまだ足りない上に、性能問題も指摘 (HDFS-6293)
- fsimageが巨大だと、それに応じて大量のメモリが必要 (2.4のLsでも同様)
- fsimageの形式が変わったことで、一旦ほぼ全ての情報をメモリに読み込む必要が出たため
解決策(妥協案): oiv_legacyコマンド
- 2.5.0で追加された機能
- SecondaryNameNode/CheckpointNodeで旧形式のfsimageを追加でdumpするよう修正 (プロパティ"dfs.namenode.legacy-oiv-image.dir"を設定すると、設定したディレクトリに出力される)
- dumpされた旧形式のfsimageに対してoiv_legacyコマンドが使える
- oiv_legacyコマンドは2.3までのoivコマンドと同じ、すなわち2.3までと全く同じことができる
これで、めでたく昔の形式を利用するツール(例:hdfs-du)も今まで通り使えるようになります