Hadoop是一个开源框架

来源:互联网 发布:centos7 nat网络配置 编辑:程序博客网 时间:2024/06/06 03:29
1、Hadoop是一个开源框架,允许使用简单的编程模型在跨计算机集群的分布式环境中存储和处理大数据。
    它的设计是从单个服务器扩展到数千个机器,每个都提供本地计算和存储。


2、
硬件问题:复制数据解决(RAID)
分析需要从不同的硬盘读取数据:MapReduce
而Hadoop提供了
1.可靠的共享存储(分布式存储) 2.抽象的分析接口(分布式分析)


3、关键技术
1.数据分布在多台机器
可靠性:每个数据块都复制到多个节点
性能:多个节点同时处理数据


4、Hadoop可运行于一般的商用服务器上,具有高容错、高可靠性、高扩展性等特点
特别适合写一次,读多次的场景


5、适合
大规模数据
流式数据(写一次,读多次)
商用硬件(一般硬件)
不适合
低延时的数据访问
大量的小文件
频繁修改文件(基本就是写1次)


6、HDFS: 分布式文件存储
在写入文件时,会在本地的机架保存一份数据,然后在另外一个机架内保存两份数据(同机架内的传输速度快,从而提高性能)
整个HDFS的集群,最好是负载平衡的,这样才能尽量利用集群的优势


YARN: 分布式资源管理
JobTracker: 负责资源管理,跟踪资源消耗和可用性,作业生命周期管理(调度作业任务,跟踪进度,为任务提供容错)
TaskTracker: 加载或关闭任务,定时报告认为状态




YARN - ResourceManager


负责全局的资源管理和任务调度,把整个集群当&##x6210;计算资源池,只关注分配,不管应用,且不负责容错
任务调度


只关注资源的使用情况,根据需求合理分配资源
Scheluer可以根据申请的需要,
在特定的机器上申请特定的资源
(ApplicationMaster负责申请资源时的数据本地化的考虑,ResourceManager将尽量满足其申请需求,在指定的机器上分配Container,从而减少数据移动)


如何计算资源需求
一般的MapReduce是根据block数量来定Map和Reduce的计算数量,然后一般的Map或Reduce就占用一个Container
如何发现数据的本地化
数据本地化是通过HDFS的block分片信息获取的




MapReduce: 分布式计算
一种分布式的计算方式指定一个Map(映#x5C04;)函数,用来把一组键值对映射成一组新的键值对,指定并发的Reduce(归约)函数,用来保证所有映射的键值对中的每一个共享相同的键组
Map输出格式和Reduce输入格式一定是相同的
基本流程


MapReduce主要是先读取文件数据,然后进行Map处理,接着Reduce处理,最后把处理结果写到文件中


Others: 利用YARN的资源管理功能实现其他的数据处理方式






Hadoop - IO
输入文件从HDFS进行读取.
输出文件会存入本地磁盘.
Reducer和Mapper间的网络I/O,从Mapper节点得到Reducer的检索文件.
使用Reducer实例从本地磁盘回读数据.
Reducer输出- 回传到HDFS.
原创粉丝点击