使用开源中间件:云计算环境中的中间件采用开源框架,可以减少开发和部署时间,提高开发效率和可靠性。

作者:禅与计算机程序设计艺术

1.简介

云计算是一个新的分布式计算模型,具有独特的特征。它把资源的虚拟化、弹性伸缩和按需付费等能力集成到了一起。这种新型的分布式计算模式,使得软件工程师们在编写应用程序时无须担心服务器性能,而只需要关注应用本身。同时,云平台提供的计算资源又可以按需收取,用户不必购买昂贵的硬件设备。

云计算环境中的中间件通常采用开源框架,如Apache Hadoop、Spark、Storm等。这些框架可以减少软件开发人员和系统管理员的开发和部署时间,并且能有效地解决现有的软件架构中的难题。例如,使用Hadoop作为集群的计算引擎,可以方便地进行数据处理、数据分析、机器学习和图论计算;Spark提供了一种分布式计算框架,可以帮助解决海量数据的并行处理问题;Storm则专门用于实时流处理,适合于处理互联网规模的数据流。

为了更好地利用云计算平台的特性,云服务商往往推出自己的开源软件。例如,亚马逊AWS开源了Amazon EMR(Elastic MapReduce)软件,用于管理 Amazon Elastic Compute Cloud(EC2)上的 Hadoop 集群;微软Azure也推出了 Azure HDInsight,用来支持 Apache Spark、Storm 和 HBase 等框架。

然而,对于一些企业级的云计算平台,比如谷歌的GCE或微软的Azure,它们的开源软件主要还是面向大众。因此,如何充分利用这些平台上的开源软件能够带来巨大的收益。本文将阐述云计算环境中开源中间件的优势,以及如何将这些工具用于企业级云平台上。

2.云计算环境中开源中间件的优势 首先,云计算环境中的开源中间件能够降低成本和缩短开发周期。在这一点上,开源工具可以节省时间和金钱,因为他们免去了购买和安装服务器的时间。另外,云服务商一般都会提供云平台服务的商业许可证,使得公司可以使用云服务商的软件即服务或软件即服务套餐,从而省去了部署和运维的时间和精力。

其次,开源软件已经经过了多年的不断迭代优化,具有良好的稳定性和安全性。基于开源软件的工具比商业软件更容易实现快速迭代更新,而且能够满足公司日益增长的业务需求。

第三,云计算环境中的开源中间件能自动化部署、管理和监控集群,可以大幅度简化复杂的运维工作。由于云服务商都提供了自动化部署脚本或API,用户只需简单配置即可自动部署所需的组件,而不需要手动安装或配置服务器。此外,云服务商还会提供多种工具用于监控集群,如日志收集、指标监控、故障诊断等,可以及时发现和解决集群的问题。

第四,云计算环境中的开源中间件具备高度灵活性。借助开源软件,用户可以自由选择使用的组件版本、功能设置和运行环境。例如,用户可以通过开源软件对Spark集群的存储系统进行选择,选择兼容性最强的HDFS或S3系统。此外,开源软件还可以根据不同业务场景进行定制化开发,例如,适用于广告点击预测任务的Spark MLlib模块可以替代商业软件的统计分析模块。

3.云计算环境中开源中间件的部署 本章将详细描述云计算环境中开源中间件的部署过程。首先,本文将阐述开源中间件的基本概念和架构。然后,将介绍常用的开源软件——Apache Hadoop、Apache Storm和Apache Spark的部署方法。最后,将介绍开源软件的自动化部署工具Ansible的基本用法。

3.1 开源中间件概览

在云计算环境中,开源中间件是一个被广泛使用的技术领域。在本节中,将简要介绍开源中间件的相关概念和架构。

3.1.1 中间件概念

中间件(Middleware)是一种软件系统组件,它位于客户端和服务器之间,负责完成两者之间的通信、协调和集成工作。它通常由一个或多个软件模块组成,包括网络接口层、消息传递层、事务管理器、业务规则引擎等。中间件还包括数据库连接池、缓存系统、配置管理、安全管理、资源调配、部署管理等各个方面的功能。

在云计算环境中,中间件通常由三部分构成——基础设施即服务(IaaS)、平台即服务(PaaS)和软件即服务(SaaS)。下图展示了这三个服务的架构。

IaaS层负责提供计算资源、网络、存储等基础设施服务。用户可以自行配置和管理服务器,包括部署、管理操作系统、配置硬件,以及维护软件、硬件、网络等。

PaaS层提供软件开发环境、中间件运行环境、数据库等运行平台服务。用户可以直接使用平台提供的中间件框架,进行开发和部署。平台可以提供各种中间件框架,如消息队列、数据库、配置管理、缓存系统、安全机制等。

SaaS层提供应用软件服务,用户可以在线上订阅服务,使用提供的软件服务,通过浏览器、移动APP等访问。云服务商提供的软件往往涉及到复杂的商业逻辑,用户不必考虑底层的软件细节,只需简单的使用界面即可完成相应工作。

3.1.2 中间件架构

云计算环境中的开源中间件通常基于分布式计算模型构建。下图展示了常用的开源中间件架构:

数据流转

在分布式计算模型中,数据通过传输层进行流动。传统的中间件架构中,消息队列用于接收和存储来自客户端的数据,应用程序处理完后再发送给其他中间件或最终目的地。但是在云计算环境中,数据通常不是直连的,而是经过多个节点的传递,因此消息队列无法很好地处理这类流数据。所以,云计算环境中的开源中间件通常采用其它方式进行数据流转,如存储流、事件流、RPC调用等。

分布式计算

开源中间件的一个重要特性就是分布式计算模型。在该模型中,用户提交任务到不同的节点,中间件负责将任务分配到不同的计算节点上运行。计算节点上运行的任务可以分布式地进行数据处理、机器学习、图论计算等。因此,云计算环境中的开源中间件可以有效地解决数据量大、任务密集的大数据计算问题。

模块化设计

开源中间件的架构模块化程度较高,典型的中间件架构如图所示。它由消息队列、计算引擎、服务代理、存储、调度器、网络组件等几个模块组成。每个模块都可以单独部署,互相配合,共同组成完整的中间件系统。

3.2 Hadoop、Storm和Spark的部署方法

本节将介绍常用的开源软件——Apache Hadoop、Apache Storm和Apache Spark的部署方法。

Hadoop的部署方法

Hadoop是一个开源的分布式计算框架。它的基础架构由HDFS、MapReduce、YARN组成。HDFS是一个分布式文件系统,用于存储数据。MapReduce是一个分布式计算模型,用于数据处理。YARN是一个资源管理系统,用于统一管理集群资源。Hadoop的部署方法如下:

  1. 安装依赖包。Hadoop的所有模块均需要安装Java、Python、SSH等依赖包。

  2. 配置hadoop-env.sh配置文件。该文件定义了Hadoop的运行环境变量。

  3. 创建必要的文件夹。创建/etc/hadoop文件夹,用来保存Hadoop所有相关文件的配置。

  4. 修改core-site.xml配置文件。配置HDFS和YARN的默认地址,以及其他一些通用配置项。

  5. 修改hdfs-site.xml配置文件。配置HDFS的名称节点地址、副本数量、备份数目、块大小等。

  6. 在所有的结点上创建ssh免密码登录。确保所有结点的SSH私钥对等已存在。

  7. 配置mapred-site.xml配置文件。配置MapReduce作业的资源分配、输入输出目录等。

  8. 配置yarn-site.xml配置文件。配置YARN的资源分配策略,以及队列配置信息。

  9. 配置masters文件。指定主节点的IP地址。

  10. 配置slaves文件。指定计算节点的IP地址。

  11. 启动NameNode和DataNode进程。分别在HDFS的主节点和计算节点上启动NameNode和DataNode进程。

  12. 启动ResourceManager和NodeManager进程。分别在YARN的主节点和计算节点上启动ResourceManager和NodeManager进程。

  13. 测试Hadoop是否正常工作。启动客户端程序,连接Hadoop集群,运行简单的测试命令,如ls、mkdir、cat等。如果测试成功,则表示Hadoop集群部署成功。

Storm的部署方法

Storm是一个开源的分布式实时计算平台。它的基本架构由Nimbus、Supervisor和Worker组成。Nimbus是一个独立的集群,负责调度执行Topology。Supervisor是一个进程,运行在每台机器上,负责对集群内运行的Topology进行监控和故障恢复。Worker则是一个JVM进程,运行在每台机器上,负责执行具体的任务。

Storm的部署方法如下:

  1. 安装依赖包。Storm要求安装JDK、Maven、Zookeeper等依赖包。

  2. 配置storm.yaml配置文件。该文件定义了Storm的主要参数。

  3. 创建必要的文件夹。创建/var/log/storm文件夹,用来保存Storm的日志文件。

  4. 将storm.yaml配置文件上传到nimbus结点上。

  5. 在nimbus结点上启动Zookeeper进程。

  6. 在nimbus结点上启动Storm主进程。

  7. 在supervisor结点上启动Storm supervisor进程。

  8. 在supervisor结点上启动Storm worker进程。

  9. 测试Storm是否正常工作。启动客户端程序,连接Storm集群,运行简单的测试Topology,如WordCount、Bolt计数器等。如果测试成功,则表示Storm集群部署成功。

Spark的部署方法

Spark是一个开源的分布式计算框架。它的基本架构由Driver、Executor、Cluster Manager、Scheduler、DAG Scheduler、Task Launcher、Shuffle Service、Web UI组成。Driver是一个进程,负责执行用户的作业。Executor是一个JVM进程,运行在集群的每个结点上,负责运行作业的任务。Cluster Manager是一个进程,负责管理集群的资源,调度作业的执行。

Spark的部署方法如下:

  1. 安装依赖包。Spark要求安装JDK、Scala、sbt等依赖包。

  2. 配置spark-env.sh配置文件。该文件定义了Spark的运行环境变量。

  3. 配置spark-defaults.conf配置文件。该文件定义了Spark作业的默认参数。

  4. 创建必要的文件夹。创建/usr/local/spark文件夹,用来保存Spark相关文件的配置。

  5. 设置SPARK_HOME环境变量。在/etc/profile或~/.bashrc中添加SPARK_HOME变量,指向Spark安装目录。

  6. 设置JAVA_HOME环境变量。在/etc/profile或~/.bashrc中添加JAVA_HOME变量,指向JDK安装目录。

  7. 配置SPARK_MASTER环境变量。在~/.bash_profile中添加SPARK_MASTER变量,指向Master结点的主机名。

  8. 为Supervisor结点配置SSH免密码登录。确保Supervisor结点的SSH私钥对等已存在。

  9. 在所有计算结点上下载Spark软件包。

  10. 在Supervisor结点上启动Spark master进程。

  11. 在Supervisor结点上启动Spark Slave进程。

  12. 在所有计算结点上启动Spark executor进程。

  13. 测试Spark是否正常工作。启动客户端程序,连接Spark集群,运行简单的测试作业,如Pi Estimation、WordCount等。如果测试成功,则表示Spark集群部署成功。

Ansible的基本用法

Ansible是一个开源的IT自动化工具,可以用来自动化部署、管理、配置计算机集群。它基于SSH协议,支持批量管理大量远程计算机。Ansible的部署方法如下:

  1. 安装ansible。Ansible是python开发的,因此需要先安装python。

  2. 安装sshpass。sshpass是Linux下的一个工具,用来在shell中执行 ssh 命令。

  3. 生成SSH秘钥对。使用ssh-keygen命令生成秘钥对。

  4. 拷贝SSH秘钥对到目标结点。将生成的秘钥对拷贝到目标结点的~/.ssh/目录下。

  5. 在ansible的playbook文件中配置目标结点信息。配置inventory文件,列出目标结点的IP地址或主机名。

  6. 在ansible的playbook文件中配置任务信息。配置playbooks,定义要执行的任务,如安装软件、创建用户、复制文件、执行脚本等。

  7. 执行ansible playbook。在目标结点上执行ansible-playbook命令,执行指定的playbook文件,完成目标结点的自动化部署、管理。

猜你喜欢

转载自blog.csdn.net/universsky2015/article/details/133502334