Hadoop 速成大法(理论)

本文详细介绍了Hadoop的组成部分(HDFS、MapReduce和Yarn)、大数据特征、HDFS的工作原理、MapReduce计算框架的原理与实践,以及Yarn资源调度系统和HBase、Hive等周边技术。涵盖了分布式文件系统、计算框架、数据仓库和协调服务等内容。

本文笔记仅自用,杠勿cue


编程题:Hadoop 实验MR编程速记

1. 绪论

  1. 大数据4V特征:

    • Volume(容量大)
    • Variety(种类多)
    • Value(有价值)
    • Velocity(追求速度时效)
  2. Hadoop 是分布式系统开发的框架,由三部分组成:HDFS(分布式文件系统),MapReduce(分布式运算框架),Yarn(资源分配系统)。

  3. Google的论文和Apache开发的框架关系:
    BigTable和HBase,MapReduce和MapReduce,GFS和HDFS。

  4. 特点:

    • Hadoop可以存储和处理PB级别的数据(1PB=1024TB)
    • 成本低:服务器的集群节点达到上千个节点
    • 可靠性:自动维护多份副本
    • 高效率:可以并行调度资源处理
  5. 大数据产生模式的三个阶段:运营式系统阶段,用户原创内容阶段,感知式系统阶段

  6. 大数据和科学研究:实验,理论,计算,数据密集型

  7. 大数据和思维方式:全样非采样,效率非准确,相关非因果

  8. 大数据计算模式:批处理计算(MapReduce),流计算(Storm,Flink,SPark streaming),图计算(Pregel,SPark GraphX),查询分析计算(Hive,Dremel,Impala)

  9. 运行模式:本地单机,伪分布式,全分布式

真正的分布式,由3个及以上的实体机或者虚拟机组件的机群。

伪分布式,这种模式也是在一台单机上运行,但用不同的Java进程模仿分布式运行中的各类结点(NameNode,DataNode,JobTracker,TaskTracker,SecondaryNameNode)

从分布式存储的角度来说,集群中的结点由一个NameNode和若干个DataNode组成,另有一个

从分布式应用的角度来说,集群中的结点由一个JobTracker和若干个TaskTracker组成,JobTracker负责任务的调度,TaskTracker负责并行执行任务。TaskTracker必须运行在DataNode上,这样便于数据的本地计算。JobTracker和NameNode则无须在同一台机器上。一个机器上,既当namenode,又当datanode,或者说 既 是jobtracker,又是tasktracker。没有所谓的在多台机器上进行真正的分布式计算,故称为"伪分布式"。

NameNode(1)+DataNode(n)
JobTracker调度(1)+TaskTracker执行(n)

TaskTracker一定要在DataNode上,JobTracker则可以在任意机器上


2. HDFS 分布式文件系统

预备知识:

  1. 什么是元数据?:元数据就是描述数据的数据
  2. 什么是快照:我们在很多情况下都需要备份文件,但是往往需要备份的那台机器不能即时停止运行,这个时候我们需要对文件系统进行打快照,我们对文件系统锁所进行的所有操作都是有记录的,因此,快照系统的操作就是把元数据保存下来,我们可以根据这份快照对文件系统恢复到某个时间点(用Git的思维思考一下)。

HDFS的相关知识:

  1. HDFS系统适合处理超大文件,流式访问数据,不适合低延迟的数据访问,不适合大量小文件的存储,不支持多用户写入和任意修改

在这里插入图片描述
fsimage - 它是在NameNode启动时对整个文件系统的快照
edit logs - 它是在NameNode启动后,对文件系统的改动序列

SecondaryNameNode所完成的工作就是合并fsimage和edit logs

  1. 一些常用的概念:

    • Block:大小默认是256M
    • NameNode:管理文件系统的命名空间,维护整个文件系统的目录树和文件的索引目录。有两种信息,一种是命名空间镜像,一种是编辑日志,namenode在每次系统启动的时候动态重建这些信息,当运行任务的时候,客户通过NameNode获取元数据信息,元数据(描述数据的数据)运行保存在NameNode的内存当中。
    • 副本策略:副本1存放在上传文件的DN,如果是在集群外提交过来的放在磁盘空闲CPU不忙的节点。副本2放在和副本1 不同Rack(机架)的节点
    • 文件操作:NameNode负责文件元数据的操作,DataNode负责处理文件内容的读写请求,数据流不经过NameNode,读取文件的时候NamNode会尽量让用户先读取最近的副本
    • SecondaryNamenode不是备份节点,主要工作是阶段性的合并fsimage和edits文件,以此来控制 edits 的文件大小在合理的范围
    • HDFS系统启动的时候,NamNode进入安全模式,所谓安全模式就是禁止文件系统修改,NameNode先检查DataNode数据块的副本数量是否达到最小值再考虑退出安全模式。
  2. HDFS的读写操作:

    管道式写入(Pipeline),写入遵循这样的步骤:先创建一个任务到NameNode上,然后同时驱使DataOutputStream写入数据,OutputStream(缓冲区)将数据写入某一个DN里面,边写这个DN的时候向其他的DN也写入,并发管道写入,写入的同时不断有ACK报文回复写入的状态,最后关闭缓冲区,OK,完成。如图:
    在这里插入图片描述
    HDFS的读操作:

评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值