Hadoop 是阿帕奇基金会(Apache)开源的一款分布式系统基础架构。由以下几部分组成:HDFS 、MapReduce 和 YARN 。它使用户可以快速简便的开发分布式程序去处理数据,而不需掌握过多的分布式知识以及底层实现逻辑。更多精彩文章请关注公众号『Pythonnote』或者『全栈技术精选』
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时代。
分布式文件系统 HDFS ;分布式计算系统 MapReduce ;分布式资源管理系统 YARN 。更多精彩文章请关注公众号『Pythonnote』或者『全栈技术精选』
核心(角色):NameNode、DataNode
作用:分布式文件存储
特点:高可靠性、高扩展性、高吞吐率。
副本可以保证高可靠性
原理:NameNode 负责管理存储所有的元数据信息(文件系统的目录信息、文件信息以及分块等信息)。DataNode 负责管理存储块文件。DataNode 会定时向 NameNode 报告自己的状态(比如磁盘空间、资源消耗、是死是活),可将此过程称为心跳。当客户端发起一次读或写的请求,请求先到达 NameNode ,它判断一下读写权限,再查找一个可用并适合的 DataNode ,然后向客户端返回该 DataNode 的相关信息。客户端拿到节点信息后与其交互,进行读或写操作。完成后客户端拿到对应结果(读取的数据或者写结果状态信息),最后向 NameNode 反馈结果。更多精彩文章请关注公众号『Pythonnote』或者『全栈技术精选』
注意:HDFS 会将数据文件以指定的块大小拆分成数据块,并将数据块以副本的方式保存到不同的节点上。其中数据写入时采用的方式是先完成第一个副本,然后再将其复制到其他节点,保证一个节点出现异常,数据不会丢失。过程虽然复杂,但是用户无感知,所有的切分、容错、负载均衡等都悄悄的完成,使得用户只知道上传了一个文件或者读取了一个文件。
核心:Map(映射)、Reduce(归纳)
作用:大数据量计算
特点:简化并行应用开发,不需要关注并行计算底层实现,而是直接调用所提供的 API 即可。
原理:将输入的数据集切分为若干独立的数据块,由 map 任务以并行的方式处理。然后将 map 的输出先进性排序,然后再把结果输入 reduce 任务,由 reduce 任务来完成最终的统一处理。
注意:部署 Hadoop 集群时,通常计算节点和存储节点部署在同一节点,使作业优先调度到那些已经存储有数据的节点进行计算,这样可以大大节省数据传输消耗的带宽。更多精彩文章请关注公众号『Pythonnote』或者『全栈技术精选』
来源:是为了解除 Hadoop1.x 中只能运行 MapReduce 框架的限制,将 MapReduce 框架中 Job Tracker 的资源管理和作业调度监控功能进行分离。
作用:为运行在 YARN 上的分布式应用程序提供统一的资源管理和调度
特点:为 Hadoop 集群在利用率、资源统一管理和数据共享等方面带来了极大便利;可以运行不同类型的作业:MapReduce 、Spark 等计算框架。
首先当然是它开源,免费的原因(你懂得 ~)。其次就是社区活跃,参与的人超多,这样一来,在使用过程中有任何问题,随时可以找到解决办法,而不需死扣晦涩的文档。还有它适用于大数据分布式存储和计算的各个场景,满足很多人的需求。最后就是它的成熟性,发展的十余年间,被各大企业所验证。更多精彩文章请关注公众号『Pythonnote』或者『全栈技术精选』
1) 社区版(官方,免费,但可能需要自己再研发额外功能)
2) Cloudera CDH (目前公司使用最多,安装、配置、升级等简便,文档完善,与 Spark 结合好,但是不开源,而且和社区版在某些功能上有些出入)
3) Hortonworks HDP (原装 Hadoop ,开源,版本与社区版一致,支持 Tez,集成了开源监控方案 Ganglia 和 Nagios,但是安装升级等比较繁琐,需要费点功夫)
学习自《基于Hadoop与Spark的大数据开发实战》