大数据平台常用工具集合

大数据(big data,mega data),或称巨量资料,指的是需要新处理模式才能具有更强的决策力、洞察力和流程优化能力的海量、高增长率和多样化的信息资产。

大数据的5V特点:Volume(大量)、Velocity(高速)、Variety(多样)、Value(低价值密度)、Veracity(真实性),而对于大数据领域的从业人员的日常工作也与这5V密切相关。大数据技术在过去的几十年中取得非常迅速的发展,尤以Hadoop和Spark最为突出,已构建起庞大的技术生态体系圈。

首先通过一张图来了解一下目前大数据领域常用的一些技术,当然大数据发展至今所涉及技术远不止这些。

BigData Stack:

下面就简单介绍几个方面:

一、数据采集和传输层

Flume

Flume一个分布式、可靠的、高可用的用于数据采集、聚合和传输的系统。常用于日志采集系统中,支持定制各类数据发送方用于收集数据、通过自定义拦截器对数据进行简单的预处理并传输到各种数据接收方如HDFS、HBase、Kafka中。之前由Cloudera开发,后纳入Apache。

Logstash

ELK工作栈的一员,也常用于数据采集,是开源的服务器端数据处理管道。

Sqoop

Sqoop主要通过一组命令进行数据导入导出的工具,底层引擎依赖于MapReduce,主要用于Hadoop(如HDFS、Hive、HBase)和RDBMS(如mysql、oracle)之间的数据导入导出。

除了以上所说,还包括Kafka、Pulsar等。

二、数据存储层

HBase

基于Google Bigtable的开源实现,是一个具有高可靠性、高性能、面向列、可伸缩性、典型的key/value分布式存储的nosql数据库系统,主要用于海量结构化和半结构化数据存储。它介于nosql和RDBMS之间,仅能通过行键(row key)和行键的range来检索数据,行数据存储是原子性的,仅支持单行事务(可通过hive支持来实现多表join等复杂操作)。HBase查询数据功能很简单,不支持join等复杂操作,不支持跨行和跨表事务。

Kudu

介于HDFS和HBase之间的基于列式存储的分布式数据库。兼具了HBase的实时性、HDFS的高吞吐,以及传统数据库的sql支持。

HDFS

分布式文件存储系统,具有高容错(high fault-tolerant)、高吞吐(high throughput)、高可用(high available)的特性。HDFS非常适合大规模数据集上的应用,提供高吞吐量的数据访问,可部署在廉价的机器上。它放宽了POSIX的要求,这样可以实现流的形式访问(文件系统中的数据。主要为各类分布式计算框架如Spark、MapReduce等提供海量数据存储服务,同时HDFS和HBase底层数据存储也依赖于HDFS。

三、数据分析层

Spark

Spark是一个快速、通用、可扩展、可容错的、内存迭代式计算的大数据分析引擎。目前生态体系主要包括用于批数据处理的SparkRDD、SparkSQL,用于流数据处理的SparkStreaming、Structured-Streaming,用于机器学习的Spark MLLib,用于图计算的Graphx以及用于统计分析的SparkR,支持Java、Scala、Python、R多种数据语言。

Flink

分布式的大数据处理引擎,可以对有限数据流和无线数据流进行有状态的计算。Flink在设计之初就是以流为基础发展的,然后再进入批处理领域,相对于spark而言,它是一个真正意义上的实时计算引擎。

Storm

由Twitter开源后归于Apache管理的分布式实时计算系统。Storm是一个没有批处理能力的数据流处理计算引擎,storm提供了偏底层的API,用户需要自己实现很多复杂的逻辑。

MapReduce

分布式运算程序的编程框架,适用于离线数据处理场景,内部处理流程主要划分map和reduce两个阶段。

Hive

Hive是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并提供HQL语句(类SQL语言)查询功能,存储依赖于HDFS。支持多种计算引擎,如Spark、MapReduce(默认)、Tez;支持多种存储格式,如TextFile、SequenceFile、RCFile、ORC、Parquet(常用);支持多种压缩格式,如gzip、lzo、snappy(常用)、bzip2。

Tez

支持DAG作业的开源计算框架。相对于MapReduce性能更好,主要原因在于其将作业描述为DAG(有向无环图),这一点与Spark类似。

Pig

基于Hadoop的大规模数据分析平台,它包含了一种名为Pig Latin的脚本语言来描述数据流,并行地执行数据流处理的引擎,为复杂的海量数据并行计算提供了一个简单的操作和编程接口。Pig Latin本身提供了许多传统的数据操作,同时允许用户自己开发一些自定义函数用来读取、处理和写数据,该语言的编译器会把类SQL的数据分析请求转换为一系列经过优化处理的MapReduce运算。

提供一些可扩展的机器学习领域经典算法的实现,Mahout包含许多实现,包括聚类、分类、推荐过滤、频繁子项挖掘。通过使用Apache Hadoop 库,可以将Mahout扩展到云中。

Phoenix

构建在HBase之上的一个SQL层,能让我们通过标准的JDBC API操作HBase中的数据。Phoenix完全使用Java编写,作为HBase内嵌的JDBC驱动。Phoenix查询引擎会将SQL查询转换为一个或多个HBase scan,并编排执行以生成标准JDBC结果集。

四、资源管理层

Yarn

Yarn是一个资源调度平台,负责为运算程序分配资源和调度,不参与用户程序内部工作。核心组件包括:ResourceManager(全局资源管理器,负责整个系统的资源管理和分配)、NodeManager(每个节点上的资源和任务管理器)。

Kubernetes

又称K8s,为容器化的应用提供资源调度、部署运行、均衡容灾、服务注册、扩容缩容等功能的自动化容器操作的开源平台。具体体现在:自动化容器的部署和复制、随时扩展或收缩容器规模、将容器组织成组,并且提供容器间的负载均衡等。Kubernetes支持docker和Rocket,可以将Docker看成Kubernetes内部使用的低级别组件。

除了上面所说的,还有OLAP引擎、工作流调度器等等其他的工具,在这里没有一一列出来,但是大数据本身就很复杂,所以在分析,运用数据的时候,要用到许多的工具,一起完成。

你可能感兴趣的:(大数据平台常用工具集合)