Hadoop总结

大数据的5V特点:体量大,种类多,增长快,密度低,可靠性低

Hadoop

概述:1.0版本HDFS和MR,2.0版本是DHFS、MR、Yarn

HDFS:

	主要由一个NameNode和多个DataNode组成,不适合存储大量的小文件

	1)NameNode:存储元数据(文件对应的block、block位置、复本位置)在内存和磁盘中各有一份,内存中保证存储效率,磁盘中保证崩溃恢复。记录元数据的文件有2个,edits(记录操作)和fsimage(记录元数据信息)

	2)DataNode:存储切分后的文件块信息到磁盘中,默认128M,复本默认3个。通过心跳机制与NameNode保持联系,报告状态。

	3)Block:能够存储超大文件,并且可以快速备份。

	4)SecondaryNameNode:辅助NameNode进行元数据的合并,触发合并操作条件有,空间(文件达到设置时)和时间(设置时间)两个

	合并过程:在nn中edits创建新的edits.new文件 - sn通过http获取edits和fsimage进行合并 - 生成新的fsimage.ckpt (fsimage加载到内存重做edits生成新的fsimage) - 复制一份发送给nn - 重命名为fsimage,同时edits.new重命名为edits

	多复本放置策略:

		第一个复本:如果是集群内部提交,就在当前DataNode上,如果是客户端提交,NameNode选择比较空闲的DataNode放置

		第二个复本:放在与第一个不同机架节点上

		第三个复本:放在与第二个相同机架不同节点上。

(以下NN代表NameNode,DN代表DataNode,SN代表SecondaryNode)
读取流程:5步,

		1.客户端向nn发送读取RPC请求 

		2.nn返回请求的元数据(block地址) 

		3.客户端选择最近的dn读取block

		4.继续读取下一个block。

		5.读取完成后会通知nn关闭文件

		6.客户端读取完当前block后会进行验证,没有读取完成会继续请求地址读取block,如果出错,客户端通知NameNode并同时从副本中读取数据。

	写入流程:6步

		1.客户端向nn发送写入RPC请求

		2.nn检查客户端权限和文件是否存在,

		3.客户端将切分好的文件块打成包以队列的形式管理,并向nn申请block地址列表

		4.开始以管道形式写入到所有的复本中(写到第一个dn上,dn写到其他dn上)。

		5.最后dn返回状态信息,再由第一个dn发送状态信息给客户端。

		6.通知NameNode关闭文件

		7.如果传送过程中出现故障,执行下一个管道的写入,同时NameNode会分配一个新的DataNode地址重新写入。

	HDFS特点:

		优点:高容错性、支持大数据量存储,可扩展

		缺点:低延迟访问、不支持大量小文件、不支持超强事物

MapperReduce

	组成:管理者JobTracker 和工作者TaskTracker ,在2.0中加入Yarn分担了管理者的部分任务

	数据本地化策略:为了节省带宽,将两个需要传输的数据任务放在同一台节点上,在mr中将数据切片发给不同的Mapper来执行,MapTask需要去访问DataNode,为了节省带宽使用了数据本地化策略

	job的执行流程:

		大致流程:客户端向资源管理器通过RPC请求资源申请资源,分配好相应的资源,进行作业的运行,当作业运行完成时,资源管理器回收资源

		1.客户端提交mr的jar包给job

		2.job与资源管理器通信,然后将jar包写入HDFS中

		3.jobTracker进行初始化任务

		4.读取HDFS上要处理的文件并切片(只是逻辑切片)

		5.TashTrack通过心跳机制领取任务

		6.下载所需的jar包和配置文件

		7.TaskTracker启动一个子进程执行任务

		8.将结果写到HDFS中

		

	shuffle过程:

		Mapper的 shuffle

			1.当MapTasker接收到文件时,按行读取数据

			2.每次都调用map方法将结果输出到缓冲区中。

			3.在缓冲区中进行分区、排序、合并等操作

			4.当缓冲区容量达到阈值的0.8时,写到溢写文件中。

			5.当最后所有都写完后做最后一次合并,如果最后溢写文件大于3会在次进行合并	。

		Reduce的shuffle

			1.ReduceTack通过Http方式得到输出文件的分区并且将数据进行合并排序

			2.将相同的key做聚合、将值放入迭代器中

			3.调用Reduce方法,将key和迭代器传入

shuffle调优:

	调到map缓冲区,

	合并之后进行压缩减少网络传输、

	增加Reduce获取数据的线程数
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值