新闻网站大数据项目

介绍:&emsp本次项目是基于企业大数据经典案例项目(大数据日志分析),全方位、全流程讲解 大数据项目的业务分析、技术选型、架构设计、集群规划、安装部署、整合继承与开发和web可视化交互设计。


一、业务需求

?? (一)捕获用户浏览日志信息
?? (二)实时分析前20名流量最高的新闻话题
?? (三)实时统计当前线上已曝光的新闻话题
?? (四)统计哪个时段用户浏览量最高

二、系统架构

三、集群规划

四、数据源介绍

五、项目实战

1)离线采集数据

?架构flume+hbase+hive
??数据是实时的用户查询日志信息,为了做离线的统计,需要将数据存储HDFS,写入的压力非常大,单位时间内写入的数据量比较大,直接向hdfs中写入的效率比较低;而hbase,高速随机读写的数据库,这里使用hbase去接收flume传送过来的数据,当数据被传入hbase之后,我们可以使用hive去关联hbase中的数据。
hbase建表
create ‘zy_news_log‘, ‘cf‘

2)关联flume+hbase

?使用sink为hbase或者asynchbase,但是这两种方式其中定义EventSerializer满足不了我们的需求,日志数据有6列,数据以\t分割,但是默认的hbasesink只能做到一列,所以只能自定义hbase-sink。
自定义sink源代码
编译打包: mvn package -DskipTests
将项目target目录下面的flume-hbase-sink-1.0-SNAPSHOT.jar

放入到flume集群中的lib的目录下。
编写flume:flume-hbase-sink.conf

#########################################################
##主要作用是文件中的新增内容,将数据打入到HBase中
#注意:Flume agent的运行,主要就是配置source channel sink
##下面的a1就是agent的代号,source叫r1 channel叫c1 sink叫k1
#########################################################
a1.sources = r1
a1.sinks = k1
a1.channels = c1

#对于source的配置描述 监听目录中的新增数据
a1.sources.r1.type = exec
a1.sources.r1.command  = tail -F /home/hadoop1/flume_properties/flume/flume-hbase.txt

#对于sink的配置描述 使用hbase做数据的消费
a1.sinks.k1.type = hbase
a1.sinks.k1.table = news_log
a1.sinks.k1.columnFamily = cf
a1.sinks.k1.serializer = org.apache.flume.sink.hbase.RegexHbaseEventSerializer

#对于channel的配置描述 使用内存缓冲区域做数据的临时缓存,文件
a1.channels.c1.type = file
a1.channels.c1.checkpointDir = /home/hadoop1/flume_properties/flume/checkpoint
a1.channels.c1.dataDirs = /home/hadoop1/flume_properties/flume/channel
a1.channels.c1.capacity = 10000
a1.channels.c1.transactionCapacity = 100

#通过channel c1将source r1和sink k1关联起来
a1.sources.r1.channels = c1
a1.sinks.k1.channel =c1

后台启动:
flume-ng agent -n a1 -c conf -f flume-hbase-sink.conf -Dflume.root.logger=INFO,console
关联flume+hbase
hive创建hbase的表:

CREATE EXTERNAL TABLE zy_news_log(
    id string,
    datetime string,
    userid string,
    searchname string,
    retorder int,
    cliorder int,
    cliurl string
)
STORED BY ‘org.apache.hadoop.hive.hbase.HBaseStorageHandler‘
WITH SERDEPROPERTIES ("hbase.columns.mapping" = ":key,cf:datetime,cf:userid,cf:searchname,cf:retorder,cf:cliorder,cf:cliurl")
TBLPROPERTIES ("hbase.table.name" = "zy_news_log", "hbase.mapred.output.outputtable" = "zy_news_log");

之后就可以在hive中做一些查询操作,来完成相关业务。

2)实时采集数据

?架构flume+Kafka
创建topic

bin/kafka-topics.sh --create --topic zy-news-logs --zookeeper hadoop01:2181,hadoop02:2181,hadoop03:2181 --partitions 3 --replication-factor 3

指定flume的配置文件:flume-kafka-sink.conf

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

#对于source的配置描述 监听文件中的新增数据 exec
a1.sources.r1.type = exec
a1.sources.r1.command  = tail -F /home/data/projects/news/data/news_log_rt.log

#对于sink的配置描述 使用kafka日志做数据的消费
a1.sinks.k1.type = org.apache.flume.sink.kafka.KafkaSink
a1.sinks.k1.kafka.bootstrap.servers = hadoop01:9092,hadoop02:9092,hadoop03:9092
a1.sinks.k1.kafka.topic = zy-news-logs
a1.sinks.k1.kafka.flumeBatchSize = 1000
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 = 100000
a1.channels.c1.transactionCapacity = 1000

#通过channel c1将source r1和sink k1关联起来
a1.sources.r1.channels = c1
a1.sinks.k1.channel = c1

4)数据的统计分析

? SparkStreaming+Kafka+web+scala+java+maven+hbase/mysql/redis
具体的代码实现可以在小编的博客中下载:

原文地址:http://blog.51cto.com/14048416/2340823

时间: 2024-10-20 02:12:46

新闻网站大数据项目的相关文章

大数据项目之测试标准化

数据项目确保数据质量是最重要的事. 但作为开发人员的我,一直对代码的热情远高于数据,这是不应该的. 因为凡是涉及到数据的项目,数据质量的重要性远远比代码重要. 理解数据,比优化代码更重要,只有在保证数据质量的前提下,再优化代码才是锦上添花. 责任心是安全之魂,标准化是安全之本. 还有时候,开发周期比较短,开发人员一急躁,没有做完整的测试,或当时办公室温度比较燥, 引发其心理比较烦躁,就极容易造成代码质量的下降,但这些都不重要,最重要的是我们需要有一个 标准化的测试流程,无论在什么样的情况下,代码

大数据项目如何更好应用用例规范管理测试用例

大数据项目如何更好的管理测试用例,其重要性不言而喻:其中最有效的一个方法就是强而有力的执行用例的编写规范:以下是经验总结的用例编写规范.用例编写规范分为两部分:第一部分:功能测试用例编写规范(一)测试用例编写规范:1.需求(算法)文档路径:2.ER-Win.数据字典: 测试目的: 前置条件: 操作步骤:1.2. 预期结果: (二)SQL用例编写规范:1)每个表必须要使用有意义的别名:2)当使用表连接时,要关联的从表字段必须要放在左边,主表字段放在右边: --要求,比例: 正确的示范: selec

阿里,腾讯内部十二个大数据项目,你都有做过吗?

随着社会的进步,大数据的高需求,高薪资,高待遇,促使很多人都来学习和转行到大数据这个行业.学习大数据是为了什么?成为一名大数据高级工程师.而大数据工程师能得到高薪.高待遇的能力在哪?自然是项目经验.下面给大家大概介绍一下在阿里的"双11"."双12"."双旦"即将到来的"618"与腾讯大数据都用上的十二个大数据项目:阿里,腾讯内部十二个大数据项目,你都有做过吗?一个大数据分析项目关键构成如下: 信息采集组.数据清洗组.数据融合

电商大数据项目(二)-推荐系统实战之实时分析以及离线分析

电商大数据项目-推荐系统实战(一)环境搭建以及日志,人口,商品分析http://blog.51cto.com/6989066/2325073电商大数据项目-推荐系统实战之推荐算法http://blog.51cto.com/6989066/2326209电商大数据项目-推荐系统实战之实时分析以及离线分析http://blog.51cto.com/6989066/2326214 五.实时分析Top IP(实时分析Top用户)一)模块介绍电商网站运营中,需要分析网站访问排名前N的IP,主要用来审计是否

电商大数据项目-推荐系统实战之推荐算法(三)

电商大数据项目-推荐系统实战(一)环境搭建以及日志,人口,商品分析http://blog.51cto.com/6989066/2325073电商大数据项目-推荐系统实战之推荐算法http://blog.51cto.com/6989066/2326209电商大数据项目-推荐系统实战之实时分析以及离线分析http://blog.51cto.com/6989066/2326214 (七)推荐系统常用算法协同过滤算法协同过滤算法(Collaborative Filtering:CF)是很常用的一种算法,

Spark 2.x企业级大数据项目实战(实时统计、离线分析和实时ETL)

Spark 2.x企业级大数据项目实战(实时统计.离线分析和实时ETL)全套课程下载:https://pan.baidu.com/s/1mje6bAoLLPrxUIrM-C2VMg 提取码: 9n1x 本门课程来源于一线生产项目, 所有代码都是在现网大数据集群上稳定运行, 拒绝Demo.课程涵盖了离线分析.实时分析绝大部分的场景,通过三个实际生产项目教授如何优雅地集成Hadoop.Spark.HBase.Kafka.Redis.MySQL等相关大数据技术,并实际落地 . 本门课程全程实操,不用担

大数据项目中的QA需要迎接新的挑战

大数据项目中的QA需要迎接新的挑战 根据IDC全球半年度大数据和分析支出指南的最新预测,到2022年全球大数据和业务分析解决方案的收入将达到2600亿美元.在大数据和业务分析解决方案上投资增长最快的行业包括银行(复合年增长率13.3%).医疗.保险.证券和投资服务.电信,每个行业复合年增长率都是12.8%.由此可见,大数据类项目在未来的地位将会越发重要,而作为QA,在大数据项目急速扩张的大背景下,也将迎来新的机遇和挑战. 一.大数据项目的数据特点 大数据项目与传统交付项目的不同之处在于其关注的重

说说这些年做的云计算和大数据项目

入行十几年了,做了不少分布计算.并行计算.内存计算.海量数据处理的项目,按照现在的分类,这些都属于云计算/大数据范畴.今天说说我做过的其中三个项目,只三个.         第一个是我们接到的视频分享网站的视频转码的订单,网站名字就不说了,有替人宣传嫌疑.他们情况是这样,视频网站的内容用MP4格式在网页上播放,但是上传的格式多种多样,我们必须把这些视频统一转换成MP4格式,视频转码的工作想必大家都在自己的电脑上试过,通常一个100M左右的视频转码需要20分钟以上(CPU是Pentium IV).

大数据项目实践:基于hadoop+spark+mongodb+mysql开发医院临床知识库系统

一.前言 从20世纪90年代数字化医院概念提出到至今的20多年时间,数字化医院(Digital Hospital)在国内各大医院飞速的普及推广发展,并取得骄人成绩.不但有数字化医院管理信息系统(HIS).影像存档和通信系统(PACS).电子病历系统(EMR)和区域医疗卫生服务(GMIS)等成功实施与普及推广,而且随着日新月异的计算机技术和网络技术的革新,进一步为数字化医院带来新的交互渠道譬如:远程医疗服务,网上挂号预约. 随着IT技术的飞速发展,80%以上的三级医院都相继建立了自己的医院信息系统