1.概述
本课程的视频教程地址:《项目整体概述》
本节给大家分享的主题如下图所示:
下面我开始为大家分享第二节的内容——《项目整体概述》,下面开始今天的分享内容。
2.内容
从本节开始,我们将进入到Hadoop项目的整体概述一节学习,本节课程为大家介绍的主要知识点有一下内容,如下图所示:
下面,我们首先来看看项目的整体流程,其流程如下图所示:
项目流程可以分为4个模块,他们分别是数据收集,集群存储,分析计算和结果处理。
下面我分别为大家讲解这4个模块的作用。 我们知道,在做统计时,数据源是前提,有了数据源我们才能在此基础上做相应的计算和分析。 收集数据一般都有专门的集群去负责收集这方面的工作。
在完成收集工作后,我们需要将这些文件集中起来,这里存储采用的是分布式文件系统(HDFS)。我们将收集的数据 按一定的规则分类,并存储在指定的HDFS文件系统中。从收集到存储,数据源的准备阶段就算完成了。接着,我们可以对数据源进行相关指标的分析与计算,在 Hadoop 2.x 版本后编程模型有了良好的拓展,除了支持MapReduce,还支持其以外的模型,如:Spark。另外,还有Hive,Pig,Tez 等相关技术,来辅助我们完成分析计算这块,所以在分析,计算这块技术选择很多,本课程选用MapReduce和Hive组合来 完成相关工作,其它相关技术大家可以在课下对其做相应的补充学习。
完成分析计算后,我们会得到统计后的结果,这些结果是存放在HDFS文件系统上的,如何去处理这些结果,让这些结果变得 可视化。这就涉及到最后一个模块--结果处理。由于这些结果是存储在HDFS文件系统中的,为了及时响应外界请求,我们需要将HDFS的数据导出到关系型 数据库(如:Mysql) 或非关系型数据库(如:HBase)。在导入到关系型数据库时,我们需要借助一个Hadoop组件--Sqoop,这是一款开源的工具, 主要用于在Hadoop与传统的数据库(如:Mysql)间进行数据的传递,可将一个关系型数据库(如:Mysql)中的数据导入到 Hadoop的HDFS中,也可以将HDFS的数据导入到关系型数据库。在HDFS与HBase之间进行数据传递时,我们可以直接使用 HBase提供的导入与导出工具,这些工具包含在HBase的JAR包中。他们使用MapReduce进行导入导出操作,可以将数据由 HBase导出到HDFS,或者是将HDFS上的数据导出到HBase。最后,我们将数据库中的结果通过Thrift这样的RPC协议,对外提供数据接 口。
在项目流程中,我讲过数据收集模块,下面为大家详细讲解这些数据源的获取方式。 如下图所示:
数据源的产生包含:
1.Web日志(如Nginx,JBoss,WebLogic等一些Web容器记录产生的日志信息)
2.SystemLog(系统日志),这部分日志包含服务端应用记录的日志。
3.DB(存于数据库中的数据)
在实际业务中,我们一般采用Flume NG集群来收集分发日志,它是一个高可用的,高可靠的,分布式的海量日志采集、聚合和传输的系统, Flume支持在日志系统中定制各类数据发送方,用于收集数据;同时,Flume提供对数据进行简单处理, 并写到各种数据接受方(可定制)的能力,如收集Web日志和SystemLog日志,我们可以分别在Web日志节点和SystemLog节点部署 Flume的Agent即可,而DB(如:存在于Mysql数据库中的数据),我们可以使用ETL工程抽取清洗后,在由Agent代理发送到Flume, 最后Flume将数据存储到HDFS文件系统上。
关于Flume的集群的收集演示过程,大家可以参考视频进行演示——《项目整体概述》
3.结束语
这就是本节的主要内容,主要就对Hadoop项目的整体流程进行概述,对后续学习Hadoop项目实战做一个准备工作。
如果本教程能帮助到您,希望您能点击进去观看一下,谢谢您的支持!