天问

Hadoop 技术面面观(上)


大数据将成为代替云计算的新一代热门话题。传统的商业智能 (BI) 工具(关系型数据库和桌面数学计算包)在处理企业海量数据时已经有点不够用了。对于较大的公司来说,海量数据处理已经不是什么新鲜东西了。例如,Twitter 和 LinkedIn 已经是大数据的著名用户了。

全球的行业专家和用户们都把 Hadoop 称为事实上的数据挖掘标准。Hadoop 是如此流行,以至于 Hortonworks 公司 CEO Eric Baldeschwieler 预测在 2017 年它将处理超过 50% 的全球数据。

Hadoop 是 Apache 软件基金会管理的开源软件平台,Apache 的正式定义:Apache Hadoop 软件库是一个框架,允许在集群服务器上使用简单的编程模型对大数据集进行分布式处理。Hadoop 是在分布式服务器集群上存储海量数据并运行分布式分析应用的一种方法它被设计成能够从单台服务器扩展到数以千计的服务器每台服务器都有本地的计算和存储资源。Hadoop 的高可用性并不依赖硬件,其代码库自身就能在应用层侦测并处理硬件故障,因此能基于服务器集群提供高可用性的服务

现今企业数据仓库和关系型数据库擅长处理结构化数据,并且可以存储大量的数据,但成本上有些昂贵。这种对数据的要求限制了可处理的数据种类,同时这种惯性所带的缺点还影响到数据仓库在面对海量异构数据时对于敏捷的探索。这通常意味着有价值的数据源在组织内从未被挖掘。这就是 Hadoop 与传统数据处理方式最大的不同。

Hadoop 主要面向开发人员。其主要框架 MapReduce 支持编程者处理分布式计算机群的大规模数据量,缺点是它是非常重型的产品。而且,Hadoop 可以把直接操作数据仓库的技术人群与数据消费人群和数据翻译员区分开来。

Gartner 研究所分析师 Marcus Collins 表示:“这主要取决于企业,获取必要的专业知识来最大化 Hadoop 的优势。运用 Hadoop 需要一定水平的分析能力,而现在很多企业还不具备这样的能力。你需要对员工进行培训,并对分析能力进行投资,这将让你充分利用这项技术的优势。”

另一个重要考虑因素:大多数企业将需要聘请 Hadoop 专家,而这种人才目前供不应求,或者需要培养内部专家。

一、Hadoop 核心模块

Hadoop 几乎完全是模块化的,这意味着你们能用其他软件工具抽换掉 Hadoop 的模块。这使得 Hadoop 的架构异常灵活,同时又不牺牲其可靠性和高效率。

HDFS 和 MapReduce

1、Hadoop 分布式文件系统 (HDFS)

Hadoop 有两个主要部分:一个数据处理框架和一个分布式数据存储文件系统 (HDFS)。MapReduce 将任务分发到多个服务器上处理大数据的能力。而对于分布式计算,每个服务器必须具备对数据的访问能力,这就是 HDFS (Hadoop Distributed File System) 所起到的作用。

HDFS 就像 Hadoop 系统的篮子,你把数据整整齐齐码放在里面等待数据分析大厨出手变成性感的大餐端到 CEO 的桌面上。即可以在 Hadoop 进行数据分析,也可以在将 Hadoop 中的数据“抽取转换加载”到其他的工具中进行分析。

HDFS 与 MapReduce 的结合是强大的。在处理大数据的过程中,当 Hadoop 集群中的服务器出现错误时,整个计算过程并不会终止。

同时 HFDS 可保障在整个集群中发生故障错误时的数据冗余。当计算完成时将结果写入 HFDS 的一个节点之中。

HDFS 对存储的数据格式并无苛刻的要求,数据可以是非结构化或其它类别。相反关系数据库在存储数据之前需要将数据结构化并定义架构。

开发人员编写代码责任是使数据有意义。Hadoop MapReduce 级的编程利用 Java APIs,并可手动加载数据文件到 HDFS 之中。

2、数据处理框架和MapReduce

具体来说 Hadoop 的数据处理框架是基于 Jave 的系统——MapReduce。Hadoop 并不是一个真正意义上的数据库:它能存储和抽取数据,但并没有查询语言介入。Hadoop 更多是一个数据仓库系统,所以需要 MapReduce 这样的系统来进行真正的数据处理。

MapRduce 运行一系列任务,其中每项任务都是单独的Java应用,能够访问数据并抽取有用信息。使用 MapReduce 而不是查询语言让 Hadoop 数据分析的功能更加强大和灵活,但同时也导致技术复杂性大幅增加。

目前有很多工具能够让 Hadoop 更容易使用,例如 Hive,可以将查询语句转换成 MapReduce 任务。但是 MapReduce 的复杂性和局限性(单任务批处理)使得 Hadoop 在更多情况下都被作为数据仓库使用而非数据分析工具。

MapReduce 的重要创新是当处理一个大数据集查询时会将其任务分解并在运行的多个节点中处理。当数据量很大时就无法在一台服务器上解决问题,此时分布式计算优势就体现出来。将这种技术与 Linux 服务器结合可获得性价比极高的替代大规模计算阵列的方法。

Google 的网络搜索引擎在得益于算法发挥作用的同时,MapReduce 在后台发挥了极大的作用。MapReduce 框架成为当今大数据处理背后的最具影响力的“发动机”。除了 Hadoop,你还会在 MapReduce 上发现 MPPSybase IQ 推出了列示数据库)和 NoSQL(如 Vertica 和 MongoDB)。

3Hadoop 2.0

Hadoop 是一个非常棒的数据存储系统,但是需要开发 Java 应用来访问数据的 MapReduce 学习起来却比较困难。

当然,还有别的办法可以从 Hadoop 中获取信息。Hbase 数据是 Hadoop 的一部分,它可以让用户按照数据库范式来处理数据。Hive 数据仓库则可以让你用类 SQL 的 HiveSQL 查询语言来创建查询并转化为 MapReduce 任务。不过 Hadoop 仍受限于单线程性。MapReduce 任务、Hive 查询、Hbase 操作,等等,这些都要轮流进行。

这就是许多大数据供应商倾向于仅将 Hadoop 当作数据容器的原因,为了提高效率,他们在此基础上再开发自己的工具来获取或分析其中的数据。尽管把 Hadoop 形容为一个大桶很形象,Hadoop 的开发社区也意识到这个问题, Hadoop 2.0 的发布上述限制即将被解除。

在 Hadoop 2.0 发布其最重要的变化是 MapReduce 框架升级为 Apache YARN,这将扩展 Hadoop 中可以应用的软件种类和应用程度。Hadoop 1.0 和 2.0 的区别在于,前者所有的事情都是面向批处理的,而后者则允许多个应用同时在内部访问数据。

相对于当前 MapReduce 系统能处理的事情,把这些功能分开使得 Hadoop 集群资源的管理更加强大。其主要管理方式类似于操作系统对任务的处理,也就是说不再有一次一项操作的限制了。

4、补充

除了核心设计思想 MapReduce 和 HDFSHadoop Distributed File System)外,Hadoop 还包括了从类 SQL 查询语言 HQL,到 NoSQL HBase 数据库,以及机器学习库 Mahout 等内容。ClouderaHortonworks 和 MapR都已在他们的分布式系统中加入了 Hadoop 项目。

二、Hadoop 运行系统和开发环境

1、Hortonworks 推出 Windows 版 Hadoop

大数据商业化、平民化的最佳途径之一,就是将开源的 Hadoop 与企业中无处不在的 Excel 整合;微软希望通过与 Hortonworks 的工程师级别的开发合作让 Hadoop 的安装、部署和管理更加容易。

Hortonworks 与微软合作一年后,发布了 Windows 版 Hortonworks 大数据平台 (Hortonworks Data Platform),目前已经开放下载。这标志着 Hortonworks 发布的 Hadoop 商业发行版本将能同时运行在 Linux 和 Windows 两大平台。

Hortonworks 和微软的深度合作意味着大数据用户将能整合 SQL Server 中的结构化数据和 Hadoop 中的非结构化数据,导入 Excel、PowerPivot 和 Power View 等商业智能工具,生成图表并进行数据可视化分析。Hadoop on Windows 还意味着企业用户将能利用现有的 .NET 和 JavaScript 开发人员和开发框架,为新旧大数据应用编写或部署 MapReduce 任务。

2、Red Hat 开源其 Hadoop 存储系统

作为大数据+混合云业务战略的一部分,Red Hat 推出了首个 Hadoop HDFS 文件存储系统的开源替代产品。Red Hat 于 2011 年以 1.36 亿美元收购了 Gluster,目前已经将 Gluster 的技术整合到了 Red hat 的存储服务器产品 (RHSS) 中。

由于实现了完全的分布式,Red Hat 的文件系统能够取代 Hadoop 集群中负责数据追踪的 NameNode,从而消除其性能瓶颈和单点失败问题。Apache hadoop 2.0 已经改善了 NameNode,而 Facebook 的工程师则开发出了替代技术 AvatarNode。Red Hat 还将其存储和虚拟化技术进行组合,同时使用这两者的用户将拥有一个存储的虚拟池,而计算资源能驻留在相同的物理基础架构上

大数据的重点不是基础设施而是应用

对于 Red Hat 来说,开源 Hadoop 存储系统只是混合云战略的一部分,Red Hat 表示希望在 Hadoop 上的努力能够推动其更宏大的云计算战略——让客户能够在混合云计算的大数据环境中运行应用,横跨包括 OpenStack 和亚马逊 AWS 这样的私有云或公用云环境。

3Karmasphere Studio and Analyst

Karmasphere Studio 就是基于 Eclipse 开发的一组插件。它是一个专业化的 IDE 集成开发环境,可以让 Hadoop 任务的创建和运行更加容易。

4、 Talend Open Studio

Talend 也提供了一个基于 Eclipse 的 IDE,用于串联 Hadoop 的数据处理任务。Talend 的工具可用于数据集成、数据质量和数据管理工作,同时为这些工作准备了相应的子程序。

Talend Studio 允许你通过向模板拖拽建立任务,例如获取 RSS 的 feeds。Talend 的 TalendForge 是一些列的开源扩展,可以与该公司的其他软件搭配工作。大多数工具看上去都是库过滤器,用于将 Talend 的软件与其他主流厂商如 Salesforce.com 和 SugarCRM 的产品进行连接。你可以从这些系统读取数据到到你自己的项目中,这简化了集成工作。

5、各类云平台

软件厂商 VMware 启动代号 Serengeti 的开源项目,目标是让 Hadoop 能运行在 VMware 的 vSphere 云平台上。

亚马逊把 Hadoop 带到云端,通过托管的 Hadoop 框架提供 Eleastic MapReduce Web 服务。微软推动 Azure 的大数据产品。


三、Hadoop 各种工具和模块 

1Jaspersoft BI Suite

Jaspersoft 是从列数据库生成 PDF 报告的最好的开源软件。JasperReport 正跳上大数据的班车,在大数据和其报告生成软件之间增加了一个软件层。JasperReports 服务器目前提供软件用于从许多主流存储平台读取数据,包括 MongoDB,Cassandra、Redis、Riak、CouchDB 和 Neo4j。Hadoop 自然也不会缺席,JasperReports 向 HBase 提供了一个 Hive Connector。

2、Pentaho Business Analytics

Pentaho 也是以报告生成引擎起步的软件平台,与 Jaspersoft 的策略类似,也是通过增加新的数据源来进入大数据市场。你可以讲 Pentaho 的工具与大多数流行的 NoSQL 数据库如 MongoDB 和 Cassandra 挂接起来。当连接上数据库后,你就能拖放数据库列到窗口和报告界面,就像是用来自 SQL 数据库的信息一样。

Pentaho 还提供软件用于从 Hadoop 集群中抽取 HDFS 文件数据和 HBase 数据。其中最新吸引人的工具要数图形编程界面 Kettle,也称 Pentaho Data Integration。

3Skytree Server

Skytree 提供了一个功能群组,提供了更加复杂的机器学习 (Machine-learning) 算法。

4、Tableau 桌面和服务器版

Tableau 桌面版是一个可视化工具,能让你更直观地审视数据,你还能抽离数据从不同角度观察,你还能将其他数据混合进来获得新的结果。Tableau 通过 Hive 来结构化查询,然后将尽可能多的数据缓存在内存里以实现交互。Tablea u提供一种交互机制,能不断分割数据。

5、Splunk

Splunk 并不是一个纯粹的报告生成工具或 AI 路径的集合,虽然它在很大程度上也能实现这些功能。Splunk 为你的海量数据创建一个索引,将其整理成可以搜索的链接,其方式就好像这些数据是一本书或者文本块。虽然数据库也内建有指标,但是 Splunk 的索引方式更像是文本搜索处理。

Splunk 的索引功能非常灵活,可以兼容很多数据源,包括日志、配置文件、消息等,基本上所有应用产生的文本数据它都能”吃“下去。Splunk 还有很多解决方案套装出售,其中包括监控微软 Exchange 服务器以及政策 web 攻击。

Splunk围绕索引抽取文本串和搜索、提供报警和报告功能。你可以敲入重要文章的URL或者IP地址。Splunk会根据数据中的时间戳将结果以时间轴的方式展示出来。

Splunk 的一个新工具 Shep,提供 HadoopSplunk 之间的双向集成,可以在两个系统间交换数据,你还可以从 Hadoop 中查询 Splunk 的数据。

6、PigHive

对于开发人员,直接使用 Java APIs 可能是乏味或容易出错的,同时也限制了 Java 程序员在 Hadoop 上编程的运用灵活性。于是 Hadoop 提供了两个解决方案,使得 Hadoop 编程变得更加容易。

Pig 是一种编程语言,它简化了 Hadoop 常见的工作任务。Pig 可加载数据、表达转换数据以及存储最终结果。Pig 内置的操作使得半结构化数据变得有意义(如日志文件)。同时 Pig 可扩展使用 Java 中添加的自定义数据类型并支持数据转换。

Hive 在 Hadoop 中扮演数据仓库的角色。Hive 添加数据的结构在 HDFS (hive superimposes structure on data in HDFS),并允许使用类似于 SQL 语法进行数据查询。与 Pig 一样,Hive 的核心功能是可扩展的。Hive 具备的友好 SQL 查询是与繁多数据库的理想结合点,数据库工具通过 JDBC 或 ODBC 数据库驱动程序连接。

Hive 更适合于数据仓库的任务,Hive 主要用于静态的结构以及需要经常分析的工作。Pig 赋予开发人员在大数据集领域更多的灵活性,并允许开发简洁的脚本用于转换数据流以便嵌入到较大的应用程序。Pig 相比 Hive 相对轻量,它主要的优势是相比于直接使用 Hadoop Java APIs 可大幅削减代码量。正因为如此,Pig 仍然是吸引大量的软件开发人员。

7、改善数据访问:HBase、Sqoop 以及 Flume

Hadoop 核心还是一套批处理系统,数据加载进 HDFS、处理然后检索。对于计算这或多或少有些倒退,但通常互动和随机存取数据是有必要的。HBase 作为面向列的数据库运行在 HDFS 之上。HBase 以 Google BigTable 为蓝本。项目的目标就是快速在主机内数十亿行数据中定位所需的数据并访问它。HBase 利用 MapReduce 来处理内部的海量数据。同时 Hive 和 Pig 都可以与 HBase 组合使用,Hive 和 Pig 还为 HBase 提供了高层语言支持,使得在 HBase 上进行数据统计处理变的非常简单。

但为了授权随机存储数据,HBase 也做出了一些限制:例如 Hive 与 HBase 的性能比原生在 HDFS 之上的 Hive 要慢 4-5 倍。同时 HBase 大约可存储 PB 级的数据,与之相比 HDFS 的容量限制达到 30PBHBase 不适合用于 ad-hoc 分析,HBase 更适合整合大数据作为大型应用的一部分,包括日志、计算以及时间序列数据。

Sqoop 和 Flume 可改进数据的互操作性和其余部分。Sqoop 功能主要是从关系数据库导入数据到 Hadoop,并可直接导入到 HFDS 或 Hive而 Flume 设计旨在直接将流数据或日志数据导入 HDFS

8、负责协调工作流程的 ZooKeeper 和 Oozie

随着越来越多的项目加入 Hadoop 大家庭并成为集群系统运作的一部分,大数据处理系统需要负责协调工作的的成员。随着计算节点的增多,集群成员需要彼此同步并了解去哪里访问服务和如何配置,ZooKeeper 正是为此而生的。

而在 Hadoop 执行的任务有时候需要将多个 Map/Reduce 作业连接到一起,它们之间或许批次依赖。Oozie 组件提供管理工作流程和依赖的功能,并无需开发人员编写定制的解决方案。

Ambari 是最新加入 Hadoop 的项目,Ambari 项目旨在将监控和管理等核心功能加入 Hadoop 项目。Ambari 可帮助系统管理员部署和配置 Hadoop,升级集群以及监控服务。还可通过 API 集成与其他的系统管理工具。

Apache Whirr 是一套运行于云服务的类库(包括 Hadoop),可提供高度的互补性。Whirr 现今相对中立,当前支持 Amazon EC2 和 Rackspace 服务。

9、机器学习:Mahout

Mahout 提供一些可扩展的机器学习领域经典算法的实现,旨在帮助开发人员更加方便快捷地创建智能应用程序。Mahout 包含许多实现,包括集群、分类、推荐过滤、频繁子项挖掘。

10、 Hadoop 易用性工具 Datameer

对于传统企业来说,大数据的相关技术开发和实施的难度以及陡峭的学习曲线始终是个梦魇,针对这种“大数据民主化”需求,硅谷大数据创业公司 Datameer 开发出的产品屏蔽了复杂的大数据分析底层技术,通过类似电子表格的可视化数据分析用户界面,任何部门的企业员工都能很快上手。

Datameer 成功的秘诀是在企业界流行的 Hadoop 大数据存储和管理系统上构筑了一个易用的应用层。过去,由于 Hadoop 系统的技术门槛很高,企业往往需要高薪聘请数据科学家才能部署大数据应用。Datameer 的应用层产品把 Hadoop 傻瓜化了,任何业务部门的经理都能根据自己的需求对数据进行可视化的整合与分析。例如人力资源经理通过大数据工具查询销售经理的业绩表现。

Datameer 的“Hadoop+电子表格”的方法让企业可以直接分析现有数据,无需对底层数据结构进行改动,而且随时可以添加新的查询类别。

11Hadoop 加速器

随着企业大数据项目的进展,数据分析速度的重要性正日渐凸显。为了进一步提升大数据分析速度,IBM 发布了一款 Hadoop 大数据机,旨在帮助企业用户实现对更多种类和更大规模数据进行(更低成本地)实时分析的需求。

IBM 主要通过两种途径提高企业(对更多类型)大数据分析的速度,一是通过分析加速技术将大数据变成“中数据”甚至“小数据”,减少工作负载。另外一种方法就是硬件优化,推出面向 Hadoop 的大数据机。

为了达成这个目标,IBM 发布了 BLU Acceleration 分析加速技术。当 IBM 用户(例如 DB2 用户)运行查询的时候,BLU 可以快速缩小数据分析范围,将海量数据清洗后,只剩下小部分有效数据进入分析流程,这样一来用户的数据分析负载将大大降低,硬件处理资源可以更快地给出分析结果。BLU 的一个重要功能就是数据忽略 (Data Skipping),“跳过”大量不需要的数据,挑出重要的“小数据”。此外,BLU 还能让数据在整个分析过程中始终保持压缩状态,这也将大大提高数据处理速度。IBM 宣称在一些测试中,BLU 的加入使得 DB2 数据库的分析速度提高了 1000 倍。

在提速大数据分析的第二种路径——硬件优化方面,IBM 还发布了专为 Hadoop 大数据处理平台设计的 IBM PureData box。

Tips

能看到这里的小伙伴们一定都是真爱~由于篇幅限制,本文下篇将于明日微信公众号中推送,明天不见不散哦!

 作者简介 



吕林军

华为中央研究院规划部

高级规划工程师

1998 年中国科技大学教学改革试点班数学物理专业毕业,而后进入华为开始 15 年之久的研发工作。参与通信协议研究和开发,从事过网络处理器(2100 搜索引擎,3400),DSP(TI 公司 54x,6000 系列)的应用开发,对芯片实现方面有一定的基础。个人擅长物理层,算法和系统协议分析工作。

往期精华文章  

微信公众号中回复数字查看更多精华文章:


回复【1】:技术干货

回复【2】:程序员幽默世界

回复【3】:物联网江湖

回复【4】:华为招聘

回复【5】:HDG 视频+PPT 汇总

回复【6】:华为开发者大赛获奖作品展示

博客地址:http://blog.yoqi.me/?p=2528
扫我捐助哦
喜欢 0

这篇文章还没有评论

发表评论