简介
大数据 指数据集如此大和复杂,以至于很难使用传统数据库管理系统或数据处理系统来管理它们。数据存储技术负责捕获、存储、搜索、共享、传输、分析和可视化此数 据。因为业务部门拥有保护其数据的内在需求(该需求会随业务增长而增长),所以数据存储技术正成为业务部门需要依赖的一个越来越关键的 IT 系统。
与此同时,所有业务部门也在增加对移动解决方案的投资。这样的一个越来越流行的领域就是集成视频(作为大数据),并将其传输到跨平台移动设备中。 流视频的使用正成为一种主要的业务需求。它为公司提供了机会,让公司可以出于广告、教育、产品演示、实况广播报道、相关新闻等目的,向客户、用户和员工按 需提供已录制好的视频。大多数视频用户通常使用智能设备来查看此数据,许多公司也已通过接受此用户行为并提供移动视频流来扩大其业务范围。
免费下载: Worklight Developer Edition V6.2 试用版 下载更多的IBM 软件试用版,并加入 IBM 软件下载与技术交流群组 ,参与在线交流。
对于这种情况,视频数据(包括 Windows® Media .wmv 文件、RealMedia .rm 文件、Quicktime .mov 文件、Adobe® Flash .flv 文件、MPEG 数据等)由存储系统管理,这些系统可能与某个应用服务器有关联,而该服务器允许移动用户以流的方式导航数据。将视频作为大数据来管理,以便在移动设备上传 输视频,这是一项挑战,需要使用一个企业 IT 解决方案。
本文没有将 IBM Worklight 介绍为一个视频传输引擎,而是将它介绍成一个机会,一个为了在移动设备上播放 Bluemix(一个 IBM 云 PaaS 产品)上的 hadoop 系统中存储的视频数据而创建原型解决方案的机会。任何与 Hadoop 中存储的视频分析有关的细节都不属于本文的讨论范围。
IBM MobileFirst 平台是一个产品套件,它汇集了重要的移动功能,解决了与移动应用程序开发相关的所有挑战和机会。移动视频传输需要服务器、高带宽无线网络(比如 3G、4G 等)和文件系统之间可靠而又紧密的配合。可以存储和管理视频大数据的文件系统必须是一个可扩展的、灵活的、容错的和高度可搜索的系统。IBM Worklight Foundation 不是一个视频传输引擎,而是一个环境,它可以帮助构建(原生或混合)应用程序,从而使用 API 在移动设备中传输数据。
当代的移动用户越来越多地开始利用移动设备上的更大屏幕和更智能的可视化,以视频数据的形式使用信息。IBM InfoSphere BigInsights on IBM Bluemix 在云上提供了一个大数据解决方案,将所有 Apache Hadoop 功能都集中到一个集成包中来解决许多企业挑战,包括轻松地存储、访问和分析非结构化(和不可扩展的)大数据,以便实现快速分析。
回页首
集成模型
这里描述的解决方案集成了以下软件产品组件:
关于 MapReduce
本文描述的示例应用层是在一个测试环境中开发的,其中 Hadoop 服务名为 MapReduce。此服务的生产版本称为 IBM Analytics for Hadoop。
- IBM Bluemix
IBM Bluemix 是一个云框架,开发人员可在该框架上构建、开发和自定义应用程序。Bluemix(构建于 IBM SoftLayer® 之上)是一个平台即服务 (PaaS),为您提供了构建完整的 Web 解决方案所需的重要软件组件。Bluemix 还提供了 MapReduce,一个通过提供管理大数据的能力来加快创新速度的云服务。MapReduce 向这个拥有高级企业功能的应用程序添加了基于 Hadoop 的分析,IBM InfoSphere BigInsights 在大数据集的大规模复杂分析上提供了强力支持。
- IBM InfoSphere BigInsights
Apache Hadoop 是大数据领域的一个主要的开源产品。它支持存储组织所拥有的大量不同种类的数据,并从中获取信息。它提供了结构化和非结构化企业大数据的数据来加载和提取功能,利用现有的商业智能生态系统来集成大数据存储。
IBM InfoSphere BigInsights 构建于 Apache Hadoop 之上,包含一些重要组件,比如 Hadoop Distributed File System (HDFS) 包含了一个 Hadoop 集群中的所有节点,以便执行数据存储,MapReduce 可让编程框架了解集群中的节点并向其分配工作。如果组织有大量数据要分散在(举例而言)数千个计算机上,那么 HDFS 会为您完成此工作,MapReduce 将它用作一个 Hadoop 编程模型。其他许多支持项目也利用了 HDFS 和 MapReduce,但这不属于本文的讨论范围。
本文将重点介绍 HDFS,旨在为部署在低成本硬件上的高度容错的文件系统提供受支持的分布式文件系统。它为应用程序提供了对大型数据集进行高吞吐量访问的能力。对数据文 件的访问可以直接使用 MapReduce 处理模型,以流的方式进行处理。Hadoop 使用 HDFS 作为其存储系统;该系统用于存储大量数据,比如 TB 和 PB 级数据。这里给出的示例使用了 WebHDFS REST API – HDFS 的一个完整的文件系统接口,由一个名为 HttpFS 的 RESTFul HDFS 代理服务公开。HttpFS 是一个后台代理服务,它使用标准 Java™ API 执行与 HDFS 集群的所有通信,并提供对 HDFS 的 HTTP 访问。
- IBM Worklight Server
IBM Worklight Server 是一个核心组件,它利用移动优化的中间件作为应用程序与后端系统之间的网关。它的设计很容易集成到企业生态系统中,会对现有的资源和基础架构带来影响。 Worklight 集成模型是一个基于适配器而构建的基础产品 - 适配器是负责将后端企业系统和基于云的服务传输到最终用户设备的服务器端软件组件。适配器广泛用于从端点来源检索和更新数据,让客户端执行事务并调用其他 服务和应用程序。该数据可以使用各种交换格式(比如 XML 或 JSON)提供给移动设备。Worklight 提供的适配器包括 SQL、JMS、HTTP 和 IBM Cast Iron®。
本文使用了 HTTP 适配器,这是一个开箱即用的软件组件,它可以轻松地无缝传达后端系统中公开的 Web 服务(以基于 RESTful 或 SOAP 的形式)。此适配器提供了一个对客户端有益的优秀特性,它将多个请求组合到单个请求中,然后将这个请求提供给移动应用程序,缓存经常请求的数据,并在将数 据发送给移动应用程序之前使用 Worklight 服务器端 JavaScript™ API 对其进行解析。
- REST
REST (REpresentational State Transfer) 已成为一种日渐流行的、以语言不可知的方式集成端点服务的方式。IBM InfoSphere BigInsights 和 Hadoop 公开了一个名为 HttpFS 的 RESTFul Web 服务,以便支持所有 HDFS 文件系统操作(包括读取和写入)。WebHDFS 客户端文件系统实现可以使用 Hadoop DistCp 通过 Hadoop 文件系统命令
hadoop -fs
来访问 HttpFS,也可以使用 Hadoop 文件系统 Java API 从 Java 应用程序进行访问。HttpFS HTTP REST API 可与 WebHDFS REST HTTP API 进行互操作。Worklight HTTP 适配器充当了一个使用者,它通过 WebHDFS REST HTTP API 来使用 HDFS 文件系统操作。它内置了支持 Hadoop 位身份验证和 HTTP SPNEGO Kerberos 的安全功能。
图 1 显示了该集成架构的详细信息,以便帮助您理解 Worklight HTTP 适配器如何无缝地集成 HDFS 代理服务 HttpFS(使用 WebHDFS REST API),从而能够检索包含大量视频文件的文件系统目录结构。途中描绘了对在移动设备中传输的视频文件的 HTTP 直接访问。
图 1. IBM Worklight 通过 REST API 与云上的 Hadoop 生态系统相集成
仔细分析以下图 1 中的集成场景中发生的事:
- 一个移动设备(Android、iOS)上运行的应用程序希望访问存储在 Hadoop 服务器中的文件系统。
- 为此,应用程序使用了在 Worklight Server 上运行的 HTTP 适配器。
- 该 HTTP 适配器包含一组过程,应用程序可以发出 Ajax 请求来调用它们。
- 然后,该过程将会触发对一个 HDFS 的 HttpFS 代理服务的 WebHDFS REST (JSON/HTTP) 请求,该 HDFS 在 Bluemix 上的一个作为 MapReduce 服务的 IBM BigInsights Hadoop 容器系统中运行。HDFS 的一个配置设置选项支持安全地打开该文件系统,供客户端使用 WebHDFS API 进行访问。在该设置中,开启安全功能时,身份验证将通过 Hadoop 委托令牌(如果已在委托查询参数中设置)进行,否则由 Kerberos SPNEGO 执行。HTTP POST 请求用于在 Worklight 应用程序与 Worklight Server 之间进行客户端-服务器通信。参数必须以明文或数字格式提供。
- 从 Worklight Server 收到 REST 请求以后,HttpFS 代理服务器将根据服务请求,以 JSON 或 OCTET-STREAM 格式将数据返回给 Worklight Server。在 Hadoop 中,除 OPEN 外的所有操作要么返回零长度的响应,要么返回一个 JSON 响应。对于 OPEN,响应是一个 OCTET-STREAM。
- 在收到数据后,Worklight Server 将会执行以下操作:
- 对于非 JSON 格式,Worklight Server 自动将它转换为 JSON。还可以提供一种 XSL 转换,将数据转换为 JSON。在这种情况下,Worklight Server 首先将数据转换为 XML(如果原来的格式不是 XML),用它来充当 XSL 转换的输入。
- 对于 JSON 格式,Worklight Server 可以绕过任何转换,原封不动地传递数据。
- 最后,Worklight Server 内的过程的 JavaScript 实现将会从 Hadoop 文件服务器存储库收到 JSON 数据,执行所有额外的处理,然后将处理结果返回给调用应用程序。
- 在应用程序收到包含视频文件的文件系统细节后,它会创建视频 URL,使用一个原生视频传输 API(支持媒体观看控制)调用该 URL 来传输该视频。
回页首
示例应用程序
本文包含一个用于演示用途的示例项目。它集成了 IBM Worklight 与 IBM Bluemix 上的一个大数据系统,以便传输存储在一个 Hadoop (HDFS) 文件服务器中的视频。
这个示例项目的目的是展示一个示例 “MyTutorial” 移动混合应用程序,以此作为后续开发的基准或工作参考指南。MyTutorial 是一个简单的移动应用程序,允许小学生观看和播放数学学习视频。这门虚构的课程需要以一种结构化方式将 “巨大的” 演示视频文件存储在云上的 Hadoop 系统中,以便学生可以在移动设备上流畅地观看他们想要的在线视频。
此项目使用:
- IBM Worklight V6.1 或更高版本。
- 安装到以下 Eclipse Standard/SDK 版本上的 IBM Worklight Studio(一个 Eclipse 插件):Kepler (4.3.2)。
- IBM Bluemix。必须注册一个免费帐户才能使用。
- MapReduce 服务。使用位于单节点 Apache Hadoop 集群上的 IBM InfoSphere BigInsights Web 控制台进行访问。
示例 MyTutorial 应用程序仅适用于 Android。
示例数学课程文件系统存储库包含 demo.mp4 视频文件,如清单 1 所示。
清单 1. mathCourses 文件系统
<mathCourses> <basicMaths> <addition> <introduction>demo.mp4</introduction> <sessions> <elementary> <session-1>demo.mp4</session-1> <session-2></session-2> </elementary> <advance> <session-1></session-1> <session-2></session-2> </advance> </sessions> <quizeUnit>demo.mp4</quizeUnit> <sugesion>demo.mp4</sugesion> </addition> <substruction></substruction> <multiplication></multiplication> <division></division> </basicMaths> <everydayMaths> <numbers></numbers> <ratiosNProportions></ratiosNProportions> <factoring></factoring> <fractions></fractions> <tableFormulas></tableFormulas> </everydayMaths> </mathCourses>
此示例使用了受 IBM InfoSphere BigInsights 支持的 Bluemix MapReduce 服务。课程视频文件被存储在 BigInsights 系统内的 HDFS 中(使用 Hadoop 命令)。可以通过各种方式向外界公开存储在 Hadoop 服务器上的数据;一种方式是使用 WebHDFS REST API。WebHDFS REST API 用于演示如何集成视频数据,并将它们传入移动应用程序中。
IBM Worklight HTTP 适配器用于集成 WebHDFS REST API,以便访问 BigInsights 中的视频文件系统。访问并在登录 Web 面板上显示视频文件系统后,应用程序使用 Android 原生 API(VideoView 和 MediaController)来传输视频文件。
回页首
实现方法
下面的步骤描述了如何构建示例应用程序:
- 启动受 IBM InfoSphere BigInsights 支持的 MapReduce 云服务的 Bluemix Web 控制台,以便登录到 IBM Bluemix。在 Web 浏览器中,访问
www.ibm.com/developerworks/cn/register-for-bluemix/
并单击 LOGIN 。使用您在注册期间创建的凭据登录(图 2)。图 2. IBM Bluemix Web 控制台
- 使用目录中提供的合适的 Bluemix 样板模板创建一个 Java+DB Web 入门应用程序,向其中添加 IBM MapReduce 服务。
- 将应用程序添加到您的仪表板(图 3)。
图 3. 添加应用程序的 Bluemix 仪表板
- 单击 Bluemix Catalog 中的 Java+DB Web Starter (图 4)。
图 4. 使用 Bluemix Catalog 添加 Java_DB Web Starter 应用程序
提醒
请记住,这些操作说明中提到的 MapReduce 服务已被重命名为 IBM Analytics for Hadoop。
- 单击 Bluemix Catalog 选项卡的 Big Data 部分中的 MapReduce 服务(图 5)。
图 5. 使用 Bluemix Catalog 添加 MapReduce Big Data 服务
- 确保使用 IBM 的 MapReduce 服务的云应用程序在正常运行。Bluemix 仪表板显示了应用程序的状态(图 6),并描绘了一个包含 IBM 的 MapReduce 服务的 JavaDB Sample 应用程序。您可能注意到,该应用程序的状态表明它处于运行中。
图 6. 该应用程序包含处于运行状态的 MapReduce 和可用的服务
- 找到与应用程序有关联的 VCAP_Services 环境变量,以便获取 MapReduce 服务的 WebHDFS REST URL:
- HttpfsURL
- ConSoleUrl
- 用户 ID 和密码
为此,选择该应用程序并单击Runtime(图 7)。这些环境变量如清单 2 所示。
图 7. 应用程序的 OVERVIEW 导航面板
- 在清单 2 中,将要用于 MyTutorial 的 MapReduce 信息是用粗体表示的。
清单 2. JSON 格式的环境变量
{ "SQLDB-1.0": [ { "name": "JavaDBTestSample:SQLDB", "label": "SQLDB-1.0", "plan": "SQLDB_OpenBeta", "credentials": { "hostname": "23.246.193.181", "host": "23.246.193.181", "port": 50000, "username": "u348048", "password": "Z2nZcGtYja", "db": "I_863006", "jdbcurl": "jdbc:db2://23.246.193.181:50000/I_863006", "uri": "db2://u348048:Z2nZcGtYja@23.246.193.181:50000/I_863006" } } ], "MapReduce-2.1.2": [ { "name": "MapReduce-gw", "label": "MapReduce-2.1.2", "plan": "Community", "credentials": { "userid": "3PYVS36J", "password": "j4lMGTl5", "BigSqlUrl": "jdbc:bigsql://50.97.161.83:7052/db3PYVS36J", "ConsoleUrl": "http://50.97.161.83:8080/data/html/index.html", "HiveUrl": "jdbc:hive2://50.97.161.83:10000/db3PYVS36J", "HttpfsUrl": "http://50.97.161.83:14000/webhdfs/v1/" } } ] }
- 将 ConsoleUrl 值复制并粘贴到 Web 浏览器中。这个 URL 用于登录到 IBM InfoSphere BigInsights Enterprise Edition Web 控制台。
- 在系统提示您的时候,请提供用户名和密码来登录到控制台。
- 登录后,将会显示 Web 控制台(图 8)。
图 8. IBM InfoSphere BigInsights Enterprise Edition Web 控制台
点击查看大图
关闭 [x]
图 8. IBM InfoSphere BigInsights Enterprise Edition Web 控制台
- 浏览 IBM BigInsights 内的 HDFS 服务,使用 BigInsights 企业 Web 控制台将视频存储到 HDFS 中。要让 WebHDFS REST 服务正常工作,需要确保 HttpFS 代理服务处于运行状态。通过导航到 WebConsole > Cluster Status
,可以从 BigInsights 查看这个默认服务。图 9 描绘了处于运行状态的 HttpFS 服务。
图 9. 云上的 BigInsights Enterprise Edition Cluster 状态
HttpFS 是来自 Hadoop NameNode 的默认服务。它是一个 Java Web 应用程序,向用户公开了一个 RESTFul Web 服务 API。在内部,各个服务实现被映射到一个 HDFS 文件系统操作。可以使用 REST API 执行 UNIX curl 命令来查看目录内容,比如:
$ curl http://httpfs-host:14000/webhdfs/v1/user/foo?op=list
此命令以 JSON 格式返回 HDFS /user/foo 目录的内容。
图 10 显示集群下的 HDFS 文件系统已经处于可用状态。
图 10. DFS 文件
- 使用 Web 控制台在 /tmp/ 目录下创建一个如图 2 所示的目录结构(mathCourse 文件系统):
- 在 Web 控制台 UI 中,单击 Files 选项卡来浏览您的分布式文件系统。
- 将光标放在 /tmp 目录上,单击 Create Directory 图标创建一个用于测试用途的子目录(图 11)。
图 11. 文件访问菜单
- 在显示的弹出窗口中,输入下面的目录名称并单击 OK :
/tmp/test/
(等等)。
/tmp/test/tutorial/
/tmp/test/tutorial/mathCourse
/tmp/test/tutorial/mathCourse/basicMaths
- 从本地驱动器将视频文件加载到 BigInsights 云系统,然后将视频文件转移到新创建的文件夹:
- 在 DFS Files 选项卡的 tmp 目录中,单击 Upload 图标从本地上传一个 demo.mp4 文件(图 12)。
图 12. 文件访问菜单
- 显示弹出面板时, 浏览 您的本地文件系统,找到 demo.mp4 视频文件(图 13)。
图 13. 文件访问菜单
- 单击 OK 将视频文件上传到 HDFS 文件系统中的目标目录:
/tmp/demo.mp4
(等等)
/tmp/test/tutorial/ mathCourse/basicMaths/addition/introduction/demo.mp4
/tmp/test/tutorial/mathCourse/basicMaths/addition/sessions/elementary/session-1/demo.mp4
- 在 DFS Files 选项卡的 tmp 目录中,单击 Upload 图标从本地上传一个 demo.mp4 文件(图 12)。