实训笔记8.24

news2025/1/24 11:44:18

实训笔记8.24

  • 8.24笔记
    • 一、Sqoop数据迁移工具
      • 1.1 Sqoop的基本概念
      • 1.2 Sqoop的基本操作
        • 1.2.1 命令语法
        • 1.2.2 list-databases
        • 1.2.3 list-tables
        • 1.2.3 eval
        • 1.2.4 import
        • 1.2.5 export
        • 1.2.6 导入
    • 二、Flume日志采集工具
      • 2.1 数据采集的问题
      • 2.2 数据采集一般使用的技术
      • 2.3 扩展:通过爬虫技术采集第三方网站数据
        • 2.3.1 爬虫目前主要有两种类型的爬虫
      • 2.4 Flume日志采集工具概述
        • 2.4.1 Flume的组成架构
        • 2.4.2 Flume的采集数据的工作流程
        • 2.4.3 Flume安装部署:三部曲

8.24笔记

一、Sqoop数据迁移工具

1.1 Sqoop的基本概念

Sqoop数据迁移工具主要作用就是实现将数据在RDBMS(MySQL、SQL Server、Oracle)和Hadoop平台(HDFS、Hive、HBase)之间进行来回的迁移。

Sqoop中,将RDBMS的数据迁移到Hadoop平台我们称为数据导入import,将Hadoop平台的数据迁移到RDBMS中称之为数据导出export。

Sqoop在进行数据的导入和导出时,会使用sqoop提供的命令来进行操作,但是sqoop底层会把命令转换称为MapRecude程序在YARN上运行(sqoop的运行需要Hadoop平台环境,Sqoop也是基于Hadoop平台的软件)

【注意】和sqoop技术一样的还有一个技术叫做DataX,DataX是阿里云提供的一个数据迁移工具,除了可以实现和sqoop一样的功能,同时还提供了一些sqoop无法完成一些数据迁移操作。Datax底层不是基于MapReduce

1.2 Sqoop的基本操作

1.2.1 命令语法

sqoop command params

command:help 、eval、import、export、list-databases、list-tables、version

1.2.2 list-databases

查看RDBMS中有哪些数据库的 sqoop list-databases 参数

参数说明
–driverJDBC的驱动类
–connectJDBCUrl
–username数据库的用户名
–password数据库的密码

1.2.3 list-tables

查询某一个RDBMS数据库下有哪些数据表的 sqoop list-tables 参数

参数说明
–driverJDBC的驱动类
–connectJDBCUrl
–username数据库的用户名
–password数据库的密码

1.2.3 eval

通过sqoop连接RDBMS执行SQL语句 sqoop eval 参数

参数说明
–driverJDBC的驱动类
–connectJDBCUrl
–username数据库的用户名
–password数据库的密码
–query |-esql语句即可

1.2.4 import

实现数据导入的,将RDBMS的数据导入到HDFS、Hive、HBase中

  1. 导入数据到HDFS

    参数说明
    –driverJDBC的驱动类
    –connectJDBCUrl
    –username数据库的用户名
    –password数据库的密码
    –table指定导入RDBMS中哪个数据表的数据
    –columns可以不写,RDBMS数据表的列名的列表,将数据表的指定列导入,如果不写,代表导入table指定的数据表的所有列的数据
    –where ‘条件’可以不写,根据筛选条件导入RDBMS的–table指定数据表的指定数据,如果不加,那么默认代表导入–table指定的数据表的所有数据
    –query ‘dql语句’根据查询语句的结果导入指定的数据,–query不能和–table、–columns、–where一起使用,如果–query的DQL语句中出现了where子语句,必须在where子语句中添加一个 and $CONDITIONS
    –target-dir导入到HDFS上的目录路径
    –delete-target-dir导入数据到HDFS上时,路径如果提前存在会报错,命令代表删除存在的–target-dir目录
    –as-textfile|–as-sequencefile…导入数据在HDFS上存储的文件格式
    –num-mappers | -m导入程序在底层转换称为多个map task任务执行
    –fields-terminated-by指定将数据导入到HDFS的文件中时,列和列的分隔符,默认一种特殊字符
    –lines-terminated-by指定将数据导入到HDFS的文件中时,行和行的分隔符,默认就是换行符
    –null-string如果导入的MySQL数据表的某一个字符串类型的列的值为null,那么我们在HDFS的文件中使用什么字符替换null值
    –null-non-string如果导入的MySQL数据表的某一个非字符串类型的列的值为null,那么我们在HDFS的文件中使用什么字符替换null值
  2. 导入数据到Hive

    1. 先把数据导入到HDFS

    2. 再把导入到HDFS上的数据装载到Hive数据表中

    3. 参数列表

      参数说明
      –driverJDBC的驱动类
      –connectJDBCUrl
      –username数据库的用户名
      –password数据库的密码
      –table指定导入RDBMS中哪个数据表的数据
      –columns可以不写,RDBMS数据表的列名的列表,将数据表的指定列导入,如果不写,代表导入 --table指定的数据表的所有列的数据
      –where ‘条件’可以不写,根据筛选条件导入RDBMS的–table指定数据表的指定数据,如果不加,那么默认代表导入–table指定的数据表的所有数据
      –query ‘dql语句’根据查询语句的结果导入指定的数据,–query不能和–table、–columns、–where一起使用,如果–query的DQL语句中出现了where子语句,必须在where子语句中添加一个 and $CONDITIONS
      –hive-import执行Hive的导入操作
      –hive-database指定导入到Hive的哪个数据库
      –hive-table指定导入到Hive的哪个数据表,数据表可以不用提前存在
      –create-hive-table如果指定的hive数据表不存在,通过该选项自动创建表,但是如果Hive数据表存在的,那么该参数不需要添加
      –num-mappers | -m导入程序在底层转换称为多个map task任务执行
      –fields-terminated-by指定将数据导入到HDFS的文件中时,列和列的分隔符,默认一种特殊字符,同时自动创建Hive数据表时,表的列的分隔符
      –lines-terminated-by指定将数据导入到HDFS的文件中时,行和行的分隔符,默认就是换行符 一般是不使用这个参数的,就算我们设置了也不生效,除非我们加上一些特殊参数
      –null-string如果导入的MySQL数据表的某一个字符串类型的列的值为null,那么我们在HDFS的文件中使用什么字符替换null值
      –null-non-string如果导入的MySQL数据表的某一个非字符串类型的列的值为null,那么我们在HDFS的文件中使用什么字符替换null值
    4. 注意事项

      1. 将RDBMS的数据导入到Hive时,因为先把数据导入到HDFS,再把数据load装载到Hive中,因此我们要求导入到HDFS上的文件中列的分隔符必须和Hive数据表的列的分隔符保持一致,如果不一致数据无法导入成功。
      2. 如果Hive数据表不存在,那么再导入的时候可以指定---create-hive-table创建数据表,创建的数据表的列的分隔符和–fields-terminated-by设置的HDFS上文件的列的分隔符保持一致的
  3. 全量导入和增量导入

    把RDBMS的数据导入到HDFS或者Hive都是有两种方式:全量导入、增量导入 全量导入指的是将RDBMS表的所有数据导入到HDFS或者Hive 增量导入指的是只将新增的RDBMS表的所有数据导入到HDFS或者Hive中默认情况下,HDFS导入数据时会覆盖原有的数据,hive导入数据时,会把数据重复性的在表中添加一份。

    必须考虑全量导入和增量导入问题。只学习Hive的

    1. Hive的全量导入

      --hive-overwrite参数,将RDBMS表中的所有数据(–table 如果加了–query --columns,就不是全量的问题)添加到Hive对应的数据表,而且覆盖添加。

      一般使用在第一次将RDBMS的数据导入到Hive中,如果第一次导入不需要–hive-overwrite选项 如果不是第一次导入,还想全量导入,那么必须加–hive-overwrite选项

    2. Hive的增量导入

      sqoop的增量导入有两种方式:append lastmodified,其中Hive的增量导入只支持append方式,HDFS增量导入支持lastmodified方式

      append增量导入需要指定RDBMS中一个可以自增或者是数字依次变大的一个列,同时还需要指定上一次导入的时候值的大小

      --check-column RDBMS对应的列

      --incremental append

      --last-value num

  4. 【导入数据时间字段的问题】

    数据导入之后,RDBMS中的时间和Hive中时间不一致,主要由于时区的问题导致的,RDBMS使用的时区和导入数据时指定的时区参数不是同一个时区导致的问题。

    只需要保证RDBMS的时区和导入参数设置的时区serverTimezone保持一致即可。

    RDBMS的时区:select @@global.time_zone

    默认情况下,只要我们在中国,没有改过数据库和系统的时区,数据库和系统时区默认是+0800,因此serverTimezone=Asia/Shanghai

1.2.5 export

将Hadoop平台的数据导出到RDBMS中,导出比导入简单。导出数据时,因为Hive、HBase存储的数据都在HDFS上,因此导出只需要学习如何将HDFS上的数据导出到RDBMS即可。

【导出的注意事项】:RDBMS中的数据表必须提前存在,如果不存在,会报错

导出参数

类型参数说明
导出时和RDBMS相关的参数–driverJDBC的驱动类
–connectJDBCUrl
–username数据库的用户名
–password数据库的密码
–table指定导入RDBMS中哪个数据表的数据
–columns <col,col,col…>代表的rdbms的列名,列名必须和文件中列的顺序保持一致,防止数据串列
导出HDFS的参数–export-dir导出的HDFS哪个目录下的文件数据
–num-mappers | -m将导出命令翻译称为n个map task任务
–input-fields-terminated-by很重要,指定HDFS上文件中列和列的分隔符的
–input-lines-terminated-by指定HDFS上文件行和行的分割符 行的分隔符\n
–update-mode取值allowinsert和updateonly,导出数据的两种模式 allowinsert 更新已经导出的数据,同时追加新的数据 对mysql数据库目前不支持的 updateonly 只更新以前导出的数据,新的数据不会导出
–update-key–update-mode如果想实现它的功能,必须和–update-key结合使用,而且–update-day最好指定一个RDBMS的主键字段,否则update-mode的效果会出现混乱

【注意】如果没有指定update-mode 那么默认是追加的形式导出(会出数据重复)

如果我们想要导出数据到MySQL,而且还不想让数据重复,可以先使用sqoop eval 操作执行清空目标表数据的命令,清空成功以后再导出数据。

1.2.6 导入

导入一般是我们需要对RDBMS的数据进行大数据处理分析时,我们把RDBMS的数据通过import导入到HDFS或者Hive,导出之后我们处理完成,得到结果数据表,然后把结果数据表通过export导出到RDBMS中,用于后期的数据可视化展示。

二、Flume日志采集工具

2.1 数据采集的问题

数据采集一般指的是将数据采集到大数据环境下进行持久化、海量化的保存,目的主要是为了我们后期的大数据处理(数据统计分析、数据挖掘等等)沉底数据基础。

不同的来源的数据我们一般有不同的数据采集方式

  1. 数据来源于我们的RDBMS关系型数据库:Sqoop数据迁移工具实现数据的采集
  2. 数据来源于我们系统运行产生的日志文件:日志文件记录的数据量特别庞大,但是日志文件不属于大数据存储系统中东西,因此日志文件记录不了海量的数据,日志文件都会有一个定期清理规则。采集日志文件数据到大数据环境中。 一般采集日志文件数据到大数据环境使用的就是Flume技术
  3. 数据来源于其他网站:开发一个电影网站,电影网站应该具备哪些功能,哪些类型的电影能受用户的欢迎。分析竞品数据,这种情况竟品数据都是人家别人家网站的数据,但是我们需要分析,但是人家不给你数据,通过爬虫获取数据(一不留神就犯法)。
  4. 数据来源于各种传感器设备:不需要我们管
  5. 第三方提供、购买的第三方数据、开源数据集平台提供的(阿里云的天池数据集、kaggle数据集平台、飞浆数据集平台、各个地区的政府公开数据集平台)

2.2 数据采集一般使用的技术

sqoop技术:采集RDBMS的数据到大数据环境中

Flume技术:采集系统/网站产生的日志文件数据、端口数据等等到大数据环境中

爬虫技术:采集第三方的数据,爬虫一般是把采集的数据放到一个文件或者RDBMS数据库当中

2.3 扩展:通过爬虫技术采集第三方网站数据

爬虫技术就是通过读取网页/网站的界面结构,获取网页中嵌套的数据

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-9oPvCpo4-1692874175452)(./8.24/96623B46-FF42-4d5d-8F37-80A1CD28B94A.png)]

2.3.1 爬虫目前主要有两种类型的爬虫

  1. 通过代码进行爬虫 python写的
    1. 优点:在于可以定制化爬虫内容
    2. 缺点:
      1. 编写代码,代码是非常复杂
      2. 很多网站做了反爬虫校验,可能写了代码也无法爬取数据
  2. 通过可视化爬虫工具爬虫
    1. 优点:不需要写一行代码,只需要点点点就可以定制化数据爬虫,反爬虫问题不用担心
    2. 缺点:
      1. 无法随心所欲爬取数据
      2. 可能会收费
    3. 八爪鱼爬虫工具、集搜客爬虫工具…

2.4 Flume日志采集工具概述

Flume也是Apache开源的顶尖项目,专门用来采集海量的日志数据到指定的目的地。

Flume采集数据采用一种流式架构思想,只要数据源有数据,就可以源源不断的采集数据源的数据到目的地

2.4.1 Flume的组成架构

Flume之所以可以实现采集不同数据源(不仅仅只包含日志文件数据)到指定的目的地,源于Flume的设计机构。

  1. Agent:一个Flume采集数据的进程,一个Flume软件可以启动多个Flume采集进程Agent
  2. Source:Flume的一个数据源组件,是Flume专门用来连接数据源的组件,一个Flume采集进程Agent中,Source组件可以有一个也可以有多个
  3. Channel:Flume中一个类似于缓存池的组件,缓存池的主要作用就是用来临时保存source数据源采集的数据,目的地需要数据,从缓冲池中获取,防止数据源数据产生过快,而目的地消费数据过慢,导致程序崩溃的问题。一个Agent中,可以存在多个Channel组件
  4. Sink:Flume中一个目的地(下沉地)组件,是Flume专门用来连接目的地的组件,一个Flume进程中,sink组件也可以有多个,但是一个sink只能从一个channel中获取数据。不能一个sink从不同channel拉取数据
  5. event:Flume中数据传输单位。Flume采集数据源的数据时,会把数据源的数据封装为一个个的event。

脚本文件xxx.conf:需要用户自己编写的,Flume采集数据时,数据源和目的地有很多种,因此如果我们采集数据时,我们必须自定义一个脚本文件,在脚本文件中需要定义采集的数据源的类型、channel管道的类型、sink的目的地的类型、以及source channel sink三者之间的关系。脚本文件定义成功之后,我们才能去根据脚本文件启动Flume采集进程Agent

【注意】一个source只能连接一个数据源,一个sink只能连接一个目的地

2.4.2 Flume的采集数据的工作流程

首先我们先编写xx.conf脚本文件定义我们的采集的数据源、目的地、管道的类型,定义成功之后我们根据脚本启动Flume采集进程Agent。一旦当Flume采集进程启动成功,source就会去监听数据源的数据,一旦当数据源有数据产生,那么source组件会把数据源的数据封装为一个个的event,然后source把event数据单位传输到channel管道中缓存,然后sink组件会从channel中拉取指定个数的event,将event中数据发送给sink连接的目的地。

2.4.3 Flume安装部署:三部曲

  1. 上传解压
  2. 配置环境变量
  3. 修改配置文件
    1. conf/flume-env.sh
    2. bin/flume-ng flume运行需要Java环境,文件中需要指定Flume运行需要的内存容量

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/924511.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Tokenview再度升级:全新Web3开发者APIs数据服务体验!

Tokenview发布全新版本的区块链APIs和数据服务平台&#xff0c;为开发者打造更强大、更便捷的开发体验&#xff01; 此次升级&#xff0c;我们整合了开发者使用习惯以及Tokenview产品优势。我们深知对于开发者来说&#xff0c;时间是非常宝贵的&#xff0c;因此我们努力提供一…

联合注入步骤

使用场景&#xff1a; 有回显&#xff0c;可以看到某些字段的回显信息 像下面的有具体的回显信息 一、判断注入位点 在原始的id&#xff08;参数&#xff09;的输入后面添加额外的条件 如果and 11 有结果&#xff0c;and10没有结果输出&#xff0c; 就说明我们添加的额外条件…

sqlmap安装以及运用

目录 一、sqlmap简介 linux系统安装 windows系统安装 二.sqlmap确定目标 (1) sqlmap直连数据库 (2) sqlmap的URL探测 (3) Sqlmap文件读取目标 (4) Sqlmap Google批量扫注入 一、sqlmap简介 sqlmap是一个开源的渗透测试工具&#xff0c;它可以自动化检测sql注入漏洞利用…

opencv 文档识别+UI界面识别系统

目录 一、实现和完整UI视频效果展示 主界面&#xff1a; 识别结果界面&#xff1a; 查看处理图片过程&#xff1a; 查看历史记录界面&#xff1a; 二、原理介绍&#xff1a; 将图像变换大小->灰度化->高斯滤波->边缘检测 轮廓提取 筛选第三步中的轮廓&#xf…

Unity OnDrawGizmos的简单应用 绘制圆形

编辑器和配置表各有各的好。 卡牌游戏即使再复杂&#xff0c;哪怕是梦幻西游&#xff0c;大话西游那种&#xff0c;甚至wow那种&#xff0c;用配表都完全没问题。但是崩坏3&#xff0c;或者鬼泣&#xff0c;格斗游戏&#xff0c;可视化编辑器是唯一的选择。 开发初期刚开始配技…

2.redis数据结构之Hash

Hash-散列类型:H 为什么选择Hash? 假设有User对象以JSON序列化的形式存储到Redis中&#xff0c;User对象有id&#xff0c;username、password、age、name等属性&#xff0c;存储的过程如下&#xff1a; 保存、更新&#xff1a; User对象 -> json(string) -> redis 如果在…

基于mha+mycat2+gtid的半同步主从复制双vip高可用MySQL集群

目录 项目名称 项目架构图 项目概述 项目准备 项目步骤 一、使用ansible编写palybook实现4台二进制安装MySQL环境的部署&#xff0c;并把master上的基础数据下发到所有slave服务器上 1. 建立免密通道 2.安装ansible在ansible服务器上&#xff0c;并写好主机清单 3.将…

Ubuntu20.04安装软件报错:The following packages have unmet dependencies

Ubuntu20.04更换阿里云源后安装软件都会报错&#xff1a;The following packages have unmet dependencies 查看资料&#xff0c;大概是ubuntu本身的源比较版本较老&#xff0c;而阿里云的源比较新&#xff0c;因此版本不匹配造成依赖的库不匹配&#xff0c;所以只要将阿里云的…

【微服务】03-HttpClientFactory与gRpc

文章目录 1.HttpClientFactory &#xff1a;管理外向请求的最佳实践1.1 核心能力1.2 核心对象1.3 HttpClient创建模式 2.gRPC&#xff1a;内部服务间通讯利器2.1 什么是gRPC2.2 特点gRPC特点2.3.NET生态对gRPC的支持情况2.4 服务端核心包2.5 客户端核心包2.5 .proto文件2.6 gRP…

opencv 水果识别+UI界面识别系统,可训练自定义的水果数据集

目录 一、实现和完整UI视频效果展示 主界面&#xff1a; 测试图片结果界面&#xff1a; 自定义图片结果界面&#xff1a; 二、原理介绍&#xff1a; 图像预处理 HOG特征提取算法 数据准备 SVM支持向量机算法 预测和评估 完整演示视频&#xff1a; 完整代码链接 一、…

redis--集群

redis集群 Redis 集群是一种用于分布式存储和管理数据的解决方案&#xff0c;它允许将多个 Redis 实例组合成一个单一的逻辑数据库&#xff0c;提供更高的性能、容量和可用性。 redis集群的优点 高可用性&#xff1a; Redis集群使用主从复制和分片技术&#xff0c;使得数据可…

提高nodejs中promise的性能

提高nodejs中promise的性能 我们先来看一个常见问题&#xff0c;假设我们有 N 条记录需要处理&#xff0c;或者例如&#xff0c;为每条记录发出 API 请求以获取数据。 通常情况下我们都是使用promise.all方法来实现这一需求&#xff1a; // 记录 const data [{}, {}, {}];/…

Linux网络编程:线程池并发服务器 _UDP客户端和服务器_本地和网络套接字

文章目录&#xff1a; 一&#xff1a;线程池模块分析 threadpool.c 二&#xff1a;UDP通信 1.TCP通信和UDP通信各自的优缺点 2.UDP实现的C/S模型 server.c client.c 三&#xff1a;套接字 1.本地套接字 2.本地套 和 网络套对比 server.c client.c 一&#xff1a;线…

如何使用CSS实现一个3D旋转效果?

聚沙成塔每天进步一点点 ⭐ 专栏简介⭐ 3D效果实现⭐ 写在最后 ⭐ 专栏简介 前端入门之旅&#xff1a;探索Web开发的奇妙世界 记得点击上方或者右侧链接订阅本专栏哦 几何带你启航前端之旅 欢迎来到前端入门之旅&#xff01;这个专栏是为那些对Web开发感兴趣、刚刚踏入前端领域…

有线耳机插入电脑没声音

有线耳机插入电脑没声音 首先确保耳机和电脑都没问题&#xff0c;那就有可能是声音输出设备设置错误 右击任务栏的声音图标-打开声音设置-选择输出设备。

长时间序列的25米全球sar卫星镶嵌数据

数据简介 1992年JAXA&#xff08;Japan Aerospace Exploration Agency&#xff0c;日本宇宙航空研究开发机构&#xff09;发射了一颗JERS-1卫星&#xff0c;该卫星携带有18*24m分辨率的SAR传感器。随后&#xff0c;JAXA又在2006年和2014年分别发射了带有SAR传感器的alos卫星和…

拓世科技集团 | “书剑人生”李步云学术思想研讨会暨李步云先生九十华诞志庆

2023年&#xff0c;中国改革开放迎来了45周年&#xff0c;改革春风浩荡&#xff0c;席卷神州大地&#xff0c;45年间&#xff0c;中国特色社会主义伟大事业大步迈入崭新境界&#xff0c;一路上结出了饶为丰硕的果实。中华民族在这45年间的砥砺前行&#xff0c;不仅使中国的经济…

Clion 找不到头文件,无法DEBUG,无法进入断点,断点灰了

文章目录 1. 找不到远程toolchain的头文件2.gdb未安装或版本不对无法debug3.远程debug断点灰了 1. 找不到远程toolchain的头文件 ①检查cmake头文件引入指令include_directories(SYSTEM "/usr/lib/jvm/jdk-17-oracle-x64/include") ②菜单栏Tools->Resyinc with r…

运放的分类、运放的参数

一、运放的分类 运放按功能分为通用运放与专用运放&#xff08;高速运放、精密运放、低IB运放等&#xff09;。 1.1通用运放 除廉价外&#xff0c;没有任何最优指标的运放。 例&#xff1a;uA741&#xff0c;LM324&#xff0c;TL06X&#xff0c;TL07X、TL08X等 国外知名运放…

科技赋能,教育革新——大步迈向体育强国梦

在 "全民健身"、"体育强国建设"战略的推进下&#xff0c;体育考试成绩被纳入重要升学考试且分值不断提高&#xff0c;体育科目的地位逐步上升到前所未有的高度&#xff0c;在此趋势下&#xff0c;体育教学正演变出更多元化、个性化的需求。然而现实中却面临…