【大数据】StreamSets:一个大数据采集工具

2018 年 12 月 5 日 产业智能官

关于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集群,而不需要写一行代码。很炫酷有木有!!!下面看几张截图。



在数据采集器中用TensorFlow进行实时机器学习


摘要: 本文学习如何通过发布的最新TensorFlow Evaluator版本使用TensorFlow(TF)模型进行预测和分类。

最新DataOps平台的真正价值,只有在业务用户和应用程序能够从各种数据源来访问原始数据和聚合数据,并且及时地产生数据驱动的认识时,才能够实现。利用机器学习(Machine Learning),分析师和数据科学家可以利用历史数据,以及实时地使用类似TensorFlow(TF)这样的技术,以做出更好的数据驱动业务的线下决策。

在本文中,你将学习如何利用TensorFlow模型在StreamSets Data Collector3.5.0和StreamSets Data Collector Edge中最新发布的TensorFlow Evaluator*进行预测和分类。

在深入讨论细节之前,我们来看一些基本概念。

机器学习(Machine Learning)

亚瑟·塞缪尔把它描述为:“不需要明确地编写程序而使计算机有能力学习的研究领域。”随着机器学习领域的最新发展,计算机现在有能力做出预测,甚至比人类做的还要好,并且感觉可以解决任何问题。让我们先回顾一下机器学习都解决了什么样的问题吧。

通常来说,机器学习被分为两大类:

监督学习(Supervised Learning)

“监督学习是学习一个函数的机器学习任务,该函数基于输入-输出的实例,将输入映射到输出。”—维基百科(Wikipedia)。

它涉及到构建一个精准的模型,当历史数据被标记为一些结果的时候,模型就可以预测出结果了。

用监督学习解决的常见业务问题:

  • 二元分类(学习预测一个分类值)

  • - 顾客会购买一个特定产品吗?

  • - 癌症是恶性的还是良性的?

  • 多级分类(学习预测一个分类值)

  • - 给定的一段文本是否带有病毒、恐吓或淫秽内容?

  • - 这是山鸢尾、蓝旗鸢尾还是北美鸢尾的物种?

  • 回归(学习预测一个连续值)

  • - 一个代售房子的预测价格是多少?

  • - 明天旧金山的气温是多少?

无监督学习

无监督学习允许我们在知道很少,或是完全不知道输出应该是什么样子的情况下处理问题。它涉及在之前数据上的标签是不可用的情况下创建模型。在这类的问题中,通过对基于数据中变量之间的关系进行数据聚类来导出结构。

无监督学习的两种常见方法是K-均值聚类(K-means clustering)和DBSCAN。

注意:Data Collector和Data Collector Edge中的TensorFlow Evaluator目前仅支持监督学习模型。

神经网络与深度学习

神经网络是机器学习算法的一种,可以学习和使用受人脑结构启发而来的计算模型。与其它机器学习算法,如决策树、逻辑回归等相比,神经网络具有较高的准确性。

Andrew Ng在传统人工神经网络的背景下对深度学习进行了描述。在题为“深度学习、自我学习与无监督特征学习”的演讲中,他把深度学习的思想描述为:

“利用了大脑结构的模仿, 希望:

- 让学习算法更好地、更容易地使用;

- 在机器学习和人工智能领域取得革命性的进展;

我相信这是我们朝着真正的人工智能前进的最好办法。”

常见的神经网络和深度学习应用包括:

  • 计算机视觉/图像识别/目标检测

  • 语言识别/自然语言处理(NLP)

  • 推荐系统(产品、婚介等)

  • 异常检测(网络安全等)

TensorFlow

TensorFlow是为深度神经网络设计的开源机器学习框架,由Google Brain Team开发的。TensorFlow支持在Windows和Mac操作系统上的可伸缩和便携式的训练,包括CPU、GPU和TPU。迄今为止,它是GitHub上最流行的和最活跃的机器学习项目。

Data Collector中的TensorFlow

随着TensorFlow Evaluator的引入,你现在能够创建管道(pipelines),以获取数据或特征,并在一个可控的环境中生成预测结果或分类,而不必发起对作为Web服务而提供和公布的机器学习模型的HTTP或REST API的调用。例如,Data Collector管道现在可以实时地检测欺诈交易或在文本上执行自然语言处理,因为数据在被存储到最终目的地之前,为了进一步的处理或做决策,正在经过各个阶段。

另外,使用Data Collector Edge,你可以在Raspberry Pi和其它运行在所支持的平台上的设备上运行已经启用了的TensorFlow机器学习管道。例如,在高风险地区检测洪水等自然灾害发生的概率,以防止对人们财产的破坏。

乳腺癌分类

让我们考虑将乳腺癌肿瘤分类成恶性还是良性的例子。乳腺癌是一个经典的数据集,可以作为scikit-learn的一部分。要了解如何在Python中使用该数据集训练和导出一个简单的TensorFlow模型,请查看我在GitHub上的代码。正如你将要看到的那样,模型创建和训练被保持在最小范围,并且非常简单,只有几个隐藏层。最需要注意的重要方面是如何使用TensorFlow SavedModelBuilder*来导出和保存模型。

*注意:要在Data Collector或Data Collector Edge中使用TensorFlow模型,首先应该在你选择支持的开发语言里,如Python,和交互式环境中,如Jupiter Notebook,使用TensorFlow的SavedModelBuilder导出和保存模型。

一旦使用TensorFlow的SavedModelBuilder训练并导出了模型,那么在数据流管道中使用它进行预测或分类就非常简单了 — 只要模型保存在Data Collector或Data Collector Edge可访问的位置上即可。

管道概述

在深入了解细节之前,可以看下管道是什么样的:




管道细节

  • 目录源:

    - 这将从.csv文件中加载乳腺癌的记录数据(注意:这个输入数据源可以非常简单地替换为其它的来源,包括Kafka、AWS S3、MySQL等等);


  • 字段转换器:

    - 这个处理器将转换供模型所使用的所有输入的乳腺癌记录特征数据,从String类型转换到Float类型(mean_radius,mean_texture,mean_perimeter,mean_area,mean_smoothness,mean_compactness,mean_concavity,mean_concave_points,mean_symmetry,mean_fractal_dimension,radius_error,texture_error,perimeter_error,area_error,smoothness_error,compactness_error,concavity_error,concave_points_error,symmetry_error,fractal_dimension_error,worst_radius,worst_texture,worst_perimeter,worst_area,worst_smoothness,worst_compactness,worst_concavity,worst_concave_points,worst_symmetry,worst_fractal_dimension) ;


  • TensorFlow Evaluator*:

    - 模型的保存路径:指定要使用的预训练的TensorFlow模型的位置;

    - 模型标签:设置为“serve”,因为元图(在我们导出的模型中)要用于服务中。有关详细信息,请参见tag_constants.py和相关的TensorFlow API documentation;

    - 输入配置:指定在训练和导出模型期间配置的输入张量信息(请见Train model and save/export it using TensorFlow SavedModelBuilder部分);

    - 输出配置:指定在训练和导出模型期间配置的输出张量信息(请见Train model and save/export it using TensorFlow SavedModelBuilder部分);

    - 输出字段:我们想保存分类值的输出记录字段;


  • Expression Evaluator:

    -该处理器评估模型输出或分类值为0或1(存储在输出的字段TF_Model_Classification之中) ,并用BenignMalignantrespectively这两个值创建一个新的记录字段“Condition”;


  • Stream Selector:

    - 该处理器评估癌症状况(良性或恶性)并发送记录到各自的Kafka生产者;


  • Kafka Producers:

    - 输入记录以及模型的输出或者分类值被有条件地发送给两个Kafka生产者以获得进一步地处理和分析;

*TensorFlow Evaluator配置



注意:一旦TensorFlow Evaluator产生了模型输出结果,本实例中采用的管道阶段是可选的,并且可以根据用例的需要与其它处理器和目标进行互换。

管道执行




在预览管道上,乳腺癌数据记录的输入通过了上面所述的数据流管道过程,包括服务于我们的TensorFlow模型。发送给Kafka生产者的最终输出记录数据(如上所示)包括用于分类的模型所使用的乳腺癌特征,在用户定义的字段TF_Model_Classification中模型输出值为0或1,以及由Expression Evaluator创建的Condition字段中表示相应的癌症状况是良性或恶性。

总结

本文说明了在Data Collector 3.5.0中使用最新发布的TensorFlow Evaluator。一般来说,这个评估器将允许你提供预训练的TensorFlow模型,用于生成预测结果和分类结果,而无需编写任何自己的代码。

阿里云云栖社区组织翻译。

文章原标题《Real-Time Machine Learning With TensorFlow in Data Collector》

译者:Mags,审校:袁虎。



 戴金权:大规模数据分析及 AI 助力业务智能转型

戴金权 

7月28-29日,由中国人工智能学会和深圳市罗湖区人民政府共同主办,马上科普承办的“2018中国人工智能大会(CCAI 2018)”完美收官。

大会第一天上午,英特尔高级首席工程师、大数据技术全球CTO戴金权作题为《大规模数据分析及AI助力业务智能转型》的主题演讲。

以下是根据速记整理的大会讲座实录。

戴金权 英特尔高级首席工程师、大数据技术全球CTO

今天向大家介绍英特尔公司如何把大数据分析和深度学习技术相结合,构建类似于像BigDL、Analytics Zoo的大数据分析 + 人工智能平台,来帮助用户更方便地将深度学习、人工智能技术应用到现实场景中。


做这件事情的目标是什么?

为什么要做这件事情?


我们主要的出发点是构建一个技术和平台,帮助大量的大数据用户(不管他们是工程师、数据科学家、数据分析师,还是普通的IT人员)都可以更方便地将深度学习、人工智能技术应用到他们的大数据平台和大数据生态系统中。这也是因为有几个非常重要的技术,以及业界发展的趋势来驱动的。

第一个趋势:数据规模扩展,推动了深度学习的发展 

今天深度学习之所以这么有效,是因为我们拥有了大量数据能够进行处理和分析。下图是Andrew在2016年“Machine learning yearning”这本书里的一幅图,可以很直观地看出随着数据规模的增长,我们可以构建更大型的、更复杂的深度学习神经网络,从而更好地利用这些数据来提高它的准确率,以及模型的有效性。

第二个趋势:Hadoop成为了“数据重力中心”

现实环境中的数据并不是标准化的,非常庞大、杂乱,也没有像标准化测试集那样很好的定义了数据。在过去十年期间,大家都建立了以Hadoop、Spark、HBase、Hive等Apache Hadoop生态系统为中心的数据存储、处理和分析平台。数据会从各种渠道进入企业组织,通过流水线汇聚到以Hadoop为标准的大数据平台中。从这个意义上说,任何数据处理和分析的框架、应用,包括深度学习的框架,都要能够很好地和以Hadoop为标准的大数据平台来交互。

第三个趋势:工业级机器学习/深度学习系统,是复杂的大数据分析流水线 

今天大家可以看到非常多先进的深度学习、机器学习模型,它能够做很多突破性工作。如何将这样的模型、算法应用到现实的生产环境,以及工业级数据处理分析端到端的应用中,是需要非常多模块的。从数据的导入、数据的清洗、特征的提取、特征的转换,到模型的运行、训练、推理,最后把结果应用到实际的环境中,外加资源的管理、调度、分配等,都必须和现有的大数据处理的工作流整合在一起。

第四个趋势:统一大数据平台驱动分析与数据科学 

Ion Stoica是UC Berkeley计算机教授,AMPLab 共同创始人,Spark、Mesos核心设计者。他在Spark Summit 2013 Keynote上做过一个比喻,5年前我们使用MP3、 Camera、GPS、telephone各种专用设备,现在只要一个智能手机就可以具备所有的功能。这不仅仅是方便,还可以在统一设备之后构建更多的新应用。

以Apache Hadoop和Spark为中心的统一大数据平台,实际包括了非常多的大数据开源生态系统组件,可以帮助用户很容易地在平台上进行数据分析,从而大大推动了大数据分析在各行各业的运用。


深度学习和大数据社区的断层


很明显地可以看到,今天人工智能和深度学习之间有很大的断层。深度学习顶尖研究人员在模型上不断有新突破,但数据科学家、数据分析师及普通的数据用户,却很难将这些模型应用到现实的生产环境中;在深度学习模型算法和大数据处理工作之间有很大的断层,这正是我们希望通过在大数据分析平台与AI平台相结合的工作能解决的问题。

如京东有大概几亿张的图片存储在分布式存储系统中,想要把这些图片从大数据集群里读出来,然后对它进行预处理。首先用SSD的模型来识别图片里有什么物品;再用深度学习DeepBit模型,将物品的特征提取出来;然后把结果存放回HDFS,以备下游的服务所使用。这是一个相对比较复杂的端对端数据处理的流水线,通过统一的大数据分析+AI平台,用户可以很方便地将这些新的大数据处理、分析和深度学习、人工智能技术整合在一起,大大提高运维的效率。

在生产环境中,我们的生产数据在大数据集群里可能有几千台,甚至几万台,如果为了进行深度学习,必须建立一个专用的集群和框架做深度学习的处理,如何把大量数据从几万台大数据集群中导入到深度学习的专用集群上,成了一个很大瓶颈。而在统一大数据分析+AI平台上,让 深度学习的这些功能集成到现有的端到端大数据处理的流水线中,深度学习能够为大数据社区、数据科学社区更方便的使用,并可以使用他们已有的大数据框架和平台来开发新的深度学习的应用,或者在数据存储的集群上直接使用深度学习的技术来 分析数据。


致力于这个目标,英特尔推出了开源BigDL


BigDL是一个面向Apache Spark的分布式深度学习框架,是Spark上的一个标准 组件,可以在现有Hadoop和Spark的集群上直接运行,不需要对集群做任何修改,并能够和大数据、生态系统里不同的分析、处理组件非常好地整合在一起。BigDL与目前主流的深度学习框架Caffe、Torch、TensorFlow所能实现的功能相同。它的特点是构建在大数据集群上,为大数据集群所特别设计和优化;在单点上利用英特尔MKL、多线程编程等,比其他开源框架更快,可以得到很高的性能。同时利用Spark这样大规模分布式的Scale-out架构,可以很方便地进行分布式的训练和推理。BigDL是一个开源项目,可以在Github上搜索到。

BigDL的运行方式

BigDL是一个标准的Spark组件,当用BigDL开发一个深度学习应用时,直接运行在Spark集群上,不需要做任何改动。为了实现高性能,BigDL在每个Spark任务 中都使用了Intel MKL和多线程编程。机器学习和深度学习是一个迭代式的计算,每 个迭代都会运行一个标准的Spark作业,在里面会分布式地对这些数据进行训练。如做Gradient decent、做update,然后所有的Spark任务运行同样的模型,每个模型都只处理一部分数据,在迭代过程中所有数据成了一个batch,这里运行的是一个Minibatch SGD,它是一个Synchronous Minibatch SGD算法。

BigDL的分布式训练

Spark提供了分布式模型训练模型的方式,而且它的分布式训练并没有采用外部的系统来完成。现今领域要做data parallel Synchronous SGD,需要一些all reduce或 parameter server这样的架构支持这个工作。但是很多的实现需要在Spark框架上集成一 个外部第三方的框架来完成,而我们直接使用Spark内部的大数据处理一些原语。大家都知道,大数据计算的模型是一个functional的计算,并采用copy-on-right,数据都是immutable,它还有像shuffle、broadcast等这样的操作提供给用户一个上层的计算。这些还和深度学习的原语颇不一样,我们的工作是利用Spark已有的一些原语,在内部直接构建一个all reduce的机制,从而可以在Spark上提供一个类似于像parameter server这样的架构,但没有引入任何第三方的框架和第三方的依赖,好处就是在现有的Spark集群上直接运行分布式的训练。例如,数学科学家并不是集群的管理人员,他没有权利在集群上安装任何东西,只能使用现有集群提供的服务,但他可以直接使用BigDL框架在Hadoop集群上,不做任何依赖地做相应深度学习分布式的训练。

BigDL的可扩展性

Cray是美国的一个做超级计算的公司,将BigDL集成到它的数据分析Urika-XC套件中,通过在各种节点计数下运行训练模型来研究BigDL在Cray XC超级计算机上的可扩展性,从4~256个节点都能获得接近线性的扩展性曲线,可以为其超级计算提供深度学习的功能。

Analytics Zoo

事实上,BigDL、TensorFlow这些框架与最终的AI应用还是有很大距离。我们在 Apache Spark和BigDL的基础上又构建了Analytics Zoo大数据分析和人工智的平台。某种意义上,它是Spark 和 BigDL的扩充,其目的是方便用户开发基于大数据 端到端学习的应用,除了内置的模型和特征工程操作之外,里面还提供了大量的高级的流水线支持,能够使用Spark DataFrames、ML Pipelines的深度学习流水线,通过迁移学习的API 构建API模型的定义;在这个基础上就可以很方便地使用我们提供的Model Zoo模型,甚至端到端的参考应用,比如异常检测等;可以通过非常少的代码,使用这些高级的API,以及内置的模型,很方便地就能将一个端到端的大数据分析加上深度学习的应用构建起来。

比如可以直接在Spark SQL和DataFrame中嵌入大数据深度学习的模型,用户可以直接用Spark SQL和DataFrame写一 个Query,这个Query可以直接使用深度学习的模型去判断照片是狗还是猫?也可以将Analytics Zoo里的模型,使用Model Serving API和其他大数据框架Flink、 Kafka、Storm、Web Service来整合。目前,Analytics Zoo和BigDL能在包括AWS、阿里云、百度云等几乎所有的公有云平台上使用。

生产化部署深度学习解决方案所面临的挑战

例如,在之前提到京东的案例里,如果使用单独的系统去做大规模的生产化部署,管理这样一个大规模分布式深度学习会非常复杂,也非常容易出错。你要做资源管理、数据的切分,出错的管理,这是第 一个碰到的挑战;第二个问题是当你看应用的端到端性能时,从数据读取到数据处理再到运行模型直至把结果写回HDFS时,用GPU集群效率非常低下,从HBase读取图片就用了一半的时间。实上,系统中任何一个component都会成为瓶颈。当然从开发、运维的角度来讲,也是非常复杂的。

合作案例

在与京东的合作中,他们一开始是建立在多个GPU之上的,在Caffe上训练,但在开发、部署和性能方面都碰到问题。我们和京东的合作是将端到端的流程迁移到基于Spark的集群上,与之前用GPU的方案相比达到3~4倍效率的提升。

第二个案例和MLSListing合作。MLSListing是加州的不动产交易商,他们根据用户浏览的房屋图片,为用户推荐相似的房屋。这套系统构建在Microsoft Azure平台上,图片存储在Azure Storage,通过Hadoop、 Spark、BigDL,我们对图片进行处理分析;再将最终的结果存入HBase系统里;然后通过web service的API将这个服务提供给用户。

第三个案例与Cray公司合作,做短时的降水云图预测。通过Seq2Seq的模型,把过去1小时的卫星云图做一个时间序列,导入数据模型;然后预测下1个小时每10分钟这个卫星云图的变化,从而进行一些降水量的分析。

第四个案例与MasterCard的合作。他们有很多结构化、半结构化的交易数据,存放在Hive大数据文件系统里,除了查询功能外,希望为用户提供线下增值服务,增加用户与商家的匹配度。





工业互联网




产业智能官  AI-CPS


加入知识星球“产业智能研究院”:先进产业OT(工艺+自动化+机器人+新能源+精益)技术和新一代信息IT技术(云计算+大数据+物联网+区块链+人工智能)深度融合,在场景中构建状态感知-实时分析-自主决策-精准执行-学习提升的机器智能认知计算系统实现产业转型升级、DT驱动业务、价值创新创造的产业互联生态链



版权声明产业智能官(ID:AI-CPS推荐的文章,除非确实无法确认,我们都会注明作者和来源,涉权烦请联系协商解决,联系、投稿邮箱:erp_vip@hotmail.com。



登录查看更多
40

相关内容

【实用书】流数据处理,Streaming Data,219页pdf
专知会员服务
76+阅读 · 2020年4月24日
【电子书】大数据挖掘,Mining of Massive Datasets,附513页PDF
专知会员服务
101+阅读 · 2020年3月22日
Gartner确定2019年十大数据与分析技术趋势
大数据流处理平台的技术选型参考
架构文摘
4+阅读 · 2018年3月14日
五步帮你实现用户画像的数据加工
云栖社区
6+阅读 · 2018年2月4日
基于大数据搭建社交好友推荐系统
云栖社区
8+阅读 · 2018年2月2日
福利丨晚来天欲雪,一起囤大数据好书吗?
DBAplus社群
4+阅读 · 2017年12月13日
【大数据】如何用大数据构建精准用户画像?
产业智能官
12+阅读 · 2017年9月21日
Arxiv
34+阅读 · 2019年11月7日
Arxiv
5+阅读 · 2018年6月12日
Arxiv
4+阅读 · 2018年5月10日
Arxiv
12+阅读 · 2018年1月20日
VIP会员
相关VIP内容
【实用书】流数据处理,Streaming Data,219页pdf
专知会员服务
76+阅读 · 2020年4月24日
【电子书】大数据挖掘,Mining of Massive Datasets,附513页PDF
专知会员服务
101+阅读 · 2020年3月22日
相关资讯
Gartner确定2019年十大数据与分析技术趋势
大数据流处理平台的技术选型参考
架构文摘
4+阅读 · 2018年3月14日
五步帮你实现用户画像的数据加工
云栖社区
6+阅读 · 2018年2月4日
基于大数据搭建社交好友推荐系统
云栖社区
8+阅读 · 2018年2月2日
福利丨晚来天欲雪,一起囤大数据好书吗?
DBAplus社群
4+阅读 · 2017年12月13日
【大数据】如何用大数据构建精准用户画像?
产业智能官
12+阅读 · 2017年9月21日
Top
微信扫码咨询专知VIP会员