Hadoop 3.x 新特性剖析系列1

1.概述

  目前从Hadoop官网的Wiki来看,稳定版本已经发行到Hadoop2.9.0,最新版本为Hadoop3.1.0,查阅JIRA,社区已经着手迭代Hadoop3.2.0。那么,今天笔者就带着你们来剖析一下Hadoop3,看看它给咱们带来了哪些新特性。后端

2. 内容

  从功能上来讲,Hadoop3比Hadoop2有些功能获得了加强,具体增长了哪些,后面再讲。首先,咱们来看看Hadoop3主要带来了哪些变化:网络

  • JDK:在Hadoop2时,可使用JDK7,可是在Hadoop3中,最低版本要求是JDK8,因此低于JDK8的版本须要对JDK进行升级,方可安装使用Hadoop3
  • EC技术:Erasure Encoding 简称EC,是Hadoop3给HDFS拓展的一种新特性,用来解决存储空间文件。EC技术既能够防止数据丢失,又能解决HDFS存储空间翻倍的问题
  • YARN:提供YARN的时间轴服务V.2,以便用户和开发人员能够对其进行测试,并提供反馈意见,使其成为YARN Timeline Service v.1的替代品。
  • 优化Hadoop Shell脚本
  • 重构Hadoop Client Jar包
  • 支持随机Container
  • MapReduce任务级本地优化
  • 支持多个NameNode
  • 部分默认服务端口被改变
  • 支持文件系统链接器
  • DataNode内部添加了负载均衡
  • 重构后台程序和任务对管理

下面,笔者就为你们来一一剖析这些新特性的具体内容,其内容包含JDK版本、EC技术、YARN的时间轴服务这三类特性,其余特性笔者在后面的博客再为你们慢慢剖析。架构

2.1 JDK

  在Hadoop 3中,全部的Hadoop JAR包编译的环境都是基于Java8来完成的,全部若是仍然使用的是Java 7或者更低的版本,你可能须要升级到Java 8才能正常的运行Hadoop3。以下图所示:负载均衡

 

2.2 EC技术

  首先,咱们先来了解一下什么是Erasure Encoding。以下图所示:分布式

  通常来讲,在存储系统中,EC技术主要用于廉价磁盘冗余阵列,即RAID。如上图,RAID经过Stripping实现EC技术,其中逻辑顺序数据(好比:文件)被划分红更小的单元(好比:位、字节或者是块),并将连续单元存储在不一样的磁盘上。oop

  而后,对原始数据单元的每一个Stripe,计算并存储必定数量的奇偶校验单位。这个过程称之为编码,经过基于有效数据单元和奇偶校验单元的解码计算,能够恢复任意Stripe单元的错误。当咱们想到了擦除编码的时候,咱们能够先来了解一下在Hadoop2中复制的早期场景。以下图所示:学习

  HDFS默认状况下,它的备份系数是3,一个原始数据块和其余2个副本。其中2个副本所须要的存储开销各站100%,这样使得200%的存储开销,会消耗其余资源,好比网络带宽。然而,在正常操做中不多访问具备低IO活动的冷数据集的副本,可是仍然消耗与原始数据集相同的资源量。测试

  对于EC技术,即擦除编码存储数据和提供容错空间较小的开销相比,HDFS复制,EC技术能够代替复制,这将提供相同的容错机制,同时还减小了存储开销。以下图所示:优化

  EC和HDFS的整合能够保持与提供存储效率相同的容错。例如,一个副本系数为3,要复制文件的6个块,须要消耗6*3=18个块的磁盘空间。可是,使用EC技术(6个数据块,3个奇偶校验块)来部署,它只须要消耗磁盘空间的9个块(6个数据块+3个奇偶校验块)。这些与原先的存储空间相比较,节省了50%的存储开销。编码

  因为擦除编码须要在执行远程读取时,对数据重建带来额外的开销,所以他一般用于存储不太频繁访问的数据。在部署EC以前,用户应该考虑EC的全部开销,好比存储、网络、CPU等。

2.3 YARN的时间线V.2服务

   Hadoop引入YARN Timeline Service v.2是为了解决两个主要问题:

  1. 提升时间线服务的可伸缩性和可靠性;
  2. 经过引入流和聚合来加强可用性

  下面首先,咱们来剖析一下它伸缩性。

2.3.1  伸缩性

  YARN V1仅限于读写单个实例,不能很好的扩展到小集群以外。YARN V2使用了更具备伸缩性的分布式体系架构和可扩展的后端存储,它将数据的写入与数据的读取进行了分离。并使用分布式收集器,本质上是每一个YARN应用的收集器。读则是独立的实例,专门经过REST API服务来查询

2.3.2  可用性

  对于可用性的改进,在不少状况下,用户对流或者YARN应用的逻辑组的信息比较感兴趣。启动一组或者一系列的YARN应用程序来完成逻辑应用是很常见的。以下图所示:

2.3.3 架构体系

   YARN时间线服务V2采用了一组收集器写数据到后端进行存储。收集器被分配并与它们专用的应用程序主机进行协做,以下图所示,属于该应用程序的全部数据都被发送到应用程序时间轴的收集器中,可是资源管理器时间轴收集器除外。

   

 

  对于给定的应用程序,应用程序能够将数据写入同一时间轴收集器中。此外,为应用程序运行容器的其余节点的节点管理器,还会向运行应用程序主节点的时间轴收集器写入数据。资源管理器还维护本身的时间手机线收集器,它只发布YARN的通用生命周期事件,以保持其写入量合理。时间的读取器是单独的守护进程从收集器中分离出来的,它旨在服务于REST API查询操做。

3.总结

  本篇博客先给你们剖析前面几个特性,其内容由JDK的版本升级、EC技术的做用及优点、YARN的时间轴V2版本的主要做用。Hadoop3后面的几个特性,在下一篇博客为你们再剖析。

4.结束语

  这篇博客就和你们分享到这里,若是你们在研究学习的过程中有什么问题,能够加群进行讨论或发送邮件给我,我会尽我所能为您解答,与君共勉!

相关文章
相关标签/搜索