Hadoop学习笔记(一)

Author:闫玉良

大数据必备技能之 Hadoop ,你了解吗?

官方文档汇总:https://www.pythonnote.cn/OfficialDocuments/

包含了后端常使用的各种文档,小闫静心制作,快收藏起来吧 ~

更多精彩文章请关注公众号『Pythonnote』或者『全栈技术精选』

Hadoop 简介

1.介绍

Hadoop 是阿帕奇基金会(Apache)开源的一款分布式系统基础架构。由以下几部分组成:HDFS 、MapReduce 和 YARN 。它使用户可以快速简便的开发分布式程序去处理数据,而不需掌握过多的分布式知识以及底层实现逻辑。

2.发展史

1) 02年由 Doug Cutting 开发了一款网络搜索引擎 Nutch ,这便是 Hadoop 的前身。

2) 03年到04年诞生了 GFS 和 Map Reduce。

3) 08年 Hadoop 创造了最快排序 1TB 数据的新世界纪录。Hive 成为了它的子项目。

4) 11年 Hadoop 1.0.0版本出现。

5) 13年到15年 Hadoop 2.x版本诞生并不断更新迭代。

6) 16年 Hadoop 进入3.x时代。

3.核心

分布式文件系统 HDFS ;分布式计算系统 MapReduce ;分布式资源管理系统 YARN 。

3.1 HDFS

核心(角色):NameNode、DataNode

作用:分布式文件存储

特点:高可靠性、高扩展性、高吞吐率。

副本可以保证高可靠性

原理:NameNode 负责管理存储所有的元数据信息(文件系统的目录信息、文件信息以及分块等信息)。DataNode 负责管理存储块文件。DataNode 会定时向 NameNode 报告自己的状态(比如磁盘空间、资源消耗、是死是活),可将此过程称为心跳。当客户端发起一次读或写的请求,请求先到达 NameNode ,它判断一下读写权限,再查找一个可用并适合的 DataNode ,然后向客户端返回该 DataNode 的相关信息。客户端拿到节点信息后与其交互,进行读或写操作。完成后客户端拿到对应结果(读取的数据或者写结果状态信息),最后向 NameNode 反馈结果。

注意:HDFS 会将数据文件以指定的块大小拆分成数据块,并将数据块以副本的方式保存到不同的节点上。其中数据写入时采用的方式是先完成第一个副本,然后再将其复制到其他节点,保证一个节点出现异常,数据不会丢失。过程虽然复杂,但是用户无感知,所有的切分、容错、负载均衡等都悄悄的完成,使得用户只知道上传了一个文件或者读取了一个文件。

3.2 MapReduce

核心:Map(映射)、Reduce(归纳)

作用:大数据量计算

特点:简化并行应用开发,不需要关注并行计算底层实现,而是直接调用所提供的 API 即可。

原理:将输入的数据集切分为若干独立的数据块,由 map 任务以并行的方式处理。然后将 map 的输出先进性排序,然后再把结果输入 reduce 任务,由 reduce 任务来完成最终的统一处理。

注意:部署 Hadoop 集群时,通常计算节点和存储节点部署在同一节点,使作业优先调度到那些已经存储有数据的节点进行计算,这样可以大大节省数据传输消耗的带宽。

3.3 YARN

来源:是为了解除 Hadoop1.x 中只能运行 MapReduce 框架的限制,将 MapReduce 框架中 Job Tracker 的资源管理和作业调度监控功能进行分离。

作用:为运行在 YARN 上的分布式应用程序提供统一的资源管理和调度

特点:为 Hadoop 集群在利用率、资源统一管理和数据共享等方面带来了极大便利;可以运行不同类型的作业:MapReduce 、Spark 等计算框架。

4.选择原因

首先当然是它开源,免费的原因(你懂得 ~)。其次就是社区活跃,参与的人超多,这样一来,在使用过程中有任何问题,随时可以找到解决办法,而不需死扣晦涩的文档。还有它适用于大数据分布式存储和计算的各个场景,满足很多人的需求。最后就是它的成熟性,发展的十余年间,被各大企业所验证。

5.版本

1) 社区版(官方,免费,但可能需要自己再研发额外功能)

2) Cloudera CDH (目前公司使用最多,安装、配置、升级等简便,文档完善,与 Spark 结合好,但是不开源,而且和社区版在某些功能上有些出入)

3) Hortonworks HDP (原装 Hadoop ,开源,版本与社区版一致,支持 Tez,集成了开源监控方案 Ganglia 和 Nagios,但是安装升级等比较繁琐,需要费点功夫)

学习自《基于Hadoop与Spark的大数据开发实战》

更多精彩文章请关注公众号『Pythonnote』或者『全栈技术精选』

打赏
  • 版权声明: 本博客所有文章除特别声明外,均采用 Apache License 2.0 许可协议。转载请注明出处!
  • 页面访问量: 独立访客访问数:
  • 更多精彩文章请关注微信公众号『全栈技术精选』,id 为『Pythonnote』

请我喝杯咖啡吧~

支付宝
微信