跳至主要內容
实时存储综合案例(二)

实时存储综合案例(二)

知识点01:课程回顾

  1. Flume功能和应用场景
  • 功能:实现实时数据流的采集
  • 场景:实时采集文件或者监听网络端口
  1. Flume的开发规则和常用组件
  • 规则:开发一个配置文件:Agent、Source、Channel、Sink,运行配置文件:flume-ng agent -c、-f、-n
  • 常用:三大基本组件
    • Source:采集数据:Taildir
    • Channel:缓存数据:File、Mem
    • Sink:发送数据:HDFS、Kafka
  • 流程:先分析选择哪种组件,开发配置文件【官网】、运行【后台】

Znyoung大约 22 分钟大数据PhoenixFlume
实时存储综合案例(一)

实时存储综合案例(一)

文档资料

01:课程回顾

  1. Phoenix的基础语法
    • 目标:熟悉DDL、DML、DQL操作
  2. Phoenix构建Hbase二级索引
    • 目标:掌握二级索引设计以及使用Phoenix实现二级索引自动化构建和维护
    • 分类
      • 全局索引:最简单二级索引,基于索引字段和原表rowkey构建索引表的rowkey,先查索引表,再查原表
        • 优点:简单,加快读取数据的性能,查询结果字段不在索引表,默认不走索引
        • 缺点:阻塞写入请求,先写索引表,然后再写原表,对写入影响相对比较大
        • 场景:读的性能要求比较高,写的性能要求不是很高
      • 覆盖索引:基于全局索引设计之上,将一些经常被查询字段放入索引表中,优先直接从索引表返回
        • 优点:不用再查询原表,直接从索引表返回
        • 缺点:索引表的数据量会增加,如果数据不在索引表,不走索引
        • 场景:与全局索引一致,一般建覆盖索引多一点
      • 本地索引:将索引数据直接存储在原表的一个列族中,将索引数据与对应原始数据写入同一个region中
        • 优点:降低了对写数据的影响
        • 缺点:查询时必须加载所有索引数据,读性能提升没有全局索引更好
        • 场景:希望提升读的性能,但是不希望对写产生很大的影响

Znyoung大约 16 分钟大数据PhoenixFlume
分布式面向列的NoSQL数据库Hbase(一)

分布式面向列的NoSQL数据库Hbase(一)

资料

01:课程回顾

  1. Kafka收尾
  • Kafka为什么基于磁盘的日志消息队列系统,但是读写速度很快?
    • 写:先写内存PageCache,然后顺序写入磁盘【追加】
    • 读:先读内存PageCache,Segment对分区数据进行划分,通过稀疏索引来加快查询,通过0拷贝机制来读取
  • Kafka中如何保证一次性语义?
    • 一次性语义:至多一次,至少一次,有且仅有一次
    • 生产不丢失:ack 应答机制 + retries 重试机制
    • 生产不重复:实现生产幂等性保证:生产id + 数据id , 事务机制【操作放入一个Topic中】
    • 消费不丢失不重复:手动管理commit offset:文件、MySQL、Zookeeper、Redis
  • Kafka中一些概念:AR、ISR、OSR、HW、LEO?
    • AR:一个分区的所有副本
    • ISR:正在同步的副本,可用副本,写入数据以及选举Leader都是从ISR中选择
    • OSR:没有同步的副本,不可用副本,超过一定的时间没有和Leader通信
    • LEO:分区的每个副本当前已经写入的位置+1,下一个待写的位置
    • HW:消费的高水位线,指的是消费者消费这个分区能够消费到的位置+1,等于这个分区所有副本最小LEO

Znyoung大约 12 分钟大数据PhoenixHbase