微信号:iteblog_hadoop

介绍:每两天一篇关于Hadoop、Flume、Spark、Hbase、Hive、Zookeeper、Mapreduce、HDFS相关的技术博文,大数据技术博客:http://www.iteblog.com,或者Google\百度搜索 过往记忆

使用 Alluxio 统一结构化大数据

2018-07-12 08:31 Hadoop技术博文

本文原文:https://zhuanlan.zhihu.com/p/34973460 (点击下面 阅读原文 即可进入)

理解在分析存储于数据仓库的结构化大数据时Alluxio所带来的益处。

  • 使用配置来整合数据存储,而不是ETL

  • 在文件系统和对象存储之间统一大数据文件

  • 对重要和经常使用的数据提供按需快速本地访问,不保留永久副本

  • 通过删除数据副本和将数据迁移到商用存储来降低存储成本

1. 摘要

问题描述:对存储在不同仓库中的结构化大数据进行分析是大型企业面临的挑战

  • 许多大型企业都有结构化大数据,这些数据通过多种存储技术如HDFS、对象存储和NFS等被存储在不同的仓库中。

  • 商业用户需要通过这些仓库访问数据来执行高性能的查询并获得有意义的洞察力。

传统方法:数据湖

  • 数据湖是解决这个问题的传统方法,它提供一个单一系统,可以访问相关数据。

  • 传统方式创建的数据湖是资源密集型,需要代价很高的永久数据拷贝并且在数据创建和分析之间造成了延迟。

  • 随着时间的推移,业务线可能会创建各自独立的数据湖,从而创建了使用不兼容的存储技术实现的数据仓库。

  • 大型企业也可能会部署一种“数据湖的数据湖”,以便在多个业务线之间访问数据,从而创建另一个数据副本。

  • 团队可能会不断尝试新的存储和计算技术,从而增加了数据管理的难度。

新方案:Alluxio虚拟分布式文件系统

  • Alluxio是第一个在文件系统和对象存储之间统一大数据文件的虚拟化存储技术。

  • 作为一个“虚拟数据湖”,应用程序可以访问在Alluxio全局命名空间中的文件,就好像这些文件在一个传统的Hadoop文件系统或对象存储中一样。

  • Alluxio提供了按需快速本地访问重要和频繁使用的数据,不需要维护一个永久的副本。缓存的只是数据块,而不是整个文件。

  • 企业可以通过将更多的数据迁移到商用存储中来减少存储开销。

  • 底层存储通过使用配置而不是ETL来整合。数据存在它的源系统中,有效地消除了过时数据的问题。

  • 开发者使用工业标准接口(包括HDFS和S3A)与Alluxio进行交互。Alluxio系统的插件化架构能够支持未来的出现的接口访问技术。

  • 可扩展性、灵活性、安全性和容错性已经在系统中被原生地设计出来了。

SQL代码示例:包括一个技术示例,用于在跨多个存储集群的表中使用Spark SQL执行和持久化SQL join。

2. 介绍

随着数据量的增长,大型企业正在采用大数据技术来处理涉及PetaByte规模的结构化和非结构化数据。大数据通常存储在许多系统和业务单元中。企业要求技术团队以高性能和成本有效的方式在这些系统中提供统一的、聚合的数据视图。

这篇文章介绍了Alluxio和它如何独特地解决了结构化大数据统一管理和访问的难题。

3. 统一大数据的传统方法

当大型企业不能保证其大数据存在于一个单源系统或数据湖中时,企业就需要解决大数据统一访问的难题。这通常是通过自定义应用层解决方案或创建数据湖来解决的。事实上,这些解决方案通常会很困难:

自定义解决方案

  • 需要编写和维护自定义的应用层代码,这项工作是劳动密集型的并且易于中断。

  • 没有缓存,这对于提升查询性能是一个重要的障碍。

传统的数据湖

  • 传统的数据湖是资源密集型的,并且需要维护永久的数据副本,这是非常昂贵的。

  • 每次复制数据时,都会引入延迟,而且用于分析的数据的版本不一定是最新的。

  • 随着时间的推移,业务线可能会创建各自独立的数据湖,从而创建了使用不兼容的存储技术实现的数据仓库。


4. 统一大数据——Alluxio之道

Alluxio是世界上第一个内存级速度的虚拟分布式文件系统。它统一了数据访问并且连接了计算框架和底层的存储系统。应用程序只需要连接到Alluxio就可以访问存储在任何底层存储系统中的数据。此外,Alluxio架构能够以内存速度访问数据,提供了最快的I/O。

在大数据生态系统中,Alluxio位于计算和存储中间。它可以为生态系统带来显著的性能提升,尤其是跨数据中心和可用性区域。Alluxio是Hadoop和对象存储兼容的,并且支持对底层存储进行读写。现有的数据分析应用程序,如Hive、HBASE和Spark SQL,可以在不更改任何代码的情况下运行在Alluxio上。

Alluxio的益处

  • 统一访问:充当一个“虚拟数据湖”。文件可以在Alluxio全局命名空间中被访问,就好像它们存储在一个单系统中。

  • 性能:对重要频繁使用的数据提供快速本地访问,而不需要维护所有数据的永久副本。Alluxio只智能地缓存所需的数据块,而不是整个文件。

  • 灵活性:Alluxio中的数据可以在不同的工作负载之间被共享,不仅是查询还可以用于批量分析,机器学习和深度学习。

  • 存储开销最优化:透明地从源系统直接读写数据,因此不需要创建永久的数据副本。Alluxio的内置缓存可以:

  • 利用计算节点上未使用的RAM和磁盘存储来减少硬件开销。

  • 使企业能够将更多的数据迁移到更低成本的商用存储中。

  • 配置驱动:使用配置整合底层存储,而不是ETL。

  • 更现代灵活的架构:促进计算和存储的分离。即插即用的系统架构能够支持未来的技术。

  • 没有产商锁定:支持工业标准接口,包括HDFS和S3A。

  • 维护企业数据安全和管理:与现有的企业系统集成以支持统一的数据管理。



Alluxio提供的创新功能

全局命名空间:用户以一个单机虚拟文件系统中的挂载点的方式与底层存储进行交互,从而简化了访问。

服务器端API转换:用户通过HDFS或S3A来与Alluxio进行通信。但是,底层存储系统不需要本地支持HDFS或S3A。任何具有兼容接口的存储系统都可以作为底层存储被挂载,并且Alluxio使得服务器端API和应用程序选择的接口的转换变得容易。通过Alluxio的模块化架构也可以添加新的自定义接口。Alluxio的转换能力提升了你的企业架构的互通性并且简化了开发。

兼容的底层存储接口:HDFS,NFS,Amazon S3A,Azure Blob Storage或Google Cloud Storage。

带内缓存:缓存对用户是带内或透明的,并使用集中管理策略进行控制。用户不需要付出任何努力就可以从改进的性能中获益,并且管理是有组织地进行维护。

样本用例:

在这个示例企业中,与客户交互相关的所有数据位于两个不同的系统中:销售系统包含客户所购买的所有产品的信息,客户支持系统包含客户记录的所有支持案例信息。这两个系统是相互孤立的,但是为了了解客户的所有交互情况,必须联合这两个孤立系统进行查询,并将结果以客户视图的方式提供给用户。

统一SQL查询:一个示例

一旦底层存储系统通过Alluxio进行统一后,SQL引擎就可以和底层表进行交互,就好像它们是单个系统的一部分一样。

在下面的示例中,Spark SQL将加载来自不同集群的两张表,这些表位于Alluxio的”/mnt/a”和“/mnt/b”中并且将结果写入“/mnt/c”中的第三个集群。

5. 性能和存储成本

大多数情况下,在一次分析中一个语料库中只有一部分数据被使用。这个比例通常不到20%。传统地,企业必须在对重要且经常使用的数据提供快速访问和对所有数据提供统一访问之间进行权衡,这会增加技术预算的重大成本。

Alluxio在允许对企业数据进行有效统一访问的同时,也提供了按需快速本地访问分析使用的数据。作为一个虚拟文件系统,Alluxio的全局命名空间允许用户浏览并与被挂载系统中的文件元数据进行交互。但是,只有当用户需要它时才会访问数据,并且可以透明地缓存已请求的文件数据。这种即时的设计理念使Alluxio能够同时解决性能和成本方面的难题。

设计挑战和缓存

在设计高性能大数据架构时,必须解决现代基础设施的两个现实问题:

  • 数据局部性;数据分布在多个数据中心

  • 在廉价但缓慢的存储中的冷数据

当对性能有需求时,Alluxio会用它的本地智能缓存来解决数据局部性和低成本存储的难题。

缓存的管理方式有两种:

  • 动态使用升级、降级和TTL策略

  • 对于已知的经常访问的数据或需要高速访问SLAs预先设置策略

管理员决定Alluxio可用的缓存空间大小来提供性能比的最佳成本,而智能策略将透明地管理留在缓存空间中的数据。当缓存空间满时,数据访问继续正常进行,而智能缓存优先处理数据。

使用Alluxio的完全集成缓存,应用程序用户能够以一种透明的方式高速地访问来自远程或缓慢存储系统的数据,同时允许企业控制存储成本。

分层缓存

Alluxio可以并存在数据中心或计算和作业执行的可用性区域中,并且可以安装在现有的计算节点、专用节点或两者结合。Alluxio的缓存可以设置为RAM、SSD和HDD,通过配置为其预留空间。

用户定义用于固定、多层升级/降级和TTL的策略。例如,一种常见的分层方法是:


默认情况下,数据被缓存到顶层,并根据需要将数据驱逐到下一层。管理员可以控制这些全局策略,还可以在底层存储中设置定制的缓存策略,从而更好地控制了Alluxio的存储资源。如果授权,用户也可以每次请求都指定缓存覆盖。

存储成本优化

由于性能和互用性的考虑,现在CIOs通常必须选择昂贵的存储技术,而不是成本更低的替代方案。

通过使用Alluxio,CIOs可以加速企业存档策略,将更多的数据转到低成本的存储技术。

  • Alluxio的智能缓存提供了数据局部性,以克服低成本存储的典型低性能。

  • 当被挂载到Alluxio中,利用HDFS或S3A接口进行数据访问的应用程序可以访问那些本地不支持这些接口的存储技术。

  • 数据可以在存储系统之间移动,而不需要在应用层进行任何的改变。

6. 企业级的考虑

PetaByte规模的数据

大多数大型企业都有PetaByte规模的结构化大数据。通常看到的逻辑大数据表都是TeraByte规模的。为了改进操作,这些大表通常被划分为表分区文件。大数据存储系统(例如,HDFS和对象存储)将大型文件分割成MegaByte规模的数据块。数据块级存储允许对大数据文件进行细粒度控制并且最小化整个网络的数据流。Alluxio被设计成可以和HDFS和对象存储无缝地工作,并且只透明地返回满足请求所需的块。这保证了不会以I/O瓶颈或大规模数据移动为代价进行数据统一。

元数据的管理

Alluxio共享了一个在领先的大数据系统如HDFS和对象存储中常见的基础设计假设,即数据是不可变的,也就是说,它们一旦被写入,就永远不会被修改。不可变数据允许系统突破随机写入需求所造成的规模限制。Alluxio引入了不可变数据以确保元数据与底层存储的同步是一种低开销操作。当新文件被写入时,如果通过Alluxio来添加,可以立即使用它们。文件如果被添加到Alluxio外的底层存储时,将根据用户定义的元数据刷新策略来与Alluxio同步。在这两种情况下,Alluxio中的元数据都保持同步,从而简化了用户的数据访问。

安全性

对于大型企业来说,数据安全性是极其重要的。除了数据统一管理访问之外,Alluxio还可以作为跨多个存储系统的统一安全层。

用户身份认证

在一个具有统一身份服务的企业中,Alluxio简单地认为服务是真理的来源,并且不负责在多个服务之间统一身份。身份服务如LDAP,通过不同的身份认证和IAM协议连接到不同的存储库中。

如果一个企业组织没有统一的身份认证服务,Alluxio会提供一个灵活的凭证管理方法,以实现多个底层存储的安全连接。在Alluxio中,用户身份认证是通过Kerberos实现的,这与底层存储身份认证是分离的,而是使用底层存储支持的身份认证方法实现的。

访问控制

Alluxio提供了一个类似于当前POSIX-compliant模型的统一访问控制模型。此外,它还添加了类UNIX的访问控制列表(ACLs)来支持任何用户或组的细粒度权限控制。

如果用户在LDAP身份存储中进行管理,Alluxio也可以与Active Directory和LDAP进行集成,以查询用户的组成员身份并实现访问控制。

当访问远程安全的Hadoop集群中的数据时,Alluxio支持HDFS用户模拟,这是一种安全的最佳实践。通过模拟,Alluxio可以代表客户端请求数据访问。这使得Hadoop集群能够维护完整的用户授权,并使Alluxio成为一个透明的数据代理。管理员使用现有的Hadoop工具如Cloudera Sentry和Apache Ranger来管理安全性。

加密

Alluxio支持挂载加密的数据源。由于Alluxio本身对数据块中的具体内容不作语义结构感知,所以加密的数据不会影响Alluxio的核心操作。

例如,如果一个SQL引擎需要访问加密的HDFS数据,Alluxio会模拟客户端的用户并代表用户请求访问。一旦授权,数据将被解密并以正常的形式返回给用户。如果同时启用了缓存,数据将以未加密的方式存储的Alluxio中。还可以启用Kerberos以进一步安全访问。

如果数据还没有在底层存储中加密,或者如果缓存在Alluxio需要加密,Alluxio也会代表客户端应用支持加密/解密。即使加密不是由存储系统本身进行全局配置的,也可以将由Alluxio加密的数据存储回底层存储中。

灵活性&集中性

许多大型企业都希望利用灵活性和集中性来优化它们的资源使用。为了实现这种转变,应用程序堆栈正在被重新设计,以分离计算和存储。Alluxio的设计促进了这种分离的关注。

系统本身也被设计成可以随着资源需求的变化而上下伸缩,并且可以通过中间层的合作关系与中间层DC/OS和Kubernetes等企业资源管理人员一起使用。在这些环境下,可以使用Alluxio来统一驻留在这些集群之外的数据。

容错

Alluxio是一个具有内置容错功能的分布式可扩展系统。任何组件都没有单点故障,并且在一个组件崩溃的情况下,也不会有数据丢失。建议使用多master方法来部署Alluxio。

底层存储也可以通过Alluxio底层存储复制特性来复制,这一特性支持Alluxio集群之外的高可用性需求。

7. 结论

随着大型企业努力应对日益增长的大规模数据、越来越多的存储技术和激增的应用程序,大数据的统一正成为使用传统方法管理的难题。

Alluxio是第一个将大数据统一起来的存储虚拟化技术,不需要拥有自己的永久副本并且充当一个“虚拟数据湖”。应用程序使用工业标准接口和一个全局命名空间访问Alluxio中的文件,就像这些文件在一个传统的数据湖中一样。Alluxio独特之处在于底层存储的集成是通过配置完成而不是通过ETL进行,并且数据驻留在它的源系统中,有效地消除了陈旧的数据。

Alluxio将更多的数据迁移到低成本的存储中,并且提供快速本地访问重要且频繁使用的数据,从而允许企业优化存储成本。所有的这些都是在可扩展的、安全和容错的分布式系统中实现的。


猜你喜欢

欢迎关注本公众号:iteblog_hadoop:

回复 spark_summit_201806 下载 Spark Summit North America 201806 全部PPT

0、回复 电子书 获取 本站所有可下载的电子书

1、Apache Spark 统一内存管理模型详解

2、Elasticsearch 6.3 发布,你们要的 SQL 功能来了

3、Spark Summit North America 201806 全部PPT下载[共147个]

4、干货 | 深入理解 Spark Structured Streaming

5、Apache Spark 黑名单(Blacklist)机制介绍

6、Kafka分区分配策略(Partition Assignment Strategy)

7、Spark SQL 你需要知道的十件事

8、干货 | Apache Spark 2.0 作业优化技巧

9、[干货]大规模数据处理的演变(2003-2017)

10、干货 | 如何使用功能强大的 Apache Flink SQL

11、更多大数据文章欢迎访问https://www.iteblog.com及本公众号(iteblog_hadoop)
12、Flink中文文档:
http://flink.iteblog.com
13、Carbondata 中文文档
http://carbondata.iteblog.com

 
Hadoop技术博文 更多文章 如何在 Apache Hive 中解析 Json 数组 你还在嘲笑码农吗?他们才是你朋友圈里的真土豪 分布式缓存Redis Cluster在华泰证券的探索与实践 免费会议 | 中国HBase技术社区第二届MeetUp ——HBase技术解析及应用实践 Apache Spark 作业性能调优(Part 2)
猜您喜欢 ❲追根究底❳SHELL编程之执行过程 技术领导要不要写代码? Operator 并发原语: subscription-containers(二),无锁化 TwoSubscribers 30岁年薪20万算不算很失败? 重要安全公告:GNU Bash漏洞公告