基于分布式计算的大数据系统

工欲善其事,必先利其器。

简介

单机计算机的能力是有限的,而需要处理的问题规模不断增加,为此,人们开始探索使用多台计算机组成一个系统进行协调处理。多机系统复杂程度远高于单机系统,多机系统统称分布式系统,为解决分布式系统的可扩展性,可靠性,易用性等问题,方便处理互联网海量数据,控制成本,出现了很多解决方案。本篇笔记简单介绍几种解决方案。

Hadoop生态系统

Hadoop,主要Java编写,较好平台移植性。在Hadoop系统中,每种服务一般都有若干种角色,分布式环境下负责不同功能,每种角色的实例都是一个进程,不同进程可以在同一台机器上运行,也可以根据配置运行在不同机器上。

HDFS

Hadoop的分布式文件系统。设计目标,存储那些一次写入多次读取的大量数据,如,搜索引擎会用爬虫抓取大量web页面。

名字节点(Name Node),全局只有一台。

YARN和MapReduce

YARN,Hadoop的计算资源管理和调度系统,接受任务请求,根据请求分配资源,调度任务执行。可执行,MapReduce和MPI等传统并行程序。
资源管理器(Resource Manager),全局资源分配。

MapReduce,Google提出的并行程序编程模型,把任务的处理流程分为map和reduce两个阶段。详情参考我的这篇博文。适合对数据进行统计、分类等处理,最大的好处在于当用户实现MapReduce任务后,该框架能自动把任务在成千上万台机器上调度运行,并处理机器故障,非常适合大规模数据处理。

HBase

基于列的分布式存储。数据以表(Table)的形式组织,每个表可以有很多行,每行可以有若干个列族(需要事先定义),每个列族可以包含多个列(使用时随时添加,无需事先定义)。每行每列对应一个单元(Cell),每个单元值可以有多个版本,用时间戳区分。每个值是一个任意长度的字符串。每行有一自定义主键。

  • HBase不能基于非id列的随机访问
  • compact操作
  • 可作为数据仓库存储有一定结构的海量数据,数据可修改,但最好不频繁;
  • HBase的实现以HDFS为基础,每个表的每一列族都会对应HDFS上的一个或多个文件;

Hadoop其他组件

HivePig,让用户更简便方式查询保存在HDFS和HBase中的数据。查询最终都会转换成MapReduce任务来执行。
ZooKeeper,编写分布式软件所需的常用工具,包括,消息队列,配置管理等。
Tez,比MapReduce更一般化的数据流编程框架,推广为任意的有向无环图(DAG)。
StormS4,建立在Hadoop上的流式处理引擎。流式处理(streaming)指待处理数据会源源不断从数据源过来,处理引擎需要不断对新的数据进行处理,并随时输出具体时效性的结果。
Mahout,Hadoop实现的机器学习算法库,包括聚类,分类,推荐,以及线性代数中的常用算法。直接调用Mahout提供的算法,不必自己再用MapReduce实现。
Giraph,图计算引擎。处理社交网络等类型的数据。
Sqoop,命令行工具,用于Hadoop和传统的关系型数据库之间传输数据。MySQL与HDFS或HBase之间交换数据。
ChukwaFlumeKafkaScribe,进行日志收集,结果导出到HDFS。

Spark

MapReduce程序运行过程中,中间结果会写入磁盘,而且很多应用需要多个MapReduce任务来完成,任务之间的数据也要通过磁盘来交换,没有充分利用机器内存。Spark充分利用机器内存资源,使得大数据计算性能得到了进一步提升。

核心

可靠分布式数据集(RDD)的数据结构。一个RDD是一组数据项的集合,可以是普通的列表,也可以是由键值对构成的字典。RDD操作分为动作和交换。
Spark的操作都是对RDD整体进行的。变换操作执行时懒惰的,操作会被记录下来,直到遇到下一个动作时产生一个完整的执行计划。动作操作直接生效,产生新的RDD。

Spark特点:

  • Spark中的RDD可以由框架自动或人为指定缓存在内存中;
  • Spark可以独立运行,也可以在Hadoop系统上运行;
  • 支持HDFS的读/写;
  • 核心功能涵盖了Hadoop的大部分内容,并且可以在Hadoop生态系统内使用,具有性能上的优势。

NoSQL(Not only SQL)

常用的NoSQL数据库分为:

  • 基于列的存储,可扩展性较好,如HBase,Cassandra;
  • 基于文档的存储,数据形式比较灵活,适用于需求变化快速的Web应用程序等场景,如MongoDB、CouchDB;
  • 键值对存储,细分成:单机磁盘型、单机内存型、分布式;
  • 图数据库,如Neo4j;
  • 多模型。

参考文献:

  1. 刘知远.《大数据智能》
分享