博客
关于我
大数据实战-callLog项目(通话记录数据分析)之数据采集
阅读量:752 次
发布时间:2019-03-23

本文共 2931 字,大约阅读时间需要 9 分钟。

HBase Kafka数据采集流程优化与实现

如何高效配置HBase与Kafka进行数据采集,并实现数据处理与展示?

本文将介绍实现HBase与Kafka数据采集的完整流程,包括配置优化、数据处理以及实时展示的知识。针对这一场景,我将基于实际项目经验,分享从数据生成到最终展示的完整解决方案。


HBase基础配置

一、确认运行环境

在开始操作之前,需确保HBase和Kafka集群完全正常运行。可以通过执行以下命令来验证各组件的状态:

hbase: Online**kafka: brokerambda>```---### 二、表结构设计在实际应用中,表结构的设计直接影响数据处理效率。根据业务需求,我们设计了`callLog`表,字段如下:| 字段名称       | 数据类型         | 描述                                   ||----------------|------------------|--------------------------------------|| call           | String           | 通话编号                               || call_name       | String           | 通话名称                               || call2           | String           | 第二通话编号                           || call2_name       | String           | 第二通话名称                           || date_time       | Timestamp         | 通话日期和时间                         || date_time_ts   | String           | 时间戳(格式化后的)                     || duration        | Integer          | 通话时长                             || flag           | String           | 标记(例如“01”表示原记录,“02”表示被叫) | 在实际开发中,可根据实际需求调整字段数量和数据类型。---## Kafka配置### 一、启动主题为实现实时数据采集,首先需创建Kafka主题。使用以下命令创建新的主题:```bashkafka-topics.sh --zookeeper node102:2181 --create --topic callLog --partitions 3 --replication-factor 1

修改为实际的ZooKeeper地址后运行。

二、验证主题

创建完成后,可以使用以下命令查看主题详情:

kafka-topics.sh --zookeeper node102:2181 --describe --topic callLog

数据生成与流式处理

一、Flume数据生成

Flume作为数据生成工具,支持从文件或数据库读取数据。在实际应用中,采用tail命令从文件读取数据:

# 位于abcdefgh文件中flume-ng agent --conf /path/to/flume-conf -n a2 --sources r2 --sink k2

flume-conf配置文件如下:

a2.sources = r2a2.sinks = k2a2.channels = c2# 数据源配置a2.sources.r2.type = execa2.sources.r2.command = tail -F -c 0 /path/to/callLogs/calllog.csva2.sources.r2.shell = /bin/bash -c# 数据处理配置a2.channels.c2.type = memorya2.channels.c2.capacity = 1000a2.channels.c2.transactionCapacity = 100a2.channels.c2.bind = *a2.sinks.k2.channel = c2a2.sinks.k2.type = org.apache.flume.sink.kafka.KafkaSinka2.sinks.k2.brokerList = node102:9092, node103:9092a2.sinks.k2.topic = callLoga2.sinks.k2.serializer.class = kafka.serializer.StringEncoder

运行命令:

flume-ng agent --conf /path/to/flume-conf --name a2 --conf-file ./flume-kafka.conf

高级处理与展示

一、数据处理逻辑

对于每条数据,进行以下处理:

  • 数据解析:将CSV文件中的字段拆分为各个参数。
  • 时间戳转换:将时间戳转换为ISO格式。
  • 数据重组:将主叫和被叫信息分开,分别插入HBase表中。
  • FLAG标记:添加标记区分原记录和新增记录。
  • 完成后,可将数据持久化到HBase。


    消费者配置

    一、控制台消费者

    验证数据是否正常进入Kafka主题,可以运行以下命令:

    kafka-console-consumer.sh --zookeeper node102:2181 --topic callLog --new-consumer --group test_group

    二、三阶段消费

    为实现高效处理,采用分阶段消费策略:

  • 阶段一:从Kafka中读取数据,写入临时存储结构。
  • 阶段二:批量写入HBase表中。

  • HBase消费者

    一、高级处理逻辑

    需要开发自定义HBase消费者,以实现:

  • 数据重组,将主叫和被叫信息分开。
  • 时间范围查询,支持按时间窗口查集。
  • 数据聚合,计算通话时长等指标。

  • 运行验证

    一、数据生成器启动

    运行以下命令启动数据生成器:

    java -cp calllogs-0.0.1-SNAPSHOT.jar product.AutoDataGen ./num hesitant_products.csv ./calllog.csv

    二、Flume运行

    运行Flume守护进程:

    flume-ng agent --conf /path/to/flume-conf --name a2 --conf-file ./flume-kafka.conf

    三、消费者测试

    运行控制台消费者,验证数据是否正常流动。


    总结

    通过以上步骤,成功实现了从数据生成到HBase存储,再到消费展示的完整流程。如果需要更详细的代码和详细配置,请参考完整项目文档。

    转载地址:http://eejzk.baihongyu.com/

    你可能感兴趣的文章
    Mysql学习总结(6)——MySql之ALTER命令用法详细解读
    查看>>
    Mysql学习总结(70)——MySQL 优化实施方案
    查看>>
    Mysql学习总结(71)——MySQL 重复记录查询与删除总结
    查看>>
    Mysql学习总结(71)——数据库介绍(MySQL安装 体系结构、基本管理)再回顾
    查看>>
    Mysql学习总结(72)——MySQL 开发者开发,设计规范再总结
    查看>>
    Mysql学习总结(73)——MySQL 查询A表存在B表不存在的数据SQL总结
    查看>>
    Mysql学习总结(74)——慢SQL!压垮团队的最后一根稻草!
    查看>>
    Mysql学习总结(75)——并发量大、数据量大的互联网业务数据库设计军规
    查看>>
    Mysql学习总结(76)——MySQL执行计划(explain)结果含义总结
    查看>>
    Mysql学习总结(77)——温故Mysql数据库开发核心原则与规范
    查看>>
    Mysql学习总结(78)——MySQL各版本差异整理
    查看>>
    Mysql学习总结(79)——MySQL常用函数总结
    查看>>
    Mysql学习总结(7)——MySql索引原理与使用大全
    查看>>
    Mysql学习总结(80)——统计数据库的总记录数和库中各个表的数据量
    查看>>
    Mysql学习总结(81)——为什么MySQL不推荐使用uuid或者雪花id作为主键?
    查看>>
    Mysql学习总结(82)——MySQL逻辑删除与数据库唯一性约束如何解决?
    查看>>
    Mysql学习总结(83)——常用的几种分布式锁:ZK分布式锁、Redis分布式锁、数据库分布式锁、基于JDK的分布式锁方案对比总结
    查看>>
    Mysql学习总结(84)—— Mysql的主从复制延迟问题总结
    查看>>
    Mysql学习总结(85)——开发人员最应该明白的数据库设计原则
    查看>>
    Mysql学习总结(8)——MySql基本查询、连接查询、子查询、正则表达查询讲解
    查看>>