大数据技术与Apache Hadoop生态的进化
一、什么是大数据
对于“大数据”(Big data)研究机构 Gartner 给出了这样的定义。“大数据”是需要新处理模式才能具有更强的决策力、洞察发现力和流程优化能力来适应海量、高增长率和多样化的信息资产。
以上的概念体现出了两个关键信息,一个是数据量大,一个是数据形态多样。
(1)数据量有多大呢?
以百度系统为例,它每天要产生100TB~1PB的日志数据。一般我们电脑的硬盘是1TB的。那就需要电脑的100块硬盘到1024块硬盘。
(2)数据形态有哪些呢?
按照存储形态来分,数据可以分成三类,结构化数据、非结构化数据和半结构化数据。结构化数据仅占到全部数据量的20%,其余80%都是以文件形式存在的非结构化和半结构化数据。各种文档、图片、视频/音频等都属于非结构化数据。
二、大数据技术:Apache Hadoop体系
Apache Hadoop应运而生,它是一个能够对大量数据进行分布式处理的软件框架。用户可以在不了解分布式底层细节的情况下,开发分布式程序。充分利用集群的威力进行高速运算和存储。
到目前为止,Hadoop 技术在互联网领域已经得到了广泛的运用,例如,Yahoo 使用4000 个节点的Hadoop集群来支持广告系统和Web 搜索的研究;Facebook 使用1 000 个节点的Hadoop集群存储日志数据,支持其上的数据分析和机器学习;百度用Hadoop处理每周几百TB的数据,从而进行搜索日志分析和网页数据挖掘工作;淘宝的Hadoop 系统用于存储并处理电子商务交易的相关数据......
Hadoop自2006年发布发展至今经历了一系列的升级,已经形成了一套完善的生态体系。
可以将该体系分为核心项目+周边项目
核心项目包括:
- HDFS(分布式文件存储系统)
- MapReduce(并行式计算框架)
周边项目包括:
- Zookeeper:分布式协作服务,解决分布式环境下的数据管理问题如统一命名、状态同步、集群管理、配置同步等。Hadoop的许多组件依赖于Zookeeper,它运行在计算机集群上面,用于管理Hadoop操作
- Hbase:分布式NoSQL列数据库
- Hive:数据仓库工具,由Facebook贡献
- Pig:一个针对并行计算的高级数据流工具和执行框架
- Spark:一个针对Hadoop数据的快速和通用的计算引擎。Spark提供了一个简单和生动的编成模型,这个编程模型可以支持广泛的应用程序,例如ETL,机器学习,流处理和图形运算
- Flume:分布式海量数据采集、聚合、传输系统,常用于日志收集
- Ambari:Hadoop管理工具,可以快捷监控、部署、管理集群
- Sqoop:数据ETL/同步工具,用在Hadoop与传统的数据库间进行数据的传递
- Avro:新的数据序列化格式与传输工具,将逐步取代Hadoop原有的IPC机制
- Mahout:一个可扩展的机器学习和数据挖掘库
(1)Hadoop 1.X时期生态体系架构
hadoop1.x是指hadoop的第1.0时代,从版本的角度来看基本是指在hadoop0.23.x和hadoop1.2.1版本之前的所有发行版,Cloudera公司发行的CDH3系列,时间上大概是在2013年以前,其核心主要由HDFS和MapReduce组成,HDFS是用于存储数据的,MapReduce是用于计算处理数据的。
(2)Hadoop 2.X时期生态体系架构
hadoop2.x是指hadoop的第2.0代,一般是指从2013年2月发布的hadoop2.0.3版以后的版本,Cloudera公司发行的CDH4、CDH5系列,其核心组件除了原有的HDFS、MapReduce以外又增加了Yarn资源管理系统,Yarn负责整个集群资源的管理和调度,而原有的MapReduce则运行在Yarn上面。