Project: Apache Hadoop (App Definition and Development / Database)
File: RELEASENOTES.0.23.0.md

<! --> These release notes cover new developer and user-facing incompatibilities, important issues, features, and major improvements. | Minor | the first optimization: ZlibCompressor does not fully utilize the buffer* Improve the buffer utilization of ZlibCompressor to avoid invoking a JNI per write request. | Major | Add listCorruptFileBlocks to FileSystem* Add a new API listCorruptFileBlocks to FIleContext that returns a list of files that have corrupt blocks. | Major | Remove "unused" warning in native code* Adds \\attribute\\ ((unused)) | Major | Dfs client name for a map/reduce task should have some randomness* Make a client name has this format: DFSClient\applicationid\randomint\_threadid, where applicationid = mapred.task.id or else = "NONMAPREDUCE". | Minor | dfs.data.dir permissions should default to 700* The permissions on datanode data directories (configured by dfs.datanode.data.dir.perm) now default to 0700. Upon startup, the datanode will automatically change the permissions to match the configured value. | Major | Lower default minimum heartbeat interval for tasktracker \> Jobtracker* The default minimum heartbeat interval has been dropped from 3 seconds to 300ms to increase scheduling throughput on small clusters. Users may tune mapreduce.jobtracker.heartbeats.in.second to adjust this value. | Major | Task-cleanup task should not be scheduled on the node that the task just failed* Task-cleanup task should not be scheduled on the node that the task just failed | Major | Improve HDFS WebUI* On web UI, missing block number now becomes accurate and under-replicated blocks do not include missing blocks. | Minor | Fix link resolution logic in hadoop-config.sh* Updates hadoop-config.sh to always resolve symlinks when determining HADOOP\_HOME. Bash built-ins or POSIX:2001 compliant cmds are now required. | Major | Improve decommission mechanism* Summary of changes to the decommissioning process: | Major | Create multi-format parser for edits logs file, support binary and XML formats initially* Offline edits viewer feature adds oev tool to hdfs script. Oev makes it possible to convert edits logs to/from native binary and XML formats. It uses the same framework as Offline image viewer. Example usage: $HADOOP\_HOME/bin/hdfs oev -i edits -o output.xml | Major | Provide a JNI-based implementation of ShellBasedUnixGroupsNetgroupMapping (implementation of GroupMappingServiceProvider)* WARNING: No release note provided for this change. | Major | A baby step towards inter-version RPC communications* WARNING: No release note provided for this change. | Major | Remove auto-generated native build files* The native build run when from trunk now requires autotools, libtool and openssl dev libraries. | Major | Remove auto-generated native build files* The native build run when from trunk now requires autotools, libtool and openssl dev libraries. | Major | Remove auto-generated native build files* The native build run when from trunk now requires autotools, libtool and openssl dev libraries. | Major | Statistics support in FileContext* WARNING: No release note provided for this change. | Major | Remove failmon contrib* Failmon removed from contrib codebase. | Major | Allow setting of end-of-record delimiter for TextInputFormat* TextInputFormat may now split lines with delimiters other than newline, by specifying a configuration parameter "textinputformat.record.delimiter" | Minor | MapWritable violates contract of Map interface for equals() and hashCode()* MapWritable now implements equals() and hashCode() based on the map contents rather than object identity in order to correctly implement the Map interface. | Trivial | API: Reducer.reduce() method detail misstatement* Fix a misleading documentation note about the usage of Reporter objects in

| Trivial | Limit Job name on jobtracker.jsp to be 80 char long* Job names on jobtracker.jsp should be 80 characters long at most. | Minor | Make BLOCK\_INVALIDATE\_LIMIT configurable* Added a new configuration property dfs.block.invalidate.limit for FSNamesystem.blockInvalidateLimit. | Blocker | MultipleOutputs should not require the use of 'Writable'* MultipleOutputs should not require the use/check of 'Writable' interfaces in key and value classes. | Minor | Job.monitorAndPrintJob() should print status of the job at completion* Print the resultant status of a Job on completion instead of simply saying 'Complete'. | Minor | bin/hadoop job -events \<jobid\> \<from-event-#\> \<#-of-events\> help message is confusing* Added a helpful description message to the \`mapred job -events\` command. | Trivial | Chain APIs error misleading* Fix a misleading exception message in case the Chained Mappers have mismatch in input/output Key/Value pairs between them. | Major | CLONE to COMMON - HDFS-1445 Batch the calls in DataStorage to FileUtil.createHardLink(), so we call it once per directory instead of once per file* This is the COMMON portion of a fix requiring coordinated change of COMMON and HDFS. Please see HDFS-1445 for HDFS portion and release note. | Minor | HDFS federation: Improve start/stop scripts and add script to decommission datanodes* The masters file is no longer used to indicate which hosts to start the 2NN on. The 2NN is now started on hosts when dfs.namenode.secondary.http-address is configured with a non-wildcard IP. | Major | Transfer RBW between datanodes* Added a new stage TRANSFER\_RBW to DataTransferProtocol | Major | Move secondary namenode checkpoint configs from core-default.xml to hdfs-default.xml* Removed references to the older fs.checkpoint.\* properties that resided in core-site.xml | Major | Move secondary namenode checkpoint configs from core-default.xml to hdfs-default.xml* Removed references to the older fs.checkpoint.\* properties that resided in core-site.xml | Major | Batch the calls in DataStorage to FileUtil.createHardLink(), so we call it once per directory instead of once per file* Batch hardlinking during "upgrade" snapshots, cutting time from aprx 8 minutes per volume to aprx 8 seconds. Validated in both Linux and Windows. Depends on prior integration with patch for HADOOP-7133. | Major | Reduces RPC packet size for primitive arrays, especially long[], which is used at block reporting* Increments the RPC protocol version in org.apache.hadoop.ipc.Server from 4 to 5. Introduces ArrayPrimitiveWritable for a much more efficient wire format to transmit arrays of primitives over RPC. ObjectWritable uses the new writable for array of primitives for RPC and continues to use existing format for on-disk data. | Minor | Help message is wrong for touchz command.* Updated the help for the touchz command. | Major | Make DataNode's block-to-device placement policy pluggable* Make the DataNode's block-volume choosing policy pluggable. | Major | Add a new DataTransferProtocol operation, Op.TRANSFER\_BLOCK, instead of using RPC* Add a new DataTransferProtocol operation, Op.TRANSFER\_BLOCK, for transferring RBW/Finalized with acknowledgement and without using RPC. | Major | MR-279: Implement uber-AppMaster (in-cluster LocalJobRunner for MRv2)* An efficient implementation of small jobs by running all tasks in the MR ApplicationMaster JVM, there-by affecting lower latency. | Major | Provide a stronger data guarantee in the write pipeline* Added two configuration properties, dfs.client.block.write.replace-datanode-on-failure.enable and dfs.client.block.write.replace-datanode-on-failure.policy. Added a new feature to replace datanode on failure in DataTransferProtocol. Added getAdditionalDatanode(..) in ClientProtocol. | Major | Speedup NameNode image loading and saving by storing local file names* This changes the fsimage format to be root directory-1 directory-2 ...

Each directory stores all its children in the following format: Directory\full\path\name num\of\_children child-1 ... child-n. Each inode stores only the last component of its path name into fsimage. This change requires an upgrade at deployment. | Major | When the disk becomes full Namenode is getting shutdown and not able to recover* Implemented a daemon thread to monitor the disk usage for periodically and if the disk usage reaches the threshold value, put the name node into Safe mode so that no modification to file system will occur. Once the disk usage reaches below the threshold, name node will be put out of the safe mode. Here threshold value and interval to check the disk usage are configurable. | Minor | Discover file not found early for file append* I have committed this. Thanks to Bharath! | Major | Feature to instruct rumen-folder utility to skip jobs worth of specific duration* Added a ''-starts-after' option to Rumen's Folder utility. The time duration specified after the '-starts-after' option is an offset with respect to the submit time of the first job in the input trace. Jobs in the input trace having a submit time (relative to the first job's submit time) lesser than the specified offset will be ignored. | Major | Bring in more job configuration properties in to the trace file* Adds job configuration parameters to the job trace. The configuration parameters are stored under the 'jobProperties' field as key-value pairs. | Major | In Gridmix, in RoundRobinUserResolver mode, the testing/proxy users are not associated with unique users in a trace* Fixes Gridmix in RoundRobinUserResolver mode to map testing/proxy users to unique users in a trace. | Major | In Gridmix, in RoundRobinUserResolver, the list of groups for a user obtained from users-list-file is incorrect* Removes the restriction of specifying group names in users-list file for Gridmix in RoundRobinUserResolver mode. | Major | MR-279: ResourceManager metrics* I just committed this. Thanks Luke! | Major | [Rumen] TraceBuilder should provide recursive input folder scanning* Adds -recursive option to TraceBuilder for scanning the input directories recursively. | Major | Remove protocol version check at proxy creation in Hadoop RPC.* Protocol version check is removed from proxy creation, instead version check is performed at server in every rpc call. This change is backward incompatible because format of the rpc messages is changed to include client version, client method hash and rpc version. rpc version is introduced which should change when the format of rpc messages is changed. | Minor | Add docs to the new API Partitioner on how to access Job Configuration data* Improve the Partitioner interface's docs to help fetch Job Configuration objects. | Major | Metrics2: metrics framework* New metrics2 framework for Hadoop. | Major | NameNode should save image to name directories in parallel during upgrade* I've committed this. Thanks, Matt! | Major | MR 279: Improve history server* Looks great. I just committed this. Thanks Siddharth! | Major | A client side mount table to give per-application/per-job file system view* viewfs - client-side mount table. | Major | Metrics2: metrics instrumentation* Metrics names are standardized to use CapitalizedCamelCase. Some examples of this is: | Major | metrics2: metrics plugins* Metrics names are standardized to CapitalizedCamelCase. See release note of HADOOP-6918 and

| Major | HDFS portion of HADOOP-7214 - Hadoop /usr/bin/groups equivalent* Introduces a new command, "hdfs groups", which displays what groups are associated with a user as seen by the NameNode. | Major | MR portion of HADOOP-7214 - Hadoop /usr/bin/groups equivalent* Introduces a new command, "mapred groups", which displays what groups are associated with a user as seen by the JobTracker. | Major | Clean up duplication of dependent jar files* Remove packaging of duplicated third party jar files | Major | HDFS portion of HADOOP-6728 (ovehaul metrics framework)* Metrics names are standardized to use CapitalizedCamelCase. Some examples: | Major | Removed deprecated fields in DataTransferProtocol* Removed the deprecated fields in DataTransferProtocol. | Major | Refactor FsShell's du/dus/df* The "Found X items" header on the output of the "du" command has been removed to more closely match unix. The displayed paths now correspond to the command line arguments instead of always being a fully qualified URI. For example, the output will have relative paths if the command line arguments are relative paths. | Major | ivy: test conf should not extend common conf* \* Removed duplicated jars in test class path. | Major | Clean up duplication of dependent jar files* Removed duplicated hadoop-common library dependencies. | Major | Make Gridmix emulate usage of Distributed Cache files* Makes Gridmix emulate HDFS based distributed cache files and local file system based distributed cache files. | Major | [MAPREDUCE] The new MapReduce API should make available task's progress to the task* Map and Reduce task can access the attempt's overall progress via TaskAttemptContext. | Minor | Adding a util method in FileUtil for JDK File.listFiles* Use of this new utility method avoids null result from File.listFiles(), and consequent NPEs. | Major | Mapping between Gridmix jobs and the corresponding original MR jobs is needed* New configuration properties gridmix.job.original-job-id and gridmix.job.original-job-name in the configuration of simulated job are exposed/documented to gridmix user for mapping between original cluster's jobs and simulated jobs. | Major | Make Gridmix emulate usage of data compression* Emulates the MapReduce compression feature in Gridmix. By default, compression emulation is turned on. Compression emulation can be disabled by setting 'gridmix.compression-emulation.enable' to 'false'. Use 'gridmix.compression-emulation.map-input.decompression-ratio', 'gridmix.compression-emulation.map-output.compression-ratio' and 'gridmix.compression-emulation.reduce-output.compression-ratio' to configure the compression ratios at map input, map output and reduce output side respectively. Currently, compression ratios in the range [0.07, 0.68] are supported. Gridmix auto detects whether map-input, map output and reduce output should emulate compression based on original job's compression related configuration parameters. | Major | Porting Gridmix v3 system tests into trunk branch.* Adds system tests to Gridmix. These system tests cover various features like job types (load and sleep), user resolvers (round-robin, submitter-user, echo) and submission modes (stress, replay and serial). | Major | Create an rpm integration project* Added RPM/DEB packages to build system. | Major | HDFS rpm integration project* Create HDFS RPM package | Major | Mapreduce RPM integration project* Created rpm and debian packages for MapReduce. | Major | Remove deprecated JobTracker.State in favour of JobTrackerStatus* WARNING: No release note provided for this change. | Major | Gridmix compression emulation system tests.* Adds system tests for testing the compression emulation feature of Gridmix. | Minor | If dfs.name.dir points to an empty dir, namenode format shouldn't require confirmation* If dfs.name.dir points to an empty dir, namenode -format no longer requires

| Major | Encapsulate individual DataTransferProtocol op header* Added header classes for individual DataTransferProtocol op headers. | Major | Task counters should also report the total heap usage of the task* Task attempt's total heap usage gets recorded and published via counters as COMMITTED\HEAP\BYTES. | Major | [Gridmix] Add support for HighRam jobs* Adds High-Ram feature emulation in Gridmix. | Trivial | Make hadoop-daemon.sh to return 1 if daemon processes did not get started* hadoop-daemon.sh now returns a non-zero exit code if it detects that the daemon was not still running after 3 seconds. | Major | Gridmix distributed cache emulation system tests.* Adds distributed cache related system tests to Gridmix. | Major | Recognize Jetty bug 1342 and handle it* Added 2 new config parameters: mapreduce.reduce.shuffle.catch.exception.stack.regex mapreduce.reduce.shuffle.catch.exception.message.regex | Major | Rumen TraceBuilder Does Not Emit CPU/Memory Usage Details in Traces* Adds cpu, physical memory, virtual memory and heap usages to TraceBuilder's output. | Major | TestJobHistory fails if /tmp/\_logs is not writable to. Testcase should not depend on /tmp* Removed dependency of testcase on /tmp and made it to use test.build.data directory instead. | Minor | Stream test TestStreamingExitStatus fails with Out of Memory* Fixed the streaming test TestStreamingExitStatus's failure due to an OutOfMemory error by reducing the testcase's io.sort.mb. | Major | DataTransfer Protocol using protobufs* WARNING: No release note provided for this change. | Major | Remove mrunit contrib* MRUnit is now available as a separate Apache project. | Major | Don't add tools.jar to the classpath when running Hadoop* The scripts that run Hadoop no longer automatically add tools.jar from the JDK to the classpath (if it is present). If your job depends on tools.jar in the JDK you will need to add this dependency in your job. | Major | Create a package and individual class files for DataTransferProtocol* WARNING: No release note provided for this change. | Major | Emulate CPU Usage of Tasks in GridMix3* Adds cumulative cpu usage emulation to Gridmix | Major | Gridmix high ram jobs emulation system tests.* Adds system tests to test the High-Ram feature in Gridmix. | Major | Emulate Memory Usage of Tasks in GridMix3* Adds total heap usage emulation to Gridmix. Also, Gridmix can configure the simulated task's JVM heap options with max heap options obtained from the original task (via Rumen). Use 'gridmix.task.jvm-options.enable' to disable the task max heap options configuration. | Major | Add ability to include Protobufs in ObjectWritable* Protocol buffer-generated types may now be used as arguments or return values for Hadoop RPC. | Major | Add hflush support to libhdfs* Add hdfsHFlush to libhdfs. | Major | Add methods to DataTransferProtocol interface* Declare methods in DataTransferProtocol interface, and change Sender and Receiver to implement the interface. | Minor | If service port and main port are the same, there is no clear log message explaining the issue.* Added a check to match the sure RPC and HTTP Port's on the NameNode were not set to the same value, otherwise an IOException is throw with the appropriate message. | Minor | quota errors messages should use the same scale* Updated the Quota exceptions to now use human readable output. | Major | Move block management code to a package* Moved block management codes to a new package org.apache.hadoop.hdfs.server.blockmanagement. | Major | Gridmix should notify job failures* Gridmix now prints a summary information after every run. It summarizes the runs

input trace details, input data statistics, cli arguments, data-gen runtime, simulation runtimes etc and also the cluster w.r.t map slots, reduce slots, jobtracker-address, hdfs-address etc. | Major | Remove IsolationRunner* IsolationRunner is no longer maintained. See MAPREDUCE-2637 for its replacement. | Minor | Eclipse project files are incomplete* Added missing library during creation of the eclipse project files. | Major | Configuration getInt, getLong, and getFloat replace invalid numbers with the default value* Invalid configuration values now result in a number format exception rather than the default value being used. | Minor | dfs does not support -rmdir (was HDFS-639)* The "rm" family of FsShell commands now supports -rmdir and -f options. | Major | Remove hdfsproxy* The hdfsproxy contrib component is no longer supported. | Major | Simpler model for Namenode's fs Image and edit Logs* The NameNode's storage layout for its name directories has been reorganized to be more robust. Each edit now has a unique transaction ID, and each file is associated with a transaction ID (for checkpoints) or a range of transaction IDs (for edit logs). | Major | HDFS javadocs hard-code references to dfs.namenode.name.dir and dfs.datanode.data.dir parameters* Updated the JavaDocs to appropriately represent the new Configuration Keys that are used in the code. The docs did not match the code. | Major | Changes to balancer bandwidth should not require datanode restart.* New dfsadmin command added: [-setBalancerBandwidth \<bandwidth\>] where bandwidth is max network bandwidth in bytes per second that the balancer is allowed to use on each datanode during balacing. This is an incompatible change in 0.23. The versions of ClientProtocol and DatanodeProtocol are changed. | Major | Make the distributed cache delete entires using LRU priority* Added config option mapreduce.tasktracker.cache.local.keep.pct to the TaskTracker. It is the target percentage of the local distributed cache that should be kept in between garbage collection runs. In practice it will delete unused distributed cache entries in LRU order until the size of the cache is less than mapreduce.tasktracker.cache.local.keep.pct of the maximum cache size. This is a floating point value between 0.0 and 1.0. The default is 0.95. | Major | Capturing interim progress times, CPU usage, and memory usage, when tasks reach certain progress thresholds* Capture intermediate task resource consumption information: \* Time taken so far \* CPU load [either at the time the data are taken, or exponentially smoothed] \* Memory load [also either at the time the data are taken, or exponentially smoothed] This would be taken at intervals that depend on the task progress plateaus. For example, reducers have three progress ranges - [0-1/3], (1/3-2/3], and (2/3-3/3] - where fundamentally different activities happen. Mappers have different boundaries that are not symmetrically placed [0-9/10], (9/10-1]. Data capture boundaries should coincide with activity boundaries. For the state information capture [CPU and memory] we should average over the covered interval. | Major | Move Framework Counters into a TaskMetric structure* Efficient implementation of MapReduce framework counters. | Major | MapReduce portion of HADOOP-6728 (ovehaul metrics framework)* WARNING: No release note provided for this change. | Major | Map-Reduce 2.0* MapReduce has undergone a complete re-haul in hadoop-0.23 and we now have, what we call, MapReduce 2.0 (MRv2). The fundamental idea of MRv2 is to split up the two major functionalities of the JobTracker, resource management and job scheduling/monitoring, into separate

The idea is to have a global ResourceManager (RM) and per-application ApplicationMaster (AM). An application is either a single job in the classical sense of Map-Reduce jobs or a DAG of jobs. The ResourceManager and per-node slave, the NodeManager (NM), form the data-computation framework. The ResourceManager is the ultimate authority that arbitrates resources among all the applications in the system. The per-application ApplicationMaster is, in effect, a framework specific library and is tasked with negotiating resources from the ResourceManager and working with the NodeManager(s) to execute and monitor the tasks. The ResourceManager has two main components: \* Scheduler (S) \* ApplicationsManager (ASM) The Scheduler is responsible for allocating resources to the various running applications subject to familiar constraints of capacities, queues etc. The Scheduler is pure scheduler in the sense that it performs no monitoring or tracking of status for the application. Also, it offers no guarantees on restarting failed tasks either due to application failure or hardware failures. The Scheduler performs its scheduling function based the resource requirements of the applications; it does so based on the abstract notion of a Resource Container which incorporates elements such as memory, cpu, disk, network etc. The Scheduler has a pluggable policy plug-in, which is responsible for partitioning the cluster resources among the various queues, applications etc. The current Map-Reduce schedulers such as the CapacityScheduler and the FairScheduler would be some examples of the plug-in. The CapacityScheduler supports hierarchical queues to allow for more predictable sharing of cluster resources. The ApplicationsManager is responsible for accepting job-submissions, negotiating the first container for executing the application specific ApplicationMaster and provides the service for restarting the ApplicationMaster container on failure. The NodeManager is the per-machine framework agent who is responsible for launching the applications' containers, monitoring their resource usage (cpu, memory, disk, network) and reporting the same to the Scheduler. The per-application ApplicationMaster has the responsibility of negotiating appropriate resource containers from the Scheduler, tracking their status and monitoring for progress. | Major | Bump avro version to at least 1.4.1* WARNING: No release note provided for this change. | Major | MR279: Fate of finished Applications on RM* New config added: // the maximum number of completed applications the RM keeps \<name\>yarn.server.resourcemanager.expire.applications.completed.max\</name\> | Blocker | a small % of all tasks fail with DefaultTaskController* Fixed a race condition in writing the log index file that caused tasks to 'fail'. | Minor | Fix the warning in writable classes.[ WritableComparable is a raw type. References to generic type WritableComparable\<T\> should be parameterized ]* WARNING: No release note provided for this change. | Minor | Rename HdfsConstants -\> HdfsServerConstants, FSConstants -\> HdfsConstants* Rename HdfsConstants interface to HdfsServerConstants, FSConstants interface to HdfsConstants | Major | jvm metrics all use the same namespace* JVM metrics published to Ganglia now include the process name as part of the gmetric name. | Major | add Kerberos HTTP SPNEGO authentication support to Hadoop JT/NN/DN/TT web-consoles* Adding support for Kerberos HTTP SPNEGO authentication to the Hadoop web-consoles | Major | Configuration option to enable/disable webhdfs.* Added a conf property dfs.webhdfs.enabled for enabling/disabling webhdfs. | Major | Provide authentication to webhdfs using SPNEGO* Added two new conf properties dfs.web.authentication.kerberos.principal and dfs.web.authentication.kerberos.keytab for the SPNEGO servlet

| Major | YARN RM fails to start* Simple typo fix to allow ResourceManager to start instead of fail | Major | Generate state graph from the State Machine Definition* Generate state graph from State Machine Definition | Major | Change the name format for hadoop core and vaidya jar to be hadoop-{core/vaidya}-{version}.jar in vaidya.sh* contrib/vaidya/bin/vaidya.sh script fixed to use appropriate jars and classpath | Blocker | Enhance YARN Client-RM protocol to provide access to information such as cluster's Min/Max Resource capabilities similar to that of AM-RM protocol* WARNING: No release note provided for this change. | Minor | Add a NetUtils method that can tell if an InetAddress belongs to local host* closing again | Major | Federation: enable using the same configuration file across all the nodes in the cluster.* This change allows when running multiple namenodes on different hosts, sharing the same configuration file across all the nodes in the cluster (Datanodes, NamNode, BackupNode, SecondaryNameNode), without the need to define dfs.federation.nameservice.id parameter. | Major | MR-279: Write a shell command application* Adding a simple, DistributedShell application as an alternate framework to MapReduce and to act as an illustrative example for porting applications to YARN. | Major | hadoop deb pkg should take a diff group id* Fixed conflict uid for install packages. (Eric Yang) | Major | Set default hdfs, mapred uid, and hadoop group gid for RPM packages* Set hdfs uid, mapred uid, and hadoop gid to fixed numbers (201, 202, and 123, respectively). | Major | jobhistory server and secondarynamenode should have init.d script* Added init.d script for jobhistory server and secondary namenode. (Eric Yang) | Major | Calling hadoop cli inside mapreduce job leads to errors* Removed inheritance of certain server environment variables (HADOOP\OPTS and HADOOP\ROOT\_LOGGER) in task attempt process. | Major | see log4j Error when running mr jobs and certain dfs calls* Removed unnecessary security logger configuration. (Eric Yang) | Major | hadoop-env.sh generated from templates has duplicate info* Fixed recursive sourcing of HADOOP\_OPTS environment variables (Arpit Gupta via Eric Yang) | Minor | log4j.properties is missing properties for security audit and hdfs audit should be changed to info* HADOOP-7681. Fixed security and hdfs audit log4j properties (Arpit Gupta via Eric Yang) | Critical | config generator does not update the properties file if on exists already* Fixed hadoop-setup-conf.sh to handle config file consistently. (Eric Yang) | Major | improve config generator to allow users to specify proxy user, turn append on or off, turn webhdfs on or off* Added toggle for dfs.support.append, webhdfs and hadoop proxy user to setup config script. (Arpit Gupta via Eric Yang) | Major | improve the hadoop-setup-conf.sh to read in the hbase user and setup the configs* Added parameter for HBase user to setup config script. (Arpit Gupta via Eric Yang) | Blocker | [MR-279] OutputCommitter changes for MR Application Master recovery* Enhance OutputCommitter and FileOutputCommitter to allow for recover of tasks across job restart. | Major | hadoop-setup-conf.sh should put proxy user info into the core-site.xml* Fixed hadoop-setup-conf.sh to put proxy user in core-site.xml. (Arpit Gupta via Eric Yang) | Major | Rumen TraceBuilder is skipping analyzing 0.20 history files* Fixes TraceBuilder to handle 0.20 history file names also. | Major | Make Rumen use job history api instead of relying on current history file name format* Makes Rumen use job history api instead of relying on current history file name format. | Major | [MR:279] Update the scheduling info on CLI* "mapred/job -list" now contains map/reduce, container, and resource

| Major | Fix renewal of dfs delegation tokens* Generalizes token renewal and canceling to a common interface and provides a plugin interface for adding renewers for new kinds of tokens. Hftp changed to store the tokens as HFTP and renew them over http. | Major | provide a small validation script that smoke tests the installed cluster* Committed to trunk and v23, since code reviewed by Eric. | Blocker | MRv2 WebApp Security* A new server has been added to yarn. It is a web proxy that sits in front of the AM web UI. The server is controlled by the yarn.web-proxy.address config. If that config is set, and it points to an address that is different then the RM web interface then a separate proxy server needs to be launched. This can be done by running yarn-daemon.sh start proxyserver If a separate proxy server is needed other configs also may need to be set, if security is enabled. yarn.web-proxy.principal yarn.web-proxy.keytab The proxy server is stateless and should be able to support a VIP or other load balancing sitting in front of multiple instances of this server. | Blocker | MR2 memory limits should be pmem, not vmem* Resource limits are now expressed and enforced in terms of physical memory, rather than virtual memory. The virtual memory limit is set as a configurable multiple of the physical limit. The NodeManager's memory usage is now configured in units of MB rather than GB. | Major | mkdirs should use the supplied permission for all of the created directories* A multi-level mkdir is now POSIX compliant. Instead of creating intermediate directories with the permissions of the parent directory, intermediate directories are created with permission bits of rwxrwxrwx (0777) as modified by the current umask, plus write and search permission for the owner. | Major | hadoop-setup-conf.sh should be modified to enable task memory manager* Enable task memory management to be configurable via hadoop config setup script. | Blocker | User jobs are getting hanged if the Resource manager process goes down and comes up while job is getting executed.* New Yarn configuration property: Name: yarn.app.mapreduce.am.scheduler.connection.retries Description: Number of times AM should retry to contact RM if connection is lost. | Major | Remove unused contrib components dependent on MR1* The pre-MR2 MapReduce implementation (JobTracker, TaskTracer, etc) and contrib components are no longer supported. This implementation is currently supported in the 0.20.20x releases. | Minor | security audit logger is not on by default, fix the log4j properties to enable the logger* Fixed security audit logger configuration. (Arpit Gupta via Eric Yang) | Major | Add HDFS support for fadvise readahead and drop-behind* HDFS now has the ability to use posix\fadvise and sync\data\_range syscalls to manage the OS buffer cache. This support is currently considered experimental, and may be enabled by configuring the following keys: dfs.datanode.drop.cache.behind.writes - set to true to drop data out of the buffer cache after writing dfs.datanode.drop.cache.behind.reads - set to true to drop data out of the buffer cache when performing sequential reads dfs.datanode.sync.behind.writes - set to true to trigger dirty page writeback immediately after writing data dfs.datanode.readahead.bytes - set to a non-zero value to trigger readahead for sequential reads | Major | (Rumen)TraceBuilder throws IllegalArgumentException* Rumen is fixed to ignore the AMRestartedEvent. | Major | Rumen TraceBuilder is emiting null as hostname* Fixes Rumen to get correct hostName that includes rackName in attempt info.