一.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 个性长处:
- 扩容能力:Hadoop 是在可用的计算机集群间调配数据并实现计算工作的,这些集群可用不便的扩大到数以千计的节点中。
- 绝对成本低:Hadoop 通过一般便宜的机器组成服务器集群来散发以及解决数据,以至于老本很低。
- 高效率: 通过并发数据,Hadoop 能够在节点之间动静并行的挪动数据,使得速度十分快。
- 可靠性: 能主动保护数据的多份复制,并且在工作失败后能主动地重新部署(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 新个性:
-
通用性:
- 精简 Hadoop 内核,包含剔除过期的 API 和实现,将默认组件实现替换成最高效的实现。Classpath isolation:以避免不同版本 jar 包抵触
- Shell 脚本重构:Hadoop 3.0 对 Hadoop 的治理脚本进行了重构,修复了大量 bug,减少了新个性
- HDFS
-
Hadoop3.x 中 Hdfs 在可靠性和反对能力上作出很大改观
- HDFS 反对数据的擦除编码,这使得 HDFS 在不升高可靠性的前提下,节俭一半存储空间
- 多 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 个节点的故障,而不是仅仅一个节点。
-
MapReduce
Hadoop3.X 中的 MapReduce 较之前的版本作出以下更改:- Tasknative 优化:为 MapReduce 减少了 C /C++ 的 map output collector 实现(包含 Spill,Sort 和 IFile 等),通过作业级别参数调整就可切换到该实现上。对于 shuffle 密集型利用,其性能可进步约 30%。
- Hadoop3.0 中通过内存参数主动推断, 防止设置内存参数繁琐, 设置不当造成资源重大节约的状况, 将会晋升 30% 以上的性能
- 其余
- 默认端口批改:
在 hadoop3.x 之前,多个 Hadoop 服务的默认端口都属于 Linux 的长期端口范畴(32768-61000)。这就意味着用户的服务在启动的时候可能因为和其余应用程序产生端口抵触而无奈启动
当初这些可能会产生抵触的端口曾经不再属于长期端口的范畴,这些端口的扭转会影响 NameNode, Secondary NameNode, DataNode 以及 KMS。与此同时,官网文档也进行了相应的扭转 - YARN 资源类型
比方集群管理员能够定义诸如 GPUs、软件许可证(software licenses)或本地附加存储器(locally-attached storage)之类的资源。YARN 工作能够依据这些资源的可用性进行调度。