项目实战1 电信客服

20.2.5 项目实战1 电信客服

按照下图所示建立module:先建立一个maven工程:Bigdata,并删除src文件夹
再其下面再建立一个BW-project-ct的maven工程,删除其src文件夹。
在其下再建立两个maven工程:ct-common 和 ct-producer。

在这里插入图片描述
在 ct-producer工程的xml文件中添加依赖,使ct-producer和ct-common相关联:

   <dependencies>
        <dependency>
            <groupId>com.BW</groupId>
            <artifactId>ct-common</artifactId>
            <version>1.0-SNAPSHOT</version>
        </dependency>
    </dependencies>

在这里插入图片描述
工程都准备好了 然后开始写代码:
在common工程添加包:
在这里插入图片描述
在这里插入图片描述
创建完如下图:
在这里插入图片描述
将其复制一下
在这里插入图片描述
在这里插入图片描述
再新建一个包:constant
三个包新建好后如下图:
在这里插入图片描述
创建Val接口:只要跟取值有关系的 都要实现该接口:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
创建类
Date数据可能直接用,所以不创建接口,创建类。
在这里插入图片描述
接下来在constant新建枚举,Names存放表名等字段
在这里插入图片描述
接下来在ct-producer创建包:

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
第一部分,生产数据代码写完了,简单debug下:
在这里插入图片描述
new一个生产者对象。
在这里插入图片描述
先new一个LocalFileDataIn对象,然后调用setIn方法,
在这里插入图片描述
在这里插入图片描述
创建一个流读取对象reader ,这个路径指向需要读取的源文件
在这里插入图片描述
然后下一步:
在这里插入图片描述
进入方法题:
在这里插入图片描述
下一步:
在这里插入图片描述
进入方法题:
在这里插入图片描述
发现还没写,跳出。
然后下一步:
在这里插入图片描述
进入方法题:
在这里插入图片描述
新建一个contacts集合,存放读取处理后的内容,这个集合里存放的是contact对象。然后继续进入方法体:
在这里插入图片描述
新建一个集合ts 装入处理的数据。继续:
在这里插入图片描述
reader对象有个readline的方法,每次可以从源文件读取一行数据。每当可以读取到数据时,进入循环。
每次循环都新建一个t对象。 调用其setValue方法,进入该方法题:
在这里插入图片描述
将其转换为string类型的content 然后进行分割,分割的第一部分是电话号,第二部分是姓名,然后进入setName方法体:
在这里插入图片描述
设置contact对象的姓名,跳出该方法体。
随后进入setTel方法体:
在这里插入图片描述
设置contact对象的电话号。然后跳出setValue方法。继续:
在这里插入图片描述
加入ts集合里 继续循环 循环结束后 ts集合里存放着所有的处理好的contact对象,返回ts
在这里插入图片描述
继续:
在这里插入图片描述
使得contacts 集合等于ts 然后依次打印里面的元素:
运行成功:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
第4步如下图所示
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
然后在Linux执行

[BW@hadoop102 data]$ java -jar /opt/module/data/ct-producer.jar /opt/module/data/contact.log /opt/module/data/call.log

创建flume配置文件:

[BW@hadoop102 data]$ vim flume-2-kafka.conf

成功:
在这里插入图片描述

3.2.1 数据采集

思路:
a) 配置kafka,启动zookeeper和kafka集群;

在102 103 104 启动zookeeper

[BW@hadoop102 zookeeper-3.4.10]$ bin/zkServer.sh start

在102 103 104 启动kafka

[BW@hadoop103 kafka]$ bin/kafka-server-start.sh -daemon config/server.properties

b) 创建kafka主题;

[BW@hadoop103 kafka]$ bin/kafka-topics.sh --zookeeper hadoop102:2181 -create --topic ct --partitions 3 --replication-factor 2

在这里插入图片描述
c) 启动kafka控制台消费者(此消费者只用于测试使用);

[BW@hadoop102 kafka]$ /opt/module/kafka/bin/kafka-console-consumer.sh --zookeeper hadoop102:2181 -topic ct

d) 配置flume,监控日志文件;

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

#source
a1.sources.r1.type = exec
a1.sources.r1.command = tail -F -c +0 /opt/module/data/call.log
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 = ct
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

e) 启动flume监控任务;

[BW@hadoop102 flume]$ bin/flume-ng agent -c conf/ -n a1 -f /opt/module/data/flume-2-kafka.conf 

g) 观察测试。
成功:
在这里插入图片描述
然后创建消费者
在这里插入图片描述
然后添加依赖

<dependencies>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.12</version>
            <scope>test</scope>
        </dependency>
        <!-- https://mvnrepository.com/artifact/org.apache.kafka/kafka-clients -->
        <dependency>
            <groupId>org.apache.kafka</groupId>
            <artifactId>kafka-clients</artifactId>
            <version>0.11.0.0</version>
        </dependency>
        <!-- https://mvnrepository.com/artifact/org.apache.hbase/hbase-client -->
        <dependency>
            <groupId>org.apache.hbase</groupId>
            <artifactId>hbase-client</artifactId>
            <version>1.3.1</version>
        </dependency>
        <!-- https://mvnrepository.com/artifact/org.apache.hbase/hbase-server -->
        <dependency>
            <groupId>org.apache.hbase</groupId>
            <artifactId>hbase-server</artifactId>
            <version>1.3.1</version>
        </dependency>
        <dependency>
            <groupId>com.BW</groupId>
            <artifactId>ct-common</artifactId>
            <version>1.0-SNAPSHOT</version>
        </dependency>
    </dependencies>

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

测试是否可以在IDEA上读取采集的数据:

首先启动jar包生产数据

[BW@hadoop102 data]$ java -jar /opt/module/data/ct-producer.jar /opt/module/data/contact.log /opt/module/data/call.log

在这里插入图片描述
然后打开flume采集数据

[BW@hadoop102 flume]$ bin/flume-ng agent -c conf/ -n a1 -f /opt/module/data/flume-2-kafka.conf

在这里插入图片描述
然后点IDEA运行,查看结果
在这里插入图片描述
成功读取:
在这里插入图片描述
Hbase
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
添加依赖:

<dependencies>
    <dependency>
        <groupId>org.apache.hbase</groupId>
        <artifactId>hbase-client</artifactId>
        <version>1.3.1</version>
    </dependency>
    <!-- https://mvnrepository.com/artifact/org.apache.hbase/hbase-server -->
    <dependency>
        <groupId>org.apache.hbase</groupId>
        <artifactId>hbase-server</artifactId>
        <version>1.3.1</version>
    </dependency>
</dependencies>

在这里插入图片描述
再添加两个文件
在这里插入图片描述
新建一个file 名为hbase-site.xml (名字不能变) 然后导入hadoop102 的hbase-site.xml :

[BW@hadoop102 conf]$ cat hbase-site.xml 
<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<!--
/**
 *
 * Licensed to the Apache Software Foundation (ASF) under one
 * or more contributor license agreements.  See the NOTICE file
 * distributed with this work for additional information
 * regarding copyright ownership.  The ASF licenses this file
 * to you under the Apache License, Version 2.0 (the
 * "License"); you may not use this file except in compliance
 * with the License.  You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
-->
<configuration>
<property>
<name>hbase.rootdir</name>
<value>hdfs://hadoop102:9000/HBase</value>
</property>

<property>
<name>hbase.cluster.distributed</name>
<value>true</value>
</property>

<!-- 0.98 后的新变动,之前版本没有.port,默认端口为 60000 -->
<property>
<name>hbase.master.port</name>
<value>16000</value>
</property>

<property>
<name>hbase.zookeeper.quorum</name>
<value>hadoop102,hadoop103,hadoop104</value>
</property>

<property>
<name>hbase.zookeeper.property.dataDir</name>
<value>/opt/module/zookeeper-3.4.10/zkData</value>
</property>
</configuration>

再新建一个file 名字叫 log4j.properties

log4j.rootLogger=INFO, stdout
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d %p [%c] - %m%n
log4j.appender.logfile=org.apache.log4j.FileAppender
log4j.appender.logfile.File=target/spring.log
log4j.appender.logfile.layout=org.apache.log4j.PatternLayout
log4j.appender.logfile.layout.ConversionPattern=%d %p [%c] - %m%n

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
先打开hbase 打开hbase之前一定要开zookeeper和hadoop集群。(之前一直报错 原来是忘了开Hbase了 醉了)
然后重新运行jar

[BW@hadoop102 data]$ java -jar /opt/module/data/ct-producer.jar /opt/module/data/contact.log /opt/module/data/call.log

打开flume监听

[BW@hadoop102 flume]$ bin/flume-ng agent -c conf/ -n a1 -f /opt/module/data/flume-2-kafka.conf 

运行程序:
在这里插入图片描述
成功接收:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
然后查看数据 是否分区正确:
在这里插入图片描述
继续优化代码:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

优化后测试:(这次重开的虚拟机,所以安装完整的操作重新记录下:)

开启之前一定要关闭防火墙

1. 在102 103 104开zookeeper:

[BW@hadoop102 zookeeper-3.4.10]$ bin/zkServer.sh start

在这里插入图片描述
2. 在102开HDFS 在103 开Yarn

[BW@hadoop102 hadoop-2.7.2]$ sbin/start-dfs.sh 

在这里插入图片描述

[BW@hadoop103 hadoop-2.7.2]$ sbin/start-yarn.sh 

在这里插入图片描述
3. 在102 103 104 开kafka集群

[BW@hadoop102 kafka]$ bin/kafka-server-start.sh -daemon config/server.properties

在这里插入图片描述
4. 在102 群起Hbase集群

[BW@hadoop102 hbase]$ bin/start-hbase.sh 

在这里插入图片描述
5. 然后重新运行jar

[BW@hadoop102 data]$ java -jar /opt/module/data/ct-producer.jar /opt/module/data/contact.log /opt/module/data/call.log
6. 打开flume监听
[BW@hadoop102 flume]$ bin/flume-ng agent -c conf/ -n a1 -f /opt/module/data/flume-2-kafka.conf 

运行程序: 成功!!!
在这里插入图片描述
增加协处理器

在这里插入图片描述
增加依赖
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

打包:
在这里插入图片描述
打包完成后的jar包:两个
在这里插入图片描述
在这里插入图片描述
放到hbase/lib/下
在这里插入图片描述
然后分发

[BW@hadoop102 hbase]$ xsync lib/

然后退出hbase

[BW@hadoop102 hbase]$ bin/stop-hbase.sh 

然后重新打开hbase

[BW@hadoop102 hbase]$ bin/start-hbase.sh 

然后重新运行jar包生产数据,重新打开flume进行监听,然后重新运行程序:
在这里插入图片描述
成功读取数据:
在这里插入图片描述
然后进入hbase进行查看:

[BW@hadoop102 hbase]$ bin/hbase shell
hbase(main):002:0>  scan 'ct:calllog'

在这里插入图片描述
发现有0有1 说明协处理器起作用了。
在这里插入图片描述
在这里也可以看到协处理器信息

开始设计表
在这里插入图片描述
id不动
在这里插入图片描述
在这里插入图片描述
添加字段 telid
在这里插入图片描述
添加字段 dateid
在这里插入图片描述
添加sumcall字段
在这里插入图片描述
添加字段sumduration
在这里插入图片描述
这样表就创建完成了

在这里插入图片描述
在102拷贝jar包
然后分发103 104

然后打包程序:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
完成配置
然后build

在这里插入图片描述
在这里插入图片描述
打包完成 然后将下面的文件夹上传到 /opt/module/data/ 下
在这里插入图片描述
在这里插入图片描述
然后放到yarn上去运行

[BW@hadoop102 data]$ /opt/module/hadoop-2.7.2/bin/yarn jar ct_analysis_jar/ct-analysis.jar 

在这里插入图片描述
运行成功
去看mysql:成功写入mysql:
在这里插入图片描述
然后借助redius 将映射表的数据加载到缓存,
在这里插入图片描述
然后添加依赖关系:

 <dependencies>
        <dependency>
            <groupId>redis.clients</groupId>
            <artifactId>jedis</artifactId>
            <version>2.9.0</version>
        </dependency>
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>5.1.46</version>
        </dependency>
    </dependencies>

然后建一个包
在这里插入图片描述
在这里插入图片描述

测试redis

进入hadoop02的 /usr/local/bin 目录,启动Redis的服务端 然后启动客户端

[BW@hadoop102 bin]$ redis-server /myredis/redis.conf 
[BW@hadoop102 bin]$ redis-cli 
127.0.0.1:6379> keys *
(empty list or set)
127.0.0.1:6379> keys *
1) "ct_user"
127.0.0.1:6379> HGETALL ct_user

成功:
在这里插入图片描述
在这里插入图片描述

写好程序后 直接打包:
之前配置过,现在直接打
在这里插入图片描述
在这里插入图片描述
然后将下面这个jar包上传到下面这个目录下:
在这里插入图片描述
在这里插入图片描述
覆盖
在这里插入图片描述
因为要运行redis,所以要把jar包放到hadoop里去
在这里插入图片描述
以后所有的jar包都可以去官网下载

然后把两个jar包分发

[BW@hadoop102 common]$ xsync jedis-2.8.1.jar 
fname=jedis-2.8.1.jar
pdir=/opt/module/hadoop-2.7.2/share/hadoop/common
------------------- hadoop103 --------------
sending incremental file list
jedis-2.8.1.jar

sent 538937 bytes  received 31 bytes  215587.20 bytes/sec
total size is 538792  speedup is 1.00
------------------- hadoop104 --------------
sending incremental file list
jedis-2.8.1.jar

sent 538937 bytes  received 31 bytes  359312.00 bytes/sec
total size is 538792  speedup is 1.00
[BW@hadoop102 common]$ xsync commons-pool2-2.4.2.jar 
fname=commons-pool2-2.4.2.jar
pdir=/opt/module/hadoop-2.7.2/share/hadoop/common
------------------- hadoop103 --------------
sending incremental file list
commons-pool2-2.4.2.jar

sent 112070 bytes  received 31 bytes  224202.00 bytes/sec
total size is 111969  speedup is 1.00
------------------- hadoop104 --------------
sending incremental file list
commons-pool2-2.4.2.jar

sent 112070 bytes  received 31 bytes  224202.00 bytes/sec
total size is 111969  speedup is 1.00

然后将表的数据清空:
在这里插入图片描述
然后运行jar包:

[BW@hadoop102 data]$ pwd
/opt/module/data
[BW@hadoop102 data]$ /opt/module/hadoop-2.7.2/bin/yarn jar ct_analysis_jar/ct-analysis.jar 

运行成功:
在这里插入图片描述
数据又回来了
在这里插入图片描述
基本的功能实现以后,要继续改一下KV
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

再次跑程序:
先将表清空:
在这里插入图片描述
然后重新打包:
在这里插入图片描述
在这里插入图片描述
打包完成后覆盖之前的jar包
在这里插入图片描述

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
手把手视频详细讲解项目开发全过程,需要的小伙伴自行百度网盘下载,链接见附件,永久有效。 课程亮点: 1、系统的设计方法是采用面向对象的设计。本系统前端页面交互主要采用B/S的结构,采用MVC及流式数据的设计思路进行规划设计。 2、前端数展现使用Echarts技术。与地图相关的报表使用百度地图提供的API。 3、后端实时数据,实时接入mysql。为了不影响线上系统的正常使用,同时能够将数据发送到大数据平台,本项目使用Canal来解析实时数据,Flume收集数据并数据发送到实时计算业务流程和离线计算两个流程中。实时数据处理流程使用Canal+Flume+Kafka+SparkStreaming等技术。离线计算使用HDFS+Hive+Azkaban等技术。 4、设计过程中对系统的可靠性、可扩展性以及性能进行了充分考虑和研究分析,争取通过良好的设计,在实现系统功能的前提下,最大化的提高系统性能和扩展性,减少将来的维护代价和其他成本。 适用人群: 1、对大数据Spark感兴趣的在校生及应届毕业生。 2、对目前职业有进一步提升要求,希望从事大数据行业高薪工作的在职人员。 3、对大数据行业感兴趣的相关人员。 第一章 项目概述 1课程内容 1. 系统介绍 2. 模块介绍 3. 数据流程描述 4. 逻辑架构设计 5. 功能描述 6. 系统架构 第二章 离线数据入库 1. 数据上传 2. 创建数据表 3. 数据拆分 4. 数据表加载 第三章 离线数据整理 1. 业务SQL语句编写 2. 整理SQL语句生成结果表的结构及字段 3. 根据结果表所需的字段,在原始表中抽取该字段 4. 数据加工及入库 5. 创建索引 第四章 实时数据生成及计算 1. Mysql 数据写入 2. canal 解析mysql实时数据写入本地 3. Flume收集数据将数据上传至集群 4. SparkStreaming 实时计算

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值