HDFSの新しい機能を確認する(1)(CDH5.0 beta2)

CDH5 beta2のHDFS

CDH5 beta2が公開されてからしばらく経ちました。GAまでは(おそらく)もう少しです。手元の検証環境をアップデートしていなかったので、CDH5 beta1->beta2にアップデートして、いくつか変更点を確認してみます。

CDH5 beta2へのアップデート

今回の環境は、Cloudera ManagerではなくRPM(yum)でセットアップしていたので、コマンドラインからyumで更新します。
(余談)本来はドキュメントにある正しいアップグレード手順に従うべきですが、今回は片手間にやっていて、なんとかなるだろう、と軽い気持ちで実行したところ、NameNodeが起動せず…。ドキュメントには正しい手順が書いてあるのでちゃんと読みましょうね….
[code]
[root@huetest ~]# yum update hadoop*
[/code]
依存関係もあり、以下のようなファイルが更新されました。CDH5 beta2のリリースノートによると、HiveがParquetフォーマットに対応しています。後で確認してみよう。
[code]
Mar 11 01:06:49 Installed: avro-libs-1.7.5+cdh5.0.0+8-0.cdh5b2.p0.30.el6.noarch
Mar 11 01:06:49 Updated: bigtop-utils-0.7.0+cdh5.0.0+0-0.cdh5b2.p0.30.el6.noarch
Mar 11 01:06:49 Installed: parquet-format-1.0.0-1.cdh5b2.p0.31.el6.noarch
Mar 11 01:06:50 Installed: parquet-1.2.5+cdh5.0.0+29-0.cdh5b2.p0.20.el6.noarch
Mar 11 01:06:53 Updated: hadoop-2.2.0+cdh5.0.0+1610-0.cdh5b2.p0.51.el6.x86_64
Mar 11 01:06:55 Updated: hadoop-hdfs-2.2.0+cdh5.0.0+1610-0.cdh5b2.p0.51.el6.x86_64
Mar 11 01:06:59 Updated: hadoop-0.20-mapreduce-2.2.0+cdh5.0.0+1610-0.cdh5b2.p0.51.el6.x86_64
Mar 11 01:07:00 Updated: hadoop-yarn-2.2.0+cdh5.0.0+1610-0.cdh5b2.p0.51.el6.x86_64
Mar 11 01:07:03 Updated: hadoop-mapreduce-2.2.0+cdh5.0.0+1610-0.cdh5b2.p0.51.el6.x86_64
Mar 11 01:07:03 Updated: hadoop-0.20-mapreduce-tasktracker-2.2.0+cdh5.0.0+1610-0.cdh5b2.p0.51.el6.x86_64
Mar 11 01:07:03 Updated: hadoop-0.20-mapreduce-jobtracker-2.2.0+cdh5.0.0+1610-0.cdh5b2.p0.51.el6.x86_64
Mar 11 01:07:03 Updated: hadoop-hdfs-secondarynamenode-2.2.0+cdh5.0.0+1610-0.cdh5b2.p0.51.el6.x86_64
Mar 11 01:07:03 Updated: hadoop-hdfs-datanode-2.2.0+cdh5.0.0+1610-0.cdh5b2.p0.51.el6.x86_64
Mar 11 01:07:03 Updated: hadoop-hdfs-namenode-2.2.0+cdh5.0.0+1610-0.cdh5b2.p0.51.el6.x86_64
Mar 11 01:07:04 Updated: hadoop-0.20-conf-pseudo-2.2.0+cdh5.0.0+1610-0.cdh5b2.p0.51.el6.x86_64
Mar 11 01:07:04 Updated: hadoop-client-2.2.0+cdh5.0.0+1610-0.cdh5b2.p0.51.el6.x86_64
Mar 11 01:07:04 Updated: hadoop-hdfs-nfs3-2.2.0+cdh5.0.0+1610-0.cdh5b2.p0.51.el6.x86_64
Mar 11 01:07:04 Updated: hadoop-libhdfs-2.2.0+cdh5.0.0+1610-0.cdh5b2.p0.51.el6.x86_64
[/code]
いつものように NameNodeなどを起動した、つもりが、NameNodeがいません。
[code]
[root@huetest ~]# /usr/java/default/bin/jps
2462 DataNode
2371 TaskTracker
2630 Nfs3
2783 RunJar
2966 — process information unavailable
4152 Jps
2724 SecondaryNameNode
2941
2272 JobTracker
[/code]
何かやってもうた?と一瞬焦りましたが、冷静にNameNodeのログをチェック。ログによると、NameNodeのメタ情報のバージョンが変わっているため、アップグレードが必要とのこと。(再:ドキュメントはちゃんと読みましょう
ログは以下のようでした。version 47->51に変更となっているので、upgradeオプションを付けて起動しろとのこと。(完全なログはこちら
[code]
/var/log/hadoop-hdfs/hadoop-hdfs-namenode-huetest.log
2014-03-11 01:09:30,563 WARN org.apache.hadoop.hdfs.server.namenode.FSNamesystem: Encountered exception loading fsimage
java.io.IOException:
File system image contains an old layout version -47.
An upgrade to version -51 is required.
Please restart NameNode with -upgrade option.
at org.apache.hadoop.hdfs.server.namenode.FSImage.recoverTransitionRead(FSImage.java:222)
at org.apache.hadoop.hdfs.server.namenode.FSNamesystem.loadFSImage(FSNamesystem.java:842)
at org.apache.hadoop.hdfs.server.namenode.FSNamesystem.loadFromDisk(FSNamesystem.java:607)
at org.apache.hadoop.hdfs.server.namenode.NameNode.loadNamesystem(NameNode.java:448)
at org.apache.hadoop.hdfs.server.namenode.NameNode.initialize(NameNode.java:504)
at org.apache.hadoop.hdfs.server.namenode.NameNode.<init>(NameNode.java:660)
at org.apache.hadoop.hdfs.server.namenode.NameNode.<init>(NameNode.java:645)
at org.apache.hadoop.hdfs.server.namenode.NameNode.createNameNode(NameNode.java:1289)
at org.apache.hadoop.hdfs.server.namenode.NameNode.main(NameNode.java:1355)
2014-03-11 01:09:30,577 INFO org.mortbay.log: Stopped SelectChannelConnector@0.0.0.0:50070
[/code]
指示に従いアップグレードを実施します。(注:ちゃんとドキュメントに書いてあるので読みましょうね
[code]
[root@huetest hadoop-hdfs]# sudo -u hdfs hdfs namenode -upgrade
14/03/11 02:22:55 INFO namenode.NameNode: STARTUP_MSG:
/************************************************************
STARTUP_MSG: Starting NameNode
STARTUP_MSG: host = huetest/127.0.0.1
STARTUP_MSG: args = [-upgrade]
STARTUP_MSG: version = 2.2.0-cdh5.0.0-beta-2
(略)
14/03/11 02:22:58 INFO namenode.FileJournalManager: Recovering unfinalized segments in /var/lib/hadoop-hdfs/cache/hdfs/dfs/name/current
14/03/11 02:22:58 INFO namenode.FileJournalManager: Finalizing edits file /var/lib/hadoop-hdfs/cache/hdfs/dfs/name/current/edits_inprogress_0000000000000003286 -&gt; /var/lib/hadoop-hdfs/cache/hdfs/dfs/name/current/edits_0000000000000003286-0000000000000003286
14/03/11 02:22:58 INFO namenode.FSImage: Loading image file /var/lib/hadoop-hdfs/cache/hdfs/dfs/name/current/fsimage_0000000000000003285 using no compression
14/03/11 02:22:58 INFO namenode.FSImage: Number of files = 172
14/03/11 02:22:58 INFO namenode.FSImage: Number of files under construction = 0
14/03/11 02:22:58 INFO namenode.FSImage: Image file /var/lib/hadoop-hdfs/cache/hdfs/dfs/name/current/fsimage_0000000000000003285 of size 19130 bytes loaded in 0 seconds.
14/03/11 02:22:58 INFO namenode.FSImage: Loaded image for txid 3285 from /var/lib/hadoop-hdfs/cache/hdfs/dfs/name/current/fsimage_0000000000000003285
14/03/11 02:22:58 INFO namenode.FSImage: Reading org.apache.hadoop.hdfs.server.namenode.RedundantEditLogInputStream@2b1ecc13 expecting start txid #3286
14/03/11 02:22:58 INFO namenode.FSImage: Start loading edits file /var/lib/hadoop-hdfs/cache/hdfs/dfs/name/current/edits_0000000000000003286-0000000000000003286
14/03/11 02:22:58 INFO namenode.EditLogInputStream: Fast-forwarding stream ‘/var/lib/hadoop-hdfs/cache/hdfs/dfs/name/current/edits_0000000000000003286-0000000000000003286’ to transaction ID 3286
14/03/11 02:22:58 INFO namenode.FSImage: Edits file /var/lib/hadoop-hdfs/cache/hdfs/dfs/name/current/edits_0000000000000003286-0000000000000003286 of size 1048576 edits # 1 loaded in 0 seconds
14/03/11 02:22:58 INFO namenode.FSImage: Starting upgrade of local storage directories.
old LV = -47; old CTime = 0.
new LV = -51; new CTime = 1394518978593
14/03/11 02:22:58 INFO namenode.NNUpgradeUtil: Starting upgrade of storage directory /var/lib/hadoop-hdfs/cache/hdfs/dfs/name
14/03/11 02:22:58 INFO namenode.FSImage: Saving image file /var/lib/hadoop-hdfs/cache/hdfs/dfs/name/current/fsimage.ckpt_0000000000000003286 using no compression
14/03/11 02:22:58 INFO namenode.FSImage: Image file /var/lib/hadoop-hdfs/cache/hdfs/dfs/name/current/fsimage.ckpt_0000000000000003286 of size 19150 bytes saved in 0 seconds.
14/03/11 02:22:58 INFO namenode.FSImageTransactionalStorageInspector: No version file in /var/lib/hadoop-hdfs/cache/hdfs/dfs/name
14/03/11 02:22:58 INFO namenode.NNUpgradeUtil: Performing upgrade of storage directory /var/lib/hadoop-hdfs/cache/hdfs/dfs/name
14/03/11 02:22:58 INFO namenode.FSEditLog: Starting log segment at 3287
14/03/11 02:22:58 INFO namenode.NameCache: initialized with 0 entries 0 lookups
14/03/11 02:22:58 INFO namenode.FSNamesystem: Finished loading FSImage in 735 msecs
14/03/11 02:22:58 INFO namenode.NameNode: RPC server is binding to huetest:8020
14/03/11 02:22:59 INFO ipc.Server: Starting Socket Reader #1 for port 8020
14/03/11 02:22:59 INFO namenode.FSNamesystem: Registered FSNamesystemState MBean
14/03/11 02:22:59 INFO namenode.FSNamesystem: Number of blocks under construction: 0
14/03/11 02:22:59 INFO namenode.FSNamesystem: Number of blocks under construction: 0
14/03/11 02:22:59 INFO hdfs.StateChange: STATE* Safe mode ON.
The reported blocks 0 needs additional 96 blocks to reach the threshold 0.9990 of total blocks 96.
Safe mode will be turned off automatically
(略)
[/code]
しばらく放置して、無事に終了し、NameNodeも無事に起動しました。

WebUIの変更

ここで気付きましたが、hadoop 2.x.0ではWebUIのデザインが変更になっているようです。http://<namenodeのホスト名>:50070にアクセスしてみると、以下のようなデザインになっていました。
見た目が変わると新鮮ですね。(しかし、なぜ緑にする必要が!?)

NameNodeのUI

Namenode information

ファイルブラウザ

ファイルブラウザは使いにくくなった印象。デザインは悪くないんですが、ナビゲートバー(?)に一つ上の階層に戻るための .. が表示されてないので、かならずパスを入力しなければならないようです。
Browsing HDFS上記の画面でファイル名をクリックすると、以前のバージョンまでは、ファイルの内容やブロックの情報、レプリケーションされているホストの情報などをを見ることができましたが、このバージョンではダウンロードしかできないようです。
これってかなり不便なのでは!?

ファイルの情報を表示

Browsing HDFS2しかし、以前のバージョンと同じURL(例:http://huetest:50075/browseDirectory.jsp?dir=/user&namenodeInfoPort=50070&nnaddr=0.0.0.0:8020)を直接指定すれば、ファイルのブラウジングなどもできるようです。機能がなくなったわけじゃないようですが、どのページ/リンクから辿っていけるのかは今のところ不明。

ファイル情報を直接見る

HDFS--user

DataNodeのWebUI

変わってDataNodeのWebUIです。以前のバージョンよりも情報量が増えました。しかし、http://<datanode>:50075にアクセスしているのに 50010と表示されるのは何故w?Hadoop DataNode huetest-50010新しいWebUIdatanode_webui_old古いWebUI

ということで、本日はこの辺で。

コメント