Hadoop

前言

  • Hadoop是一个由Apache基金会所开发的分布式系统基础架构
  • 主要解决海量数据的存储分析计算问题
  • Hadoop创始人 – Doug Cutting

三大发行版本

Apache

最基础、最原始的版本
官网地址:http://hadoop.apache.org/releases.html
下载地址:https://archive.apache.org/dist/hadoop/common/

Cloudera

内部集成了很多大数据框架, 对应产品CDH。
官网地址:https://www.cloudera.com/downloads/cdh/5-10-0.html
下载地址:http://archive-primary.cloudera.com/cdh5/cdh/5/

Hortonworks

文档较好, 对应产品HDP。
官网地址:https://hortonworks.com/products/data-center/hdp/
下载地址:https://hortonworks.com/downloads/#data-platform

优势

高可靠性

Hadoop底层维护多个数据副本 ,所以即使Hadoop某个计算元素或存储出现故障, 也不会导致数据的丢失。

高扩展性

在集群间分配任务数据, 可方便的扩展数以千计的节点。

高效性

在MapReduce的思想下, Hadoop是并行工作的, 以加快任务的处理速度。

高容错性

能够自动将失败的任务重新分配

组成

Hadoop1.x : MapReduce + HDFS + Common
Hadoop2.x : MapReduce + Yarn + HDFS + Common

MapReduce

  • 作用 : 计算
  • 组成
    Map阶段 : 并行处理输入数据。
    Reduce阶段 : 对Map阶段的结果进行汇总。
    MapReduce架构
    MR详解 :

Yarn

  • 作用
  • 组成
    ResourceManager : 处理客户端请求 ; 监控NodeManager ; 启动或监控ApplicationMaster ; 资源的分配与调度。
    NodeManager : 管理单个节点上的资源 ; 处理来自ResourceManager的命令 ; 处理来自ApplicationMaster的命令。
    ApplicationMaster : 负责数据的切分 ; 为应用程序申请资源并分配给内部的任务 ; 任务的监控与容错。
    Container : 它是Yarn中的资源抽象, 其作用是封装某个节点上的多维度资源, 如内存、CPU、磁盘、网络等。
    Yarn架构
    Yarn详解 :

HDFS

  • 作用 : 数据存储
  • 组成
    NameNode : 存储文件的元数据, 如文件名、文件目录结构、文件属性(生成时间、副本数、文件权限), 以及每个文件的块列表和块所在的DataNode等。
    DataNode : 在本地文件系统存储文件块数据, 以及块数据的校验和。
    SecondaryNameNode : 每隔一段时间对NameNode元数据备份, 辅助且无法代替NameNode。
    HDFS详解 :

Common

  • 作用 : 辅助工具

Hadoop3.x和Hadoop2.x主要区别

最低Java版本从7升级到8

引入纠删码(Erasure Coding)

  • 主要解决数据量大到一定程度磁盘空间存储能力不足的问题.
  • HDFS中的默认3副本方案在存储空间中具有200%的额外开销。但是, 对于I/O活动相对较少冷数据集, 在正常操作期间很少访问其他块副本,但仍然会消耗与第一个副本相同的资源量。
  • 纠删码能勾在不到50%数据冗余的情况下提供和3副本相同的容错能力,因此,使用纠删码作为副本机制的改进是自然而然,也是未来的趋势.

重写了Shell脚本

  • 重写了Shell脚本,修改了之前版本长期存在的一些错误,并提供了一些新功能,在尽可能保证兼容性的前提下,一些新变化仍然可能导致之前的安装出现问题。
    • 例如:
      – 所有Hadoop Shell脚本子系统现在都会执行hadoop-env.sh这个脚本,它允许所有环节变量位于一个位置;
      – 守护进程已通过*-daemon.sh选项从*-daemon.sh移动到了bin命令中,在Hadoop3中,我们可以简单的使用守护进程来启动、停止对应的Hadoop系统进程;

引入了新的API依赖

  • 之前Hadoop客户端操作的Maven依赖为hadoop-client,这个依赖直接暴露了Hadoop的下级依赖,当用户和Hadoop使用相同依赖的不同版本时,可能造成冲突。
  • Hadoop3.0引入了提供了hadoop-client-api 和hadoop-client-runtime依赖将下级依赖隐藏起来,一定程度上来解决依赖冲突的问题。

MapReduce任务的本地化优化

  • MapReduce引入了一个NativeMapOutputCollector的本地化(C/C++)实现,对于shuffle密集的任务,可能提高30%或者更高的性能。

支持超过两个NameNode

  • HDFS NameNode高可用性的初始实现为单个Active NameNode 和 单个 Standby NameNode, 将edits复制到三个JournalNode。 该体系结构能够容忍系统中一个NN或者一个JN故障.但是,某些部署需要更高程序的容错能力,Hadoop3.x允许用户运行一个Active NameNode 和 多个 Standby NameNode。

许多服务器的默认端口改变

  • Hadoop3.x之前,多个Hadoop服务的默认端口位于Linux临时端口范围(63768~61000). 这意味着在启动时,由于与另一个应用程序冲突,服务有时无法绑定到端口。
  • 在Hadoop3.x中,这些可能冲突的端口已移出临时范围,受影响的有NameNode , SecondaryNamenode , DataNode 和 KMS 。

添加对Microsoft Azure Data Lake 和 阿里云对象存储系统的支持

DataNode内部实现Balancer

  • 一个DN管理多个磁盘,当正常写入时,多个磁盘是平均分配的。然而当添加新磁盘时,这种机制会造成DN内部严重的倾斜。
    之前的DataNode Balancer只能实现DN之间的数据平衡,Hadoop3.x实现了内部的数据平衡。

重做的后台和任务堆内存管理器

  • 已实现根据服务器自动配置堆内存,HADOOP_HEAPSIZE变量失效。简化MapTask 和ReduceTask的堆内存配置,现已不必同时在配置中和Java启动选项中指定堆内存大小,旧有配置不会受到影响。

HDFS实现服务器界别的Federation分流

  • 对于HDFS Federation, 添加了一个对统一命名空间的RPC路由层 。 和原来的HDFS Federation没有变化,只是目前挂在管理不必在客户端完成,而是放在的服务器,从而简化了HDFS Federation访问。

Yarn的时间线服务升级到V2

Yarn的时间线服务是MRJobHistory的升级版,提供了在Yarn上运行第三方程序的历史支持,该服务在Hadoop3.0升级为第二版。

容量调度器实现API级别的配置

  • 现在容量调度器可以实现通过REST API来改变配置,从而让管理员可以实现调度器自动配置。

Yarn实现更多种资源类型的管理

  • Yarn调度器现已可以通过配置实现用户自定义的资源管理。现在Yarn可以根据CPU和内存意外的资源管理其任务队列。\

参考 :
https://blog.csdn.net/chj_xc/article/details/54907029
https://www.cnblogs.com/smartloli/p/8827623.html
https://www.cnblogs.com/smartloli/p/9028267.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值