分布式hadoop
来源:互联网 发布:centos编译安装php7.1 编辑:程序博客网 时间:2024/06/04 22:47
来自http://blog.csdn.net/u013926113/article/details/51539306
以网页中图例子为例,写下自己做的两次map reduce结果
第一次map:
输入->输出
A, B ->
A : A, B
B : A, B
A, H->
A : A, H
H : A, H
B, C->
B : B, C
C : B, C
C, D->
C : C, D
D : C, D
C, F->
C : C, F
F : C, F
C, I->
C : C, I
I : C, I
D, E->
D : D, E
E : D, E
D, F->
D : D, F
F : D, F
E, F->
E : E, F
F : E, F
F, G->
F : F, G
G : F, G
G, H->
G : G, H
H : G, H
G, I->
G : G, I
I : G , I
H, I->
H : H I
I : H I
第一次reduce
输入->输出
A : {A, B A, H}->
{A, B } : "deg1friend"
{A, H} : "deg1friend"
{B, H }:"deg2friend"
B : {A, B B, C}->
{A, B} :"deg1friend"
{ B, C} : "deg1friend"
{A, C} : "deg2friend"
C : {B, C C, D C, F C, I}->
{B, C} : "deg1friend"
{ C, D} : "deg1friend"
{C, F} : "deg1friend"
{ C, I} : "deg1friend"
{B, D} : "deg2friend"
{B, F} : "deg2friend"
{B, I} : "deg2friend"
{D, F} : "deg2friend"
{D, I} : "deg2friend"
{F,I} : "deg2friend"
D: {C, D D, E D, F}->
{C, D} : "deg1friend"
{ D, E} : "deg1friend"
{ D, F} : "deg1friend
{ C, E}: "deg2friend{C, F}: "deg2friend
{E, F}: "deg2friend
E: {D, E E, F}->
{D, E} : "deg1friend"
{ E, F} : "deg1friend"
{D, F} : "deg2friend"F: {C,F D,F E, F F, G}->
{C,F } : "deg1friend"
{ D,F} : "deg1friend"
{ E, F} : "deg1friend"
{ F, G} : "deg1friend"
{C,D} : "deg2friend"
{C, E} : "deg2friend"
{C, G} : "deg2friend"
{D, E} : "deg2friend"
{D, G} : "deg2friend"
{E, G} : "deg2friend"
G : {F, G G, H G, I}->
{F, G } : "deg1friend"
{ G, H} : "deg1friend"
{G, I} : "deg1friend"
{F, H} : "deg2friend"{F, I} : "deg2friend"
{H, I} : "deg2friend"
H: {A,H G, H H, I}->
{A,H } : "deg1friend"
{ G, H} : "deg1friend"
{ H, I} : "deg1friend"
{A, G} : "deg2friend"{A, I} : "deg2friend"
{G, I} : "deg2friend"
I : {C,I G,I H, I}->
{C,I } : "deg1friend"
{G,I} : "deg1friend"
{ H, I} : "deg1friend"
{C, G} : "deg2friend"
{C, H} : "deg2friend"
{G, H} : "deg2friend"
第二次map
判断如果有三个元素(表示又是第一度又是第二度人脉)设置key为前两项,value为最后一项
reduce把二度人脉赋值为可能性。
输入->输出
{A, B } : "deg1friend" "deg1friend"->
{A, C} : "deg2friend"
{A, G} : "deg2friend"
{A, H} : "deg1friend" "deg1friend"
{A, I} : "deg2friend"
{ B, C} : "deg1friend" "deg1friend"
{B, D} : "deg2friend"
{B, F} : "deg2friend"
{B, H }:"deg2friend"
{B, I} : "deg2friend"
{ C, D} : "deg1friend" "deg1friend" "deg2friend"
{ C, E}: "deg2friend "deg2friend"
{C, F} : "deg1friend" "deg2friend "deg1friend"
{C, G} : "deg2friend" "deg2friend"
{C, H} : "deg2friend"
{ C, I} : "deg1friend" "deg1friend"
{ D, E} : "deg1friend" "deg1friend" "deg2friend"
{D, F} : "deg2friend" "deg1friend "deg2friend" "deg1friend"
{D, G} : "deg2friend"
{D, I} : "deg2friend"
{E, F}: "deg2friend "deg1friend" "deg1friend"
{E, G} : "deg2friend"
{ F, G} : "deg1friend" "deg1friend"
{F, H} : "deg2friend"
{F,I} : "deg2friend" "deg2friend"
{ G, H} : "deg1friend" "deg1friend" "deg2friend"
{G, I} : "deg1friend" "deg2friend" "deg1friend"
{H, I} : "deg2friend" "deg1friend" "deg1friend"
第二次reduce:
{A, B } : "deg1friend" "deg1friend"->
{A, C} : "deg2friend"->
1 : {A, C}
{A, G} : "deg2friend"
1 : {A, G}
{A, H} : "deg1friend" "deg1friend"
{A, I} : "deg2friend"->
1 : {A, I}
{ B, C} : "deg1friend" "deg1friend"
{B, D} : "deg2friend"->
1 : {B, D}
{B, F} : "deg2friend"->
1 : {B, F}
{B, H }:"deg2friend"->
1 : {B, H}
{B, I} : "deg2friend"->
1 : {B, I}
{ C, D} : "deg1friend" "deg1friend" "deg2friend"
{ C, E}: "deg2friend "deg2friend"->
2 : {C, E}
{C, F} : "deg1friend" "deg2friend "deg1friend"
{C, G} : "deg2friend" "deg2friend"->
2 : {C, G}
{C, H} : "deg2friend"
1 : {C, H}
{ C, I} : "deg1friend" "deg1friend"
{ D, E} : "deg1friend" "deg1friend" "deg2friend"
{D, F} : "deg2friend" "deg1friend "deg2friend" "deg1friend"
{D, G} : "deg2friend"
1 : {D, G}
{D, I} : "deg2friend"
1 : {D, I}
{E, F}: "deg2friend "deg1friend" "deg1friend"
{E, G} : "deg2friend"
1 : {E, G}
{ F, G} : "deg1friend" "deg1friend"
{F, H} : "deg2friend"
1 : {F, H}
{F,I} : "deg2friend" "deg2friend"
2 : {F, I}
{ G, H} : "deg1friend" "deg1friend" "deg2friend"
{G, I} : "deg1friend" "deg2friend" "deg1friend"
{H, I} : "deg2friend" "deg1friend" "deg1friend"
一下部分来自:http://blog.csdn.net/u010385646/article/details/50590448
Hadoop=HDFS(文件系统,数据存储技术相关)+HBase(数据库)+MapReduce(数据处理)
物理实体:
参入mapreduce作业执行涉及4个独立的实体:
客户端(client):编写mapreduce程序,配置作业,提交作业,这就是程序员完成的工作;
JobTracker:初始化作业,分配作业,与TaskTracker通信,协调整个作业的执行;
TaskTracker:保持与JobTracker的通信,在分配的数据片段上执行Map或Reduce任务,TaskTracker和JobTracker的不同有个很重要的方面,就是在执行任务时候TaskTracker可以有n多个,JobTracker则只会有一个(JobTracker只能有一个就和hdfs里namenode一样存在单点故障,我会在后面的mapreduce的相关问题里讲到这个问题的)
Hdfs:保存作业的数据、配置信息等等,最后的结果也是保存在hdfs上面
在分布式存储和分布式计算方面,Hadoop都是用从/从(Master/Slave)架构。在一个配置完整的集群上,想让Hadoop这头大 象奔跑起来,需要在集群中运行一系列后台(deamon)程序。不同的后台程序扮演不用的角色,这些角色由NameNode、DataNode、 Secondary NameNode、JobTracker、TaskTracker组成。其中NameNode、Secondary NameNode、JobTracker运行在Master节点上,而在每个Slave节点上,部署一个DataNode和TaskTracker,以便 这个Slave服务器运行的数据处理程序能尽可能直接处理本机的数据。对Master节点需要特别说明的是,在小集群中,Secondary NameNode可以属于某个从节点;在大型集群中,NameNode和JobTracker被分别部署在两台服务器上。
nameNode: 它维护着文件系统树(filesystem tree)以及文件树中所有的文件和文件夹的元数据(metadata)。
dataNode: 文件系统的工作节点,他们根据客户端或者是namenode的调度存储和检索数据,并且定期向namenode发送他们所存储的块(block)的列表。
secondaryNameNode:一个用来监控HDFS状态的辅助后台程序.它会与NameNode进行通信,以便定期地保存HDFS元数据的 快照。如果NameNode发生问题,Secondary NameNode可以及时地作为备用NameNode使用。
jobTracker:用来连接应用程序与Hadoop。用户代码提交到集群以后,由JobTracker决定哪个文件将被处理,并且为 不同的task分配节点。同时,它还监控所有的task,一旦某个task失败了,JobTracker就会自动重新开启这个task
TaskTracker:与负责存储数据的DataNode相结合,其处理结构上也遵循主/从架构。JobTracker位于主节点,统领 MapReduce工作;而TaskTrackers位于从节点,独立管理各自的task。
mapreduce的主要思想是将自动分割要执行的问题拆解成map(映射)和reduce(化简)的方式。在数据
被分割后通过map函数的程序将数据映射成不停的区块,分配给计算机机群处理达到分布式运算的效果。在通过reduce函数的程序将结果汇整,从而输出开发者需要的结果。
MapReduce 借鉴了函数式程序设计语言的设计思想,其软件实现是指定一个Map 函数,把键值对(key/value)映射成新的键值对(key/value),形成一系列中间结果形式的key/value 对,然后把它们传给Reduce(规约)函数,把具有相同中间形式key 的value 合并在一起。map阶段,当map task开始运算,并产生中间数据后并非直接而简单的写入磁盘,它首先利用内存buffer来对已经产生的buffer进行缓存,并在内存buffer中 进行一些预排序来优化整个map的性能。而上图右边的reduce阶段则经历了三个阶段,分别Copy->Sort->reduce。我们能 明显的看出,其中的Sort是采用的归并排序,即merge sort。
- 分布式 Hadoop
- 分布式hadoop
- Hadoop伪分布式,分布式搭建
- Hadoop分布式应用框架
- Hadoop分布式环境部署
- Hadoop分布式系统 2
- hadoop分布式系统 3
- HDFS-hadoop分布式文件系统
- 分布式存储hadoop
- Hadoop分布式文件系统使用指南
- Hadoop分布式文件系统使用指南
- Hadoop分布式安装
- Hadoop分布式文件系统
- 分布式计算框架Hadoop
- Hadoop分布式文件系统
- hadoop分布式系统
- Hadoop分布式集群配置
- Hadoop简易分布式安装
- 全选,反选,批删,及点击改
- tomcat7.0设置账号和密码
- python数据结构学习笔记-2016-10-22-03-稀疏矩阵
- TCMalloc的使用与源码剖析之四---------内存在各层之间的传递
- Toast使用提示
- 分布式hadoop
- Java Swing 水晶界面 Nimbus风格
- iOS 创建颜色图片
- 【spring】下载及部署
- java keytool证书工具使用小结
- 中缀表达式转后缀表达式java精确实现
- TCMalloc的使用与源码剖析之五---------TCMalloc中涉及到的几个重要的数据结构
- JavaScript要点总结
- stm32之继电器驱动