HDFS 实现机制
同一个block有多个副本(图上没画出来)
HDFS 的实现思想
- hdfs是通过分布式集群来存储文件,同时为客户端提供了一个便捷的访问方式,就是一个虚拟的目录结构
- 文件存储到hdfs集群中去的时候,是被切分为block的
- 文件的block存放在若干台datanode节点上
- hdfs文件系统中的文件与真实的block之间有映射关系,由namenode管理
- 每一个block在集群中会存储多个副本,好处是可以提高数据的可靠性,还可以提高访问的吞吐量
####### hdfs ###########
hadoop fs -put 文件名 路径url # 传文件
hadoop fs -get 文件名 路径url # 下载文件
###### mapreduce #########
hadoop -jar 名字.jar pi 5 5 # 参数(5个map。5个reduce)
# 可以指定输入输出的路径
hadoop fs -cat 显示文件内容
MapReduce
- MapReduce是一种分布式计算模型,由Google提出,主要用于搜索领域,解决海量数据的计算问题。
- MR由两个阶段组成:Map和Reduce,用户只需要实现map()和reduce()两个函数,即可实现分布式计算,非常简单。
这两个函数的形参是key、value对,表示函数的输入信息。
作业打成jar包,运行。
YARN
rm(yarn里面的主节点)
node manager
任务:只负责资源的调度,分配好之后就不管了(到第7步)
准备工作:
程序 (wc.jar)
提交的方式:hadoop jar. cn.itcast.hadoop.mr.wordcount.WCRUNNER
里面有一句代码job.waitforcomplection()
会启动一个进程runner.jar
1、申请执行一个job
2、返回job相关资源的提交路径
3、提交资源到hdfs上的一个路径中去/tmp/xx/xx..yarn-staging/jobID/
4、向RM汇报提交结果
5、RM将本job加入任务队列系统中
6、通知NM(通过心跳机制)去领取任务
7、初始化任务运行环境。分配运行资源容器(cpu资源、内存资源、文件资源)
8、RM启动MRAppMaster。
9、MRAPPMaster向RM注册。请求资源的位置信息。
10、MRAPPMaster
启动map任务yarnchild
11、MRAPPMaster
启动reduce任务
12、任务执行完之后,MRAPPMaster
向RM
注销自己
主要包括两大部分:YARN和MapReduce
- 在YARN框架中,起监控作用的是Resource Manager,用来监控Node Manager,它们都是节点,也就是进程。
- 在MapReduce框架中,起监控作用的是MRAppMaster,用来监控yarnChild,它们都是动态产生的进程。
$ jps #查看有哪些进程
mr运行的几种模型
本地模型运行
-
在windows的eclipse里面直接运行main方法,就会将job提交给本地执行器localjobrunner执行
----输入输出数据可以放在本地路径下(c:/wc/srcdata/)
----输入输出数据也可以放在hdfs中(hdfs://weekend110:9000/wc/srcdata) -
在linux的eclipse里面直接运行main方法,但是不要添加yarn相关的配置,也会提交给localjobrunner执行
----输入输出数据可以放在本地路径下(/home/hadoop/wc/srcdata/)
----输入输出数据也可以放在hdfs中(hdfs://weekend110:9000/wc/srcdata)
集群模式运行
-
将工程打成jar包,上传到服务器,然后用hadoop命令提交 hadoop jar wc.jar cn.itcast.hadoop.mr.wordcount.WCRunner
-
在linux的eclipse中直接运行main方法,也可以提交到集群中去运行,但是,必须采取以下措施:
----在工程src目录下加入 mapred-site.xml 和 yarn-site.xml
----将工程打成jar包(wc.jar),同时在main方法中添加一个conf的配置参数 conf.set(“mapreduce.job.jar”,“wc.jar”); -
在windows的eclipse中直接运行main方法,也可以提交给集群中运行,但是因为平台不兼容,需要做很多的设置修改
----要在windows中存放一份hadoop的安装包(解压好的)
----要将其中的lib和bin目录替换成根据你的windows版本重新编译出的文件
----再要配置系统环境变量 HADOOP_HOME 和 PATH
----修改YarnRunner这个类的源码