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: 资源申请的单位和任务运行的容器

posted on 2017-12-27 18:09  cag2050  阅读(136)  评论(0编辑  收藏  举报

导航