-
代码其实在hadoop的安装目录下有example,一般的目录是/hadoop/src/examples//org/apache/hadoop/examples/WordCount.jar 源代码 http://hadoop.apache.org/docs/r1.0.4/cn/mapred_tutorial.html
查看全部 -
Rdeuce过程
拿到Map的结果,进行合并
合并得到一个最终的结果
查看全部 -
map过程
查看全部 -
文件进行切分 再将文件切成单词
map的过程就是把文件切分的过程
查看全部 -
MapReduce的容错机制
重复执行 执行错误4次后,还是失败 就放弃执行
推测执行
查看全部 -
MapReduce作业执行过程
输入数据进行分片
按照一定规则分到TaskTracker,产生中间结果(key-value对)
key-value进行一些规则进入到Reduce端,Reduce端里面也是有TaskTracker
最后写入HDFS
查看全部 -
1. 原理:
分而治之 的思想,一个大任务分成多个小任务(map),并行执行后,合并结果(reduce)
2. 运行流程:
1)基本概念:
--Job & Task:
一个 Job(任务、作业) 被切分为多个 Task,Task 又分为 MapTask 和 ReduceTask
--JobTracker
作业调度
分配任务、监控任务
监控 TaskTracker 的状态
--TaskTracker
执行任务
向 JobTracker 汇报任务状态
3. 容错机制:2种
1)重复执行:
默认重复执行 4 次,若还是失败,则放弃执行
2)推测执行:
可以保证任务不会因为某1-2个机器错误或故障而导致整体效率下降
查看全部 -
MapReduce处理数据过程主要分成2个阶段:Map阶段和Reduce阶段。首先执行Map阶段,再执行Reduce阶段。Map和Reduce的处理逻辑由用户自定义实现,但要符合MapReduce框架的约定。 在正式执行Map前,需要将输入数据进行”分片”。所谓分片,就是将输入数据切分为大小相等的数据块,每一块作为单个Map Worker的输入被处理,以便于多个Map Worker同时工作。 分片完毕后,多个Map Worker就可以同时工作了。每个Map Worker在读入各自的数据后,进行计算处理,最终输出给Reduce。Map Worker在输出数据时,需要为每一条输出数据指定一个Key。这个Key值决定了这条数据将会被发送给哪一个Reduce Worker。Key值和Reduce Worker是多对一的关系,具有相同Key的数据会被发送给同一个Reduce Worker,单个Reduce Worker有可能会接收到多个Key值的数据。 在进入Reduce阶段之前,MapReduce框架会对数据按照Key值排序,使得具有相同Key的数据彼此相邻。如果用户指定了”合并操作”(Combiner),框架会调用Combiner,将具有相同Key的数据进行聚合。Combiner的逻辑可以由用户自定义实现。这部分的处理通常也叫做”洗牌”(Shuffle)。 接下来进入Reduce阶段。相同的Key的数据会到达同一个Reduce Worker。同一个Reduce Worker会接收来自多个Map Worker的数据。每个Reduce Worker会对Key相同的多个数据进行Reduce操作。最后,一个Key的多条数据经过Reduce的作用后,将变成了一个值。
查看全部 -
hadoop存放文件命令 hadoop fs -put hadoop-env.sh /input
hadoop获取文件命令 hadoop fs -get
hadoop删除文件命令 hadoop fs -rm
hadoop创建目录命令 hadoop fs -mkdir
hadoop查看存储信息 hadoop dfsadmin -report
查看全部 -
适合一次写入多次读取,顺序读写
不支持多用户并发写相同文件
查看全部 -
适用性和局限性
查看全部 -
大量的冗余 用三个备份来实现硬件容错 一次写入多次读取
一但写入就不会被修改
存储大文件
如果是大量小文件 NameNode压力会比较大 小文件也需要元数据
查看全部 -
HDFS读取文件的流程:
(1)客户端向namenode发起独立请求,把文件名,路径告诉namenode;
(2)namenode查询元数据,并把数据库返回客户端;
(3)此时客户端就明白文件包含哪些块,这些块在哪些datanode中可以找到;
===========================================
HDFS写文件流程:
(1)客户端把文件拆分成固定大小64M的块,并通知namenode;(2)namenode找到可用的datanode返回给客户端;
(3)客户端根据返回的datanode,对块进行写入
(4)通过流水线管道流水线复制
(5)更新元数据。告诉namenode已经完成了创建心的数据块。保证了namenode中的元数据都是最新的状态。
查看全部 -
二级NameNode定期同步元数据映像文件和修改日志
NameNode发生故障时,Secondary NameNode会切换到主的NameNode,备胎转正
查看全部 -
每个数据块3个副本,分布在两个机架内的三个节点,
2个在同一个机架上,另外一个在另外的机架上。
心跳检测,datanode定期向namenode发送心跳消息。
secondary namenode;定期同步元数据映像文件和修改日志,namenode发生故障,secondaryname备份上位
查看全部
举报