Hadoop笔记

HDFS

  1. 1. master/slave架构, NameNode/DataNode, 使用心跳包通讯
  2. 2. 典型拓扑结构,1个NameNode, 1个SecondaryNameNode,若干个DataNode, 
  3. 3. 一次写入,多次读取
  4. 4. 持久化metadata方式: 日志文件包括FsImage,事务日志EditLog, 
  5. 5. HA包括:Secondary NameNode(辅助定期处理映射文件和事务日志), 
    • a) JournalNode用来实现高可用(没有使用ZK,而是物理上使用双机热备),
    • b) JournalNode主要是用来实现共享存储
    • 6. 特点:
    • a) 硬件错误是常态, 
    • b) 流失数据为主,做批量操作为主,
    • c) 大规模数据存储,
    • d) 简单一致性: 对文件只能一次性写,多次读, 文件一经创建不能再更改
    • e) 移动计算比移动数据更划算
    • f) 冗余备份,副本存放(本机一份,同一个机架一份,不同机架一份)
    • g) 空间回收: 文件删除后先移动到/trash目录里, 删除有延迟

 

 

Yarn

    • 1. 分布式操作系统,控制分布式程序运行. master/slave架构作用
    • a) 包括ResourceManager,NodeManager
    • b) 集群资源管理中心,
    • c) 任务调动中心
    • 2. ResourceManager功能
    • a) 客户端响应
    • b) ResourceTrackerService(监控slave机器资源)
    • c) Scheuler负责调动用户提交的Yarn-App,
    • d) ApplicatonManage,负责管理所有ApplicationMaster
    • e) WebService, 用来给 客户端显示状态信息,节点列表信息,调度策略等.
    • f) 其余辅助模块包括
      • i. NMLivelinessMonitor:跟踪每个NodeManager
      • ii. 与RM通讯模块等
      • 3. NodeManager功能:
    • a) Yarn从进程,每个节点都有唯一的NodeManager,负责本地资源管理(Container管理)
    • b) ContainerManager
    • c) ContainerExecutor
    • d) WebServer
    • e) Context
    • f) RPC Server
    • g) NodeHealthCheckerService
    • 4. Yarn-App三大编程模块
    • a) 在Yarn(分布式系统)上运行的应用程序,包括:ApplicationMaster,ApplicationBusinessLogic,ApplicationClient
      • i. BusinessLogic模块
        1. 1. 是用户逻辑主要模块, 执行用户程序
      • ii. ApplicationMaster,核心驱动逻辑
        1. 1. 与RM,NM通讯,
        2. 2. 项目RM注册,申请Container,
        3. 3. 推送BusinessLogic下沉到Container,并执行
      • iii. client, 用户客户端,用来提交到yarn中
        1. 1. 创建context
        2. 2. 推送ApplicationMaster,Businesslogic到HDFS上
        3. 3. 提交ApplicationMaster到集群,并监控程序运行状态
    • b) ApplicationMaster负责本App内部调度(如spark,mapreduce等)
    • c) AppExecutor, Yarn-App的实际执行者, 在Container中被实体化
    • 5. 一些命令
    • a) yarn jar ; yarn queue, yarn application ,yarn container
    • 6. Yarn编程
    • a) 常用并行化范式
      • i. M范式: 大文件切分为若干份,各机器单独处理一份,完成后再合并到一起
      • ii. M-S-R范式
      • iii. BSP范式: 用于机器学习

 

 

MapReduce

      1. 1. Master/slave结构,思想是分而治之,目的是”任务的分解和结果的汇总”
      2. 2. 核心处理部件:MRAppMaster,用于控制整个MR流程
      3. 3. 常用命令
    1. a) mapred job, mapred queue

 

Zookeeper

    • 1. 用途: 进程间通信,进程间同步与互斥,是谷歌Chubby的开源实现
    • 2. 对等结构,各节点是对等结构, 与master/salve结构不同, 不需要手动指定master, 由自己根据ZAB协议选举产生.
    • 3. 所有节点都可以读, 写必须在master节点上
    • 4. Zab协议:原子广播协议
    • a) Paxos算法的改进,核心思想是获取大多数选票的作为leader,其余为follower
    • b) 三种状,looking, 初始化状态,等待投票, leading,following
    • c) 所有写操作转发到leader完成,并广播到follower, 半数follower同意后则认为事务提交有效
    • 5. 核心: 
    • a) 每个ZNode上存储数据执行读写都是原子的.
    • b) 每个ZNode上都可以设置监视器,当node数据发生变化时可以通知客户端
    • 6. 命令:
    • a) zkClient -server ip:port
    • 7. 因为是树形结构(命名空间), 所以节点操作包括
    • a) create,delete,get,exists

 

 

HBase

    • 1. master/slave结构, HMaster/HRegionServer,需要ZK集群
    • 2. 特点: 高可用, 高性能,面向列,可伸缩的分布式存储系统,存储海量数据,没有列的限制,
    • a) 面向列,可以动态增加列, 列存储,查询时可以大大减少读取数量
    • b) 多版本,数据冗余大
    • c) 数据稀疏存储,空列不占空间,
    • d) 高可用性, wal机制(Hlog),副本机制,底层为HDFS,本身也会存储
    • e) 高新能,使用LSM数据结构,写入性能非常高
    • 3. 使用场景
    • a) 交通GPS信息,物流,订单信息,移动通话记录等
    • 4. 在行的方向,将表分成多个region, 每个region存在一个服务器上.所有数据存在HDFS上
    • 5. 每个Region有多个Store,已HFile格式存储.Storefile过多时自动合并成大的StoreFile
    • 6. HLog做灾备.每个服务器有一个HLog,不同表的region混杂在一起.特点是顺序写,速度快
    • 7. HMaster
    • a) 不对外提供服务,只维护表和Region元数据,HMaster失效会导致表元数据无法修改,但是数据读写还是正常的
    • b) Region元数据存在.META表(存在内存中),.Meta表存在-Root表,Root表永远不会分割,且位置存在zk中.这样保证三次跳转就可定位任意Region
    • 8. Zookeeper
    • a) 存储Root表地址,HMaster,HRegionServer地址,
    • b) 解决HMaster单点故障问题
    • 9. HRegionServer
    • a) 负责响应用户I/O响应,向HDFS中读取数据.
    • b) 内部管理一系列HRegion对象
    • 10. 数据存储过程
    • a) Client先去ZK上获取Root位置, 然后根据Root请求获得行所属.META区域位置, 
    • b) 根据Meta表获取Region所在节点和位置.
    • c) 直接和管理该节点区域的HRegionServer进行交互
    • d) 存储时先写入HLog, 然后放入MemStore,如果MemStore已经满了, 就会把数据刷盘到一个新的HFile
    • 11. 数据模型:
    • a) 已表的形式存储, 
    • b) 行键作为唯一标识,每个列都属于一个列族, 列定义为[列族:限定符],
    • c) 每个cell保存同一个数据的多个版本,用时间戳标识
    • 12. 操作命令:
    • a) create,put,get,drop,disable等

 

 

Spark

    • 1. Master/slave架构,集群架构包括
    • a) Standlone模式, Spark自带资源管理器,包括Master,Worker,特点是资源划分颗粒细,执行效率高
    • b) Yarn模式, 包括ApplicationMaster,Executor
      • ApplicationMaster负责控制程序整个执行流
      • Executor负责执行具体任务
      • 2. 与MapReduce对比
    • a) Spark原生支持DAG型的M-S-R,可以多次执行M-S-R, MR每次只能执行一个M-S-R
    • b) Spark提供了RDD抽象,对数据可以更精细化操作
    • c) MR在每次Reduce之前,之后都要做一次按照Key排序操作,数据大时可能会用到外部排序,耗时,Spark默认不排序,
    • d) 可以认为M-S-R三个阶段分别是MapReduce -> Tez+MapReduce -> Spark
    • 3. 其他
    • a) RDD可以看做是一系列Partition的集合.

 

 

Storm

    • 1. 实时流计算引擎
    • 2. 架构
    • a) master/slave架构,
    • b) Nimbus
      • 负责资源管理,任务响应,接受和管理Storm-App,
    • c) Supervisor
      • 管理本机资源,启动和管理工作进程
      • 3. Topology(拓扑): 
    • a) 是Storm中运行的一个实时应用程序,由Spout,Bolt,Stream构成DAG图,
    • b) 类似MapReduce的一个作业,不过启动之后不会自动停止.
    • 4. Spout: 是整个ToPology的stream源,包括:Kafka,HDFS,HBase,Hive,JDBC,Redis,等
    • a) 使用nextTuple实现读取输入源
    • b) 可靠性支持包括ack(), fail()方法,超时重发
    • c) HA由ZK+多个Nimbus来实现
    • 5. Stream分组
    • a) Shuffle Grouping: taks平均分配到各个Bolt实例中
    • b) Fields Grouping: 根据指定字段分组发给同一Bolt实例
    • c) Global Grouping: 所有Tuple发到唯一的一个Task(Bolt)上

 

 

Hive

    • 1. Hive是Hadoop大数据圈的数据仓库,提供已表格的方式组织和管理HDFS上的数据.以类SQL的方式操作表格中数据
    • 2. Hive设计目的是让Facebook精通SQL的分析师使用类SQL的方式存放HDFS大规模数据集
    • 3. 用户向Hive提交HiveQL后,运行环境翻译为MapReduce和HDFS操作,然后向Hadoop集群提交这些操作
    • 4. Hive不支持更新操作
    • 5. 解析器包括:解释权,编译器,优化器,执行器
    • 6. 集群部署包括:
    • a) 内嵌模式: 云数据存在内嵌数据库Derby,只支持一个活动用户
    • b) 本地模式:元数据存储在外部独立数据库
    • c) 完全远程模式: 元数据已独立进程运行,
    • 7. 命令:
    • a) DDL,DML,

 

 

其他:

Pig

    • 1. 相当于一个Hadoop的客户端,他先连接到Hadoop集群, 之后才在集群上做各种操作
    • 2. 包括两个部分:Pig Latin,(描述数据流的语言), 一个是Pig Latin执行环境, 
    • 3. pig脚本被翻译为HDFS,MapReduce作业.
    • 4. 部署时,只需要在客户机上部署Pig即可,不需要部署到集群中

 

 

Oozie

    • 1. 是一个Hadoop的客户端,用于管理和组织Hadoop工作流,必须是有向无环图
    • 2. 用户将多个关联MR配置到workflow.xml, Oozie会托管此任务流
    • 3. Oozie内部使用数据库来存储,默认是内嵌Derby,也可以使用MySql

 

Flume

    • 1. 是一个分布式高性能,高可靠性的数据传输工具,更像一个智能路由器,提供强大的分用,复用,断网续存功能
    • 2. 架构: 包含source,channel,sink三个部分
    • a) Source, 数据源,包括Thrift, HttpSource等
    • b) Channel, 落盘,包括三种类型:Memory,JDBC,File
    • c) Sink, 从Channel中取出并发送数据

 

 

 

 

 

 

 

 

 

 

posted @ 2020-09-28 10:13  龘人上天  阅读(118)  评论(0编辑  收藏  举报