离线数据采集系统,离线采集和实时采集
1.离线数据的收集过程1。我们的数据从哪里来?行业:网站,app,微信小程序,系统(交易系统。)
行业:电信、人们上网、打电话、发短信等的数据。
数据来源:网站、app、微信小程序
向我们的后台发送请求,获取数据,执行业务逻辑;app获取要展示的产品数据;将交易和结帐请求发送到后台。
网站/app会将请求发送到后台服务器,通常Nginx会接收请求并转发。
2.Tomcat、Jetty等后台服务器;但实际上,在用户数量多、并发高(每秒超过10000次访问)的情况下,通常不会使用Tomcat直接接收请求。此时通常使用Nginx接收请求,后端连接Tomcat集群/Jetty集群,以平衡高并发访问下的负载。
比如Nginx,或者Tomcat,在你进行适当的配置后,所有被请求的数据都会被存储为log接收请求的后台系统(J2EE、PHP、Ruby On Rails)也可以在每次接收请求或根据您的规范执行业务逻辑时,在日志文件中键入一个日志。
到目前为止,我们的后台每天至少可以产生一个日志文件。这是毫无疑问的。
3.日志文件(通常是我们事先设定好的特殊格式)一般是每天一份。此时,可能会有多个日志文件,因为有多个web服务器。
再者,不同的业务数据放在不同的日志文件中,所以日志文件的种类很多。
日志转移的工具,比如用linux的crontab定时调度一个shell脚本/python脚本;或者你可以用java开发一个后台服务,用quartz这样的框架定时调度。该工具负责收集、合并和处理当天的所有日志数据;然后作为一个日志文件,它被传输到flume代理正在监视的目录中。
4.水槽水槽,根据我们上节课说的。flume代理启动后,可以实时监控linux系统上的一个目录,看是否有新的文件进来。只要有新的日志文件进来,flume就会跟随后续的通道和sink。一般来说,sink配置为HDFS。
Flume负责每天向HDFS传输一个日志文件。
5、HDFS Hadoop分布式文件系统。分布式文件系统。用于存储每日日志数据。为什么要用hadoop做存储?因为Hadoop可以存储大数据,很多数据。比如每天的日志和数据文件都是一个T,那么也许一天的日志文件可以存储在一个Linux系统上,但问题是,一个月的日志和一年的日志呢?当大量数据积累时,无法存储在单台机器上,只能存储在Hadoop大数据分布式存储系统中。
使用Hadoop MapReduce自行开发MR作业,可以使用crontab定时调度工具,每天定时执行一次;Oozie也可以用于定时调度;你也可以(百度、阿里、腾讯、JD.COM、美团)组建自己的团队,开发一个复杂、大规模、分布式的调度系统,承担全公司所有MapReduce/Hive作业的调度(对于大公司,每天可能有数万、数十万或数百万的后续Hive ETL作业用于构建数据仓库、数据分析和统计,除了MR作业用于数据清洗),旨在
6.数据清理Hadoop HDFS中的原始日志数据将进行数据清理。为什么要清理数据?因为我们的很多数据可能是不符合预期的脏数据。
HDFS:在数据清理后存储一个日志文件。
将HDFS清理后的数据导入Hive中的一个表中。这里可以使用动态分区。Hive使用分区表,每个分区保存一天的数据。
7.Hive Hive的底层也基于HDFS,充当大数据的数据仓库。数据仓库里面,以及后来,其实就是一些数据仓库建模的ETL。ETL会将原始日志所在的一个表转换成几十个甚至上百个表。这几十个甚至上百个表就是我们的数据仓库。然后,公司的统计分析师将为数据仓库中的表执行临时或每日计划的Hive SQL ETL作业。用于大数据的统计和分析。
spark/h OOP/Storm,大数据平台/系统,可能都会用到Hive的数据仓库里面的表。
总结:其实一般来说,开发会基于Hive里的数据。也就是说,在我们的大数据系统中,数据源都是Hive中的一些表。这些表可能都是经过大量Hive ETL建立的数据仓库中的一些表。然后开发满足业务需求的专用大数据平台。利用大数据平台为公司内用户提供大数据支持,促进公司发展。
二。实时数据的采集过程1。数据来源:比如网站或者app。很重要的一点就是埋了。也就是说嵌入点,什么时候在网站/app的哪个页面发生了哪些操作,前端代码(网站,JavaScript;App,android/IOS),只需通过网络请求,(Ajax;Socket),并将指定格式的日志数据发送到后端服务器。
2.后台服务器Nginx后台Web服务器(Tomcat,Jetty),后台系统(J2EE,PHP)。到这一步,它仍然可以与我们之前的离线日志收集过程相同。通过日志传送工具转到后面,并把它放在指定的文件夹中。
3-1,HDFS水槽,监控指定文件
Kafka,如何处理我们的日志数据由你决定。你可以每天收集一份,放在flume里,转移到HDFS,清洗后放在Hive里,建立一个线下数据仓库。
也可以把每一分钟的数据,或者收集到的一点一滴的数据放到一个文件里,然后传输到flume,或者直接通过API自定义,直接把一个又一个日志输入flume。Flume可以配置为向Kafka写入数据。
3-2(1)、实时NGINX-Flume-Kafka 3-2 (2)和实时Nginx—Flume—Kafka 3-2(2这一阶段采用的新架构)实时数据通常从分布式消息队列集群中读取,如Kafka;实时数据,实时日志,实时写入消息队列,比如卡夫卡;然后,我们的后端实时数据处理程序(Storm,Spark Streaming)从Kafka实时读取数据,并记录日志。然后进行实时计算和处理。卡夫卡
实时、主动地从Kafka获取数据
5.比如Storm和Spark Streaming开发的大数据实时计算系统,可以从Kafka实时拉取数据,然后对实时数据进行处理和计算。这里可以封装大量复杂的业务逻辑,甚至可以调用机器学习、数据挖掘、智能推荐的复杂算法,进而实现实时车辆调度、实时推荐。
广告流量实时统计