大数据分析——Hadoop
大数据分析
一、hadoop的简介
hadoop是整个大数据的根基,没有Hadoop就没有其它任何大数据相关的内容和应用。
1.介绍
为了搭建 可靠的 可扩展的 分布式的计算机框架所做的开源的项目框架
这个软件是一个允许分布式的框架,使用简单的编程模型处理跨计算机框架的大数据集。
我们的网站日志文件就有2TB/天,那么我一台计算机已经不可能完成任务。在我们机房搭建计算机集群,所有的数据是分别存放在不同的计算机硬件上的。
它被设计程从单个服务器可以扩展到数千台服务器(Java理论上来说是可以无穷多),每台服务器提供本地的计算和存储而不是依赖硬件来提高可用性。
2. Hadoop的组件 Modules
Hadoop基础框架:用来支持其它的Hadoop组件。
HDFS :Hadoop的分布式的文件系统。最重要的组件之一。提供高吞吐量的数据访问。
Hadoop YARN: 是负责任务调度和资源管理的组件
MapReduce编程模型:一个基于YARN的大数据计算框架。
3.hadoop的组件和功能
Hadoop 1.x
Hadoop这个版本是从0.x开始的,这个里面有比较经典的1.5.x版本。
这个版本中
hdfs 负责存储数据
mapreduce 负责进行数据的运算又要负责计算和数据处理,还要负责本身的任务调度和集群管理。
Hadoop 2.x
现在所有企业中比较常用的通用的版本。
hdfs 负责存储数据
YARN 负责任务调度和资源管理
mapreduce 负责进行数据的运算
Hadoop 3.x
多了组件和功能
4.大数据的分布式环境介绍
官方提供了三种搭建环境:
单机:
就式一台机器,所有的任务在一个jvm中实现,而且没有老大和小弟之分。适合学习。
伪分布:
就是老大和小弟在同一台计算机上。分别使用不同的jvm来实现。也适合学习用。伪分布的原理和完全分布式一致,只是在一台计算机上而已。我们学习用这个模式进行。
完全分布:
企业中真正的搭建的环境。
5. HDFS Hadoop分布式文件系统(只能解决文件的分布式存储功能)
5.1 与传统文件系统相比的区别
分布式,解决数据太大传统文件系统装不下的问题。
分片机制。
将一个文件自动按照大小来进行切割,默认的大小是128MB一个文件。
1GB会拆分成8份,block 1000/128=7.8..至少需要8个block
副本机制,对每个block进行备份(容灾机制)。默认副本数是3个。
假设一个文件被分成2个block,这个文件又开启了副本机制,在3台计算机中是如何备份的?
计算机1 block1-1 block2-3
计算机2 block1-2 block2-2
计算机3 block2-1 block1-3
企业中一般不会使用3个副本。2个即可。对于一般业务,比如临时存储的数据,一般是不开启副本机制的。
5.2 hdfs上面这些是如何完成的呢?工作原理
介绍2个角色:
NameNode
整个集群的老大,只有1个。负责管理,接受用户请求,真正负责读写数据的不是它。
DataNode
这弓集群中的小弟,可以有很多个。,真正去完成数据的读写的工作。
NN负责整个集群的元数据(NN如何知道我集群中有多少小弟?如何知道小弟分别在哪台计算机上?我们要读取的问题对应应该找哪个小弟?),
当用户向nn发送读写请求的适合
NN返回文件的地址(具体就是文件在那台机器上,block在那台计算机上)
客户端,找DN,DN返回这个文件,写的情况下,会在完成写入后,将文件信息,返回给NN,NN将信息添加进元数据。
nn三大功能:管理元数据,管理从阶段(DN),处理客户端请求。
6.YARN 数据的处理计算框架
用来处理用户提交的数据处理请求
任务调度和资源管理
RescourceManager 老大,接受用户请求,负责资源调度
NodeManager 小弟,真正去实现计算的实现者
(hive底层就是mr的实现,spark就是从借鉴过来的)
-RM接受用户请求
-RM将任务进行分割,以便见先并行运算。
-RM从小弟NM中随机选取一个作为这个任务的管理者(项目经理)
-小弟NM,向RM申请资源。
-RM向将资源打包给小弟。
-小弟们(NMs)进行数据的处理,处理完成后返回给这个工程的项目经理(最开始负责的NM)
-NM将结果进行汇总并返回给RM
-RM将结果返回给客户端。
7. MapReduce编程模型
分而治之
将一个大任务,切割成多个小任务,进行并行计算,最后合并为一个结果后返回
-> input
输入阶段,就是从hdfs上读取文件
-> map
将一个大任务切割成多个小任务,然后将每个任务分给多台计算机并行完成
-> shuffle
排序,统计,分组,分区
-> reduce
将所有的map结果进行合并
-> output
将结果写入hdfs中