Hadoop2.8.0将会是3.0版本前最后一个重要版本(2.9基本只会搞一些小修补了),即将发布,这个版本虽然没什么革命性的新功能,但是努力提升维护、调试等工作的效率,值得关注。
Common
HADOOP-10971 Add -C flag to make `hadoop fs-ls` print filenames only 在hadoop fs -ls 命令中增加-C标志,以只打印文件名
HADOOP-11731 Rework the changelog andreleasenotes
HADOOP-9477 Add posixGroups support forLDAP groups mapping service
HADOOP-11843 Make setting up the buildenvironment easier 使建立bulid环境更容易
一个开发者要求的改进。
HADOOP-12548 Read s3a creds from aCredential Provider
一个兼容S3文件系统的改造。
HADOOP-12651 Replace dev-support withwrappers to Yetus
对Apache Yetus(一个系统管理工具)的支持。
HADOOP-12909 Change ipc.Client to supportasynchronous calls 改进ipc.Client以支持异步调用
改进ipc.Client支持异步调用模式,在这种模式下请求发送后即返回,无需等待服务器响应。
HADOOP-13008 Add XFS Filter for UIs toHadoop Common
为Hadoop的几个UI提供Cross FrameScripting (XFS)过滤支持。
HADOOP-12635 Adding Append API support for WASB
为Azure Blob Storagefile system (WASB)提供append API。
HADOOP-12691 Add CSRF Filter for REST APIsto Hadoop Common
提升了Common模块中的rest API对跨站点请求伪造的安全性。
HADOOP-12723 S3A: Add ability to plug inany AWSCredentialsProvider
又一个兼容S3文件系统的改造。
HADOOP-13065 Add a new interface forretrieving FS and FC Statistics 为获取FS和FC统计增加一个新的接口
为各种DfsClient操作提供一个新的统计,包括create,append, createSymlink, delete, exists, mkdirs, rename,并通过Statistics对象的新属性来暴露他们。
HADOOP-12426 Add Entry point for Kerberoshealth check
提供了Kerberos的一系列检查,包括JRE,网络,kinit,指定的tgt,hadoop安全参数等。
HADOOP-12657 Add a option to skip newlineon empty files with getMerge -nl
为hadoop fs -getmerge命令增加一个-skip-empty-file参数。
HADOOP-8934 Shell command ls should includesort options
fs -ls 命令增加以下参数以便排序:
-t : sort bymodification time
-S : sort byfile size
-r : reverse thesort order
-u : use accesstime rather than modification time for sort and display
HADOOP-12021 Augmenting Configuration toaccomodate
HADOOP-12360 Create StatsD metrics2 sink
HADOOP-5732 Add SFTP FileSystem
用JSch实现的基于hadoop的SFTP,因为我们目前在用hadoop上的FTP,预计总会有切到SFTP的需求的,值得关注。
HDFS
HDFS-9244 Supportnested encryption zones 支持嵌套的加密区
Hadoop从2.7版本开始支持一种文件系统级加密措施称为encryption zone(简称EZ),用法是指定一个目录为EZ后该目录下所有文件的存取都会相应加解密,但对该目录下的子目录加密不会生效,除非再次配置。这就造成一些问题,比如一个目录是加密的,将其删除后默认会进Trash,不管Trash本身是否加密,该文件夹移进Trash后就不加密了,这显然存在安全隐患。这个特性就是为了解决此类问题而使EZ可以嵌套。
HDFS-9711 IntegrateCSRF prevention filter in WebHDFS. 在WebHDFS中整合CSRF阻止
提升了WebHDFS对跨站点请求伪造的安全性,因为我不用WebHDFS所以不太关注。
HDFS-8487 GeneralizeBlockInfo in preparation of merging HDFS-7285 into trunk and branch-2 抽象出BlockInfo类
这个改动本身没什么大用,但是是为HDFS-7285Erasure Coding Support inside HDFS做准备的,Erasure Code是Hadoop3.0中的重要特性,可实现类似Facebook的HDFS-RAID这样的功能。
HDFS-8155Support OAuth2 in WebHDFS 在WebHDFS中支持OAuth2
又一个WebHDFS的安全特性,对我没什么卵用就是了。
HDFS-8009Signal congestion on the DataNode DataNode的拥塞信号
相信很多人都遇到过当个别DataNode非常繁忙的时候会无法上报心跳,导致各种误告警和HDFS不正常的行为。2.7已经实现对IO过高的DataNode发出拥塞信号,这个Jira可对CPU负载超过该节点总核数150%的情况发出拥塞信号。
HDFS-8622Implement GETCONTENTSUMMARY operation for WebImageViewer 为WebImageViewer实现GETCONTENTSUMMARY操作
用过hdfs oiv命令查看fsimage的都知道,可以用WebHDFS和xml两种方式来审查fsimage的内容,这个改进就是为WebHDFS查看fsimage的需要做的。
HDFS-8608Merge HDFS-7912 to trunk and branch-2 (track BlockInfo instead of Block in UnderReplicatedBlocksand PendingReplicationBlocks)
又一个为HDFS-7285 ErasureCoding Support inside HDFS做准备的需求。
HDFS-9835 OIV:add ReverseXML processor which reconstructs an fsimage from an XML file OIV:增加ReverseXML处理使其可从XML文件重建fsimage
上面提到hdfs oiv的另一种用法是xml方式,这个需求可从xml文件反生成fsimage,主要是便于编辑后生成一个新的fsimage用于测试目的。
HDFS-9239DataNode Lifeline Protocol: an alternative protocol for reporting DataNodeliveness DataNode生命线协议:一种备选的上报DataNode状态的协议
该版本的重要改进之一,引入了一种新的DataNode状态上报协议,试图解决旧的基于心跳的协议在高负荷下的各种问题。其与旧协议的区别主要有三点,1)处理lifeline消息开销较低,2)其不会和block报告和用户操作争用名字空间的锁,3)其使用了一批独立的RPC处理线程,使其与繁重的用户操作线程隔离。通过使用这种协议,理论上可消除集群繁忙时心跳处理的延迟和状态的误报。个人觉得效果值得期待。
HDFS-9945Datanode command for evicting writers 为Datanode提供回收写者的命令
该特性为dfsadmin命令提供了一个新的子命令evictWriters,可立即终止该DN上的所有写块操作。一般用于DN退服时需要很慢的writer使退服操作卡住的情况。
HDFS-9184Logging HDFS operation's caller context into audit logs 将HDFS操作的调用上下文记入审计日志
又是一个审计方面改进,不关注。
HDFS-7891 Ablock placement policy with best rack failure tolerance 一种block放置策略使可达到最好的rack失败容忍度
目前的block放置策略在3副本下是LN(localnode)+RR_1(remote rack)+RR_2,这种策略只能容忍1个rack失效,如果LN所在的rack和remote rack都挂掉块就无法访问。这一新特性可将块放到尽可能多的rack上使得失败容忍度提高。当然,异机架通信的成本肯定比同机架大,因此这种策略肯定只是作为可选参数提供,不会替换默认值的。
MapReduce
MAPREDUCE-6304Specifying node labels when submitting MR jobs 当提交MR任务时指定节点标记
YARN-796中提出了一种基于label的调度方法,以便1)提供一种机制,在一个特定的节点集上运行应用容器,2)提供一种机制,使调度器的Queue可在一个特定的节点集上调度资源,3)提供一种机制,解决应用和Queue对节点集定义的冲突。这个JIRA任务是为实现YARN-796而配套的。
MAPREDUCE-6415Create a tool to combine aggregated logs into HAR files 创建一个工具,以将聚集的log打成HAR包
这是配合YARN-2942而实现的。
MAPREDUCE-6284Add Task Attempt State API to MapReduce Application Master REST API 增加Task重试状态API到MapReduceApplication Master REST API中
一个方便排错的改动。
MAPREDUCE-6364Add a "Kill" link to Task Attempts page 在Task重试页面增加一个Kill链接
和上一个JIRA相关。
YARN
YARN-4349Support CallerContext in YARN
与HDFS-9184联系密切,主要还是完善审计,便于排查问题。
YARN-41 The RMshould handle the graceful shutdown of the NM. ResourceManager应该处理NodeManager的优雅关闭
该特性使得NodeManager优雅关闭(使用yarn-daemon.shstop nodemanager而非kill -9)时,需要将NodeStatus置为SHUTDOWN(新引入状态)并通知ResourceManager。如果按以前的方式,NodeManager的连接直到超时后(默认值长达10分钟)才会被ResourceManager感知,然后新起的NodeManager才能加入。当然说起来容易实际改造却不容易做,有committer整理了以下表格,实际上只有前两种情况需要取消注册,后几种情况都不应处理。
NM Graceful Shutdown |
NM Recovery Enabled yarn.nodemanager.recovery.enabled=true |
NM is Running Under Supervision yarn.nodemanager.recovery.supervised=true |
NM Unregister |
Y |
N |
Y |
Y |
Y |
N |
N |
Y |
Y |
Y |
Y |
N |
Y |
Y |
N |
N |
N |
Y/N |
Y/N |
N |
YARN-2901 Adderrors and warning metrics page to RM, NM web UI 在RM和NM的web页面上增加错误和警告统计页
又是一个面向故障排查的特性,这个版本对可运维性很重视。
YARN-3623 Weshould have a config to indicate the Timeline Service version 需要一个配置项以指定TimelineService的版本
Hadoop内的ApplicationTimeline Service(ATS)是用来统计性能指标的,目前有1和1.5两个版本,将来还有2,需要通过一个配置项来指定使用哪个版本。
YARN-261Ability to fail AM attempts 提供使AM尝试失败的能力
如果任务的其中一个AM卡死(在我们生产环境常常出现),现有的手段是杀掉整个任务,或者干脆等这个AM慢慢跑过去。这个特性增加了杀死单个AM尝试的能力,杀掉后RM会重启这个AM的计算任务,避免了在某些大任务的一个AM卡住时重跑整个任务。
YARN-3458 CPUresource monitoring in Windows 提供Windows环境下的CPU资源监控
非常怀疑有谁在Windows下跑hadoop。