当前位置:   article > 正文

Hadoop学习笔记一_hadoop 扩容能力 高效率

hadoop 扩容能力 高效率

大数据简介

        大数据是指无法在一定时间内用常规软件工具进行捕捉、管理和处理的数据集合。是需要新处理模式才能具有更强的决策力、洞察发现力和流程优化能力的海量、高增长率和多样化的信息资产。目前大数据技术已经广泛应用于众多行业,如仓储物流、电商销售、汽车、电信、生物医学、人工智能、智慧城市等等。

大数据的特点(5V)

1. Volume(大量)

        数据单位:GB -> TB -> PB -> ZB -> YB -> BB -> NB -> DB

        IDC预测,2020年全球数据达到44ZB,2025年全球数据量将达到163ZB,平均每40个月,全球数据量就会翻倍!传统的关系型数据库已经无法处理如此海量的数据。

2. Velocity(高速)

        在大数据时代,数据的创建、存储、分析都需要被高速处理。如电商网站的个性化推荐,需要尽可能实时完成推荐,这也是大数据区别于传统数据挖掘的显著特征。

3. Variety(多样)

        数据形式和来源多种多样,包括结构化、非结构化、半结构化的数据,有网络日志、音频、视频、图片、地理位置等等,多数据类型对数据的处理能力提出了更高的要求。

4. Veracity(真实)

        必须确保数据的真实性,才能保证数据分析的正确性。

5. Value(低价值)

        数据价值密度相对低,犹如淘金,数据的价值是弥足珍贵的但是需要强大的机器算法才能挖掘。


Hadoop简介

        Hadoop是一个适合大数据的分布式(也就是说Hadoop一定是要搭建集群的)存储和计算平台。狭义的Hadoop是指一个框架平台,广义上讲Hadoop代表大数据的一个技术生态圈,包括很多其他软件框架。

Hadoop生态圈技术栈包括:

  • Hadoop(HDFS+MapReduce+Yarn)
  • Hive数据仓库工具
  • Hbase海量列式非关系型数据库
  • Flume数据采集工具
  • Sqoop ETL工具
  • Kafka高吞吐消息中间件
  • ……

Hadoop学习资料

1. 官方文档:https://hadoop.apache.org/docs/r3.3.1/

2. github教程(推荐)https://github.com/heibaiying/BigData-Notes

3. 视频教程:https://www.bilibili.com/video/BV1Qp4y1n7EN

Hadoop的优缺点(SEER)

优点

1. 扩容能力(Scalable)

        Hadoop是在计算机集群内分配数据并完成计算任务,集群可方便的扩展数万节点。

2. 低成本(Economical)

        Hadoop通过普通廉价的机器组成服务器集群来分发和处理数据。

3. 高效率(Efficient)

        Hadoop可以在节点之间动态并行的移动数据,使得速度非常快。(这点是相对的)

4. 可靠性(Reliable)

        自动维护数据的多份副本,并且在任务失败后能自动重新部署计算任务。

缺点

1. 不适合低延迟的数据访问

2. 不能高效存储大量小文件

3. 不支持用户写入和任意修改文件

Hadoop的发行版本

1. Apache Hadoop(免费):http://hadoop.apache.org/

        优点:开源、免费,学习非常方便,代码更新版本快

        缺点:版本的升级、维护、兼容性问题

2. CloudManager(收费):https://www.cloudera.com

        CloudManager通过各种补丁,实现版本之间的稳定运行,解决了版本升级困难和版本兼容性的各种问题。生产推荐使用CloudManager的CHD版本

3. HortonWorks(免费):https://hortonWorks.com

        Hortonworks主要是雅虎主导的(目前被上面的Cloudera收购),核心产品HDP,免费开源,并且提供一套web管理界面HDF,方便通过界面管理集群状态,web管理界面地址:http://ambari.apache.com

Apache Hadoop的重要组成 ★

Hadoop = DHFS(分布式文件系统) +  MapReduce(分布式计算框架)+ Yarn(资源协调框架)+ Common(公用的模块,如RPC、Configuration、序列化机制和日志操作)

HDFS文件存储

HDFS 遵循主/从架构,由单个 NameNode(NN) 和多个 DataNode(DN) 组成:

  • NameNode : 负责执行有关 文件系统命名空间 的操作,例如打开,关闭、重命名文件和目录等。它同时还负责集群元数据的存储,记录着文件中各个数据块的位置信息。
  • DataNode:负责提供来自文件系统客户端的读写请求,执行块的创建,删除等操作。

MapReduce计算

        以词频统计(WordCount)为例:

  1. input : 读取文本文件;

  2. splitting : 将文件按照行进行拆分,此时得到的 K1 行数,V1 表示对应行的文本内容;

  3. mapping : 并行将每一行按照空格进行拆分,拆分得到的 List(K2,V2),其中 K2 代表每一个单词,由于是做词频统计,所以 V2 的值为 1,代表出现 1 次;

  4. shuffling:由于 Mapping 操作可能是在不同的机器上并行处理的,所以需要通过 shuffling 将相同 key 值的数据分发到同一个节点上去合并,这样才能统计出最终的结果,此时得到 K2 为每一个单词,List(V2) 为可迭代集合,V2 就是 Mapping 中的 V2;

  5. Reducing : 这里的案例是统计单词出现的总次数,所以 Reducing 对 List(V2) 进行归约求和操作,最终输出。

        MapReduce 编程模型中 splitting 和 shuffing 操作都是由框架实现的,需要我们自己编程实现的只有 mapping 和 reducing,这也就是 MapReduce 这个称呼的来源。

Yarn资源调度

YARN 的基本思想是将资源管理和作业调度/监控的功能拆分为单独的守护进程。

1. ResourceManager

  ResourceManager 通常在独立的机器上以后台进程的形式运行,它是整个集群资源的主要协调者和管理者。ResourceManager 负责给用户提交的所有应用程序分配资源,它根据应用程序优先级、队列容量、ACLs、数据位置等信息,做出决策,然后以共享的、安全的、多租户的方式制定分配策略,调度集群资源。

2. NodeManager

  NodeManager 是 YARN 集群中的每个具体节点的管理者。主要负责该节点内所有容器的生命周期的管理,监视资源和跟踪节点健康。具体如下:

  • 启动时向 ResourceManager 注册并定时发送心跳消息,等待 ResourceManager 的指令;
  • 维护 Container 的生命周期,监控 Container 的资源使用情况;
  • 管理任务运行时的相关依赖,根据 ApplicationMaster 的需要,在启动 Container 之前将需要的程序及其依赖拷贝到本地。

3. ApplicationMaster

      在用户提交一个应用程序时,YARN 会启动一个轻量级的进程 ApplicationMasterApplicationMaster 负责协调来自 ResourceManager 的资源,并通过 NodeManager 监视容器内资源的使用情况,同时还负责任务的监控与容错。具体如下:

  • 根据应用的运行状态来决定动态计算资源需求;
  • 向 ResourceManager 申请资源,监控申请的资源的使用情况;
  • 跟踪任务状态和进度,报告资源的使用情况和应用的进度信息;
  • 负责任务的容错。

4. Container

  Container 是 YARN 中的资源抽象,它封装了某个节点上的多维度资源,如内存、CPU、磁盘、网络等。当 AM 向 RM 申请资源时,RM 为 AM 返回的资源是用 Container 表示的。YARN 会为每个任务分配一个 Container,该任务只能使用该 Container 中描述的资源。ApplicationMaster 可在 Container 内运行任何类型的任务。例如,MapReduce ApplicationMaster 请求一个容器来启动 map 或 reduce 任务,而 Giraph ApplicationMaster 请求一个容器来运行 Giraph 任务。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/神奇cpp/article/detail/855033
推荐阅读
相关标签
  

闽ICP备14008679号