当前课程知识点:大数据系统基础 > 4. 处理框架 > 授课视频 > 4.6Hadoop
下面我们来介绍一个可能是
大数据领域最最著名的系统
那么叫做HADOOP
MAPREDUCE
是一种非常广义的概念
HADOOP是MAPREDUCE
具体的开源的实现
刚才我们讲MAP REDUCE
是基于一个概念性的讲的
而且是基于
Google的论文讲的
但是Google的系统
是不开放的
所以实际上大部分人
用的MAP REDUCE
它就是HADOOP的MAP REDUCE
所以现在大家也管
这一类的系统
就叫HADOOP的系统
这是大数据领域里
最重要的一个软件
可以说没有这种软件
就没有现在所说的
大数据系统这种东西
那么HADOOP和Google的
Map Reduce
究竟有什么样的区别呢
Google的Mapreduce
和Hadoop到底有什么区别
因为Google的Mapreduce
刚才我们也提到了
它是基于Google的
一系列分布式架构的
比如说DFS 比如说client
能够保证它通讯的一致性
比如说它的资源调度管理系统
能够确保每一个任务
不管是计算任务还是管理任务
都能够在正确的机器上
被正确的执行
以及包括一系列的
管理和监控架构
确认每一个任务都是活的
然后还有一个
大家容易忽视的事情
就是说你的可执行文件
是怎么发布到每台机器上去的
你的配置文件是怎么
发布到每台机器上去的
这一些都是Google
其它的分布式系统保证的
但是Hadoop
作为一个开源实现
它不能保证你的架构里头
有这些分布式的服务
因此Hadoop
不仅实现了文件系统
和Mapreduce
它还实现了一系列的
这种零碎的任务
来做资源管理和调度
来做可执行程序的分发等等
再确保这个运行
这个解释
为什么我们先讲清楚了
Mapreduce的理念
和它核心的系统实现
然后我们再来讲
Hadoop的使用
否则的话你会觉得Hadoop
它里头是一个特别
庞杂 繁杂复杂的系统
实际上不是
这些系统都是为了
来支持它的核心任务的运行的
那么Hadoop的基本架构来看
有这几个方面
第一个叫做Jobtracker
或者我们叫master
但是Hadoop也要Jobtracker
这个jobtracker的任务
是接受了一个
Mapreduce的任务
然后我们把这些任务
分配给worker
然后它负责了监控
它负责了各种错误的处理
但是在分配的过程中
它要考虑到
哪一个Worker上还有资源
所以它也是一个
资源和管理调度的
这么一个静态
那么它的任务是从哪里提交
它是从用户提交的
就Client
这是客户端
Mapreduce的客户端
它是把一个任务
通过一个面临行的工具
提交给tasttracker
这个任务就包括了任务的描述
你到哪里去找
你的输入输出数据
你到底要跑多少个Map
到底要跑多少个reduce
以及你的程序的[00:02:36]
在什么地方
在每一个计算解点
每一个worker上
那么它都跑了一个
叫Tasttracker的东西
因为一个woker上
可以跑多个Map
和reduce的程序
这个因为发布成woker
大部分计算解点都是多盒的
所以它可以跑多个Map
或者reduce的进程
然后多盒上
tasktracher这个进程
负责管理在tasktracher
跑的各个mapreduce的进程
然后这个Task
是一个独立的进程
为什么它不是跟
tasktracher跑在一起的
是因为Task可能随时会阻塞
因为你可能访问了一个
无效的指针诸如此类的
它就死了
所以它是为了保护tasktracher
所以产品Task
是一个独立的进程
这一个进程是运行了一个MAP
或者reduce的函数
然后它处理了一个[00:03:19]
这是一个Task
然后Task会把它的进度
放到tasktracher
tasktracher
会把进度报告给Master
它是这样的一种
基本的一个组建
那么我们详细看一下在Hadoop里
它这个具体程序是怎么执行的
用户首先要把文件
都放在HDFS上
Hadoop的文件系统
就类似于Google的DFS
它叫HadoopDFS HDFS
先把输入文件放到HDFS上去
然后它对Client
提交了一个任务
这个Client得到了
一系列输入文件的信息等等
然后它去把一系列的文件
数据都绑在一起
它会把这一系列的东西
作为两个配置文件
也放在分布式文件系统里头
所以它这个分布式文件系统
有两个作用
第一个是它保存了
输入和输出的文件
第二件事情是
它也是传递配置文件
和传递可执行文件的一个媒介
所以它把Tcacker端
负责把这些东西
放在HDFS上
然后Tcacker端放完了之后
它会看看这个输入到底有多大
然后它创建了一系列的Jop
然后它就跟那个JopTracker
我关于这个任务
关于这个Job的描述和信息
和[00:04:29]
以及它的文件
已经在HDFS上
现在可以开始跑这个Jop了
那么下一步
Client提交任务之后
这个Joptracker
首先会进行一个
初始化任务的过程
这个初始化任务
实际上就是它看一看
有没有这些资源
然后把这些资源预约下来
如果有资源的话
它就把资源预约下来
如果没有的话
它就会把这个任务
放在一个任务队列里头
然后它会把分布式
文件系统上的任务描述文件
读取出来打开看看
看看你到底要跑什么
然后根据这个描述文件
和它预约下来的资源
它会创建
在woker上创建MAP的进程
和Reduces的进程
然后它会看到Map对输入
做的这些分割 这些块
然后它会把这个块
分成尽量多的
然后交给Map的程序来运行
那么我们下面就走到下一步
这个开始运行之后
Jobtracker
会告诉每一个Woker上
Tasktracker
说你应该跑哪几个任务
然后我给你分配的是哪几个
输入的切分
tasktracker就会去
看看那些切分
然后copy一个进程
这个进程就是它实际跑
MAP或者reduces的这个进程
然后它告诉这个进程
说你看你应该跑这个切分
然后你的参数是这些
它把那个整个的配置
包括它去哪里读输入文件
全部给这个任务
这个任务启动运行之后
它就回去读了
实际上HDFS上去拿那个文件
然后自己运行
运行的过程中
它会随时把状态
报告给Tasktracker
然后Tasktracker这个东西
它会每隔一段时间
会给这个Jobtracker
发一个心跳这样的信息
它告诉Joptracker说
你看我还活着
然后Jobtracker
就会记录下
每一个Tasktracker的信息
它说我还活着
我运行了多少了
它会把这综合起来
说整体的Jop运行了多少了
把它放在一个
漂亮的界面来显示
因为Joptracker
这儿有一个任务
这儿有一个任务的队列
其实它不一定一个Jop来等着
所以只有一个Jop
比如说大部分完成了
完成一多半
但它有一些个没完成的时候
这时候JopTracker
也可以选择其它
大的JOP里头的其它的小任务
然后一起开始分程
这样的话JopTracker的任务
是保证在有任何工作的情况下
能保证每一个
TsakTracker的资源
都能够用的尽量满
因为这样的话
实际上咱们整体的
这个集群的运行效率就高了
所以这种状态
就是TaskTracker运行任务
JobTracke不断的给TaskTracker
塞到一些新的任务
这个状态会一直持续到
每一个MapReduce运行完
直到它所有的东西
都运行完之后
所有的结果都会跑到磁盘上
这个时候一个MapReduceJob
就结束了
那下一个MapReduce
如果它有的话
很可能已经继续开始了
所以因此JobTracker
这个事情
它不光是管理了
一个MapReduceJob
它是管理了多个
这就跟Google的
那个MapReduce里面的Mast
是有区别的
-授课视频
--什么是大数据
--大数据典型应用
--大数据的特点
--大数据技术体系
--大数据生态系统
--大数据技术挑战
--课程内容
-1. 绪论--Quiz 1
-授课视频
--2.2并行化理念
--2.9计算虚拟化
-2.云计算--Quiz 2
-授课视频
--Video
--Video
--Video
--Video
--Video
--Video
--Video
--Video
--Video
--Video
--Video
--Video
--Video
--Video
--Video
--Video
-3.文件存储--Quiz3
-授课视频
--4.13类似框架
--4.14章节总结
-4. 处理框架--Quiz4
-授课视频
-5.内存计算--Quiz5
-授课视频
--数据副本及一致性
--节点本地数据存储
-6. NoSQL--Quiz6
-授课视屏
--Video
--Video
--Video
--Video
--Video
--Video
--Video
--Video
--Video
--Video
-7. 流计算--Quiz7