Hadoop 2.7.0がリリースされました



# 全般

Hadoop 2.7.0のリリースにおいて、合計で923件のissueが解決されました

* Common: 259
* HDFS: 350
* YARN: 253
* MapReduce: 61

[Release Note](https://hadoop.apache.org/releases.html#21+April+2015%3A+Release+2.7.0+available)

# 注意事項

* 本リリースより、JDK6はサポートされなくなりました
* 本リリースを商用で利用するのは推奨されません。2.7.1以降のリリースを待つことを推奨します。

  * [ML](http://mail-archives.apache.org/mod_mbox/hadoop-common-dev/201505.mbox/%3C0063E568-8074-4059-9532-62D568D7B72C%40hortonworks.com%3E)によると、2015/5末あたりに2.7.1-RC0が出る予定。

# 新機能

## Common

[HADOOP-9629](https://issues.apache.org/jira/browse/HADOOP-9629) Windows Azure Storageのサポート

* スキーマに`wasb://`, もしくは`wasbs://`を指定することで、Windows Azure FileSystemに対してアクセス可能です。

[HADOOP-7984](https://issues.apache.org/jira/browse/HADOOP-7984) hadoopコマンドに `--loglevel`オプションが追加されました。

* 従来は、loglevelを変更するために`export HADOOP_ROOT_LOGGER=DEBUG,console`というようなコマンドを実行して、後で環境変数を元に戻す必要がありましたが、2.7.0以降では`--loglevel=DEBUG`だけで可能です。

[HADOOP-8989](https://issues.apache.org/jira/browse/HADOOP-8989) hadoop fs -findコマンドが実装されました

* POSIX findコマンドとほぼ同等ですが、現時点では`-name`, `-iname`, `-print`, `-print0`オプションしかサポートしていません。

## HDFS

[HDFS-3107](https://issues.apache.org/jira/browse/HDFS-3107) truncate APIのサポート
[HDFS-7584](https://issues.apache.org/jira/browse/HDFS-7584) Storage typeごとにquotaを設定可能になりました

* setQuotaByStorageType APIと、`hdfs dfsadmin -setSpaceQuota/-clrSpaceQuota`コマンドの`-storagetype`オプションによって、quotaを設定可能です。

[HDFS-3689](https://issues.apache.org/jira/browse/HDFS-3689) ブロックサイズはファイルごとに一律固定ではなく、各ブロックごとで変えることができます

* HDFS append APIに`CreateFlag.APPEND`と`CreateFlag.NEW_BLOCK`を渡すことで、従来通り最後のブロックの途中から追記するのではなく、新しいblockを作成してそこに追記することが可能です
* HDFS hsync APIに`SyncFlag.END_BLOCK`を渡すことで、現在書き込み中のblockへの書き込みを終了し、新しいblockにデータを書き込むことが可能です

[HDFS-6982](https://issues.apache.org/jira/browse/HDFS-6982) nntopという、NameNodeにおけるtopのような仕組みが実装され、各ユーザがNameNodeに対してどんな命令をどの程度実行したのかについて、統計情報が取得可能になりました

[HDFS-7424](https://issues.apache.org/jira/browse/HDFS-7424) NFS gatewayのWeb UIが実装されました

[HDFS-6663](https://issues.apache.org/jira/browse/HDFS-6663) fsckコマンドに、`-blockId`オプションが実装されました

* ユーザが指定したblockIdに対応するファイルパスおよび、当該ブロックを保持するノード・ラック情報、そして、当該ブロックの統計情報(under-replicated, corruptedなど)を取得することができます。

[HDFS-6634](https://issues.apache.org/jira/browse/HDFS-6634) HDFS inotifyが実装されました

* inotify自体はHadoop 2.6で実装されていましたが、[HDFS-7446](https://issues.apache.org/jira/browse/HDFS-7446)で大きな修正が入ったので、2.7に入れています
* [ApacheCon NA 2015の資料](http://events.linuxfoundation.org/sites/events/files/slides/2015-03-05_apachecon2015__keep_me_in_the_loop_introducing_HDFS_inotify.pdf)

[HDFS-6252](https://issues.apache.org/jira/browse/HDFS-6252) (新機能ではないですが)旧形式のWeb UIが削除されました

## YARN

[YARN-2574](https://issues.apache.org/jira/browse/YARN-2574) Reservation SystemのFairScheduler対応

* [YARN-1051](https://issues.apache.org/jira/browse/YARN-1051)でCapacitySchedulerに導入された、時間単位であらかじめコンテナを確保しておく仕組みが、FairSchedulerにも対応しました

[YARN-2360](https://issues.apache.org/jira/browse/YARN-2360) FairSchedulerのWeb UIに、dynamic fair shareが表示されるようになりました

## MapReduce

[MAPREDUCE-5583](https://issues.apache.org/jira/browse/MAPREDUCE-5583) 各ジョブで同時に実行されるMap/Reduceタスク数を制限できるようになりました

* `mapreduce.job.running.map.limit`および`mapreduce.job.running.reduce.limit`を各MapReduceジョブごとに指定することで、同時に実行されるタスク数を制限できます。

# バグフィックス

## Common

[HADOOP-11343](https://issues.apache.org/jira/browse/HADOOP-11343) 暗号化において、ivの計算中にオーバーフローした場合の処理が適切でないため、オーバーフローが発生した場合に復号できない

## HDFS

[HDFS-7960](https://issues.apache.org/jira/browse/HDFS-7960) zombie storageが残り続ける

* あるDataNodeで古いstorageを外して新しいstorageを組み込むような場合に、古いstorageにブロックが残っているとそれがゾンビとしてNameNodeのNamespaceに残り続ける

[HDFS-7611](https://issues.apache.org/jira/browse/HDFS-7611) quotaを有効にした状態でdeleteSnapshotやdeleteを実行した場合に、blockMapに情報が残ることがある。そこでNameNodeを再起動すると削除したblockはmissing blockとして判断され、セーフモードから抜け出せない。

## YARN

[YARN-3369](https://issues.apache.org/jira/browse/YARN-3369) AppSchedulingInfoにおいてNullPointerExceptionが発生し、ResourceManagerが停止することがある。

[YARN-2992](https://issues.apache.org/jira/browse/YARN-2992) ZooKeeperとのセッション切れによって、ResourceManagerが停止する

[YARN-2874](https://issues.apache.org/jira/browse/YARN-2874) DelegationTokenRenewerがデッドロックする

* DelegationTokenRenewerによるTokenの更新に失敗した場合、デッドロックすることがある。この場合、新規にApplicationを実行することができない。