如何在openstack上部署hadoop

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在openstack上部署hadoop相关的知识,希望对你有一定的参考价值。

参考技术A 随着信息时代的快速发展,大数据技术和私有云环境都非常实用;只是,假设将两者结合在一起。企业会获得巨大的利润。虽然结合两者会让环境变得更复杂。企业仍然能够看到将 OpenStack 私有云和 Apache Hadoop 环境结合在一起产生的显著的协同效应。怎样来做会更好?

方案1. Swift、Nova + Apache Hadoop MapReduce

对于希望在大数据环境中实现更高程度的灵活性、可扩展性和自治性的企业,能够利用 Apache 和 OpenStack 提供的开源产品的与生俱来的能力。为此,企业须要最大限度地利用这两种技术栈。这就要求采用与前面所述的解决方式不同的思维方式来设计环境。
在这方面软件开发专业网是非常有经验的。

要获得全然可伸缩的、灵活的大数据环境,必须在一个同一时候提供存储和计算节点的私有云环境中执行它。为此。企业必须先构建私有云。然后加入大数 据。因此。在这样的情况下,必定会用到 Swift、Nova 和 RabbitMQ。并控制器节点来管理和维护环境。
可是。问题在于企业是否须要针对不同的系统和业务部门将环境分为若干个部分(比如,非大数据虚拟机或客 户机实例)。假设企业准备全然使用私有云,那么应当加入 Quantum,从网络的角度对不同的环境进行划分。

方案2. Swift+Apache Hadoop MapReduce

在私有云环境中。常见的大数据部署模型之中的一个是:将 OpenStack 的 Swift 存储技术部署到 Apache Hadoop MapReduce 集群,从而实现处理功能。使用这样的架构的优势是。企业将获得一个可扩展的存储节点,能够用该节点来处理其不断累积的数据。依据 IDC 的调查,数据年增长率已经达到 60%,该解决方式将满足不断增长的数据需求。同一时候同意组织同一时候启动一个试点项目来部署私有云。

该部署模型的最佳使用场景是企业希望通过存储池尝试使用私有云技术。同一时候在内部使用大数据技术。最佳实践表明企业应当先将大数据技术部署到您的 生产数据仓库环境中。然后构建并配置您的私有云存储解决方式。假设将 Apache Hadoop MapReduce 技术成功融合到数据仓库环境中。而且已经正确构建并执行您的私有云存储池。那么您就能够将私有云存储数据与预调度的 Hadoop MapReduce 环境集成在一起。

方案3. Swift + Cloudera Apache Hadoop 发行版

对于那些不愿意从头开始使用大数据的企业,能够使用 Cloudera 等解决方式供应商提供的大数据设备。
Cloudera 的发行版包含 Apache Hadoop (CDH) 解决方式,它同意企业不必针对 Hadoop 的每一个细微区别来招募或培训员工。因此能够在大数据方面实现更高的投资回报 (ROI)。
对于那些不具备大数据或私有云技能集。希望以缓慢、渐进的方式将该技术集成到其产品组合的企业。这一点尤其吸引人。

大数据和云计算属于相对较新的技术,很多企业希望通过它们实现成本节省;只是。很多企业对于是否全然采用这些技术犹豫不决。通过利用供应商支持 的大数据软件版本号,企业在这方面将会更加从容,同一时候还能够了解怎样使用这些技术来发挥自身的优势。此外,假设使用大数据软件分析大型数据集,并且能够通过 私有云存储节点来管理这些数据集。那么这些企业还能够实现更高的利用率。为了最好地将这一策略集成到企业中,首先须要安装、配置和管理 CDH,以便分析企业的数据仓库环境。然后将 Swift 中存储的数据加入到须要的地方。

在设置并测试了私有云环境后。能够将 Apache Hadoop 组件合并到当中。
此时。Nova 实例可用于存放 NoSQL 或 SQL 数据存储(没错,它们能够共存)以及 Pig 和 MapReduce 实例;Hadoop 能够位于一个独立的非 Nova 机器上,以便提供处理功能。
在不久的将来,Hadoop 有望在 Nova 实例上执行,使私有云自包括到全部 Nova 实例中。

方案4. GFS、Nova、Pig 和 MapReduce

从架构的角度看,除了使用 OpenStack 的 Swift 实现可扩展存储外,可能还有其它选择。本例使用了 Google File System (GFS)、Nova 组件和 Apache Hadoop 组件,详细来讲,使用了 Pig 和 MapReduce。该演示样例同意企业集中精力开发一个仅用于计算处理的私有云计算节点,同一时候利用 Google 的公共存储云作为数据存储。通过使用这样的混合云,企业能够专注于计算处理功能的核心能力,由第三方负责实现存储。该模型能够利用其它供应商的存储解决方 案,如 Amazon Simple Storage Service;可是,在使用不论什么外部存储之前,企业应当在内部使用可扩展的文件系统 (XFS) 来构建该解决方式。并进行对应的测试,然后再将其扩展到公共云中。此外,依据数据的敏感性。企业可能须要使用数据保护机制,比方模糊处理 (obfuscation)、解除匿名化、加密或散列。

技巧和提示

在将云计算和大数据技术并入企业环境时,一定要为这两个技术平台构建员工的技能集。
当您的员工理解这些技术后,就能够组建一个实验室来测试这两 个平台合并后的效果。因为包括很多不同的组件。因此在实现过程中。请务必遵循前面提到的经过验证的路径。
此外,企业在尝试合并这两种模式时可能会遇到一些 挫折,应当在进行若干次尝试后改用其它方法。这些方法包括设备和混合云。

障碍和陷阱

因为这些都是比较新的技术,所以大多数企业须要利用现有资源进行测试,之后再进行大量的资本支出 (CapEx)。然而,假设没有对这些技术在企业中的应用进行合理的预算和人员培训,那么试点和测试工作将会以失败告终。相同。假设缺少完整的私有云部 署。企业应当首先在当中实现大数据技术,然后再实现私有云。

最后,企业须要为私有云和大数据计划制定一个战略路线图。要获得成功的部署,则须要进行很多其它的分析 “工作”,这有可能会迟延处理过程。为了消除这样的风险,应当采用一种迭代式的项目管理方法,以分阶段的方式部署到业务部门中。通过这样的方法将这些技术部署 到企业中。企业须要确认怎样通

一文搞定!在 OpenStack 上部署 Hadoop

打造开源云计算中国第一互动社区

内容专注于Linux、Kubernetes、OpenStack、容器、Ceph、Cloud Foundry......

导读


OpenStack 控制计算、存储和网络资源池。本文主要关注 OpenStack 如何在大数据用例中扮演关键角色。

OpenStack 上的大数据

现在,数据随处生成,数据量呈指数增长。来自 Web 服务器、应用程序服务器、数据库服务器的数据以用户信息、日志文件和系统状态信息的形式提供。大量的数据也由物联网设备产生,如传感器、车辆、工业设备等。从科学模拟模型生成的数据也是大数据的来源之一。使用传统软件工具来存储和执行这些数据的分析可能很困难,而 Hadoop 可以解决这个问题。

看一个用例场景 —— 大量的数据存储在关系数据库管理系统环境中。当数据集越来越大时, RDBMS ( 关系数据库管理系统 Relational Database Management System )表现不佳。而且这个问题会随着数据集的增长而越发严重。在这个阶段,避免采用 NoSQL 。需要以具有成本效益的方式存储和处理大量数据。应该依赖非虚拟化环境中的高端服务器吗?要求是随时扩展集群,需要一个更好的仪表板来管理其所有组件。

计划在 OpenStack 之上建立一个 Hadoop 集群并创建 ETL ( Extract-Transform-Load)作业环境。Hadoop 是一个行业标准框架,用于存储和分析具有容错 Hadoop 分布式文件系统和 MapReduce 实施的大型数据集。然而,可伸缩性在典型的 Hadoop 集群中是一个非常普遍的问题。


Openstack 推出了一个名为 Sahara 的项目 —— 数据处理即服务。 Openstack Sahara 旨在配置和管理数据处理框架,如集群拓扑中的 hadoop mapreduce、spark和storm 。该项目与 Amazon Elastic MapReduce(EMR) 服务提供的数据分析平台类似。Openstack Sahara 可在几分钟内部署集群。此外,Openstack Sahara 可以根据需求通过添加或删除工作节点来伸缩集群。

使用 Openstack Sahara 管理 Hadoop 集群的好处

——集群可以更快地提供且易于配置。
——像其他 OpenStack 服务一样,Sahara 服务可以通过强大的 REST API、CLI 和 Horizon 仪表板进行管理。
——插件可用于支持 Vannila(Apache Hadoop)、HDP(ambari)、CDH(Cloudera)、MapR、Spark、Storm 等多个 Hadoop 供应商。
——集群大小可根据需求进行伸缩。
——可以与 OpenStack Swift 集成以存储由 Hadoop和 Spark 处理的数据。
——集群监控变得简单。
——除集群配置外,Sahara 还可以用作分析即服务,用于临时或突发分析工作负载。

架构

Openstack Sahara 旨在利用 OpenStack 的核心服务和其他完全托管服务。这使 Sahara 更加可靠并且能够有效地管理 Hadoop 集群,你可以选择使用包括 Trove( OpenStack 数据服务组件,允许用户对关系型数据库进行管理,实现了 Mysql 实例的异步复制和提供 PostgreSQL 数据库的实例。) 和  Swift  在内的服务。来看看 Sahara 的架构。


—— Sahara 服务有一个 API 服务器,它响应来自最终用户的 HTTP 请求并与其他 OpenStack 服务交互以执行其功能。


—— Keystone (身份即服务)对用户进行身份验证,并提供用于与 OpenStack 配合使用的安全令牌,将用户在 Sahara 中的能力限制为其 OpenStack 权限。


—— Heat (编排即服务)用于配置和编排数据处理集群的部署。


—— Glance(虚拟机镜像即服务)使用操作系统和预安装的 Hadoop / Spark 软件包存储 VM 镜像以创建数据处理集群。


—— Nova (计算)为数据处理集群提供虚拟机。


—— Ironic(裸机即服务)为数据处理集群提供裸机节点。


—— Neutron(网络)便于网络服务从基础到高级拓扑访问数据处理集群。


—— Cinder(块存储)为集群节点提供持久存储介质。


—— Swift(对象存储)提供可靠的存储来保存作业二进制文件和由hadoop / spark处理的数据。


—— Designate(DNS即服务)提供托管区域以保留集群实例的DNS记录。  Hadoop服务通过主机名与群集实例进行通信。


—— Ceilometer(telrmetry)收集和存储有关用于计量和监控目的的集群指标。


—— Manila(文件共享)可用于存储作业创建的作业二进制文件和数据。


—— Barbican(密钥管理服务)安全地存储密码和私钥等敏感数据。


——Trove(数据库即服务)为 hive metastore 提供数据库实例,并存储 Hadoop 服务和其他管理服务的状态。

如何建立Sahara集群

请按照部署 Sahara 安装指南中的步骤操作。不同的部署环境有不同的方式,如果你想要试验, Kolla 也是一个不错的选择。

你还可以通过 Horizon 仪表板管理 Sahara 项目。

用Sahara集群ETL(提取、转换和加载)或ELT(提取、加载和转换)

市场上有很多 ETL 工具可用。


传统数据仓库有其自身的优点和局限性,例如它可能位于数据源以外的其他位置。Hadoop 是运行 ETL 作业的理想平台。


数据存储区中有各种数据,包括结构化、半结构化和非结构化数据。Hadoop生态系统有从不同数据源(包括数据库、文件和其他数据流)中提取数据并将其存储在集中式 Hadoop Distributed File System(HDFS) 中的工具。


随着数据快速增长,Hadoop 集群可以扩展并利用OpenStack Sahara 。


Apache Hive 是建立在 Hadoop 生态系统之上的数据仓库项目,也是进行 ETL 分析的可靠工具。一旦使用工具(如 Sqoop、Flume、Kafka 等)从数据源中提取数据后,应该使用 MapReduce 技术用 Hive 或pig scripts 进行清理和转换。

Hive 的另一个优点是它是一个交互式查询引擎,可以通过 Hive 查询语言访问。它类似于 SQL 。因此,数据库人员可以在不掌握 Java 和 MapReduce 概念的情况下,在 Hadoop 生态系统中执行作业。Hive 查询执行引擎解析 Hive  查询并将其转换为一系列 MapReduce / Spark 作业。Hive 可以通过JDBC / ODBC 驱动程序和瘦客户端访问。

Oozie 是 Hadoop 生态系统中可用的工作流引擎。工作流是一组必须作为分布式环境中的序列执行的任务。Oozie 帮助创建一个简单的工作流来层叠多个工作流并创建协调的作业。Oozie 用于为复杂的 ETL 作业创建工作流也很理想,尽管它没有模块来支持与 Hadoop 相关的所有操作。


我们可以使用任何工作流引擎来执行 ETL 工作,例如 Openstack Mistral (工作流即服务)。Apache oozie 在某些方面类似于 Openstack Mistral ,充当可以定期触发的作业调度器。

我们来看看一个典型的 ETL 作业流程,它使用Hadoop 将应用程序将其数据存储在 MySQL 服务器中。存储的数据需要以最少的成本和时间进行分析。

提取

第一步是从 MySQL 中提取数据并将其存储在 HDFS中。 


Apache Sqoop 可用于从结构化数据源(如 RDBMS数据存储)导出/导入数据。


如果要提取的数据是半结构化的或非结构化的,你可以使用 Apache Flume 从数据链接中获取数据,例如 Web 服务器日志、Twitter 数据流或传感器数据。

转换

从上述阶段提取的数据格式不正确(只是原始数据)。应该用适当的过滤器和数据聚合来清理。


这是在 HDFS 中存储数据必不可少的。

此时,我们需要为每个表设计 Hive 模式,并创建一个数据库来转换存储在临时区域中的数据。


通常情况下,数据采用 .csv 格式,每条记录均以逗号分隔。

我们不需要检查 HDFS 数据以了解它是如何存储的。有一些异常数据类型应该与 Hive 兼容。

数据库建模后,我们可以加载提取的数据进行清理。表格中的数据仍然未标准化。从不同的表中聚合所需的列。


同样,可以用“ OVERWRITE INTO TABLE ”语句来汇总多个表中的数据。


Hive 支持分区表,通过水平分配执行负载来提高查询性能。我们倾向于分区存储年份和月份的列。有时,分区表在 MapReduce 作业中创建更多任务。

加载

现在是时候将转换后的数据加载到 HDFS 中的数据仓库目录中,这是数据的最终状态。在这里,我们可以应用 SQL 查询来获得适当的结果。

所有的 DML 命令都可以用来分析基于用例的仓库数据。

结果可以下载为 .csv、表格或图表进行分析。它可以与其他流行的商业智能工具(如Talend OpenStudio、Tabelau 等)集成。

自动化

现在使用 Oozie 工作流引擎自动执行 ETL 作业(你也可以使用 Mistral,大多数 Hadoop 用户习惯用Apache Oozie )。

结论

OpenStack 集成了一个非常大的 Hadoop 生态系统,许多云提供商提供 Hadoop 服务(只需要点击几下它们的云管理门户网站即可)。Sahara 支持大部分 Hadoop 供应商插件,让你执行 ETL 工作流。

内容覆盖主流开源领域

一文搞定!在 OpenStack 上部署 Hadoop
一文搞定!在 OpenStack 上部署 Hadoop
一文搞定!在 OpenStack 上部署 Hadoop
一文搞定!在 OpenStack 上部署 Hadoop
一文搞定!在 OpenStack 上部署 Hadoop

投稿邮箱

openstackcn@sina.cn

以上是关于如何在openstack上部署hadoop的主要内容,如果未能解决你的问题,请参考以下文章

Deploy sahara on openstack-icehouse

技能get | 如何将OpenStack部署在Kubernetes上?

如何快速部署OpenStack环境

一条龙! 有关基于 OpenStack 如何部署HPC

如何在OpenStack中轻松部署MySQL应用

如何使用OpenStack将云主机部署到特定的计算节点上