如何在CDH中安装和使用StreamSets

温馨提示:要看高清无码套图,请使用手机打开并单击图片放大查看。 Fayson的github:https://github.com/fayson/cdhproject 提示:代码块部分可以左右滑动查看噢

1.关于StreamSets


StreamSets由Informatica前首席产品官Girish Pancha和Cloudera前开发团队负责人Arvind Prabhakar于2014年创立。他们成立该公司主要是应对来自动态数据(data in motion)的挑战 - 包括数据源,数据处理和数据本身,这是一个称为“数据漂移“(https://streamsets.com/reports/data-drift/)的问题。StreamSets设想从头开始管理数据流,避免已有产品和工具的缺陷,并启用一种管理动态数据(data in motion)的新方法。

他们的第一款产品StreamSets Data Collector(https://streamsets.com/products/sdc)被数百家公司用于构建复杂的任意数据流,其中包括财富500强企业,涵盖金融服务,制造业,医疗,媒体,制药和技术等多个行业。

他们最新的产品StreamSets Dataflow Performance Manager,也叫DPM,主要用于构建端到端的数据流。DPM是一个运行控制中心,可以让你映射(数据流),内置的测量和监测确保持续的数据传输和控制动态数据(data in motion)的性能。首先,它将你不同的数据流映射到支持你的每个关键业务流程的拓扑中。然后监测这些拓扑的日常运行情况,根据掌握的性能情况,以满足应用的SLA为目标,确保你始终提供及时和可信的数据。

StreamSets在旧金山,硅谷和巴塞罗那设有办事处,并得到顶级硅谷风险投资公司的支持,包括Accel Partners,Battery Ventures,Ignition Partners和New Enterprise Associates(NEA)。 在大数据行业领先的合作伙伴包括Cloudera,Databricks,MapR和Microsoft。

好了,Fayson讲点人话吧,StreamSets是一个大数据采集工具,数据源支持包括结构化和半/非结构化,目标源支持HDFS,HBase,Hive,Kudu,Cloudera Search, ElasticSearch等。它包括一个拖拽式的可视化数据流程设计界面,定时任务调度等功能。举例,它可以将数据源从Kafka+Spark Streaming连接到你的Hadoop集群,而不需要写一行代码。很炫酷有木有!!!下面我们随便看几张截图了再往后走。

2.文档编写目的


本文档主要讲述如何在Cloudera Manager 管理的集群中安装StreamSets和基本使用。

  • 内容概述:
  1. StreamSets安装配置
  2. StreamSets基本使用

3.常见问题

  • 测试环境:

1.操作系统为:Redhat7.2

2.CM和CDH为:5.13.1

3.安装步骤

3.1.安装前准备


到StreamSets官网提供的下载址:https://archives.streamsets.com/index.html

下载以下文件:这里下载使用的是 3.0版本

1.manifest.json 文件

2.STREAMSETS_DATACOLLECTOR-3.0.0.0-el7.parcel文件(比较大约4G左右,包含比较完整的插件)

3.STREAMSETS-3.0.0.0.jar

3.2.配置本地Parcel包


将下载的manifest.json和 STREAMSETS_DATACOLLECTOR-3.0.0.0-el7.parcel,放在一个新建文件夹StreamSets3.0中,并移动到/var/www/html 目录中,做离线包的下载地址,用浏览器访问如下,表示成功

3.3.配置CSD


将STREAMSETS-3.0.0.0.jar拷贝到/opt/cloudera/csd,并更改权限,然后重启cloudera-scm-server服务

[root@cdh4 ~]# cp STREAMSETS-3.0.0.0.jar /opt/cloudera/csd
[root@cdh4 csd]# sudo chown cloudera-scm:cloudera-scm STREAMSETS-3.0.0.0.jar && sudo chmod 644 STREAMSETS-3.0.0.0.jar
[root@cdh4 ~]# systemctl restart cloudera-scm-server

(可左右滑动)

3.4.下载分发激活Parcel包


在CM界面中点击Parcel > 配置 > 添加StreamSets的Parcel包路径,并保持修改

并下载分发和激活(本文档省略该步骤,直接查看激活后的状态)

3.5.添加StreamSets服务


完成上述步骤后,在集群 > 添加服务 中添加StreamSets 的服务

选择StreamSets安装

选择一个DataCollector 节点,默认配置,继续等待安装和启动完成

4.StreamSets 的基本使用


官方文档示例:

https://streamsets.com/documentation/datacollector/3.0.0.0/help/index.html#Tutorial/BasicTutorial.html#task_jmz_3dn_ls

4.1.登录


点击 StreamSets > Data Collector WebUI访问

默认的账户: admin 密码:admin

4.2.准备工作


准备工作:

从官网下载测试数据

https://www.streamsets.com/documentation/datacollector/sample_data/tutorial/nyc_taxi_data.csv

创建测试目录并赋予权限:

[root@cdh1 ~]# mkdir /home/test_stream
[root@cdh1 ~]# mkdir /home/test_stream/data
[root@cdh1 ~]# mkdir /home/test_stream/error
[root@cdh1 ~]# mkdir /home/test_stream/out
[root@cdh1 ~]# chmod -R 777 /home/test_stream

(可左右滑动)

将测试数据拷贝到 /home/test_stream/data 目录下

 [root@cdh1 ~]# ll /home/test_stream
 [root@cdh1 ~]# cp nyc_taxi_data.csv /home/test_stream/data/

(可左右滑动)

4.3.创建第一个Pipelines


保存后进入如下页面:

4.4.添加文件目录和修改属性


在侧边中选择Diretory或者Select Origin > Directory ,添加一个目录,选中目录后点击configuration> file,填写Files Directory 和File Name Pattern 还有选择Read Order 为最近更新时间

点击dataFormat 标签,修改选择如下选择

4.5.配置改Pipelines 的错误日志写入方式和目录


4.6.预览文件


将鼠标放到Directory1 上看到只剩一个Validation_0011的异常然后点击预览,Validation_0011仅表示目录原点尚未连接到任何内容,并且不会阻止数据预览

预览配置这里,我们选中预览来源,写入目的地和执行者,显示字段类型,记住配置,然后执行

执行后我们使用表格的方式查看如下:

4.7.添加流选择器


 ${record:value('/payment_type') == 'CRD'}

(可左右滑动)

这里只查看卡类型为信用卡的记录

4.8.使用jython 脚本来筛选卡片


使用Jython脚本创建了一个额外的字段credit_card_type,并通过评估信用卡号码的前几位来生成信用卡类型。如果记录具有信用卡付款类型而没有相应的信用卡号码,则脚本将返回错误消息。(这里下载的完整的parcels包所以Jython插件无需再下载,否则需要在Package Manager 中联网下载)

以下脚本放在 Jython >configuration>Jython>Script 中

try: 
  for record in records:
    cc = record.value['credit_card']
    if cc == '':
      error.write(record, "Payment type was CRD, but credit card was null")
      continue
    cc_type = ''
    if cc.startswith('4'):
      cc_type = 'Visa'
    elif cc.startswith(('51','52','53','54','55')):
      cc_type = 'MasterCard'
    elif cc.startswith(('34','37')):
      cc_type = 'AMEX'
    elif cc.startswith(('300','301','302','303','304','305','36','38')):
      cc_type = 'Diners Club'
    elif cc.startswith(('6011','65')):
      cc_type = 'Discover'
    elif cc.startswith(('2131','1800','35')):
      cc_type = 'JCB'
    else:
      cc_type = 'Other'
    record.value['credit_card_type'] = cc_type
    output.write(record)
except Exception as e:
  error.write(record, e.message)

(可左右滑动)

脚本在评估器中应当如下:

4.9.使用Field Masker来屏蔽信用卡号码


现在让我们通过使用Field Masker来屏蔽信用卡号码,防止敏感信息到达内部数据库。

Field Masker提供固定和可变长度的掩码来屏蔽字段中的所有数据。要显示数据中的指定位置,您可以使用自定义掩码。要显示数据中的一组位置,可以使用正则表达式掩码来定义数据的结构,然后显示一个或多个组。

对于信用卡号码,我们将使用以下正则表达式来屏蔽除最后四位之外的所有数字:

信用卡号字段:/credit_card

(.*)([0-9]{4})

4.10.配置写入目的地


输出文件 tab 如下

Data Format 如下:

4.11.流程预览测试


可以查看到敏感信息被屏蔽

4.12.添加Expression Evaluator处理器


将一个Expression Evaluator处理器添加到画布并将Stream Selector的第二个默认流连 接到它。这会创建一个credit_card_type字段,指示信息不适用。

由于我们使用“n / a”作为表达式的常量,因此我们不需要使用美元符号和括号来表达表达式。但是如果我们想要使用它们,我们可以将它们定义为$ {'credit_card_type'}和$ {'N / A'}。

4.13.创建数据规则和告警信息


在我们运行基本管道之前,让我们添加一个数据规则和警报。数据规则是用户定义的规则,用于检查在两个阶段之间移动的数据。它们是查找异常值和异常数据的有效方法。

数据规则和警报需要详细了解通过管道的数据。对于更一般的管道监控信息,您可以使用度量标准规则和警报。

Jython Evaluator中的脚本为没有信用卡号码的信用卡交易创建错误记录。我们可以创建一个数据规则和警报,让我们知道记录数量何时达到指定阈值。

我们将使用带有record:value()函数的表达式来标识信用卡号码字段/credit_card为空的情况。该函数返回指定字段中的数据。

在流选择器和Jython评估器之间,选择链接或数据检查图标

1.“ dataRules”选项卡显示在“预览”面板中。

2.点击Add。

3.在“ data Rules”对话框中,配置以下属性。

4.14.校验执行


Jython评估器显示40条错误记录。单击错误记录编号以查看缓存的错误记录和相关错误消息的列表。

您也可以选择红色的数据检测图标来查看有关数据警报的信息并查看与数据警报相关的错误记录。

要继续扩展教程,请停止管道。

5.常见问题


执行的时候出现如下异常,说没有权限写入到root目录下

解决办法:选择管道>Configurtion > Error Records - Write to File >Directory 目录修改

提示:代码块部分可以左右滑动查看噢 为天地立心,为生民立命,为往圣继绝学,为万世开太平。 温馨提示:要看高清无码套图,请使用手机打开并单击图片放大查看。

推荐关注Hadoop实操,第一时间,分享更多Hadoop干货,欢迎转发和分享。

原创文章,欢迎转载,转载请注明:转载自微信公众号Hadoop实操

原文发布于微信公众号 - Hadoop实操(gh_c4c535955d0f)

原文发表时间:2018-03-28

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

编辑于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏Java进阶干货

Tomcat中用JNDI方式加载JDBC DataSource以连接数据库

下载与所要连接的数据库版本对应的JDBC驱动程序,加入到应用的CLASSPATH。如果用tomcat部署,tomcat中最好也加上(笔者觉得好像没必要加,可是不...

1722
来自专栏腾讯Bugly的专栏

Android 内存优化总结&实践

导语 智能手机发展到今天已经有十几个年头,手机的软硬件都已经发生了翻天覆地的变化,特别是Android阵营,从一开始的一两百M到今天动辄4G,6G内存。然而大部...

5557
来自专栏程序员八阿哥

年薪20万Python工程师进阶(7):Python资源大全,让你相见恨晚的Python库

用来访问第三方 API的库。 参见: List of Python API Wrappers and Libraries。

4302
来自专栏FreeBuf

更适合作为主系统使用的Parrot Security简介

Parrot 是一个基于Debian的专注于渗透测试和隐私保护的Linux发行版,但是更加方便日常使用,有贴心的使用体验,丰富的工具,更注重隐私保护。 The...

8855
来自专栏Java帮帮-微信公众号-技术文章全总结

基于Redis实现分布式锁-Redisson使用及源码分析【面试+工作】

在分布式场景下,有很多种情况都需要实现最终一致性。在设计远程上下文的领域事件的时候,为了保证最终一致性,在通过领域事件进行通讯的方式中,可以共享存储(领域模型和...

1.2K2
来自专栏V站

图片API丨V站二次元随机图片API(自判断)

①于2018.03.31公布,采用高速服务器运行! ②PC版随机图片拥有200+张,PE版拥有100+张超精美二次元风随机图片,每星期一更! ③全程免费,欢迎支...

4.2K10
来自专栏java学习

JavaEE就业学习路线(给初学者以及自学者一个学习方向)

第一节java入门 1-Java 背景介绍 2-Java 入门程序的编写 3-环境配置 4-基本概念介绍 5-类型转换 6-开发工具使用 第二节java基础 1...

3467
来自专栏小狼的世界

提高Mac下itunes的下载速度

给老婆买了iPhone4s之后,开始在Mac上用iTunes下载软件,发现速度龟速,好歹家里也是10M光纤啊,这个小水管的下载速度绝对不能忍受,于是百度了一下,...

1202
来自专栏JackieZheng

Hadoop阅读笔记(五)——重返Hadoop目录结构

  常言道:男人是视觉动物。我觉得不完全对,我的理解是范围再扩大点,不管男人女人都是视觉动物。某些场合(比如面试、初次见面等),别人没有那么多的闲暇时间听你诉说...

22610
来自专栏嵌入式程序猿

带你看看烧毁的IGBT内部

相信做过电力电子,对IGBT等功率管应该不陌生,这种器件广泛应用关于变频器,电源,逆变器,新能源行业等。前几天朋友拿来一套西门子伺服电机功率模块,没有输出,红色...

912

扫码关注云+社区

领取腾讯云代金券