Hadoop大数据平台构建与应用(工作手册式)(微课版) 课件 第7、8章 Sqoop组件安装配置与应用、Flume组件安装配置与应用_第1页
Hadoop大数据平台构建与应用(工作手册式)(微课版) 课件 第7、8章 Sqoop组件安装配置与应用、Flume组件安装配置与应用_第2页
Hadoop大数据平台构建与应用(工作手册式)(微课版) 课件 第7、8章 Sqoop组件安装配置与应用、Flume组件安装配置与应用_第3页
Hadoop大数据平台构建与应用(工作手册式)(微课版) 课件 第7、8章 Sqoop组件安装配置与应用、Flume组件安装配置与应用_第4页
Hadoop大数据平台构建与应用(工作手册式)(微课版) 课件 第7、8章 Sqoop组件安装配置与应用、Flume组件安装配置与应用_第5页
已阅读5页,还剩79页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

Sqoop安装与配置任务描述因为Sqoop是一个用于在关系数据库服务器和Hadoop系统之间传输数据的工具,其中Hadoop系统主要是HDFS、Hive和HBase等,所以Sqoop安装后的配置主要就是针对这几个的环境变量的配置工作以及更新所需的Hive和HBase的程序包。任务分析由于Sqoop2偏向服务化,特别是架构稍复杂,配置部署很繁琐,Sqoop1在功能上完全可以满足基本的需求,所以本项目使用Sqoop1中的Sqoop1.4.7版本。本任务只在master节点上进行安装配置和应用即可。7.1.1安装Sqoop组件1.解压安装文件本手册所使用的版本是Sqoop1.4.7,可以从Sqoop官网下载。下载好的安装包都需上传到指定目录下,本手册指定为/root/目录,使用ls命令可以查看上传的安装包(具体上传方式请参考项目1),如图7-1所示。使用tar命令解压Sqoop到/usr/local/src文件夹,并切换到安装目录下查看,可以使用ls查看解压后的效果,如代码7-1所示,效果如图7-2所示。代码7-1解压安装包图7-1查看安装包tar-zxfsqoop-1.4.7.bin__hadoop-2.6.0.tar.gz-C/usr/local/src/cd/usr/local/src/ls图7-2查看解压好的安装包2.修改文件夹名称由于解压后的文件夹名称带有比较复杂的版本号,为了简化后续配置,此处修改文件夹名称。使用mv命令将解压的sqoop-1.4.7.bin__hadoop-2.6.0目录重命名为sqoop,如代码7-2所示,效果如图7-3所示。代码7-2重命名文件夹图7-2查看解压好的安装包tar-zxfsqoop-1.4.7.bin__hadoop-2.6.0.tar.gz-C/usr/local/src/cd/usr/local/src/ls3.修改环境变量文件为了可以在任何目录下直接执行Sqoop的相关命令,可以在环境变量文件中添加Sqoop的环境变量。参考项目2,使用“vi/root/.bash_profile”将如表7-1所示的配置信息添加到/root/.bash_profile文件的末尾,保存退出。表7-1环境变量文件的添加内容#setsqoopenvironmentexportSQOOP_HOME=/usr/local/src/sqoopexportPATH=$PATH:$SQOOP_HOME/binexportCLASSPATH=$CLASSPATH:$SQOOP_HOME/lib4.生效环境变量文件为了刷新环境变量文件的配置,需要在master节点执行下面的命令使得环境变量文件生效,如代码7-3所示。代码7-3生效环境配置文件source/root/.bash_profile7.1.2修改Sqoop配置文件1.修改sqoop-env.sh文件sqoop-env.sh是Sqoop命令执行时去加载HadoopHDFS环境变量,Hive和HBase环境变量的核心配置文件。由于/usr/local/src/sqoop/conf目录里的是配置模板文件,需要复制为sqoop-env.sh,使用代码7-4的代码复制并修改文件内容。代码7-4修改sqoop-env.sh图7-4Sqoop配置文件修改项cd/usr/local/src/sqoop/confcpsqoop-env-template.shsqoop-env.shvisqoop-env.sh打开这个配置文件后,需要修改的环境变量配置项如图7-4所示。1.修改sqoop-env.sh文件该文件中需要修改的图上的四处设置:首先将每个配置项前面的#去掉;HADOOP_COMMON_HOME和HADOOP_MAPRED_HOME均为Hadoop的安装目录;HBASE_HOME为HBase安装目录;HIVE_HOME为Hive安装目录,具体设置参考内容如表7-2所示。表7-2文件的添加内容exportHADOOP_COMMON_HOME=/usr/local/src/hadoopexportHADOOP_MAPRED_HOME=/usr/local/src/hadoopexportHBASE_HOME=/usr/local/src/hbaseexportHIVE_HOME=/usr/local/src/hiveexportHCAT_HOME=/usr/local/src/hive/hcatalog#此项为新增的配置项2.复制MySQL和Hive的驱动程序包为了使Sqoop能够连接MySQL数据库,需要将mysql-connector-java-8.0.21.jar文件放入Sqoop的lib目录中,该Jar文件的版本需要与MySQL数据库的版本相对应,否则Sqoop导入数据时会报错。(MySQL8.0.21对应的是mysql-connector-java-8.0.21.jar版本)。为了使Sqoop能够连接Hive,需要将Hive组件/usr/local/src/hive/lib目录下的hive-common-3.1.2.jar也放入Sqoop安装路径的lib目录中。使用代码7-5进行复制到/usr/local/src/sqoop/lib/,另外复制之前需要先查看读者本地的驱动包版本,不要照抄本手册。代码7-5复制程序包cp/root/mysql-connector-java-8.0.21.jar/usr/local/src/sqoop/lib/cp/usr/local/src/hive/lib/hive-common-3.1.2.jar/usr/local/src/sqoop/lib/cp/usr/local/src/hive/lib/hive-exec-3.1.2.jar/usr/local/src/sqoop/lib/7.1.3测试安装1.启动Hadoop集群执行Sqoop前需要先启动Hadoop集群,参考项目2在master节点执行start-all.sh启动,并使用jps查看Java进程是否正常,此处不再详述。2.测试连接使用代码7-6中的Sqoop命令连接MySQL,该命令的几个参数说明如下。(1)list-databases:表示显示连接上的MySQL服务器的数据库名称。(2)--connect:MySQL数据库连接URL,此处为:“jdbc:mysql://master:3306/sqoop_db”。(3)--username:MySQL数据库的用户名,此处为“root”。(4)-P:root用户的密码,在交互中输入“Password123$”。(MySQL数据库root用户的密码,请读者根据实际情况修改。)代码7-6连接MySQLsqooplist-databases--connectjdbc:mysql://master:3306/--usernameroot-P2.测试连接效果如图7-5所示。至此,以上完成了Sqoop的安装与配置。图7-5测试MySQL连接图谢谢Sqoop导入导出应用操作主讲:李强任务描述本任务主要完成基于Linux环境,在Hadoop集群掌握Sqoop导入和导出命令使用的工作。通过完成本实验任务,要求学生熟练掌握Sqoop导入和导出命令中各项参数使用的方法,以及如何查看导入导出效果。任务分析本环节分为如下两个过程。(1)导入数据:从MySQL关系型数据库中导入数据到HDFS分布式文件系统中、Hive分布式数据仓库中;(2)导出数据:从Hive分布式数据仓库中导出数据到MySQL关系数据库中。Sqoop命令执行的原理是将执行命令转化成MapReduce作业来实现数据的迁移。所以需要确保Hadoop集群正常运行,MySQL数据库正常启动以及Hive正常配置启动。7.2.1准备MySQL数据库数据准备MySQL数据库数据在MySQL数据库中创建一个名称为sqoop_db的数据库,在该数据库中创建一个名称为student的表,该表包含三个列(sid(学号),sname(姓名),sage(年龄)),并在表中添加一些测试数据,读者可以自行添加。使用代码7-7启动MySQL。代码7-7启动MySQL数据库数据准备图7-6MySQL数据库数据准备mysql-uroot-pPassword123$执行代码7-8中的MySQL的SQL语句,完成后的效果如图7-6所示。代码7-8MySQL数据库准备工作代码createdatabasesqoop_db;#创建数据库名usesqoop_db;#切换使用创建的数据库createtablestudent(sidint,snamevarchar(20),sageint);#创建student表格insertintostudentvalues(1,'张三',19),(2,'李四',20),(3,'王五',18);#往表中添加一些测试数据select*fromstudent;#查询显示表中的数据exit;#全部完成后退出MySQL客户端7.2.2Hive中准备数据库表Hive中准备数据库表要使用Sqoop工具将MySQL中刚才的测试数据导入到Hive,Hive中应该创建一个同名的数据库,以及该数据库中同名同结构的空表。使用Hive命令启动HiveCLI的用户接口后,执行代码7-9中的Hive的HQL语句创建库和表。代码7-9Hive创建数据库和表createdatabasesqoop_db;#创建数据库名usesqoop_db;#切换使用创建的数据库createtablestudent(sidint,snamevarchar(20),sageint);#创建student表格exit;#全部完成后退出Hive客户端由于Hive中执行的操作需要提交MapReduce执行工作,执行过程比较复杂,请读者参考项目4中的Hive的库和表操作效果,此处不再截图显示。7.2.3从MySQL中导入数据至Hive1.import到Hive为了可以在任何目录下直接执行Sqoop的相关命令,可以在环境变量文件中添加Sqoop的环境变量。参考项目2,使用“vi/root/.bash_profile”将如表7-1所示的配使用代码7-10中的sqoopimport命令来导入MySQL中sqoop_db库中student表的数据到Hive中sqoop_db库中student表,该命令的几个参数说明如下。(1)--connect:MySQL数据库连接URL,此处为“jdbc:mysql://master:3306/sqoop_db”。(2)--username和--password:MySQL数据库的用户名和密码,此处为“root”和“Password123$”。(3)--table:导出的数据表名,此处为“student”。(4)--fields-terminated-by:Hive中字段分隔符,此处为“|”。(5)--delete-target-dir:删除导出目的目录。(6)--num-mappers:Hadoop执行Sqoop导入导出启动的Map任务数,此处为1。(7)--hive-import--hive-database:导出到Hive的数据库名,此处为“sqoop_db”。(8)--hive-table:导出到Hive的表名,此处为“student”。请特别注意代码7-10中的斜杠表示命令换行,如果连续写完完整的命令则不需要斜杠,后面其他的Sqoop导入导出操作类似。置信息添加到/root/.bash_profile文件的末尾,保存退出。1.import到Hive代码7-10Sqoop导入命令图7-7MySQL数据库导入Hive结果sqoopimport--connectjdbc:mysql://master:3306/sqoop_db\--usernameroot--passwordPassword123$\--tablestudent\--fields-terminated-by'|'\--delete-target-dir\--num-mappers1\--hive-import--hive-databasesqoop_db--hive-tablestudent导入成功的效果如图7-7所示。2.查看Hive数据继续使用Hive命令启动HiveCLI的用户接口后,执行中的Hive的HQL语句查询student表中的数据,如代码7-11所示,发现从MySQL中成功导入的数据,效果如图7-8所示。代码7-11Hive查询数据hive#启动Hivehive>usesqoop_db;hive>select*fromstudent;图7-8Hive导入数据查询效果7.2.4从MySQL中导入数据至HDFS1.import到HDFS使用代码7-12中的sqoopimport命令来导入MySQL中sqoop_db库中student表的数据到HDFS中,该命令的几个参数说明如下。(1)--connect:MySQL数据库连接URL,此处为“jdbc:mysql://master:3306/sqoop_db”。(2)--username和--password:MySQL数据库的用户名和密码,此处为“root”和“Password123$”。(3)--table:导出的数据表名,此处为“student”。(4)--columns:导出的数据表中的列,此处为“sid,sname,sage”。(5)-m:Hadoop执行Sqoop导入启动的Map任务数,此处为1。(6)--target-dir:为数据导入到HDFS的路径,此处为“/sqoop/student”,

会自动给创建该HDFS目录和文件。导入执行成功的过程最后一段截图效果如图7-9所示。代码7-12Sqoop导入命令sqoopimport\--connectjdbc:mysql://master:3306/sqoop_db\-usernameroot-passwordPassword123$\--tablestudent--columnssid,sname,sage\-m1--target-dir'/sqoop/student'图7-4Sqoop配置文件修改项2.查看HDFS数据通过HDFS的查看数据的命令可以查询导入的HDFS文件的内容,效果如图7-10所示。也可以访问HDFS的Web页面进行数据的查看。在浏览器中输入http://master:9870(Hadoop3.1.4版本),按如下顺序操作查询数据。(1)登录网址,查看HDFSWebUI主页,单击菜单【Utilities】下的【Browsethesystem】,如图7-11所示。表7-2文件的添加内容图7-11HDFSWebUI主页图2.查看HDFS数据(2)选择进入HDFS文件系统后,能看到列表中有/sqoop的文件夹,单击文件夹【sqoop】,如图7-12所示。图7-12sqoop文件夹2.查看HDFS数据(3)单击sqoop文件夹后,里面有个student文件夹,如所示,继续单击【student】,如图

7-13所示。图7-13student文件夹2.查看HDFS数据(4)单击studen文件夹后,里面有两个文件文件,其中part-m-00000为数据存储的文件,继续单击【part-m-00000】,如图7-14所示。图7-14part-m-00000文件2.查看HDFS数据(5)单击数据文件后会弹出该文件的详细信息窗口,在该窗口上,单击【Headthefile】可以看到文件中的数据显示在下方,如图7-15所示。图7-15part-m-00000文件内容7.2.5从Hive中导出数据至MySQL1.export到Mysql使用代码7-13中的sqoopexport命令来导出Hive中sqoop_db库中student表的数据到MySQL中sqoop_db库中student表,该命令的几个参数说明如下。(1)--connect:MySQL数据库连接URL,此处为“jdbc:mysql://master:3306/sqoop_db”。(2)--username和--password:MySQL数据库的用户名和密码,此处为“root”和“Password123$”。(3)--table:导出的数据表名,此处为“student”。(4)--input-fields-terminated-by:Hive中字段分隔符,此处为“|”。(5)--export-dir:Hive数据表在HDFS中的存储路径,此处为“/user/hive/warehouse/sqoop_db.db/student/*”,因为Hive的数据实际存储在HDFS,路径为/user/hive/warehouse/数据库名称.db/表名/*。代码7-13Sqoop导出命令sqoopexport\--connect\"jdbc:mysql://master:3306/sqoop_db?useUnicode=true&characterEncoding=utf-8"\--usernameroot--passwordPassword123$\--tablestudent\--input-fields-terminated-by'|'\--export-dir/user/hive/warehouse/sqoop_db.db/student/*1.export到Mysql导出执行成功的过程最后一段截图如图7-16所示。图7-16Hive导出到MySQL执行过程2.查看MySQL数据此时可以登录MySQL数据库,查询student表中的数据效果如图7-17所示。图7-17Hive导入MySQL的数据效果谢谢用户日志数据查询与传输主讲:李强任务描述某网站的数据库中储存了约10万条用户浏览数据,现已被导出为CSV格式的文件(data_browse.csv),文件记录的是用户在该网站上的浏览设备信息,包括用户ID、浏览器、操作系统、设备类别、访问次数,具体的字段说明如表7-3所示。现通过对用户日志数据进行处理,根据操作系统类型进行用户信息分类,实现用户群分,以便研究不同用户群的兴趣特征。并筛选出操作系统类型为“iOS”的用户信息保存至Hive中的表new_browse中。表7-3字段说明属性名称属性说明visitId用户IDr浏览器operatingSystem操作系统deviceCategory设备类别visitNumber访问次数任务分析使用Sqoop实现在Hadoop和关系型数据库MySQL之间进行高效的数据传输,实现过程如下。(1)将CSV格式的用户浏览数据导入MySQL。(2)将MySQL数据库中的数据增量导入Hive。(3)将Hive中的浏览信息筛选结果导出至MySQL中。7.3.1查询MySQL用户日志数据表记录数查询MySQL用户日志数据表记录数根据表7-3所示的数据字段说明,在MySQL数据库中创建存储用户浏览数据的表browse_log,并将data_browse.csv文件数据导入browse_log表中,如代码7-14所示。实现使用eval命令查询MySQL用户浏览数据表的记录数,如代码7-15所示。程序运行结果如图7-18所示,用户浏览数据表记录数为99024。代码7-14创建数据表createdatabasebrowse;USEbrowse;//创建数据表createtablebrowse_log(visitidlong,browservarchar(50),operatingSystemvarchar(50),deviceCategoryvarchar(50),visitNumberint);//导入data_browse.csv文件数据loaddatainfile"/var/lib/mysql-files/data_browse.csv"intotablebrowse_logfieldsterminatedby',';bin/sqoopeval\--connectjdbc:mysql://master:3306/browse\--usernameroot\--password123456\--query"selectcount(browser)frombrowse_log"图7-18查询结果7.3.2增量导入MySQL中的用户日志数据至Hive增量导入MySQL中的用户日志数据至Hive用户浏览数据是一份静态离线数据,实现将MySql中用户浏览表browse_log中“operatingSystem”是“iOS”的数据导入Hive中,具体操作步骤如下。(1)导入“system”是“iOS”的数据至Hive中的表browse_log,如代码7-16所示。(2)在Hive中查询导入的前5条数据,结果如图7-19所示。代码7-16导入数据bin/sqoopimport\--connectjdbc:mysql://master:3306/browse\--usernameroot--password123456\--tablebrowse_log\--num-mappers1\--lines-terminated-by'\n'\--fields-terminated-by','\--hive-import\--hive-overwrite\--hive-tablebrowse_log\--hive-drop-import-delims\--where"operatingSystemlike'%iOS%'"图7-19记录数查询结果7.3.3导出Hive中的筛选结果至MySQL导出Hive中的筛选结果至MySQL实现将存储在Hive中的筛选结果数据导出至MySQL中,首先在MySQL数据库中创建一个与Hive表browse_log数据结构一致的表new_browse,如代码7-17所示。然后使用Sqoop传输命令,将Hive中的筛选结果数据导出至MySQL表中,如代码7-18所示。代码7-17创建数据表createtablenew_browse(browservarchar(50),operatingSystemvarchar(50),deviceCategoryvarchar(50),visitidlong,visitNumberint);代码7-18导出Hive中的数据到MySQLbin/sqoopexport\--connectjdbc:mysql://master:3306/browse\--usernameroot--password123456\--tablenew_browse\--num-mappers1\--hcatalog-databasedefault\--hcatalog-tablebrowse_log\--input-fields-terminated-by','\--fields-terminated-by','\--input-null-string'\\N'\--input-null-non-string'\\N'导出Hive中的筛选结果至MySQL代码7-18的程序运行结束后,在MySQL中查询new_browse表的数据,结果如图7-20所示。图7-20查询结果谢谢Flume安装与配置任务描述Flume的安装相对来说比较简单,本任务的核心配置是设置Flume代理的配置文件,并通过这个代理实例完成数据的采集。任务分析Flume安装后只需要增加运行的环境变量,并设置Java的安装目录即可;使用Flume需要编辑一个配置文件,在配置文件当中描述Source、Channel与Sink的具体实现,而后再运行一个Agent实例,在运行Agent实例的过程中会读取配置文件的内容,Flume就会完成数据采集的任务,Source组件可以设置为系统日志、文件目录、Kafka等类型,Sink可以传输给HDFS、Hive或HBase等,在本任务应用案例中,监控采集文件目录的日志并传输到HDFS文件中。8.1.1安装Flume组件1.解压安装文件下载好的安装包都需上传到指定目录下,本手册指定为/root/目录,使用ls命令可以查看上传的安装包(具体上传方式请参考项目1),如图8-1所示。代码8-1解压安装包tar-zxfapache-flume-1.9.0-bin.tar.gz-C/usr/local/src/ls/usr/local/src/图8-1查看安装包使用tar命令解压Flume到/usr/local/src文件夹,并切换到安装目录下查看,可以使用ls查看解压后的效果,如代码8-1所示,效果如图8-2所示。图8-2查看解压好的安装包2.修改文件夹名称由于解压后的文件夹名称带有比较复杂的版本号,为了简化后续配置,此处修改文件夹名称。使用mv命令将解压的apache-flume-1.9.0-bin目录重命名为flume,如代码8-2所示,效果如图8-3所示:代码8-2重命名文件夹mv/usr/local/src/apache-flume-1.9.0-bin/usr/local/src/flumels/usr/local/src/图8-3重命名文件夹3.修改环境变量文件为了可以在任何目录下直接执行Flume的相关命令,可以在环境变量文件中添加Flume的环境变量。参考项目2,使用“vi/root/.bash_profile”编辑环境变量文件,将如表8-1所示的配置信息添加到/root/.bash_profile文件的末尾,保存退出。表8-1环境变量文件的添加内容#setflumeenvironmentexportFLUME_HOME=/usr/local/src/flumeexportPATH=$PATH:$FLUME_HOME/bin4.生效环境变量文件为了刷新环境变量文件的配置,需要在master节点执行下面的命令使得环境变量文件生效,如代码8-3所示。代码8-3生效环境配置文件source/root/.bash_profile8.1.2配置Flume1.修改flume-env.sh配置文件flume-env.sh是Flume命令执行时去加载Java的环境变量设置文件。由于/usr/local/src/flume/conf目录里的是配置模板文件,需要复制为flume-env.sh,使用代码8-4的代码复制并修改文件内容。打开配置文件后,首先将“exportJAVA_HOME”前面的#去掉;值的内容修改为Java的安装目录,具体设置参考内容如表8-2所示。代码8-4修改flume-env.sh文件cd/usr/local/src/flume/confcpflume-env.sh.templateflume-env.shviflume-env.sh表8-2文件的修改内容exportJAVA_HOME=/usr/local/src/java2.更新软件包因为Hadoop是3.1.4版本的,所带的guava版本较高,与Flume带的版本冲突,所以这里要在Flume的lib文件夹下将guava-11.0.2.jar删除,并将Hadoop的较高版本guava的Jar包复制进来,可以使用代码8-5中的代码来完成软件包的更新,具体的软件包版本应该参加本地的实际版本进行调整。代码8-5更新guava包cd/usr/local/src/flume/librmguava-11.0.2.jarcp/usr/local/src/hive/lib/guava-27.0-jre.jar./#放到/usr/local/src/flume/lib当前的目录下3.验证Flume安装情况至此,Flume的安装与配置已经完成,可以使用中代码8-6的命令,验证Flume的安装配置情况。执行代码8-6后,显示Flume的版本号为1.9.0,表示Flume安装成功,如图8-4所示。代码8-6验证Flumeflume-ngversion图8-4Flume的安装版本8.1.3创建代理文件创建代理文件要完成Flume数据采集任务,需要创建一个Agent的配置文件,内容包括Source、Channel和Sink类型和属性配置。在Flume安装目录下创建一个simple_hdfs_flume.conf文件,如代码8-7所示。在该文件中添加内容,如表8-3所示,其中a1.sources.r1.spoolDir的选项设置为“/usr/local/src/hadoop/logs/”,表示采集Hadoop集群运行的日志记录;a1.sinks.k1.hdfs.path设置为“hdfs://master:9000/tmp/flume”,表示将采集到的日志以文件的形式存储到HDFS系统该目录,其他具体的设置请参考其中的注释。代理配置文件中各个组件的属性设置可以有很多的选择,具体请参考官方文档,这里仅举例说明。代码8-7创建Flume代理配置文件cd/usr/local/src/flume/conf/visimple_hdfs_flume.conf#设置agent的名称为a1,a1的sources组件名称为r1,a1的sinks组件名称为k1,a1的channels组件名称为k1a1.sources=r1a1.sinks=k1a1.channels=c1#下面设置r1的类型为监听目录,并设置监听的目录以及文件头属性a1.sources.r1.type=spooldira1.sources.r1.spoolDir=/usr/local/src/hadoop/logs/a1.sources.r1.fileHeader=true#下面设置k1的类型为HDFS,并设置HDFS的目标路径以及文件的相关的属性a1.sinks.k1.type=hdfsa1.sinks.k1.hdfs.path=hdfs://master:9000/tmp/flume......省略表8-3代理配置文件内容8.1.4启动Flume并传输数据启动Flume并传输数据参考项目2在master节点执行start-all.sh启动,并使用jps查看Java进程是否正常。在master节点的一个终端窗口使用中的Flume命令加载simple_hdfs_flume.conf代理配置文件,并启动Flume进行日志数据的采集与传输,如代码8-8所示。启动Flume后,Agent的a1实例启动后,会成功创建c1、r1、k1组件实例,启动后的最后一段内容如图8-5所示,表示Flume正在监控对应的目录,并进行数据的采集与传输中,如果需要查看采集和传输的效果,请不要关闭该窗口,打开新的窗口查看。图8-5Flume启动后采集和传输的过程图代码8-8启动Flumecd/usr/local/src/flume/confflume-ngagent--conf-filesimple_hdfs_flume.conf--namea18.1.5查看Flume传输的文件数据启动Flume并传输数据开启一个新的master节点终端,进入配置文件中所设置的HDFS文件存储路径,查看该文件路径的情况,如代码8-9所示。可以看到该文件夹下面已经传输了很多的日志文件,每一次或者不同的主机产生的日志文件记录是不相同的,具体情况参考如图8-6所示。图8-6HDFS收集的数据文件代码8-9查看HDFS文件目录hdfsdfs-ls/tmp/flume启动Flume并传输数据也可以通过HDFS的WebUI界面查看,具体文件情况参考如图8-7所示。图8-6HDFS收集的数据文件谢谢广告日志数据采集系统主讲:李强任务描述系统运维和开发人员可以通过日志了解服务器软硬件信息、检查配置过程中的错误及错误发生的原因。经常分析日志可以了解服务器的负荷,性能安全性,及时分析相关问题、追查错误根源纠正错误。许多公司的业务平台每天都会产生大量的日志数据。收集业务日志数据,供离线和在线的分析系统使用,正是日志收集系统的要做的事情。现有一个服装电商网站,与某热门视频网站公司广告部合作,在视频网站中为用户推送广告,要求在网站主页面需要投放广告,且保证曝光率不低于1/5;在视频播放过程中穿插广告,且保证总曝光量不低于100000次,基于该目标,将使用Flume模拟广告日志采集系统的数据采集过程。在广告日志采集系统中有两种日志类型:一种是广告系统运行过程中产生的日志,是广告系统在运行过程中产生的文件型系统日志;一种是广告曝光日志,一个广告的一次曝光,会产生一条曝光日志。本案例将会模拟实时采集系统生成的日志文件catalina.log,并保存到HDFS,接着模拟广告曝光记录数据的采集,并将广告曝光记录数据采集并保存至HDFS,所用数据为case_data_new.csv,各数据字段说明如表8-4所示。任务描述表8-4case_data_new.csv数据字段说明属性名称中文名称示例备注rank记录序号5(第5条记录)

dt相对日期3(第3天)单位为天cookiecookie值7083a0cba2acd512767737c65d5800c8

ipIP地址47经过脱敏idfaidfa值bc50cc5fb39336cf39e3c9fe1b16bf48可用于识别IOS用户imeiimei值990de8af5ed0f3744b61770173794555可用于识别Android用户androidandroid值7730a40b70cf9b023d23e332da846bfb可用于识别Android用户openudidopenudid值7aaeb5d6af25f9fe918ec39b0f79a2c8可用于识别IOS用户macmac值6ed9fcefd06a2ab5f901e601a3a53a2d可用于识别不同硬件设备timestamps时间戳0(记录于数据区间的初始时间点)

camp项目ID61520

creativeid创意ID0

mobile_os设备OS版本信息5.0.2该值为原始值mobile_type机型'Redmi+Note+3'(设备为红米Note3)

app_key_md5appkey信息ffe435bdb6ce18dd4758c0005c4787db

app_name_md5appname信息6f569b4fa576d25fb98e60bda9c97426

placementid广告位信息72ee620530c7c8cd4b423d4b4502b45b

useragent浏览器信息"Mozilla%2f5.0%20%28compatible%3b

mediaid媒体id信息1118

os_typeOS类型标记0(采集到的OS类型标记为0)

born_timecookie生成时间160807(第160807日)任务分析为了贴近真实的生产环境,针对广告日志系统中产生的系统日志和广告曝光记录数据,将通过数据模拟产生的方式对数据进行采集,采集步骤如下。(1)通过脚本定时抽取数据并写入指定的目录,模拟系统日志产生的过程。(2)编写conf脚本实现采集系统日志,并保存到HDFS文件系统。(3)创建MySQL数据表,并通过脚本实时导入数据,模拟曝光记录产生的过程。(4)编写conf脚本实现采集曝光记录,并保存到HDFS文件系统。8.2.1广告系统日志数据采集广告系统日志数据采集将系统日志catalina.log上传至Linux系统目录/opt,并在/opt目录下创建新文件夹/flumeproject,用于存放抽取的数据。在/opt目录下创建脚本createLog.sh,内容如代码8-10所示,可用于抽取100行数据,并按日期格式存储至/flumeproject。代码8-10脚本createLog.sh的内容time=$(date"+%Y%m%d%H%M%S")shuf-n100/opt/catalina.log>/opt/flumeproject/catalina_${time}.log在master主节点输入代码“crontab-e”,打开定时任务,输入内容“*****sh/opt/createLog.sh”,开始每分钟抽取100行数据,模拟系统日志的产生。创建脚本ad-spool-file-hdfs.conf,实现采集系统日志并保存至HDFS的配置,脚本内容如代码8-11所示。代码8-11脚本ad-spool-file-hdfs.conf的内容ad.sources=r1ad.channels=c1ad.sinks=s1#定义sourcead.sources.r1.type=spooldirad.sources.r1.spoolDir=/opt/flumeprojectad.sources.r1.channels=c1#设置时间戳拦截器erceptors=tserceptors.ts.type=timestamp#定义filechannel......省略广告系统日志数据采集将脚本ad-spool-file-hdfs.conf放置在/usr/local/flume/conf/目录下,启动FlumeAgent程序采集广告系统日志数据,如代码8-12所示。执行代码8-12,即可在HadoopWeb端口查看/user/root/flumeproject目录下有系统日志产生,如图8-8所示。至此,完成广告系统日志数据的模拟产生和采集过程。代码8-12启动FlumeAgent采集广告系统日志数据/usr/local/flume/bin/flume-ngagent-c/usr/local/flume/conf-f/usr/local/flume/conf/ad-spool-file-hdfs.conf-nad-Dflume.root.logger=INFO,console图8-8在HadoopWeb端口查看采集的文件8.2.2广告曝光日志数据采集广告曝光日志数据采集进入MySQL命令窗口,创建数据库flume,并在flume下创建广告日志数据表case_data,如代码8-13所示,用于存放广告系统日志数据。代码8-13创建广告日志数据表case_datacreatedatabaseflume;useflume;createtablecase_data(`rank`int,dtint,cookievarchar(200),ipvarchar(200),idfavarchar(200),imeivarchar(200),androidvarchar(200),openudid

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论