- hadoop的背景
- 数据处理步骤:
通过运用Python网页爬虫或者Hadoop的Flume框架实时收集数据>数据存储>运用Hadoop、Hive、Spark查找关键字进行数据统计>统计之后的数据由HDFS导入到MySQL中进行存储>运用SpringMVC建立与MySQL联系,对数据进行Web前端展示(主要是HighChart软件)。 - 对于存储:Google采用多台机器,使用分布式的概念去存储
对于计算:用多台机器去处理
MapReduce核心思想:将数据分开处理,结果合在一起存储(”分而治之”思想)。MapReduce分为Map和Reduce,每个Map处理的数据是独立的,Reduce就是合(结果合在一起存储) - 关于存储:HDFS诞生>分布式文件系统
数据存储在HDFS上,然后MapReduce进行处理HDFS上的数据。
分布式存储:分布式数据库:HBase(google称其为:BigTable、GFS)。 - 分布式存储系统起源于谷歌的三篇论文(谷歌的三驾马车:MapReduce、BigTable、GFS)
后来逐渐演变为现在的Hadoop生态系统的主要框架:
GFS ->HDFS
MapReduce->MapReduce
BigTable->HBase - Hadoop的四大核心模块
Hadoop common:支持其他模块的工具类,为Hadoop模块提供基础设施
Hadoop HDFS:分布式文件系统,提供存储
Hadoop YARN:任务调度和集群资源管理
Hadoop MapReduce:分布式离线计算框架
Hadoop之父Doug Cutting,Lucene、Nutch 、Hadoop等项目的发起人。
- 数据处理步骤:
- Hadoop的特性
可靠、可扩展、分布式计算框架
- 存储的可靠性:
如果存储数据的机器损坏了。HDFS提供了一个策略,给数据提供一个副本数(默认3个),这是 牺牲了硬盘作为代价,但是划算的。
HDFS存储形式:以块存储,块损坏了,同样提供了一个策略,对于每个存储文件产生一个校验码,之后定期对它产生一个校验码,进行匹配,如果不匹配,说明块已经损坏 - 计算的可靠性:
- 可扩展性:可以添加任意多台机器,增加配置
- 存储的可靠性:
Hadoop的架构分析
HDFS的架构分析
1)设计理念:一次写入,多次读取
2)分布式应用都有主从的架构:
主节点:NameNode
从节点:datanode
3)HDFS存储的是文件,文件的属性有哪些
名称
位置
副本数
拥有者、权限
存储的块
各个块具体存储在那个datanode上
。。。。
以上信息称之为:元数据(命名空间)
元数据(命名空间)存储在namenode上
文件具体内容存储在datanode上
4)HDFS以块的形式存储(默认是128M),块block,1系列中块的默认大小为64MB,2系列中块的默认大小为128MB
500M文件,块的大小是256M,第一个块的大小是256M,另一个是244M
5)对于HDFS文件系统来说
read读
write写
读取流程:/user/beifeng/mapreduce/input/wc.input
首先知道这个文件的位置,需要先去找namenode
“就近原则”
客户端>namenode
客户端>datanode
写入的过程:/user/beifeng/mapreduce/output/part-00000
客户端>namenode
客户端>datanode
数据流没有经过namenode,是客户端直接和DataNode进行数据交互。YARN的架构分析
是分布式框架,也是主从结构
主节点:ResourceManager管理整个集群资源
从节点:NodeManger
客户端提交应用到ResourceManager上,来申请所需要的资源,分配到各个NodeManger节点上。
YARN的调度过程:
客户端提交MapReduce任务(包括很多job)到ResourceManager节点上,申请分配资源,具体运行在NodeManager上。每个job都有一个ApplicationMaster应用管理者,对任务进行管理、监控和调度。
一个Map是在单独的资源里面运行的,不会被其他的任务抢走资源。
为了实现这样的目的,提出了一个概念:将任务放在某一个空间中,这个空间就属于某个任务,这个概念叫做:Container(容器)。
Map和Reduce所需资源都会放在一个容器中,任务在容器中运行。
小结YARN:通过每个应用的应用管理者去申请资源,然后封装在容器中,告诉资源管理者,在容器中启动任务。- MapReduce计算框架
将计算过程分为两个阶段,Map和Reduce,Map可以理解为一个映射。
Map阶段并行处理输入数据到Reduce汇总阶段中间有一个过程,叫shuffle(有顺序有规则的打乱)
简单理解:map输出到reduce输入的阶段就是shuffle。
- Hadoop 2.x产生
- Hadoop1.x出现的问题:
HDFS存在的问题:
Namenode单点故障,难以应用于在线场景。
Namenode压力过大,且内存受限,影响系统扩展性。
Mapreduce存在问题:
Jobtracker单点故障
Jobtracker压力过大,影响拓展性,难以支持Mapreduce之外的计算框架,如果storm,spark,Tez等。
Hadoop2由Mapreduce,HDFS和yarn三分部构成
HDFS:NN Federation HA
Mapreduce:在yarn上运行的MR
Yarn:资源管理系统 - 解决HDFS1的单点故障和内存受限问题:
a:解决单点故障
HDFS HA:通过主备Namenode切换来解决,如果主Namenode发生故障,则就切换到备Namenode上。(有了这样的优点以后,系统升级也变得更加方便)。
详细过程:主Namenode对外提供服务,被Namenode同步Namenode元数据,以待切换。所有datanode块同时向两个Namenode汇报数据块信息。
切换Namenode有两种选择,一种是手动切换,一种是自动切换。手动切换:主要使用命令来实现切换,主要适用于系统升级的场合。自动切换:是基于zookeeper实现的,zookeeper failover controller监控Namenode健康状态,并向zookeeper注册Namenode,Namenode挂掉后,ZKFC为Namenode竞争锁,获得ZKFC的Namenode成为active namenode。
b:解决内存受限问题
HDFS Federation(联邦),水平拓展,支持多个Namenode,每个Namenode分管一部分目录。所有Namenode共享所有Datanode存储资料。
注意:仅仅是架构上面发生了变换,其他使用方式不变,Mapreduce的改变就是YARN的改变。
Hadoop的产生背景
最新推荐文章于 2021-03-09 11:26:20 发布