1 Hadoop与Spark开源大数据技术栈

目前开源社区已经积累了比较完善的大数据技术栈,应用最广泛的是以Hadoop与Spark为核心的生态系统。整个大数据技术栈涉及以下五个层级:数据收集、数据存储、资源管理与服务协调、计算引擎和数据分析。

image.png

1.1 数据收集层

  • 主要由关系型与非关系型数据收集组件、分布式消息队列构成。
  • Sqoop/Canal:关系型数据收集和导入工具,是连接关系数据库(比如Mysql)和Hadoop(比如HDFS)的桥梁,Sqoop可将关系行数据库中的数据全量导入Hadoop,反之亦可,而Canal则可用于实现数据的增量导入。
  • Flume:非关系型数据收集工具,主要是流式日志数据,可经实时收集、经过滤聚合后加载到HDFS等存储系统。
  • Kafka:分布式消息队列,一般作为数据总线使用,它允许多个数据消费者订阅并获取感兴趣的数据。相比于其他的消息队列,采用分布式高容错设计,更适合大多数应用场景。

1.2 数据存储层

  • 主要由分布式文件系统(面型文件的存储)和分布式数据库(面向行/列的存储)构成。
  • HDFS:Hadoop分布式文件系统,Google GFS的开源实现,具有良好的扩展性与容错性等优点,尤其是出色的容错机制,使得它非常适合构建在廉价的机器上。
  • HBase:构建在HDFS之上的分布式数据库,Google BigTable的开源实现,允许用户存储结构化与半结构化的数据,支持无限扩展以及数据随机查找和更新。

1.3 资源管理与服务协调

  • YARN:统一资源管理与调度系统,它能够管理集群中的各种资源(比如CPU和内存等),并按照一定的策略分配给上层的各类应用。YARN内置了多种多租户资源调度器,允许用户按照队列的方式组织和管理资源,且每个队列的调度机制可独立定制。
  • ZooKeeper:基于简化的Paxos协议实现的服务协调系统,太提供了类似于文件系统的数据模型,允许用户通过简单的API实现Leader选举、服务命名、分布式队列和分布式锁等复杂的分布式通用模块。

1.4 计算引擎层

  • 包含批处理、交互式处理和流式实时处理三种引擎。
  • MapReduce/Tez:MapReduce是一个经典的批处理计算引擎,它是Google MapRaduce的开源实现,具有良好的扩展性与容错性,允许用户通过简单的API编写分布式程序;Tez是基于MapReduce开发的通用DAG(Directed Acyclic Graph的简称,有向无序图)计算引擎,能够更加高效的实现复杂的数据处理逻辑,目前被应用在Hive、Pig等数据分析系统中。
  • Spark:通用的DAG计算引擎,他提供了基于RDD(Resilient Distributed Dataset)的数据抽象表示,允许用户充分利用内存进行快速的数据挖掘和分析。
  • Impala/Presto:分别由Cloudera和Facebook开源的MPP(MassivelyParallel Processing)系统,允许用户使用标准的SQL处理存储在Hadoop中的数据。它们采用了并行的数据库架构,内置了查询优化器、查询下推、代码生成等优化机制,使得大数据处理效率大大提升。
  • Storm/Spark Streaming:分布式流式实时计算引擎,具有良好的容错性和扩展性,能够高效地处理流式数据,它允许用户通过简单的API完成实时应用程序的开发工作。

1.5 数据分析层

  • 为方便用户解决大数据问题而提供的各种数据分析工具。
  • Hive/Pig/SparkSQL:在计算引擎之上构建的支持SQL或脚本的语言分析系统,大大降低了用户进行大数据分析的门槛。其中,Hive是基于MapReduce/Tez实现的SQL引擎,Pig是基于MapReduce/Tez实现的工作流引擎,SparkSQL是基于Spark实现的SQL引擎。
  • Mahout/MLib:在计算引擎之上构建的机器学习库,实现了常用的机器学习和数据挖掘算法。其中,Mahout最初是基于MapReduce实现的,目前正逐步迁移到Spark引擎上,MLib是基于Spark实现的。
  • Apache Beam/Cascading:基于各类计算框架而封装的高级API,方便用户构建复杂的数据流水线。Apache Beam统一了批处理和流式处理两类计算宽街,提供了更高级的API,方便用户编写与其计算引擎无关的逻辑代码;Cascading内置了查询计划优化器,能够自动优化用户实现的数据流。

# 2 Hadoop与Spark版本选择

image.png

各个发行版之间同一系统对外使用方式和接口完全兼容,不同之处在于他们引入了不同系统解决某个场景的问题,比如CDH选择Impala解决交互式分析问题,而HDP选择Hive On Tez.
CDH引入了Cloudera Navigator和Sentry解决安全问题,而HDP则使用Ranger和Hnox。另外,他们均提供了个性化的语文内和管理工具。

3 Hadoop与Spark按照部署

目前Hadoop与Spark存在2种安装方式:人工部署和自动化部署。其中人工部署用于个人学习、测试或者小规模生产集群,而自动化部署则使用于线上大中规模部署。



最后修改:2021 年 05 月 26 日
如果觉得我的文章对你有用,请随意赞赏