Hadoop 与 Spark 开源大数据技术架栈
目前大数据开源技术太多了,很多公司都有自己的大数据技术栈,经过大家验证后最常用的,就是以 Hadoop 和 Spark 为核心的生态系统了。之前说过,大数据技术分为 6 层,下面给出除了数据可视化层以外的 5 层的 Hadoop 生态圈的开源工具。
数据收集层
Sqoop/Canal:关系型数据库与大数据存储的桥梁,也就是用来导数据的,将数据从关系型数据库导入到大数据存储中,Sqoop 用来做数据库的全量导入。canal 是阿里开源的产品,可以用来做增量导入,目前 canal 主要支持 mysql,可以参考这篇文章 http://www.importnew.com/25189.html。
Flume:非关系型数据库的数据采集工具,可以近实时的收集流式日志的工具,经过过滤,聚集后,加载到 HDFS 等存储系统。
Kafka:分布式消息队列,一般作为数据总线使用,基于发布/订阅的模式设计,很适合大数据场景中流式数据的导入。
数据存储层
存储这块主要由分布式文件系统和分布式数据库构成。
HDFS:基于 google GFS 的开源实现,具有良好的扩展性和容错性,很适合构建在廉价的服务器上,大大节约成本,目前能支持多种类型的数据存储格式,例如 SSTable(Sorted String Table)、文本文件、二进制 key/value 格式的 sequence file、列式存储格式 Parquet、ORC 和 Carbondata 等。
HBase:构建在 HDFS 之上的分布式数据库,是列式存储数据库,google BigTable 的开源实现,允许存结构化和半结构化数据,支持行列无限扩展以及数据随机查找与删除。
Kudu:分布式列式存储数据库,允许用户存储结构化数据,支持行无限扩展以及数据随机查找与更新。
资源管理与服务协调
YARN:统一资源管理与调度系统,统一管理整个集群的各种资源,例如 CPU、内存。支持多租户,多策略。
ZooKeeper:用作分布式服务协同,网上资料一大堆,非常成熟的开源产品。
计算引擎层
包含了批处理、交互式处理与流式处理三种引擎。
MapReduce/Tez:MapReduce 是经典的批处理计算引擎,也是基于 google 的 MapReduce 实现的开源版本,允许用户用 API 编写分布式程序。Tez 是基于 MapReduce 开发的通用 DAG(Directed Acyclic Graph,有向无环图)计算引擎,能够更加高效的实现复杂的数据处理逻辑,目前被应用在 Hive、Pig 等数据分析系统中。
Spark:通用的 DAG 计算引擎,目前使用最广的计算引擎,提供了基于 RDD(Resilient Distributed Dataset)的数据抽象表示,允许用户在内存中快速的进行数据挖掘和分析。
Impala/Presto:分别有 Cloudera 和 Facebook 开源的 MPP 系统,允许用户使用标准 SQL 处理存储在 Hadoop 中的数据。采用了并行架构处理,内置查询优化器、查询下推、代码生成等优化机制,使得大数据处理效率大大提升。
Storm/Spark Streaming:分布式流式实时计算引擎,具有良好的容错性与扩展性,能够高效的处理流式数据。阿里还开源了一个 JStorm,效率比 storm 要高,可以参考 https://www.aliyun.com/jiaocheng/topic_26352.html。
数据分析层
方便用户分析数据提供的各类数据分析工具。
Hive/Pig/SparkSQL:构建在大数据计算引擎之上的,支持 SQL 语言或者脚本语言的分析系统。Hive 是基于 MapReduce/Tez 实现的 SQL 引擎,Pig 跟 Hive 差不多(我也没用过具体可以问度娘)。SparkSQL 是基于 Spark 实现的 SQL 引擎。
Mahout/MLlib:实现了用于机器学习和数据挖掘的算法。Mahout 是基于 MapReduce 实现的,MLlib 是基于 Spark 实现的。
Apache Beam/Cascading:基于各类计算框架封装的高级 API,方便用户构建复杂的数据流水线。Apache Beam 统一了批处理和流式处理两类计算框架,提供了更高级的 API 方便用户编写与具体计算引擎无关的逻辑代码。Cascading 内置了查询计划优化器,能够自动优化用户实现的数据流,如果你的数据可以表示成类似于数据库的行格式,则使用 Cascading 处理将变得很容易。
欢迎来到这里!
我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。
注册 关于