"""
小闫辛苦码了 1948 个字
文章可能占用您 5 分钟
欢迎关注「全栈技术精选」
"""
print("Live as if you were to die tomorrow. Learn as if you were to live forever. -- by Mahatma Gandhi")


大数据必备技能之 ​​Hadoop​​ ,你了解吗?​更多精彩文章请关注公众号『Pythonnote』或者『全栈技术精选』


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

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


Hadoop 简介

1.介绍

​Hadoop​​​ 是阿帕奇基金会(​​Apache​​​)开源的一款分布式系统基础架构。由以下几部分组成:​​HDFS​​​ 、​​MapReduce​​​ 和 ​​YARN​​ 。它使用户可以快速简便的开发分布式程序去处理数据,而不需掌握过多的分布式知识以及底层实现逻辑。更多精彩文章请关注公众号『Pythonnote』或者『全栈技术精选』

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​​ 。更多精彩文章请关注公众号『Pythonnote』或者『全栈技术精选』

3.1 HDFS

核心(角色):​NameNode​​​、​​DataNode​

作用:​分布式文件存储

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

副本可以保证高可靠性

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

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

3.2 MapReduce

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

作用:​大数据量计算

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

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

注意:部署 ​​Hadoop​​ 集群时,通常计算节点和存储节点部署在同一节点,使作业优先调度到那些已经存储有数据的节点进行计算,这样可以大大节省数据传输消耗的带宽。更多精彩文章请关注公众号『Pythonnote』或者『全栈技术精选』

3.3 YARN

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

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

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

4.选择原因

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

5.版本

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

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

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

学习自《基于Hadoop与Spark的大数据开发实战》更多精彩文章请关注公众号『Pythonnote』或者『全栈技术精选』



Hadoop学习笔记(一)_python


排版:小闫

图片素材:小闫

文案:小闫

长按扫描下方二维码即刻关注小闫


Hadoop学习笔记(一)_公众号_02Hadoop学习笔记(一)_hadoop_03Hadoop学习笔记(一)_公众号_04