zoukankan      html  css  js  c++  java
  • hadoop 知识点

    • HDFS 命令
    命令 说明
    fsck 检查文件的完整性
    start-balancer.sh 重新平衡HDFS
    hdfs dfs -copyFromLocal 从本地磁盘复制文件到HDFS
    • hadoop 配置
      有两种配置文件:
      一种是-default.xml(只读,默认的配置)
      一种是
      -site.xml(替换default中的配置)
      core-site.xml 配置公共属性
      hdfs-site.xml 配置HDFS
      yarn-site.xml 配置YARN
      mapred-site.xml 配置MapReduce
      配置文件应用的顺序:
    1. 在JobConf中指定的
    2. 客户端机器上的**-site.xml配置
    3. slave节点上的**-site.xml配置
    4. **-default.xml中的配置
      如果某个属性不想被覆盖,可以将其设置成final
    <property>
        <name>{PROPERTY_NAME}</name>
        <value>{PROPERTY_VALUE}</value>
        <final>true</final>
    </property>
    
    • YARN: 分布式资源管理
    • 每个block块都会被复制到多台机器,默认复制3份
    • NameNode:存储文件的metadata,运行时所有数据都保存到内存,整个HDFS可存储的文件数受限于NameNode的内存大小
    • 一个Block在NameNode中对应一条记录(一般一个block占用150字节),如果是大量的小文件,会消耗大量内存。
      同时map task的数量是由splits来决定的,所以用MapReduce处理大量的小文件时,就会产生过多的map task,线程管理开销将会增加作业时间。处
      理大量小文件的速度远远小于处理同等大小的大文件的速度。因此Hadoop建议存储大文件。
    • NameNode 数据会定时保存到本地磁盘,但block的位置信息不会;block的位置信息是由DataNode注册时上报和运行时维护(NameNode中与DataNode相关的信息并不保存到NameNode的文件系统中,而是NameNode每次重启后,动态重建)
    • Secondary NameNode:定时与NameNode进行同步(定期合并文件系统镜像和编辑日志,然后把合并后的传给NameNode,替换其镜像,并清空编辑日志,类似于CheckPoint机制),但NameNode失效后仍需要手工将其设置成主机
    • DataNode启动时会向NameNode报告当前存储的数据块信息,后续也会定时报告修改信息
    • DataNode之间会进行通信,复制数据块,保证数据的冗余性
    • 文件写完后(客户端关闭),NameNode提交文件(这时文件才可见,如果提交前,NameNode垮掉,那文件也就丢失了。fsync:只保证数据的信息写到NameNode上,但并不保证数据已经被写到DataNode中)
    • HDFS 读文件:
    1. 客户端向NameNode发送读取请求
    2. NameNode返回文件的所有block和这些block所在的DataNodes(包括复制节点)
    3. 客户端直接从DataNode中读取数据,如果该DataNode读取失败(DataNode失效或校验码不对),则从复制节点中读取
      (如果读取的数据就在本机,则直接读取,否则通过网络读取)
    • HDFS - 可靠性
    1. DataNode可以失效
      DataNode会定时发送心跳到NameNode。如果在一段时间内NameNode没有收到DataNode的心跳消息,则认为其失效。此时NameNode就会将该节点的数据(从该节点的复制节点中获取)复制到另外的DataNode中
    2. 数据可以毁坏
      无论是写入时还是硬盘本身的问题,只要数据有问题(读取时通过校验码来检测),都可以通过其他的复制节点读取,同时还会再复制一份到健康的节点中
    3. NameNode不可靠
    • MapReduce 架构:
    1. JobTracker: 负责资源管理,跟踪资源消耗和可用性,作业生命周期管理(调度作业任务,跟踪进度,为任务提供容错)
    2. TaskTracker: 加载或关闭任务,定时报告任务状态
    • YARN 架构:
      YARN 就是将JobTracker的职责进行拆分,将资源管理和任务调度监控拆分成独立的进程:一个全局的资源管理和一个每个作业的管理(ApplicationMaster)。
      ResourceManager和NodeManager提供了计算资源的分配和管理,而ApplicationMaster则完成应用程序的运行。
    1. ResourceManager: 全局资源管理和任务调度
    2. NodeManager: 单个节点的资源管理和监控
    3. ApplicationMaster: 单个作业的资源管理和任务监控
    4. Container: 资源申请的单位和任务运行的容器
  • 相关阅读:
    CF-911E.Stack Sorting(栈)
    随机算法 && CodeForces
    CF-579D."Or" Game(或运算)
    CF-242E.XOR on Segment(异或线段树)
    莫队 && 洛谷 P1494 [国家集训队]小Z的袜子
    洛谷 P4168 [Violet]蒲公英(分块)
    分块 && 洛谷 P2801 教主的魔法
    启发式合并 && U41492 树上数颜色
    使用mysqlbinlog server远程备份binlog的脚本
    mysqldump备份过程中都干了些什么
  • 原文地址:https://www.cnblogs.com/cag2050/p/8127091.html
Copyright © 2011-2022 走看看