MapReduce运行模式如下
主要分为map,reduce,shuffle几个步骤:
map相当于给数据作用一个规则,取得作用规则后数据的映射,例如:
Map() 映射
a xyz -> (x,1)(y,1)(z,1) 映射成key,value的形式
b xxyyz
c kkkkkkkkzzzzz
d kkxx
shuffle相当于洗牌,归类
a (x,1)(x,1)... 把所有x都归在a下面
b (y,1)(y,1)...
...
reduce 做最终归约
a xxxxx 5
b yyy 3
c zzzzzzz 7
d kkkkkkkkkk 10
关于详细讲解:http://blog.itpub.net/30089851/viewspace-2095837/
mapreduce指令其实不常用,可以了解一下mapred这个指令
MapReduce架构
MR提交到Yarn的工作流程就是Yarn的架构设计
1.用户向Yarn的RM提交应用程序,其中包括
ApplicationMaster程序(就是MR程序),启动ApplicationMaster命令等,Application Manager是程序管理
2.RM首先为该app程序分配第一个container容器,并与对应的NM通信,要求NM在这个Container中启动应用程序的application master(程序代码这些)
3.App master首先向Apps manager注册,这样的话,我们就可以通过web 8088,查看应用程序的运行状态,且监控它的运行状态
4.ApplicationMaster向Resource Scheduler申请和领取资源
5.一旦ApplicationMaster申请到资源后,便与对应的NM通信,要求它启动任务
6.NM节点启动container容器,运行task任务,注意map和reduce不能再一个container容器里同时运行
7.各个容器的任务,通过rpc向app master汇报自己的状态和进度,以让APP master随时掌握各个任务的运行状态,从而在任务失败时 重启任务。
那么用户可以通过web界面实时查看应用的当前运行状态
8.app运行完成后,app master向 apps manager注销并关闭
HDFS读流程
1.client通过分布式FileSystem.open(path)方法,去与NN进行RPC通信,NN会校验是否存在 权限是否OK。
2.校验完成后,返回文件的部分或全部的block列表(其实就是返回FSDataInputStream对象)
3.Client调用FSDataInputStream对象的read()方法
a.去与第一个块的最近的datanode进行read,读取完成后,会校验,假如OK,会关闭与当前的dn的通信。
假设check fail,会记录失败的块+DN信息,下次就不会读取了,那么会去这个块的第二个DN地址读取
b.然后读取第二个块的最近的datanode,check后,会关闭与DN的通信
c.假设block列表读取完了,文件还没结束,就继续读取下一批次的block的列表
4.Client调用FSDataInputStream.close(),关闭输入流
另附hadoop目录结构
[hadoop@hadoop002 hadoop-2.6.0-cdh5.7.0]$ ll
total 88
drwxr-xr-x 2 hadoop hadoop 4096 Mar 24 2016 bin 命令
drwxr-xr-x 2 hadoop hadoop 4096 Mar 24 2016 bin-mapreduce1
drwxr-xr-x 3 hadoop hadoop 4096 Mar 24 2016 cloudera
drwxr-xr-x 6 hadoop hadoop 4096 Mar 24 2016 etc 配置 config conf
drwxr-xr-x 5 hadoop hadoop 4096 Mar 24 2016 examples
drwxr-xr-x 3 hadoop hadoop 4096 Mar 24 2016 examples-mapreduce1
drwxr-xr-x 2 hadoop hadoop 4096 Mar 24 2016 include
-rw-rw-r-- 1 hadoop hadoop 4 Oct 10 22:02 jepson.log
drwxr-xr-x 3 hadoop hadoop 4096 Mar 24 2016 lib jar包
drwxr-xr-x 2 hadoop hadoop 4096 Mar 24 2016 libexec
-rw-r--r-- 1 hadoop hadoop 17087 Mar 24 2016 LICENSE.txt
drwxrwxr-x 3 hadoop hadoop 4096 Oct 10 22:34 logs
-rw-r--r-- 1 hadoop hadoop 101 Mar 24 2016 NOTICE.txt
drwxrwxr-x 2 hadoop hadoop 4096 Sep 26 21:48 output
-rw-r--r-- 1 hadoop hadoop 1366 Mar 24 2016 README.txt
drwxr-xr-x 3 hadoop hadoop 4096 Mar 24 2016 sbin 启动停止脚步
drwxr-xr-x 4 hadoop hadoop 4096 Mar 24 2016 share
drwxr-xr-x 17 hadoop hadoop 4096 Mar 24 2016 src