电信客服项目之总体架构

本项目需求是:统计每天、每月以及每年的每个人的通话次数及时长

 架构图:

本项目是一个离线项目,流程是:

一、生产数据是实际生产环境中的一些日志文件等,其中该日志文件需要进行数据清洗,然后获取有效字段,本电信项目需要的有效字段有:

主叫手机号:call1 ,被叫手机号:call2,建立通话的时间:buildTime,通话时长:duration

二、 使用Flume收集日志,然后传输到Kafka队列中,其中Flume的类型就可以确定

source:exec类型,其中source可以是多个,因为,集群上每一台机器都可以产生日志,都需要监听

channel:无疑问的选择的是memory,这样速度快

sink:下游选择的是kafka,需要在flume配置文件中指定kafka的topic,地址等,具体的配置见后面

三、Kafka传输消息

需要创建topic

四、Hbase这是项目中核心之一

本项目使用Hbase进行存储,Hbase存储阶段需要做很多事情,比如,预分区,rowkey的设计,包括查询这块,考虑的问题有怎样把数据存的即分散又相对集中,比如,一个人的每天每月每年的通话记录怎么放才能在查询的时候快,包括查询,查询一个人的4月到9月该怎么查,又改怎么过滤

五、mapreduce分析

分析可以用很多框架,比如hive,spark等等,在这选择的是mapreduce,其中怎么把数据在写到mysql的output也是关键

六、展示

展示的话是纯属于Java EE的工作,可以使用各种报表等

 

步骤:

把以上的即集群环境搭好,配置flume如下

# define
a1.sources = r1
a1.sinks = k1
a1.channels = c1

# source
a1.sources.r1.type = exec
a1.sources.r1.command = tail -F -c +0 /home/atguigu/call/calllog.csv
a1.sources.r1.shell = /bin/bash -c

# sink
a1.sinks.k1.type = org.apache.flume.sink.kafka.KafkaSink
a1.sinks.k1.kafka.bootstrap.servers = hadoop102:9092,hadoop103:9092,hadoop104:9092
a1.sinks.k1.kafka.topic = calllog
a1.sinks.k1.kafka.flumeBatchSize = 20
a1.sinks.k1.kafka.producer.acks = 1
a1.sinks.k1.kafka.producer.linger.ms = 1

# channel
a1.channels.c1.type = memory
a1.channels.c1.capacity = 1000
a1.channels.c1.transactionCapacity = 100

# bind
a1.sources.r1.channels = c1
a1.sinks.k1.channel = c1

 

 

 

 

 

 

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值