一.hadoop 简介

Apache Hadoop是一款反对数据密集型分布式应用程序并以Apache 2.0许可协定公布的开源软件框架。它反对在商用硬件构建的大型集群上运行的应用程序。Hadoop是依据谷歌公司发表的MapReduce和Google文件系统的论文自行实现而成。所有的Hadoop模块都有一个根本假如,即硬件故障是常见状况,应该由框架主动解决。
外围组件有:

  • HDFS(分布式文件系统):解决海量数据存储
  • YARN(作业调度和集群资源管理的框架):解决资源任务调度
  • MAPREDUCE(分布式运算编程框架):解决海量数据计算

狭义上来说,Hadoop通常是指一个更宽泛的概念——Hadoop生态圈。

hadoop次要框架:

框架用处
HDFS文件散布零碎
MapReduce分布式运算
Zookeeper分布式协调服务根底组件
HIVE基于Hadoop的分布式数据仓库
FLUME日志数据采集框架
oozie流程调度框架
Sqoop数据导入导出工具
Impala基于Hive的实时SQL查问剖析
Mahout分布式框架机器学习算法库

Hadoop 倒退:
Hadoop是Apache Lucene创始人 Doug Cutting 创立的。最早起源于Nutch,它是Lucene的子项目。Nutch的设计指标是构建一个大型的全网搜索引擎,包含网页抓取、索引、查问等性能,但随着抓取网页数量的减少,遇到了重大的可扩展性问题:如何解决数十亿网页的存储和索引问题。
2003年Google发表了一篇论文为该问题提供了可行的解决方案。论文中形容的是谷歌的产品架构,该架构称为:谷歌分布式文件系统(GFS),能够解决他们在网页爬取和索引过程中产生的超大文件的存储需要。
2004年 Google发表论文向全世界介绍了谷歌版的MapReduce零碎。
同期间,以谷歌的论文为根底,Nutch的开发人员实现了相应的开源实现HDFS和MAPREDUCE,并从Nutch中剥离成为独立我的项目HADOOP,到2008年1月,HADOOP成为Apache顶级我的项目,迎来了它的疾速发展期。
2006年Google发表了论文是对于BigTable的,这促使了起初的Hbase的倒退。
因而,Hadoop及其生态圈的倒退离不开Google的奉献。

Hadoop个性长处:

  1. 扩容能力:Hadoop是在可用的计算机集群间调配数据并实现计算工作的,这些集群可用不便的扩大到数以千计的节点中。
  2. 绝对成本低:Hadoop通过一般便宜的机器组成服务器集群来散发以及解决数据,以至于老本很低。
  3. 高效率:通过并发数据,Hadoop能够在节点之间动静并行的挪动数据,使得速度十分快。
  4. 可靠性:能主动保护数据的多份复制,并且在工作失败后能主动地重新部署(redeploy)计算工作。所以Hadoop的按位存储和解决数据的能力值得人们信赖。

Hadoop架构:

Hadoop 3.x的版本架构和模型介绍
因为Hadoop 2.0是基于JDK 1.7开发的,而JDK 1.7在2015年4月已进行更新,这间接迫使Hadoop社区基于JDK 1.8从新公布一个新的Hadoop版本,即hadoop 3.0。Hadoop 3.0中引入了一些重要的性能和优化,包含HDFS 可擦除编码多Namenode反对MR Native Task优化YARN基于cgroup的内存和磁盘IO隔离YARN container resizing等。
Apache hadoop 项目组最新消息,hadoop3.x当前将会调整计划架构,将Mapreduce 基于内存+io+磁盘,独特解决数据。扭转最大的是hdfs,hdfs 通过最近block块计算,依据最近计算准则,本地block块,退出到内存,先计算,通过IO,共享内存计算区域,最初疾速造成计算结果,比Spark快10倍。
Hadoop 3.0新个性:

  1. 通用性:

    • 精简Hadoop内核,包含剔除过期的API和实现,将默认组件实现替换成最高效的实现。Classpath isolation:以避免不同版本jar包抵触
    • Shell脚本重构: Hadoop 3.0对Hadoop的治理脚本进行了重构,修复了大量bug,减少了新个性
  2. HDFS
  • Hadoop3.x中Hdfs在可靠性和反对能力上作出很大改观

    1. HDFS反对数据的擦除编码,这使得HDFS在不升高可靠性的前提下,节俭一半存储空间
    2. 多NameNode反对,即反对一个集群中,一个active、多个standby namenode部署形式。注:多ResourceManager个性在hadoop 2.0中曾经反对
  • HDFS纠删码
    在Hadoop3.X中,HDFS实现了Erasure Coding这个新性能。Erasure coding纠删码技术简称EC,是一种数据保护技术.最早用于通信行业中数据传输中的数据恢复,是一种编码容错技术.
    它通过在原始数据中退出新的校验数据,使得各个局部的数据产生关联性。在肯定范畴的数据出错状况下,通过纠删码技术都能够进行复原。
    hadoop-3.0之前,HDFS存储形式为每一份数据存储3份,这也使得存储利用率仅为1/3,hadoop-3.0引入纠删码技术(EC技术),实现1份数据+0.5份冗余校验数据存储形式。
    与正本相比纠删码是一种更节俭空间的数据长久化存储办法。规范编码(比方Reed-Solomon(10,4))会有1.4 倍的空间开销;然而HDFS正本则会有3倍的空间开销。
  • 反对多个NameNodes

最后的HDFS NameNode high-availability实现仅仅提供了一个active NameNode和一个Standby NameNode;并且通过将编辑日志复制到三个JournalNodes上,这种架构可能容忍零碎中的任何一个节点的失败。
然而,一些部署须要更高的容错度。咱们能够通过这个新个性来实现,其容许用户运行多个Standby NameNode。比方通过配置三个NameNode和五个JournalNodes,这个零碎能够容忍2个节点的故障,而不是仅仅一个节点。

  1. MapReduce
    Hadoop3.X中的MapReduce较之前的版本作出以下更改:

    1. Tasknative优化:为MapReduce减少了C/C++的map output collector实现(包含Spill,Sort和IFile等),通过作业级别参数调整就可切换到该实现上。对于shuffle密集型利用,其性能可进步约30%。
    2. Hadoop3.0中通过内存参数主动推断,防止设置内存参数繁琐,设置不当造成资源重大节约的状况,将会晋升30%以上的性能
  2. 其余
  • 默认端口批改:
    在hadoop3.x之前,多个Hadoop服务的默认端口都属于Linux的长期端口范畴(32768-61000)。这就意味着用户的服务在启动的时候可能因为和其余应用程序产生端口抵触而无奈启动
    当初这些可能会产生抵触的端口曾经不再属于长期端口的范畴,这些端口的扭转会影响NameNode, Secondary NameNode, DataNode以及KMS。与此同时,官网文档也进行了相应的扭转
  • YARN 资源类型
    比方集群管理员能够定义诸如 GPUs、软件许可证(software licenses)或本地附加存储器(locally-attached storage)之类的资源。YARN 工作能够依据这些资源的可用性进行调度。