在 IBM SmartCloud Enterprise 上构建基于 Hadoop 的数据分析系统

云计算与大规模数据分析是相辅相成的,云的优点包括灵活性、随需应变的资源访问和实用工具式的计费,而大规模数据处理/分析提供了一个利用云资源的框架。云与 Hadoop 的结合让处理大量的结构化与非结构化数据成为可能。在本文中,作者将解释如何开始在 IBM SmartCloud Enterprise 上使用 Hadoop(以 InfoSphere® BigInsights Basic 的形式)。我们还将了解如何建立由三个节点组成的集群并确认它能够有效工作。

Raul F. Chong, DB2 项目经理和技术传播者, IBM

Raul F. Chong 的照片Raul F. Chong 是 Information Management 云计算能力中心的一位高级项目经理。他在 IBM 工作了 14 年,担任过数据库顾问、支持专家、信息开发人员和技术推广专家。他专攻的主要领域包括云计算、大数据和数据库。


developerWorks 投稿作者

2011 年 11 月 21 日

云计算与大规模数据分析这两个技术领域如今越来越流行:

  • 云计算提供了灵活性、随需应变的资源访问与实用工具式计费等优势。
  • 使用 Hadoop 的大规模数据处理与分析提供了一个框架,通过将工作负载分散到一个计算机集群中来充分利用这些资源。

由于云和 Hadoop 的出现,及时处理大量的结构化或非结构化数据目前已成为可能。尽管 Hadoop 并非专为与云一起提供的虚拟化环境而设计,但云仍然提供了一个易于搭建和高性价比的环境。在物理节点上运行 Hadoop 作业可能比在云上的虚拟化节点上运行相同作业要好;不过,云让所有类型的用户都能运行 Hadoop 作业,这意味着用户能够操作大规模数据,而这在过去是不可能的。

目前还缺乏关于了解如何配置并管理云和 Hadoop 技术的技巧。通过使用本文中的实践指导,您应该能够快速而又高效地掌握这些技术。本文向您介绍:

  • 在 IBM SmartCloud Enterprise 上预备三个实例以组建由三节点组成的集群的过程。
  • 如何通过停止与启动所有 Hadoop 组件、测试一些命令以及检查 Web 控制台来验证集群。

您应该能够遵照本文中的指示组建一个能满足您需求的更大集群。

准备知识

“满足” 本文的先决条件

即使事先没有搭建过自己的系统,您仍能从本文中学到很多知识,访问这些元素会给您提供一些亲身体验:

本文中使用了 IBM InfoSphere BigInsights Basic 软件(简称 BigInsights)。BigInsights 是 IBM 发行的拥有额外功能的 Hadoop。基本版是免费的。在 侧边栏中可找到更多信息。

如果您是 Hadoop 方面的新手,您可以学习免费的在线课程 (BigDataUniversity.com),其中包括一些视频与实验练习。该课程包含本文中描述的组建过程的一段视频演示,以及在 IBM Cloud 上运行一些 Hadoop 命令的视频演示。这些材料包含在课程 “Lesson 1: Hands-on lab: Creating your own Hadoop cluster, Option 3” 中。如果您想学习更加详细的课程,IBM 提供了收费的 “InfoSphere BigInsights Essential” 课程。请参见 侧边栏 中关于这些资源的链接。

如果您愿意在阅读指导说明的同时尝试这些实践练习,请继续阅读。

准备好开始了吗?您需要有一个 IBM Cloud 账号。


云上的数据分析入门

为了在 IBM Cloud 中预备三个实例来组建由三节点组成的集群,并验证和测试您的集群,请执行以下操作:

  1. 登录到 IBM Cloud 中。
  2. 预备一个 BigInsights Master 节点实例。
  3. 预备一个 BigInsights Data 节点实例。
  4. 核实您的 Hadoop 集群正在工作。

步骤 1:登录到 IBM Cloud

  1. 打开 IBM Cloud 门户页面 并登录。
  2. 输入您的用户 ID 和密码,然后单击 Submit
    图 1. IBM Cloud 登录页面
    IBM Cloud 登录页面
  3. 登录之后,IBM Cloud 仪表板将打开并自动选择 Overview 选项卡,如图 2 所示。其上显示了您过去配给的实例。单击 Control panel 选项卡。
    图 2. IBM Cloud 仪表板
    IBM Cloud 仪表板

步骤 2:预备一个 BigInsights 主节点实例

本文撰写之际,IBM Cloud 为 BigInsights 提供了两种类型的映像:

  • IBM BigInsights Basic 1.1 Hadoop Master 节点
  • IBM BigInsights Basic 1.1 Hadoop Data 节点

这些映像运行在带有 “pay as you go” 选项的 64 位 RedHat Enterprise Linux (RHEL) 5.6 之下。如前所述,BigInsights Basic 版本是免费的,但是使用 RHEL 与 IBM Cloud 基础架构的费用为 0.30 美元/每小时。

Hadoop 使用一种主从架构,其中主结构中包括 NameNode 与 JobTracker 节点,而从属结构中包括 DataNode 与 TaskTracker 节点。

通过配置 Hadoop,您可以在以下三种模式中的一种模式下工作:

  • 单机模式:不启动所有组件,在一个节点上工作。
  • 伪分布模式:启动所有组件,在一个节点上工作。
  • 完全分布模式:启动所有组件,并要求在多个节点上工作。

单机模式与伪分布模式通常用在开发或测试中,而完全分布模式通常用在生产环境中。

本文假定您在伪分布模式或完全分布模式下工作,具体使用哪种模式取决于除了 Hadoop Data 节点之外您是否提供了 Hadoop Master 节点。

  • 如果您只提供一个 Hadoop Master 节点,那么只能在一个节点上工作,即在伪分布模式下工作。
  • 如果除了 Hadoop Master 节点之外,您还提供了一个或多个 Hadoop Data 节点,那么您是在完全分布模式下工作。

IBM Cloud BigInsights 已经经过配置,因此只要在配给 Hadoop Data 节点时指定 Hadoop Master 节点的 IP 地址,便可轻松构建集群。必须首先提供 Hadoop Master 节点实例。

如果您想在单机模式下工作,可以预备一个 BigInsights Master 节点,并在 Hadoop 中设置这种操作模式(注释掉文件 core-site.xml、hdfs-site.xml 与 mapred-site.xml中的所有参数)。

让我们预备一些 Hadoop Master 节点实例。

  1. 在 Control panel 选项卡中,单击 Add instance
    图 3. 添加一个 BigInsights 实例
    添加一个 BigInsights 实例
  2. 选择您将在其上运行实例的数据中心。
    图 4. 选择一个数据中心
    选择一个数据中心的窗口

    BigInsights 映像在所有数据中心都应该是可用的。在这个示例中,选择使用的是 Markham、Canada 数据中心。

  3. 选定数据中心之后,就会显示该数据中心中可用映像的列表。请选择 IBM BigInsights Basic 1.1 - Hadoop Master Node 映像,然后单击 Next
    图 5. 选择 BigInsights Basic 1.1 - Hadoop Master Node
    选择 BigInsights Hadoop Master Node 映像
  4. 配置 BigInsights Hadoop Master Node 映像。
    图 6. 配置 BigInsights Hadoop Master Node 映像
    配置 BigInsights Hadoop Master Node 映像

    在该示例中,将这个实例命名为 “Hadoop master”。

    MapReduce:给 Hadoop 锦上添花

    MapReduce 是一个支持在计算机集群上对大规模数据集进行分布式计算的软件框架;它源自函数式编程中常用的 mapreduce 函数,但它们在 MapReduce 中的功能与原来并不相同。

    对于 MapReduce 而言,在 map 步骤中的 Master 节点会获得输入内容,将其划分为较小的部分,然后将它们分派到各个 Worker 节点;再继续层层往下分解,并最终形成一个多分支的树结构。在问题处理完毕之后,它可以回溯到 Master 节点。在 reduce 步骤中,Master 节点会收集所有答案,并将结合它们来解决原始问题。

    对于 Server configuration 选项,如果您只是尝试一下,并不真正为了生产目的而去搭建环境,那么 Copper 很可能就已经够用。如果您是为了生产目的而搭建环境,应该首先使用 IBM Cloud 中不同的配置规模(Copper、Bronze、Silver、Gold、Platinum)来检验 MapReduce 作业的性能。您还可以尝试使用 Hadoop wiki (参见 参考资料)中指定的基准。如果您尝试使用这些基准,可以只预备一个节点(Hadoop Master 节点)。创建好集群之后,就可以再次重复使用基准。特别是对于 BigInsights IBM Cloud 映像,需要针对基准运行以下特定命令:

    cd /mnt/biginsights/opt/ibm/biginsights/IHC
    hadoop jar hadoop-*-examples.jar randomwriter rand 
    hadoop jar hadoop-*-examples.jar sort rand rand-sort

    因为我用过 IBM Cloud,我以前在 Key 下生成过密钥;因此,我可以重用这些密钥之一。这个示例使用的是 IBM Cloud Raul

  5. 为所有其他参数选择默认值,然后单击 Next
  6. 这将显示您为映像指定的配置的概要介绍。如果没问题,请单击 Next
    图 7. 针对您的 Hadoop Master 节点映像的配置概要介绍
    针对您的 Hadoop Master 节点映像的配置概要介绍
  7. 您会看到一份服务协议,必须同意协议条款才能继续后面的步骤。请单击 I agree ,然后单击 Submit
    图 8. 同意服务协议后才能继续后面的步骤
    同意服务协议后才能继续后面的步骤
  8. 提交预备映像的请求之后将显示成功的消息面板。
    图 9. 提交预备实例的请求之后的成功消息
    提交预备实例的请求之后的成功消息
  9. 几分钟后,您的实例将被请求、预备好并激活,这意味着它已经开始运行并且可以使用。对于此映像,只要映像变为活动状态,就会自动启动所有的 Hadoop 组件。实例的 IP 地址也应该显示出来,如图 10 中所示。
    图 10. 成功预备了 Hadoop Master 节点实例
    成功预备了 Hadoop Master 节点实例

在这个示例中,指定给这个 Hadoop Master 节点实例的 IP 地址是 170.224.193.137。记下这个地址,预备 Hadoop Data 节点时会用到它。

步骤 3:预备一个 BigInsights Data 节点实例

预备 Hadoop Master 节点实例之后,您可以开始预备将用于集群的多个 Data 节点。在这个示例中,您需要预备两个 Data 节点来创建由三节点组成的 Hadoop 集群。

因为预备 Hadoop Data 节点实例的过程十分类似于预备 Hadoop Master 节点,所以这里只描述不同的步骤或需要关注的步骤。

  1. 使用 Hadoop 时,访问位于不同数据中心内的数据是最糟糕的情况。因此,这个示例中使用了为主节点(Markham, Canada)选择的相同数据中心。当然,我们为映像选择的是 IBM BigInsights Basic 1.1 - Hadoop Data 节点 映像,如图 11 所示。
    图 11. 选择 Markham, Canada 数据中心内的 Hadoop Data Node 映像
    选择 Markham, Canada 数据中心内的 Hadoop Data Node 映像
  2. 输入 Hadoop slave 1 作为实例名称。对于所有其他设置,保留其默认值或者选择与 Hadoop Master 节点相同的值。
    图 12. 配置 BigInsights Hadoop Data 节点映像
    配置 BigInsights Hadoop Data 节点映像
  3. 配置完 BigInsights Hadoop Data 节点后会显示一个面板,您需要在其中输入 Hadoop Master 节点的 IP 地址。为了能够将 Hadoop Data 节点自动添加到集群,该地址是必不可少的。请输入 IP 地址,然后单击 Next。在这个示例中,Hadoop Master 节点的 IP 地址是 170.224.193.137。
    图 13. 输入 BigInsights Hadoop Master IP 地址
    输入 BigInsights Hadoop Master IP 地址
  4. 继续完成接下来的步骤,接受其默认值,从而添加 Hadoop Data 节点实例。
  5. 重复完全相同的过程即可创建另一个 Hadoop Data 节点;这次将它命名为 Hadoop slave 2

图 14 显示了 Hadoop Master 实例与两个 Hadoop Data 节点(从)实例。

图 14. 您的三节点 Hadoop 集群已经可以使用
您的三节点 Hadoop 集群已经可以使用

当所有实例都已预备好并激活时,您的 Hadoop 集群已经可以使用。恭喜您!

步骤 4:确认您的 Hadoop 集群能够正常工作

  1. 在 IBM Cloud Control 面板的选项卡中,单击 Hadoop master 实例。向下滚动。您应该看到与图 15 和图 16 中类似的信息。
    图 15. Hadoop Master 节点的总配置
    Hadoop Master 节点的总配置

    图 15 显示了 Hadoop Master 节点的配置内容的摘要。

    图 16. Hadoop Master 节点的 “Getting started” 部分
    Hadoop Master 节点的 “Getting started” 部分

    图 16 显示了用于监控您的集群的一些有用链接的列表。特别要注意的是第一个链接 BigInsights Web Console。当您单击该链接时,会在您的浏览器中打开 Web Console,如图 17 所示。

    图 17. BigInsights Web Console
    BigInsights Web Console
  2. 在 BigInsights Web Console 中,可以通过在 Components 部分中确认每个组件均已启动来验证 Hadoop 集群正在运行。在 Start Stop Summary 部分,可以验证三个节点均已启动。
  3. 让我们尝试一些命令。对主节点使用 putty to ssh。和 IBM Cloud 中的其他实例一样,指定 idcuser 作为用户。
  4. 使用 stop-all.sh 命令停止 Hadoop 的所有组件。
    图 18. 使用 stop-all.sh 命令停止所有组件
    使用 stop-all.sh 命令停止所有组件
  5. 现在,使用 start-all.sh 命令启动 Hadoop 的所有组件。
    图 19. 使用 start-all.sh 命令启动所有组件
    使用 start-all.sh 命令启动所有组件
  6. 执行这些命令以确认一切正常:
    • hadoop fs -ls /
      This tests the Hadoop Distributed File System (HDFS) is working by listing all files and directories in the root of HDFS.
    • pig
      Grunt> quit;

      This starts pig and exits.
    • hive
      Hive> quit

      This starts hive and exits.
    • jaqlshell
      Jaql> quit;

      This starts jaql and exits.

    图 20 中显示了这些命令及其输出。

    图 20. 测试一些 Hadoop 命令和组件
    测试一些 Hadoop 命令和组件

结束语

本文描述了数分钟内在 IBM Cloud 上组建由三节点组成的 Hadoop 集群的详细步骤。这个过程非常简单,适用于创建规模更大的集群。您需要确保首先预备了 Hadoop Master 节点,并写下其 IP 地址,以便在预备 Hadoop Data 节点时指定它。

参考资料

学习

获得产品和技术

讨论

条评论

developerWorks: 登录

标有星(*)号的字段是必填字段。


需要一个 IBM ID?
忘记 IBM ID?


忘记密码?
更改您的密码

单击提交则表示您同意developerWorks 的条款和条件。 查看条款和条件

 


在您首次登录 developerWorks 时,会为您创建一份个人概要。您的个人概要中的信息(您的姓名、国家/地区,以及公司名称)是公开显示的,而且会随着您发布的任何内容一起显示,除非您选择隐藏您的公司名称。您可以随时更新您的 IBM 帐户。

所有提交的信息确保安全。

选择您的昵称



当您初次登录到 developerWorks 时,将会为您创建一份概要信息,您需要指定一个昵称。您的昵称将和您在 developerWorks 发布的内容显示在一起。

昵称长度在 3 至 31 个字符之间。 您的昵称在 developerWorks 社区中必须是唯一的,并且出于隐私保护的原因,不能是您的电子邮件地址。

标有星(*)号的字段是必填字段。

(昵称长度在 3 至 31 个字符之间)

单击提交则表示您同意developerWorks 的条款和条件。 查看条款和条件.

 


所有提交的信息确保安全。


static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=10
Zone=Cloud computing
ArticleID=776016
ArticleTitle=在 IBM SmartCloud Enterprise 上构建基于 Hadoop 的数据分析系统
publish-date=11212011