一、Streamsets简介
Streamsets是一款大数据实时采集和ETL工具,可以实现不写一行代码完成数据的采集和流转。通过拖拽式的可视化界面,实现数据管道(Pipelines)的设计和定时任务调度。最大的特点有:
- 可视化界面操作,不写代码完成数据的采集和流转
- 内置监控,可是实时查看数据流传输的基本信息和数据的质量
- 强大的整合力,对现有常用组件全力支持,包括50种数据源、44种数据操作、46种目的地。
对于Streamsets来说,最重要的概念就是数据源(Origins)、操作(Processors)、目的地(Destinations)。创建一个Pipelines管道配置也基本是这三个方面。
- Origins有Kafka、DataLake、ES、JDBC、HDFS等;
- Processors可以实现对每个字段的过滤、更改、编码、聚合等操作;
- Destinations跟Origins差不多,可以写入Kafka、Flume、JDBC、HDFS、Redis等。
配置管道后,单击“开始”,“ 数据收集器”开始工作。Data Collector在数据到达原点时处理数据,在不需要时静静地等待。您可以查看有关数据的实时统计信息,在数据通过管道时检查数据,或仔细查看数据快照。
二、安装步骤
- 安装方式 :手动解压Tarball包安装、通过RPM软件包安装、通过Cloudera Manager安装、通过Docker安装
- 下载文件:StreamSets Data Collector version 3.15.0 https://archives.streamsets.com/index.html
2.1 Java环境
因为StreamSets是java语言开发的,因此java运行环境必须要安装与配置
2.2 打开文件数
通过以下命令查看操作系统的文件打开数:ulimit -n
从下图中我们可以看到,StreamSets启动要求打开文件数据的最少为 32768
将下载的文件,放在一个新建文件夹streamSets中,在/var/www/html 目录中创建软连接,做离线包的下载地址
使用以下命令在后台运行Data Collecto:
nohup bin/streamsets dc >/dev/null 2>&1 &
首次进入工作平台(默认用户名密码:admin/admin)
三、入门案例
3.1 本地文件解析到HDFS
- 参考:https://blog.csdn.net/zwzfgr/category_9923243.html
- 文中使用的数据: 链接:https://pan.baidu.com/s/1Vn_Sj7Hmwu5W71LvfiTtAw 提取码:8xt7
1. 数据流的整体设计
2.管道流的具体设计步骤
(1)创建一个新的数据流
(2)选择一个文件输入
(3)从组件区,选择一个数据处理插件,这里选择JavaScript插件,并编写js脚本(将字段plugins 解析出来)
(4)再选择一个数据处理插件,将记录中不包含data字段的数据过滤掉,并将name字段为host的记录保留下来
(5)将满足条件1的数据记录进一步处理,不满足条件1的数据记录扔了;配置记录过滤插件,保留记录中的三个字段:
(6)选择一个记录展开字段,将记录中/data字段的数据平铺
(7)再选择一个表达式插件,进行缺失值补充
上面的Output Field 大家可以尝试/data/cpu.wait 的输入方式好像不对,但我最后也没改,机器格式后我就没在做这个Demo。
(8)数据流入HDFS
(8)Kerberos认证
vim /hadoop/software/streamsets-datacollector-3.15.0/etc/sdc.properties
Kerberos认证完成,重新启动
(9)数据流配置、验证和预览
数据流验证和预览:点击小红框处,验证数据流
点击眼睛
StreamSets 的有点就是 实时流,而且从上面的图中可以看到每一个组件的数据 流入和流出都可以清楚的看到,对于多个组件的数据流也是可以看到数据流入和流出。
但是这块 还是报错了,拿的数据是上面博友的,后面的调整我们可以 根据每一个组件的数据流入和流出,分析数据流通哪里出了问题,所以以上的设计步骤我砍掉了一些,但是基本还是 数据从本地同步到 HDFS。
(10)Start 管道流
下面就是整个管道流启动后的可视化监控界面,可以清晰的看到每个阶段的数据流入流出多少,每个批次的数据
3.2 Mysql 查询组件
- SQL 语法 等于两边不能有空格
- 全量查询,添加 where 过滤 无法查询出 数据流