如约而至,你们好我是AC,就是啊晨的意思,
今天讲hadoop,是大数据开发工程师必备技术之一
好吧,废话不多说,跟我一起,先入个hadoop的门吧
文章目录
什么是Hadoop?
简单叙述:
为了方便理解简单叙述,关于正式介绍,百度了解即可,我就稍微总结下吧
由Apache基金会所开发的分布式系统基础架构,广泛的概念-hadoop生态圈
架构:项目整体的布局方式
集群:多个机器共同完成一件事
分布式:多个集群做不同的事
集群不一定是分布式,分布式一定是集群
主要解决:海量数据的存储和海量数据的分析计算问题。
发展历史
- Lucene–Doug Cutting开创的开源软件,用Java书写代码,实现与Google类似的全文搜索功能,它提供了全文检索引擎的架构,包括完整的查询引擎和索引引擎
- 2001年年底成为apache基金会的一个子项目
- 可以说Google是hadoop的思想之源(Google在大数据方面的三篇论文)谷歌的三驾马车
GFS —>HDFS google file system hadoop distributed file system
Map-Reduce —>MR
BigTable —>Hbase - 名字来源于Doug Cutting儿子的玩具大象
- Hadoop就此诞生并迅速发展,标志这大数据时代来临
以后我腻害了我也要以我喜欢的东西命名个
Hadoop特点
1)高可靠性:因为Hadoop假设计算元素和存储会出现故障,因为它维护多个工作数据副本,在出现故障时可以对失败的节点重新分布处理。
2)高扩展性:在集群间分配任务数据,可方便的扩展数以千计的节点。
3)高效性:在MapReduce的思想下,Hadoop是并行工作的,以加快任务处理速度。
4)高容错性:自动保存多份副本数据,并且能够自动将失败的任务重新分配。
可靠因为有多个数据副本,失败重新分配
扩展在集群间分配任务方便
高效因为并行
容错因为自动保存多份
核心组成
1)Hadoop HDFS:(hadoop distribute file system )一个高可靠、高吞吐量的分布式文件系统。
2)Hadoop MapReduce:一个分布式的离线并行计算框架。
3)Hadoop YARN:作业调度与集群资源管理的框架。
4)Hadoop Common:支持其他模块的工具模块(Configuration、RPC、序列化机制、日志操作)。
Hadoop HDFS:存储
Hadoop MapReduce:计算
Hadoop YARN:调度管理
Hadoop Common:工具
HDFS架构概述
一、HDFS简介
HDFS(hadoop distributed file system):Hadoop分布式文件系统。是基于流数据模式访问和处理超大文件的需要而开发的,可以运行于廉价的服务器上。它所具有的高容错,高可靠性,高可扩展性,高获得性,高吞吐率等特征为海量数据提供了不怕故障的存储,为超大数据集的应用带来了很多便利。简单来说就是把一个超大号文件按一定大小分割并放置在多台服务器上,这样多台服务器同时工作,效率超高,而且安全性也会提高。
二、HDFS组成结构以及各部分作用
HDFS主要由四个部分组成,分别为Client,NameNode、DataNode、以及Secondary NameNode组成。
1.Client(客户端)
文件切分:文件上传HDFS的时候,Client根据需求将文件切分成一个一个的小数据块(block),然后进行存储。
每个小数据块(block)在其他服务器上都有副本,Client会与NameNode进行通信,获取文件及其副本位置,为以后做打算。
与DataNode进行通信,读取或写入数据。
Client可以对HDFS管理,比如启动或关闭。
2.NameNode(书的目录)
储存文件元数据,如:文件名,目录结构,属性(生成时间,副本数,文件权限),及每个文件的块列表和块所在DataNode(数据节点)等
3.DataNode(实际的内容)
在本地文件系统储存文件块数据,以及块数据的校验和。
4.Secondary NameNode(辅助NameNode)
监控HDFS 状态的辅助后台程序,每隔一段时间获取HDFS元数据的快照
上边我也提到NameNode就好比书的目录,你看书想要了解什么,肯定先看目录,DataNode才是实际内容,而Secondary NameNode是来辅助NameNode的万一挂了好上位。
元数据被定义为:描述数据的数据,对数据及信息资源的描述性信息。
简言之,元数据就是关于数据的数据
YARN架构概述
1) ResourceManager(rm):处理客户端请求、启动/监控ApplicationMaster、监控NodeManager、资源分配与调度;
2)NodeManager(nm):单个节点上的资源管理、处理来自ResourceManager的命令、处理来自ApplicationMaster的命令;
3)ApplicationMaster:数据切分、为应用程序申请资源,并分配给内部任务、任务监控与容错。
4)Container:对任务运行环境的抽象,封装了CPU、内存等多维资源以及环境变量、启动命令等任务运行相关的信息。
主从结构:master/slave
光看图是不是有些晕,我把图中内容简单介绍下就很好理解了
节点就好比主机,那么上图有四个节点,client还记得是什么吗?真聪明,没错客户端
ResourceManager就好比部门经理,整个集群的老大,负责处理客户端请求,监控NodeManager,启动或监控ApplicationMaster,还有资源的分配与调度。
NodeManager:主要管理单个节点的资源,处理来自ResourceManager(老大)的命令,处理来自ApplicationMaster的命令。是某一个节点资源的老大
ApplicationMaster:主要负责数据的切分,为应用程序,申请资源,并分配给内部的任务,还有任务的监控与容错。简单说是在集群上某一个任务的资源的调度和开启等等。相当于项目经理
Container是资源的抽象,它封装了某个节点上的多维度资源,如内存,CPU,磁盘,网络 等…简单说就是给ApplicationMaster服务因为APP Mstr运行要用到,内存,CPU,磁盘,网络…这些资源会被虚拟化到Container里
MapReduce架构概述
MapReduce将计算过程分为两个阶段:Map(映射)和Reduce(归约)
1)Map阶段并行处理输入数据
2)Reduce阶段对Map结果进行汇总
MapReduce就很好理解了,就是把一个事情拆成多个步骤,这是Map映射
而Reduce就是把这些事情再汇总,所谓的规约
大数据生态体系(了解知识扩展)
图中涉及的技术名词解释如下:
(1)Sqoop:Sqoop是一款开源的工具,主要用于在Hadoop(Hive)与传统的数据库(mysql)间进行数据的传递,可以将一个关系型数据库(例如 : MySQL ,Oracle 等)中的数据导进到Hadoop的HDFS中,也可以将HDFS的数据导进到关系型数据库中。
(2)Flume:Flume是Cloudera提供的一个高可用的,高可靠的,分布式的海量日志采集、聚合和传输的系统,Flume支持在日志系统中定制各类数据发送方,用于收集数据;同时,Flume提供对数据进行简单处理,并写到各种数据接受方(可定制)的能力。
(3)Kafka:Kafka是一种高吞吐量的分布式发布订阅消息系统,有如下特性:
a)通过O(1)的磁盘数据结构提供消息的持久化,这种结构对于即使数以TB的消息存储也能够保持长时间的稳定性能。
b)高吞吐量:即使是非常普通的硬件Kafka也可以支持每秒数百万的消息。
c)支持通过Kafka服务器和消费机集群来分区消息。
d)支持Hadoop并行数据加载。
(4)Storm:Storm为分布式实时计算提供了一组通用原语,可被用于“流处理”之中,实时处理消息并更新数据库。这是管理队列及工作者集群的另一种方式。 Storm也可被用于“连续计算”(continuous computation),对数据流做连续查询,在计算时就将结果以流的形式输出给用户。
(5)Spark:Spark是当前最流行的开源大数据内存计算框架。可以基于Hadoop上存储的大数据进行计算。
(6)Oozie:Oozie是一个管理Hdoop作业(job)的工作流程调度管理系统。Oozie协调作业就是通过时间(频率)和有效数据触发当前的Oozie工作流程。
(7)HBase:HBase是一个分布式的、面向列的开源数据库。HBase不同于一般的关系数据库,它是一个适合于非结构化数据存储的数据库。
(8)Hive:Hive是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并提供简单的sql查询功能,可以将sql语句转换为MapReduce任务进行运行。 其优点是学习成本低,可以通过类SQL语句快速实现简单的MapReduce统计,不必开发专门的MapReduce应用,十分适合数据仓库的统计分析。
(9)R语言:R是用于统计分析、绘图的语言和操作环境。R是属于GNU系统的一个自由、免费、源代码开放的软件,它是一个用于统计计算和统计制图的优秀工具。
(10)Mahout:
Apache Mahout是个可扩展的机器学习和数据挖掘库,当前Mahout支持主要的4个用例:
a)推荐挖掘:搜集用户动作并以此给用户推荐可能喜欢的事物。
b)聚集:收集文件并进行相关文件分组。
c)分类:从现有的分类文档中学习,寻找文档中的相似特征,并为无标签的文档进行正确的归类。
d)频繁项集挖掘:将一组项分组,并识别哪些个别项会经常一起出现。
(11)ZooKeeper:Zookeeper是Google的Chubby一个开源的实现。它是一个针对大型分布式系统的可靠协调系统,提供的功能包括:配置维护、名字服务、 分布式同步、组服务等。ZooKeeper的目标就是封装好复杂易出错的关键服务,将简单易用的接口和性能高效、功能稳定的系统提供给用户。
关于hadoop的概念性知识,暂时先说到这里,下篇更新,集群搭建要动手了哦,编号为02,谢谢各位支持,拜了个拜
来源:CSDN
作者:E699A8
链接:https://blog.csdn.net/E699A8/article/details/103659637