数据分析是摄取、转换和可视化数据的过程,用于发现对业务决策有用的见解。在过去的十年里,收集了越来越多的数据,客户希望从数据中获得更多有价值的洞察。他们也希望在最短的时
数据分析是摄取、转换和可视化数据的过程,用于发现对业务决策有用的见解。
在过去的十年里,收集了越来越多的数据,客户希望从数据中获得更多有价值的洞察。他们也希望在最短的时间内(甚至实时)获得这种洞察。他们希望有更多的特别查询,以便回答更多的业务问题。要回答这些问题,客户需要一个更强大、更高效的系统。
批处理通常涉及到查询大量的冷数据。在批处理中,可能需要几个小时才能得到业务问题的答案。例如,您可以使用批处理在月末生成计费报告。
实时流处理通常需要查询少量的热数据,只需要很短的时间就可以得到答案。比如基于MapReduce的系统(比如Hadoop)就是支持批处理作业的平台。数据仓库是一个支持查询引擎类型的平台。
数据处理需要摄取数据序列,并根据每个数据记录增量更新它们。通常,他们摄取持续生成的数据流,如测量数据、监控数据、审计日志、调试日志、网站点击流以及设备、人员和货物的位置跟踪事件。
图13-6展示了使用AWS云技术栈处理、转换并可视化数据的数据湖流水线。
图13-6显示了使用AWS云技术栈来处理、转换和可视化数据的数据湖管道。
▲图13-6使用数据湖的ETL管道处理数据
这里,ETL管道使用Amazon Athena临时查询存储在Amazon S3中的数据。从各种数据源(例如Web应用服务器)获取的数据将生成日志文件,这些文件将保存在S3中。然后,这些文件将由亚马逊弹性MapReduce(EMR)转换和清理为生成见解所需的形式,并加载到亚马逊S3。
使用COPY命令将这些转换后的文件加载到Amazon Redshift中,并使用Amazon QuickSight进行可视化。使用Amazon Athena,您可以在存储数据时直接从Amazon S3查询,或者在数据转换后查询(从聚合数据集中)。您可以在Amazon QuickSight中可视化数据,或者可以在不改变现有数据流的情况下轻松查询这些文件。
以下是一些最流行的数据处理技术,可以帮助您转换和处理海量数据:
01 Apache HadoopApache Hadoop采用分布式处理架构,将任务分布到服务器集群进行处理。分发到集群服务器的每个任务都可以在任何服务器上运行或重新运行。集群通常使用HDFS在本地存储数据以供处理。
在Hadoop框架中,Hadoop将大型作业划分为离散的任务,并行处理。可以在大量的Hadoop集群中实现大规模的可扩展性。还设计了容错功能。每个工作节点会定期向主节点报告自己的状态,主节点可以从没有积极响应的集群中重新分配工作负载。
Hadoop最常用的框架有Hive、Presto、Pig和Spark。
02阿帕奇火花Apache Spark是一个内存处理框架。Apache Spark是一个具有不同执行器的大规模并行处理系统,它可以拆分Spark作业并并行执行任务。为了提高作业的并行性,可以在集群中添加节点。Spark支持批处理、交互式和流式数据源。
Spark在作业执行的所有阶段都使用有向无环图(DAG)。DAG可以在作业过程中跟踪数据转换或数据沿袭,并将数据帧存储在内存中,从而有效地最小化I/o。Spark还具有分区意识,可避免网络密集型数据重组。
0Hadoop用户体验Hadoop用户体验(HUE)使您能够通过基于浏览器的用户界面而不是命令行在集群上查询和运行脚本。
HUE在用户界面中提供了最常见的Hadoop组件。它可以基于浏览器查看和跟踪Hadoop操作。多个用户可以登录HUE的门户访问集群,管理员可以手动或通过LDAP、PAM、SPNEGO、OpenID、OAuth和SAML2认证来管理访问。HUE允许您实时查看日志,并提供一个元存储管理器来操作Hive元存储内容。
04猪Pig通常用于处理大量原始数据,然后以结构化格式(SQL表)存储。Pig适用于ETL操作,例如数据验证、数据加载、数据转换以及以多种格式组合来自多个来源的数据。除了ETL,Pig还支持关系操作,比如嵌套数据、连接和分组。
Pig脚本可以使用非结构化和半结构化数据(如Web服务器日志或点击流日志)作为输入。相比之下,Hive总是要求输入数据满足一定的模式。Pig的拉丁脚本包含如何过滤、分组和连接数据的说明,但Pig并不打算成为一种查询语言。Hive更适合查询数据。Pig脚本是根据Pig拉丁语言的指令编译运行来转换数据的。
05蜂巢Hive是一个开源的数据仓库和查询包,运行在Hadoop集群上。SQL是一项非常常见的技能,它可以帮助团队轻松过渡到大数据世界。
Hive使用了一种类似SQL的语言,叫做Hive查询语言(HQL),这使得在Hadoop系统中查询和处理数据变得非常容易。Hive抽象了用Java和其他编码语言编写程序来执行分析工作的复杂性。
06转眼间Presto是一个类似于Hive的查询引擎,但是它更快。支持ANSI SQL标准,简单易学,是最流行的技能集。Presto支持复杂的查询、连接和聚合功能。
与Hive或MapReduce不同,Presto在内存中执行查询,这减少了延迟并提高了查询性能。你在选择Presto的服务器容量时需要慎重,因为它需要有足够的内存。当内存溢出时,Presto作业将重新启动。
07h基本HBaseNoSQL数据库是作为开源Hadoop项目的一部分开发的。HBase运行在HDFS上,为Hadoop生态系统提供非关系数据库。HBase有助于压缩大量数据,并以列格式存储。同时还提供了快速查找功能,因为很大一部分数据缓存在内存中,集群实例存储也在使用中。08阿帕奇齐柏林飞艇
Apache Zeppelin是一个基于Hadoop系统的基于Web的数据分析编辑器,也称为Zeppelin Notebook。它的后台语言使用了解释器的概念,允许任何语言访问Zeppelin。Apache Zeppelin包括一些基本的图表和透视图。它非常灵活,任何语言背景下的任何输出结果都可以被识别和可视化。
09神经节Ganglia是一个Hadoop集群监控工具。但是,您需要在启动时在集群上安装Ganglia。Gangui运行在主节点上,您可以通过SSH访问主节点。Ganglia是一个开源项目,旨在监控集群而不影响其性能。Ganglia可以帮助检查集群中每个服务器的性能以及集群的整体性能。
10 JupyterHubJupyterHub是一款多用户Jupyter笔记本。Jupyter Notebook是数据科学家做数据工程和ML最流行的工具之一。JupyterHub服务器为每个用户提供了一个基于Web的Jupyter笔记本IDE。多个用户可以使用他们的Jupyter笔记本同时编写和执行代码,进行探索性的数据分析。
11亚马逊雅典娜Amazon Athena是一个交互式查询服务,它使用标准的ANSI SQL语法在Amazon S3对象存储上运行查询。
Amazon Athena建立在Presto之上,将临时查询功能扩展为托管服务。
Amazon Athena元数据存储的工作方式与Hive元数据存储相同,因此您可以在Amazon Athena中使用与Hive元数据存储相同的DDL语句。
Athena是一种无服务器托管服务,
,这意味着AWS负责所有基础设施和软件的运行和维护
。您可以在Athena基于web的编辑器中直接执行查询。
12亚马逊弹性MapReduce亚马逊弹性MapReduce(EMR)本质上是云上的Hadoop。可以用EMR发挥Hadoop框架和AWS cloud的强大功能。EMR支持所有最流行的开源框架,包括Apache Spark、Hive、Pig、Presto、Impala、HBase等。
EMR提供解耦的计算和存储,这意味着您不必保持大型Hadoop集群运行。您可以执行数据转换,并将结果加载到持久的亚马逊S3存储中,然后关闭服务器。
EMR提供自动伸缩功能,为您省去安装更新服务器各种软件的管理开销。
13 AWS胶水AWS Glue是一个托管的ETL服务,帮助实现数据处理、注册和机器学习转换以找到重复记录。AWS Glue数据目录与Hive数据目录兼容,并在各种数据源(包括关系数据库、NoSQL和文件)之间提供了一个集中的元数据存储库。
AWS Glue构建在Spark cluster之上,ETL作为托管服务提供。AWS Glue可以为常见用例生成PySpark和Scala代码,因此无需从头开始编写ETL代码。
胶合作业授权功能可以处理作业中的任何错误,并提供日志以了解底层权限或数据格式问题。Glue提供工作流,并通过简单的拖放功能帮助您构建自动化的数据管道。
总结数据分析和处理是一个庞大的课题,值得单独写一本书。本文简要介绍了流行的数据处理工具。有更多的专有和开源工具可供选择。