HDFS版本信息对比2.6.0-3.0.0
目前大数据集群的Hadoop主要版本为2.6.0,版本日期为2014.11.18。为了适应大数据的不断发展和更新换代,特此分享Hadoop主要版本信息,为版本升级做准备。
Hadoop主要包括五个部分:Hadoop Common、Hadoop Distributed File System (HDFS)、Hadoop YARN、Hadoop MapReduce、Hadoop Ozone。之前的文章已经提到过hadoop的版本对比,接下来会对各个模块分别进行总结。
Hadoop Common:支持其他Hadoop模块的通用程序。
Hadoop Distributed File System (HDFS™):提供访问应用数据高吞吐量的分布式文件系统。
Hadoop YARN:作业调度和集群资源管理的框架。
Hadoop MapReduce:基于YARN并行处理大数据集的系统
Hadoop Ozone:Hadoopd对象存储。不涉及当前讨论hadoop版本,且目前只有alpha版本,暂不列入考虑。
今天来讲HDFS。
版本更新
原始版本:2.6.0
版本日期:2014.11.18
第三方版本信息:HDP2.2.6
目标版本:3.0.0
版本日期:2017.12.13
第三方版本信息:CDH6.0.1
2.7.0重大加强
该版本不再支持JDK6,并仅支持JDK7及以上版本。此release还未准备作为产品使用。关键问题通过测试和下游适用来解决。生产用户应等待下一版本。
Release note: http://hadoop.apache.org/docs/r2.7.0/hadoop-project-dist/hadoop-common/releasenotes.html
HDFS-3107 - Support for file truncate
系统支持在事务终止时undo底层存储。之前,HDFS不支持truncate(Posix标准操作),这使得上层应用采用丑陋的措施来克服这种限制。
HDFS-7584 - Support for quotas per storage type
存储类型配额:如在目标目录下对不同存储类型(SSD,DISK,ARCHIVE)空间使用的硬限制。为命令{
{hdfs dfsadmin -setSpaceQuota/-clrSpaceQuota}}增加了API {
{SetQuotaByStorageType}}和选项{
{-storagetype}},用以set/clear目标目录下的存储类型配额。
HDFS-3689 - Support for files with variable-length blocks
HDFS现在可以选择附加数据到新block而不是最后那部分的block。用户可以通过{
{CreateFlag.APPEND}}和{
{CreateFlag.NEW_BLOCK}}到{
{append}}API来实现这个要求。HDFS现在允许用户通过{
{SyncFlag.END_BLOCK}}到{
{hsync}}API来结束当前block并将剩余数据写入新块。
3.0.0重大加强
Release note: http://hadoop.apache.org/docs/r3.0.0/hadoop-project-dist/hadoop-common/release/3.0.0/RELEASENOTES.3.0.0.html
http://hadoop.apache.org/docs/r3.0.0/index.html
1.JAVA版本要求
JAVA最低支持版本由JAVA 7升级到JAVA 8
2.HDFS支持纠删码(erasure coding)
纠删码是一种比副本存储更节省存储空间的数据持久化存储方法。比如Reed-Solomon(10,4)标准编码技术只需要1.4倍的空间开销,而标准的HDFS副本技术则需要3倍的空间开销。由于纠删码额外开销主要在于重建和远程读写,它通常用来存储不经常使用的数据(冷数据)。另外,在使用这个新特性时,用户还需要考虑网络和CPU开销。
http://hadoop.apache.org/docs/r3.0.0/hadoop-project-dist/hadoop-hdfs/HDFSErasureCoding.html
用途
- HDFS默认3x replication方案有200%的存储空间和其他资源(例如网络带宽)开销。然而,对相对低IO活动的热数据集和冷数据集,额外block副本在正常操作期间很少被访问,但仍消耗了与第一个副本相同的资源。
- 因此自然会使用EC(纠删码)代替replication,它提供了相同级别的容错,所需更少的存储空间。在典型EC安装中,存储开销不超过50%。但EC文件的Replication factor是无意义的。它总为1,且无法通过-setrep 命令修改。
背景
- 在存储系统中,最显著的EC使用是Redundant Array of Inexpensive Disks (RAID)。RAID通过分段使用ECimplements EC,即划分逻辑序列数据到更小的单元并在不