大数据处理技术
对大数据技术的基本概念进行简单介绍,包括分布式计算、服务器集群和 Google 的 3 个大数据技术。
分布式计算
对于如何处理大数据,计算机科学界有两大方向。
第一个方向是集中式计算,就是通过不断增加处理器的数量来增强单个计算机的计算能力,从而提高处理数据的速度。
第二个方向是分布式计算,就是把一组计算机通过网络相互连接组成分散系统,然后将需要处理的大量数据分散成多个部分,交由分散系统内的计算机组同时计算,最后将这些计算结果合并,得到最终的结果。
尽管分散系统内的单个计算机的计算能力不强,但是由于每个计算机只计算一部分数据,而且是多台计算机同时计算,所以就分散系统而言,处理数据的速度会远高于单个计算机。
过去,分布式计算理论比较复杂,技术实现比较困难,因此在处理大数据方面,集中式计算一直是主流解决方案。
IBM 的大型机就是集中式计算的典型硬件,很多银行和*机构都用它处理大数据。不过,对于当时的互联网公司来说,IBM 的大型机的价格过于昂贵。因此,互联网公司把研究方向放在了可以使用在廉价计算机上的分布式计算上。
服务器集群
服务器集群是一种提升服务器整体计算能力的解决方案。它是由互相连接在一起的服务器群组成的一个并行式或分布式系统。
由于服务器集群中的服务器运行同一个计算任务,因此,从外部看,这群服务器表现为一台虚拟的服务器,对外提供统一的服务。
尽管单台服务器的运算能力有限,但是将成百上千的服务器组成服务器集群后,整个系统就具备了强大的运算能力,可以支持大数据分析的运算负荷。
Google、Amazon 阿里巴巴的计算中心里的服务器集群都达到了 5000 台服务器的规模。
大数据的技术基础
2003/2004年间,Google 发表了 MapReduce、GFS(Google File System)和 BigTable三篇技术论文,提出了一套全新的分布式计算理论。
MapReduce 是分布式计算框架
GFS 是分布式文件系统
BigTable 是基于 GFS 的数据存储系统
这 3 大组件组成了 Google 的分布式计算模型
Google 的分布式计算模型相比于传统的分布式计算模型有 3 大优势:
• 简化了传统的分布式计算理论,降低了技术实现的难度,可以进行实际的应用。
• 可以应用在廉价的计算设备上,只需增加计算设备的数量就可以提升整体的计算能力,应用成本十分低廉。
• 被应用在 Google 的计算中心,取得了很好的效果,有了实际应用的证明。
后来各家互联网公司开始利用Google的分布式计算模型搭建自己的分布式计算系统,Google 的这3篇论文也就成为大数据时代的技术核心。
Google采用分布式计算理论也是为了利用廉价的资源使其发挥出更大的效用。
Google 的成功使人们开始效仿,从而产生了开源系统 Hadoop。
Hadoop 系统简介
Hadoop 是一种分析和处理大数据的软件平台,是一个用 Java 语言实现的 Apache 的开源软件框架,在大量计算机组成的集群中实现了对海量数据的分布式计算。
Hadoop 采用 MapReduce 分布式计算框架,根据 GFS 原理开发了 HDFS(分布式文件系统),并根据 BigTable 原理开发了 HBase 数据存储系统。
Hadoop 和 Google 内部使用的分布式计算系统原理相同,其开源特性使其成为分布式计算系统的事实上的国际标准。
Yahoo、Facebook、Amazon,以及国内的百度、阿里巴巴等众多互联网公司都以 Hadoop 为基础搭建了自己的分布式计算系统。
Hadoop 是一个基础框架,允许用简单的编程模型在计算机集群上对大型数据集进行分布式处理。
它的设计规模从单一服务器到数千台机器,每个服务器都能提供本地计算和存储功能,框架本身提供的是计算机集群高可用的服务,不依靠硬件来提供高可用性。
用户可以在不了解分布式底层细节的情况下,轻松地在 Hadoop 上开发和运行处理海量数据的应用程序。
低成本、高可靠、高扩展、高有效、高容错等特性让 hadoop 成为最流行的大数据分析系统。
Hadoop标志
Hadoop之父 Doug Cutting
Doug Cutting 看到他儿子在牙牙学语时,抱着黄色小象,亲昵的叫 hadoop,他灵光一闪,就把这技术命名为 Hadoop,而且还用了黄色小象作为标示 Logo
不过,事实上的小象瘦瘦长长,不像 Logo 上呈现的那么圆胖。“我儿子现在 17 岁了,所以就把小象给我了,有活动时就带着小象出席,没活动时,小象就丢在家里放袜子的抽屉里。”
Hadoop 生态圈
Hadoop 是一个由 Apache 基金会开发的大数据分布式系统基础架构。用户可以在不了解分布式底层细节的情况下,轻松地在 Hadoop 上开发和运行处理大规模数据的分布式程序,充分利用集群的威力高速运算和存储。
Hadoop 是一个数据管理系统,作为数据分析的核心,汇集了结构化和非结构化的数据,这些数据分布在传统的企业数据栈的每一层。
Hadoop 也是一个大规模并行处理框架,拥有超级计算能力,定位于推动企业级应用的执行。
Hadoop 又是一个开源社区,主要为解决大数据的问题提供工具和软件。
虽然 Hadoop 提供了很多功能,但仍然应该把它归类为由多个组件组成的 Hadoop 生态圈,这些组件包括数据存储、数据集成、数据处理和其他进行数据分析的专门工具。
Hadoop 的生态系统,主要由 HDFS、MapReduce,HBase,Zookeeper,Pig,Hive 等核心组件构成;另外还包括 Sqoop、Flume 等框架,用来与其他企业系统融合。
同时,Hadoop 生态系统也在不断增长,它新增了 Mdhout、Ambari 等内容,以提供更新功能。
Hadoop 生态圈包括以下主要组件
1)HDFS(Hadoop分布式文件系统)
HDFS是一种数据分布式保存机制,数据被保存在计算机集群上。数据写入一次,读取多次。HDFS 为HBase等工具提供了基础。
2)MapReduce(分布式计算框架)
MapReduce是一种分布式计算模型,用以进行大数据量的计算,是一种离线计算框架。
MapReduce的计算过程,就是将大数据集分解为成若干个小数据集,
每个(或若干个)小数据集分别由集群中的一个结点(一般就是一台主机)进行处理并生成中间结果,然后将每个结点的中间结果进行合并,形成最终结果。
3)HBASE(分布式列存数据库)
HBase是一个建立在HDFS之上,面向列的NoSQL数据库,用于快速读/写大量数据;
HBase使用Zookeeper进行管理,确保所有组件都正常运行。
4)Sqoop(数据ETL/同步工具)
Sqoop是SQL-to-Hadoop的缩写,主要用于传统数据库和Hadoop之间传输数据。
5)Flume(分布式日志收集系统)
Flume是一个分布式、可靠、高可用的海量日志聚合的系统,如日志数据从各种网站服务器上汇集起来存储到HDFS,HBase等集中存储器中。
6)Storm(流式计算、实时计算)
Storm是一个免费开源、分布式、高容错的实时计算系统。
Storm令持续不断的流计算变得容易,弥补了Hadoop批处理所不能满足的实时要求。
Storm经常用于在实时分析、在线机器学习、持续计算、分布式远程调用和ETL等领域。
7)Zookeeper(分布式协作服务)
Hadoop的许多组件依赖于Zookeeper,它运行在计算机集群上面,用于管理Hadoop操作。
作用:
解决分布式环境下的数据管理问题如:统一命名,状态同步,集群管理,配置同步等。
8)Pig(ad-hoc脚本)
Pig定义了一种数据流语言—Pig Latin,它是MapReduce编程的复杂性的抽象,Pig平台包括运行环境和用于分析Hadoop数据集的脚本语言(Pig Latin)。
其编译器将Pig Latin 翻译成MapReduce 程序序列将脚本转换为MapReduce任务在Hadoop上执行。通常用于进行离线分析。
9)Hive(数据仓库)
Hive定义了一种类似SQL的查询语言(HQL),将SQL转化为MapReduce任务在Hadoop上执行。通常用于离线分析。
HQL用于运行存储在Hadoop上的查询语句,Hive让不熟悉MapReduce的开发人员也能编写数据查询语句,然后这些语句被翻译为Hadoop上面的MapReduce任务。
10)Spark(内存计算模型)
Spark提供了一个更快、更通用的数据处理平台。和MapReduce相比,Spark可以让你的程序在内存中运行时速度提升100倍,或者在磁盘上运行时速度提升10倍。
11)Oozie(工作流调度器)
Oozie可以把多个MapReduce作业组合到一个逻辑工作单元中,从而完成更大型的任务。
12)Mahout(数据挖掘算法库)
Mahout的主要目标是创建一些可扩展的机器学习领域经典算法的实现,旨在帮助开发人员更加方便快捷地创建智能应用程序。
13)YARN(分布式资源管理器)
YARN是下一代MapReduce,即MR2,是在第一代MapReduce基础上演变而来的,
主要是为了解决原始Hadoop扩展性较差,不支持多计算框架而提出的。
其核心思想:
将MR1中JobTracker的资源管理和作业调用两个功能分开,分别由ResourceManager和ApplicationMaster进程来实现。
1)ResourceManager:负责整个集群的资源管理和调度
2)ApplicationMaster:负责应用程序相关事务,比如任务调度、任务监控和容错等
14)Tez(DAG计算模型)
一个运行在YARN之上支持DAG(有向无环图)作业的计算框架。
Tez的目的就是帮助Hadoop处理这些MapReduce处理不了的用例场景,如机器学习。
Hadoop核心组件
用于解决两个核心问题:存储 和 计算
核心组件
1)Hadoop Common:一组分布式文件系统和通用I/O的组件与接口(序列化、Java RPC和持久化数据结构)。
2)Hadoop Distributed FileSystem(分布式文件存储系统)
存数据 hadoop这个电脑的硬盘 --> hadoop集群当中充当存储数据角色的所有电脑的硬盘组成
3)Hadoop MapReduce(分布式计算框架)
分布式计算,计算数据的。 hadoop平台中最原始最简单的应用程序,分布式计算 数据不动 计算动
4)Hadoop YARN(分布式资源管理器)
mapreduce任务在yarn上跑,由yarn来管理资源,管理hadoop的CPU和内存
使用这些技术我们可以针对大数据进行操作,包括数据清洗,数据分析,数据展示等…
ETL:
英文Extract-Transform-Load的缩写
用来描述将数据从来源端经过萃取(extract)、转置(transform)、加载(load)至目的端的过程。
ETL一词较常用在数据仓库,但其对象并不限于数据仓库。
Hadoop版本演进
当前 Hadoop 有两大版本:Hadoop 1.0 和 Hadoop 2.0。
Hadoop 1.0 被称为第一代 Hadoop,由 HDFS 和 MapReduce 组成。
HDFS 由一个 NameNode 和多个 DataNode 组成,MapReduce 由一个 JobTracker 和多个 TaskTracker 组成。
Hadoop 1.0 对应的 Hadoop 版本为0.20.x、0.21.x、 0.22.x 和 Hadoop 1.x。
其中,0.20.x 是比较稳定的版本,它最后演化为 1.x,变成稳定版本。0.21.x 和 0.22.x 则增加了 NameNode HA 等新特性。
Hadoop 2.0 被称为第二代 Hadoop,是为克服 Hadoop 1.0 中 HDFS 和 MapReduce 存在的各种问题而提出的,对应的 Hadoop 版本为 0.23.x 和 2.x。
针对 Hadoop 1.0 中 NameNode HA 不支持自动切换且切换时间过长的风险,Hadoop2.0 提出了基于共享存储的 HA 方式,该方式支持失败自动切换切回。
针对 Hadoop 1.0 中 单NameNode 制约 HDFS 扩展性的问题,Hadoop 2.0 提出了 HDFS Federation 机制,它允许多个 NameNode 各自分管不同的命名空间,进而实现数据访问隔离和集群横向扩展。
针对 Hadoop 1.0 中 MapReduce 在扩展性和多框架支持方面的不足,Hadoop 2.0 提出了全新的资源管理框架 YARN,它将 JobTracker 中的资源管理和作业控制功能分开,分别由组件 ResourceManager 和 ApplicationMaster 实现。
其中,ResourceManager 负责所有应用程序的资源分配,而 ApplicationMaster 仅负责管理一个应用程序。
相比于 Hadoop 1.0,Hadoop 2.0 框架具有更好的扩展性、可用性、可靠性、向后兼容性和更高的资源利用率
Hadoop 2.0 还能支持除 MapReduce 计算框架以外的更多的计算框架,Hadoop2.0 是目前业界主流使用的 Hadoop 版本。
1.3.3 Hadoop 发行版本
Apache
• 企业实际使用并不多。最原始(基础)版本。这是学习hadoop的基础。我们就是用的最原始的这个版本
cloudera --> CDH版
• 对hadoop的升级、打包开发了很多框架;flume、hue、impala都是这个公司开发
• 2008年成立的 Cloudera 是最早将 Hadoop 商用的公司,为合作伙伴提供 Hadoop 的商用解决方案.主要是包括支持、咨询服务、培训
• 2009年Hadoop的创始人 Doug Cutting也加盟 Cloudera公司,Cloudera 产品主要 为 CDH、Cloudera Manager、Cloudera Support
• CDH是Cloudera的Hadoop发行版,完全开源,比Apache Hadoop在兼容性、安全性、稳定性上有所增强。
• Cloudera Manager是集群的软件分发及管理监控平台,可以在几个小时内部署好一个Hadoop集群,并对集群的节点及服务进行实时监控。Cloudera Support即 是对Hadoop的技术支持。
• Cloudera 的标价为每年每个节点4000美元。Cloudera开发并贡献了可实时处理大数据的Impala项目。
Hortonworks --> HDP+Ambari
• 2011年成立的Hortonworks是雅虎与硅谷风投公司Benchmark Capital合资组建
• 公司成立之初就吸纳了大约25名至30名专门研究Hadoop的雅虎工程师,上述工程师均在2005年开始协助雅虎开发Hadoop,贡献了Hadoop 80%的代码。
• 雅虎工程副总裁、雅虎Hadoop开发团队负责人Eric Baldeschwieler出任Hortonworks的首席执行官。
• Hortonworks 的主打产品是Hortonworks Data Platform (HDP),也同样是100%开 源的产品,HDP除常见的项目外还包含了Ambari,一款开源的安装和管理系统
• HCatalog,一个元数据管理系统,HCatalog现已集成到Facebook 开源的Hive中
• Hortonworks的Stinger开创性地极大地优化了Hive项目。Hortonworks为入门提供了一个非常好的易于使用的沙盒。
• Hortonworks开发了很多增强特性并提交至核心主干,这使得Apache Hadoop能够在包括Windows Server和Windows Azure在内的Microsoft Windows平台上本地运行。
• 定价以集群为基础,每10个节点每年为12500美元。