一、Hadoop简介

Hadoop是apache软件基金会下的开源软件。支持多种编程语言(c,c++,python,java等)。
Hadoop两大核心:HDFS+MapReduce,海量数据的存储和海量数据的处理。
谷歌大数据的发展:2003年,发布了分布式文件系统GFS(google file system);2004年,发布了分布式并行编程框架MapReduce。

Hadoop特性:
1、高可靠性:多台机器构成集群,部分机器发生故障,剩余机器可以继续对外提供服务。
2、高效性:成百上千的机器并行计算。
3、高扩展性:可以不断往集群中增加机器。
4、成本低:可以采用普通的PC机来构建一个集群。
5、支持多种编程语言

Hadoop应用现状:

Hadoop版本变化:Hadoop1.0两大核心:HDFS+MapReduce。

二、Hadoop项目结构


1、HDFS:分布式文件存储系统。
2、YARN:资源管理和调度器。
3、MapReduce:离线处理。
4、Tez:DAG计算,Hadoop查询处理框架,构建有向无环图执行任务。
5、Spark:基于内存计算,性能比MapReduce高。
6、Hive:数据仓库,保存数据的历史版本,满足企业的决策需求。支持SQL语句查询分析,将SQL转换成MapReduce作业。
7、Pig:实现流式数据处理,提供类似SQL的语法pig latin,轻量级的脚本语言。
8、Oczie:作业流调度系统,不同工作环节的调度。
9、zookeeper:提供分布式协调一致性服务,集群管理。
10、HBase:列族数据库。
11、Flume:日志收集。
12、Sqoop:用于在Hadoop与传统数据库之间进行数据传递。关系型数据库到HDFS、HBase、Hive互导。
13、Ambari:Hadoop快速部署工具,支持apache Hadoop集群的供应、管理和监控。

三、HDFS

HDFS:分布式文件系统,海量数据的存储。

1、HDFS实现目标:
(1)兼容廉价的硬件设备
(2)实现流数据读写
(3)支持大数据集
(4)支持简单的文件模型
(5)强大的跨平台兼容性

2、HDFS自身的局限性:
(1)不适合低延迟数据访问:不能满足实时处理需求。
(2)无法高效存储大量小文件
(3)不支持多用户写入和任意修改文件:只能追加。

3、HDFS块
块设计的好处:
(1)支持大规模文件存储
(2)简化系统设计:块大小是固定的。
(3)适合数据备份

4、HDFS两大组件
(1)名称节点:真个HDFS集群的管家。记录信息,记录数据存储在哪个机器上,相当于数据目录。名称节点信息保存在内存中的。
FsImage:保存系统文件树。维护内容:文件的复制等级、块大小以及组成文件的块、修改和访问的时间、访问权限。
EditLog:记录对数据进行创建、删除、重命名等操作的。
第二名称节点:名称节点的冷备份。
(2)数据节点:存储实际数据。

5、HDFS体系结构

HDFS通信协议:

HDFS局限性:
(1)命令空间限制:名称节点是保存在内存中的,因此,名称节点能够容纳的对象的个数会受到空间大小限制。
(2)性能的瓶颈:整个分布式文件的吞吐量,受限于单个名称节点的吞吐量。
(3)隔离问题:由于集群只有一个名称节点,只有一个命名空间,因此无法对不同应用程序进行隔离。
(4)集群的可用性:一旦这个唯一的名称节点发生故障,会导致整个集群变得不可用。单点故障。

6、HDFS的存储原理
(1)冗余数据保存问题:数据冗余保存(默认是3),可以加快数据传输速度、很容易检查数据错误、保存数据可靠性。
(2)数据保存策略问题:

(3)数据恢复问题:名称节点出错、数据节点出错、数据本身出错。
名称节点出错:需要暂停服务一段时间,冷备份恢复。
数据节点出错:数据节点定期通过远程调用的方式向名称节点发送心跳信息,名称节点探测到数据节点不可用之后,数据节点会被标记为宕机,名称节点再将故障节点数据复制一份。
数据本身出错:校验码校验数据是否出错。

四、Hadoop的优化和发展

以前的Hadoop不足点:
1、抽象层次低,需人工编码
2、表达能力有限:抽象成map和reduce函数,现实中有些实际问题不能用这两种函数表达。
3、开发者自己管理作业(job)之间的依赖关系
4、难以看到程序整体逻辑
5、执行迭代操作效率低:分阶段进行执行任务,执行完成后写入分布式文件系统中,供给下一阶段使用,但是对于迭代次数较多的情况效率比较低,比如模拟退火算法,需要多次迭代。
6、资源浪费:整个任务执行严格划分阶段,所有map任务执行完成之后才能执行reduce任务,reduce在map任务执行期间必须等待。
7、实时性差:批处理任务,实时性较差。

Hadoop的改进:
1、Hadoop自身核心组件的改进,MapReduce和HDFS的架构设计改进。

2、Hadoop生态系统其他组件的不断丰富,包括Pig、Tez、Spark、Kafka等。

五、Hadoop新特性

1、HDFS HA


zookeeper
共享存储系统

2、HDFS Federation
Hadoop1.0中存在的问题:
(1)单点故障问题
(2)不可以水平扩展
(3)系统整体性能受限于单个名称节点的吞吐量
(4)单个名称节点难以提供不同程序之间的隔离性
(5)HDFS HA是热备份,提供高可用性,但是无法解决可扩展性、系统性能、隔离性。

HDFS Federation结构:

HDFS Federation的优势:可以解决单名称节点存在的问题:集群扩展性、性能更高效、良好的隔离性。

3、YARN
YARN与Hadoop集群统一部署。
MapReduce1.0的缺陷:
(1)存在单点故障问题
(2)jobtracker只有一个,任务过重:资源调度、任务调度、任务监控。
(3)容易出现内存溢出:按数据分配资源,只看任务数,不看每个任务需要多少资源。
(4)资源划分不合理:map任务只能提供给map使用,reduce任务只能提供给reduce使用。

YARN设计思路:将原jobtracker三大功能拆解。

(1)MapReduce1.0,既是计算框架,又是资源调度框架;
(2)YARN,纯粹的资源管理调度框架,而不是一个计算框架;
(3)MapReduce2.0,运行在YARN之上的一个纯粹的计算框架。

YARN体系结构:

(1)ResourceManager:全局的资源管理器。调度器:接收来自ApplicationMaster应用程序资源请求;容器:以容器的形式分配资源,容器封装了一定数量的CPU、内存、磁盘等资源,从而限定了每个应用程序可以使用的资源量;应用程序管理器:管理所有的应用程序运行,管理ApplicationMaster。
作用:处理客户端请求、启动监控ApplicationMaster、监控Node Manager、资源分配与调度。

(2)NodeManager:是每个节点上的代理,容器生命周期管理,只负责管理抽象的容器;监控容器的资源使用情况;以心跳的方式与ResourceManager保持通信;向ResourceManager汇报作业的资源使用情况和每个容器的运行状态;跟踪节点的健康状况;接收来自ApplicationMaster的启动/停止容器的各种请求。
作用:单个节点上的资源管理、处理来自Resource Manager的命令、处理来自ApplicationMaster的命令。

(3)ApplicationMaster:a.运行在容器中,ResourceManager为它申请容器运行;b.把获得到的资源进一步分配给内部的某个任务(map或reduce任务),实现资源的二次分配;c.与NodeManager保持通信,告诉它应用程序的启动、运行、监控和停止,并对所有任务的执行进度和状态进行监控,并在任务发生失败时进行执行失败恢复;d.定时向ResourceManager发送心跳信息,报告资源的使用情况和应用的进度信息;e.当作业完成后,向ResourceManager注销容器,执行周期完成。
作用:任务调度、监控与容错;为应用程序申请资源,并分配给内部任务。

YARN工作流程:

工作流程:
(1)用户编写客户端应用程序向YARN提交应用程序;
(2)YARN的ResourceManager负责接收和处理来自客户端的请求,为应用程序分配一个容器,在该容器中启动一个ApplicationMaster;
(3)ApplicationMaster被创建后会首先向ResourceManager注册;
(4)ApplicationMaster采用轮询的方式向ResourceManager申请资源;
(5)ResourceManager以容器的形式向提出申请的ApplicationMaster分配资源;
(6)在容器中启动任务(运行环境、脚本);
(7)各个任务向ApplicationMaster汇报自己的状态和进度;
(8)应用程序向运行完成后ApplicationMaster向ResourceManager的应用程序管理器注销并关闭自己。

YARN中的资源管理比MapReduce1.0更加高效,以容器为单位,不是以slot,不会存在map任务只能map去执行的问题,所以资源利用更高效。

YARN的发展目标:实现一个集群多个框架。

一个集群一个框架导致的问题:集群资源利用率低、数据无法共享、维护代价高。
YARN解决:YARN实现一个集群多个框架。在一个集群上部署一个统一的资源调度管理框架YARN,在YARN上可以部署其他各种计算框架;由YARN进行统一的资源调度管理服务,并且能够根据各种计算框架的负载需求,调整各自占用的资源,实现集群资源共享和资源弹性收缩;可以实现一个集群上的不同应用负载混搭,有效提高了集群的利用率;不同计算框架可以共享底层存储,避免了数据集跨集群移动。

4、Pig
(1)pig简介:降低编码数据量。


(2)pig主要用户

5、Tez
Tez:支持DAG作业的计算框架,直接源于MapReduce框架。把map和reduce任务继续拆分,分解后的元操作可以任意灵活组合,产生新的操作。

Tez的优化主要体现在:
(1)去除连续两个作业之间的写入HDFS
(2)去除每个工作流中多余的Map阶段

6、Spark和Kafka



大数据技术---Hadoop相关推荐

  1. 尚硅谷大数据技术Hadoop教程-笔记02【Hadoop-入门】

    视频地址:尚硅谷大数据Hadoop教程(Hadoop 3.x安装搭建到集群调优) 尚硅谷大数据技术Hadoop教程-笔记01[大数据概论] 尚硅谷大数据技术Hadoop教程-笔记02[Hadoop-入 ...

  2. 尚硅谷大数据技术Hadoop教程-笔记01【大数据概论】

    视频地址:尚硅谷大数据Hadoop教程(Hadoop 3.x安装搭建到集群调优) 尚硅谷大数据技术Hadoop教程-笔记01[大数据概论] 尚硅谷大数据技术Hadoop教程-笔记02[Hadoop-入 ...

  3. 尚硅谷大数据技术Hadoop教程-笔记03【Hadoop-HDFS】

    视频地址:尚硅谷大数据Hadoop教程(Hadoop 3.x安装搭建到集群调优) 尚硅谷大数据技术Hadoop教程-笔记01[大数据概论] 尚硅谷大数据技术Hadoop教程-笔记02[Hadoop-入 ...

  4. 大数据技术Hadoop入门理论系列之一----hadoop生态圈介绍

    Technorati 标记: hadoop,生态圈,ecosystem,yarn,spark,入门 1. hadoop 生态概况 Hadoop是一个由Apache基金会所开发的分布式系统基础架构. 用 ...

  5. 大数据技术Hadoop的介绍

    大数据的基本处理流程与传统数据处理流程并无太大差异,主要区别在于:由于大数据要处理大量.非结构化的数据,所以在各处理环节中都可以采用并行处理.目前,Hadoop.MapReduce和Spark等分布式 ...

  6. 大数据技术hadoop入门级生态圈介绍

    hadoop 生态概况 Hadoop是一个由Apache基金会所开发的分布式系统基础架构. 用户可以在不了解分布式底层细节的情况下,开发分布式程序.充分利用集群的威力进行高速运算和存储. 具有可靠.高 ...

  7. 猿创征文|Hadoop大数据技术

    Hadoop大数据技术 Hadoop背景 Hadoop生态圈 Hadoop模式 HDFS 概述 优点 缺点 基本组成 NameNode Secondary NameNode DataNode YARN ...

  8. Hadoop十岁!Doug Cutting成长史+他眼中大数据技术的未来

    上次见到(膜拜)Hadoop之父Doug Cutting是在2年前,2014中国大数据技术大会上.今年Hadoop10岁,刚看到他的Hadoop十周年贺词,感觉时间飞逝.最近CSDN和InfoQ都在制 ...

  9. hadoop应用开发技术..._大数据技术与应用——万物皆可数据化

    万|物|皆|可|数|据|化 大数据技术与应用  专业概况 专业名称:大数据技术与应用 专业代码:610215 专业方向:数据可视化技术 数据采集与处理  行业趋势  近几年来,互联网行业发展风起云涌, ...

最新文章

  1. gif加文字 php,gif动态图片添加文字 gif制作软件 怎样给gif动态图片添加文字
  2. AI学会了用“人眼”看世界,甚至连人类瞳孔的细微缩放都能模拟 | 杜克大学...
  3. 七牛云的存储对象的地区改变之后
  4. C++/CLI Winform中调用DLL的三种方法
  5. Node.js:Windows7下搭建的Node.js服务(来玩玩服务器端的javascript吧,这可不是前端js插件)...
  6. 【读书笔记】.Net并行编程高级教程--Parallel
  7. Struts2源码阅读(二)_ActionContext及CleanUP Filter
  8. java中的switch的规则_细细讲述Java技术开发的那些不为人知的规则
  9. a类怎么引用b类java_Java中A类的数组如何传入B类???急
  10. 苹果手机连接电脑一直噔噔蹬的响,而且没有反应
  11. 【1024两年祭】溯流光 觅杳杳
  12. 实验四 shell 编程
  13. C语言中的文件操作(二)
  14. java verbose gc_java –verbose:gc
  15. java游戏为什么_JAVA能不能开发大型游戏?为什么?
  16. 转 js控制excel打印完美解决方案
  17. 日本留学签证 申请途径(通过中介)
  18. 解决MobaXtem中使用vim不能复制到Windows
  19. 强烈安利:小顽简报,一款高效实用的PPT新插件
  20. git clone报错:repository ‘xxxxxxxxx’does not exist

热门文章

  1. 目标跟踪实战deepsort+yolov5(上)
  2. 2022北京营养健康展会/北京健康生活展/北京养生健康展会
  3. 港股打新丨放弃药明巨诺,搞蚂蚁金服
  4. android之模拟手机助手下载
  5. 利用模板设计组合模式的心得
  6. 【A component required a bean of type ‘‘ that could not be found】
  7. 前端:水平垂直居中的10种方法
  8. linux系统开机一直卡在logo界面,ubuntu开机卡在ok界面,ubuntu一直在加载界面
  9. 服务器cpu和普通cpu性能,什么是至强Xeon处理器当做服务器CPU?他和普通台式CPU的区别...
  10. 中央空调安装html5模板,中央空调检修口—中央空调检修口安装须知