HDFS
HDFS(Hadoop Distributed File System),是一个分布式文件系统。它具有高容错性的特点,可以被广泛的部署于廉价的PC之上。它以流式访问模式访问应用程序的数据,这大大提高了整个系统的数据吞吐量,能够满足多来源、多类型、海量的数据存储要求,因而非常适用于日志详单类非结构化数据的存储。
HDFS架构采用主从架构(master/slave)。一个典型的HDFS集群包含一个NameNode节点和多个DataNode节点。NameNode节点负责整个HDFS文件系统中的文件的元数据保管和管理,集群中通常只有一台机器上运行NameNode实例,DataNode节点保存文件中的数据,集群中的机器分别运行一个DataNode实例。在HDFS中,NameNode节点被称为名字节点,DataNode节点被称为数据节点,DataNode节点通过心跳机制与NameNode节点进行定时的通信。
HDFS可以实现大规模数据可靠的分布式读写。HDFS针对的使用场景是数据读写具有“一次写,多次读”的特征,而数据“写”操作是顺序写,也就是在文件创建时的写入或者在现有文件之后的添加操作。HDFS保证一个文件在一个时刻只被一个调用者执行写操作,而可以被多个调用者执行读操作。
YARN
Apache Hadoop YARN (Yet Another Resource Negotiator,另一种资源协调者)是一种新的 Hadoop 资源管理器,它是一个通用资源管理系统和调度平台,可为上层应用提供统一的资源管理和调度,它的引入为集群在利用率、资源统一管理和数据共享等方面带来了巨大好处。
Zookeeper
在大数据领域中,Zookeeper 为 Hadoop 生态圈中不可缺少的重要基础服务之一,为多种服务组件的高可用提供支持,并且还为计算任务提供状态存储等。
Hive
Hive是建立在 Hadoop 上的数据仓库基础构架。它提供了一系列的工具,可以用来进行数据提取转化加载(ETL),这是一种可以存储、查询和分析存储在 Hadoop 中的大规模数据的机制。Hive 定义了简单的类 SQL 查询语言,称为 HQL,它允许熟悉 SQL 的用户查询数据。同时,这个语言也允许熟悉 MapReduce 开发者的开发自定义的 mapper 和 reducer 来处理内建的 mapper 和 reducer 无法完成的复杂的分析工作。
Tez
是Apache最新开源的支持DAG作业的计算框架,它直接源于MapReduce框架,核心思想是将Map和Reduce两个操作进一步拆分,即Map被拆分成Input、Processor、Sort、Merge和Output, Reduce被拆分成Input、Shuffle、Sort、Merge、Processor和Output等,这样,这些分解后的元操作可以任意灵活组合,产生新的操作,这些操作经过一些控制程序组装后,可形成一个大的DAG作业。总结起来,Tez有以下特点:
(1)Apache二级开源项目;
(2)运行在YARN之上;
(3)适用于DAG(有向图)应用(同Impala、Dremel和Drill一样,可用于替换Hive/Pig等)。
HBase
HBase是一个高可靠性、高性能、面向列、可伸缩的分布式存储系统,它利用Hadoop HDFS作为其文件存储系统,利用Hadoop MapReduce来处理HBase中的海量数据,利用Zookeeper作为协同服务。HBase 不是一个关系型数据库,其设计目标是用来解决关系型数据库在处理海量数据时的理论和实现上的局限性。HBase 从一开始就是为 Terabyte 到 Petabyte 级别的海量数据存储和高速读写而设计,这些数据要求能够被分布在数千台普通服务器上,并且能够被大量并发用户高速访问。
Spark
Apache Spark 是一个非常受欢迎的数据处理框架,它封装了非常全面的数据处理与运算机制。无论是处理离线数据,还是处理实时的流式数据,Spark都可以做到游刃有余。
(1) 在开发语言方面
Spark支持Java、Python、Scala提供的API。
(2)在离线处理方面
Spark Core、Spark SQL组件吸纳了Hive、MapReduce的所有优点。
(3)在实时处理方面
Spark Streaming组件可以进行高效的批处理作业,并且Structured Streaming组件允许开发者基于事件时间精准处理数据。
(4)在人工智能方面
Spark Mlib组件为开发者封装了大量高效的常用算法,甚至还可以与最火爆的深度学习框架TensorFlow结合使用。
(5) 在图计算方面
Spark GraphX组件提供了简易且丰富的接口。
以上所有这些组件,全部建立在Spark Core的核心API之上。只要掌握Spark Core的核心理念,使用其他组件将十分容易。
Flink
Apache Flink是一个面向数据流处理和批量数据处理的可分布式的开源计算框架,它基于同一个Flink流式执行模型(streaming execution model),能够支持流处理和批处理两种应用类型。由于流处理和批处理所提供的SLA(服务等级协议)是完全不相同, 流处理一般需要支持低延迟、Exactly-once保证,而批处理需要支持高吞吐、高效处理,所以在实现的时候通常是分别给出两套实现方法,或者通过一个独立的开源框架来实现其中每一种处理方案。比较典型的有:实现批处理的开源方案有MapReduce、Spark;实现流处理的开源方案有Storm;Spark的Streaming 其实本质上也是微批处理。
Flink在实现流处理和批处理时,与传统的一些方案完全不同,它从另一个视角看待流处理和批处理,将二者统一起来:Flink是完全支持流处理,也就是说作为流处理看待时输入数据流是无界的;批处理被作为一种特殊的流处理,只是它的输入数据流被定义为有界的。
ElasticSearch
Elasticsearch (ES)是一个基于Lucene构建的开源、分布式、RESTful 接口全文搜索引擎。Elasticsearch 还是一个分布式文档数据库,其中每个字段均是被索引的数据且可被搜索,它能够扩展至数以百计的服务器存储以及处理PB级的数据。它可以在很短的时间内在存储、搜索和分析大量的数据。
Elasticsearch是一款高效的分布式搜索和分析引擎,可以接入常用的文本类型数据、主流数据库、二进制文件等进行统一存储,能够对这些数据进行快速的在线检索和分析,并可以通过配套的Kibana组件对数据进行可视化的分析和呈现。
Kibana
作为 ES 配套的可视化工具,可以方便的对 ES 中的数据进行可视化分析操作。
Kafka
Kafka是由Java和Scala编写的是一个分布式、高吞吐量、分区的、多副本的、多订阅者,基于zookeeper协调的分布式发布订阅消息系统。
(1)分布式:所有的producer、broker和consumer都会有多个,均匀分布并支持通过Kafka服务器和消费机集群来分区消息
(2)高吞吐量:Kafka 每秒可以生产约 25 万消息(50 MB),每秒处理 55 万消息(110 MB)。
(3)分区:Kafka中采用分区的设计有两个目的:一是可以处理更多的消息,而不受单体服务器的限制,Topic拥有多个分区,意味着它可以不受限制地处理更多数据;二是分区可以作为并行处理的单元。
Flume
Apache Flume是一个分布式的、可靠的、可用的系统,用于有效地收集、聚合和将大量日志数据从许多不同的源移动到一个集中的数据存储。Apache Flume的使用不仅仅局限于日志数据聚合。由于数据源是可定制的,Flume可以用于传输大量事件数据,包括但不限于网络流量数据、社交媒体生成的数据、电子邮件消息和几乎所有可能的数据源。
Phoenix
Phoenix是构建在HBase上的一个SQL层,能让我们用标准的JDBC APIs而不是HBase客户端APIs来创建表,插入数据和对HBase数据进行查询。Phoenix完全使用Java编写,作为HBase内嵌的JDBC驱动。Phoenix查询引擎会将SQL查询转换为一个或多个HBase扫描,并编排执行以生成标准的JDBC结果集。
Prometheus
Prometheus 作为监控领域的主流服务,有以下主要特征:
多维度数据模型
(1)时间序列数据通过 metric 名和键值对来区分。
(2)所有的 metrics 都可以设置任意的多维标签。
(3)数据模型更随意,不需要刻意设置为以点分隔的字符串。
(4)可以对数据模型进行聚合,切割和切片操作。
(5)支持双精度浮点类型,标签可以设为全 unicode。
(6)灵活的查询语言:在同一个查询语句,可以对多个 metrics 进行乘法、加法、连接、取分数位等操作。
(7)不依赖任何分布式存储。
(8)通过拉取方式采集数据,或者通过中间网关推送方式采集数据。
(9)通过服务发现或者静态配置来发现监控目标。
(10)支持多种图形界面展示方式。
NodeExporter
NodeExporter 是基于Go 语言开发的,用于采集节点资源运行状况的常用服务组件。
Grafana
Grafana是一款用Go语言开发的开源数据可视化工具,可以做数据监控和数据统计,带有告警功能,主要特征如下:
(1)可视化:快速和灵活的客户端图形具有多种选项。面板插件为许多不同的方式可视化指标和日志。
(2)报警:可视化地为最重要的指标定义警报规则。Grafana将持续评估它们,并发送通知。
(3)通知:警报更改状态时,它会发出通知。接收电子邮件通知。
(4)动态仪表盘:使用模板变量创建动态和可重用的仪表板,这些模板变量作为下拉菜单出现在仪表板顶部。
(5)混合数据源:在同一个图中混合不同的数据源!可以根据每个查询指定数据源。这甚至适用于自定义数据源。
(6)注释:注释来自不同数据源图表。将鼠标悬停在事件上可以显示完整的事件元数据和标记。
(7)过滤器:过滤器允许您动态创建新的键/值过滤器,这些过滤器将自动应用于使用该数据源的所有查询。
(8)平台为每个支持的组件都预置了完善的监控模板,可以对各个组件的运行状态进行详细的监控和可视化展示。
InfluxDB
在大数据平台中,InfluxDB 默认用于存储各类监控数据,用户也可以令其服务于业务端。InfluxDB 有如下优点:
(1)为时间序列数据专门编写的自定义高性能数据存储。 TSM引擎具有高性能的写入和数据压缩
(2)Golang编写,没有其它的依赖;
(3)提供简单、高性能的写入、查询 http api;
(4)插件支持其它数据写入协议,例如 graphite、collectd、OpenTSDB;
(5)支持类sql查询语句;
(6)tags可以索引序列化,提供快速有效的查询;
(7)Retention policies自动处理过期数据;
(8)Continuous queries自动聚合,提高查询效率;
Livy
Livy是一个基于Spark的开源REST服务,它能够通过REST的方式将代码片段或是序列化的二进制代码提交到Spark集群中去执行。它提供了以下这些基本功能:
(1)提交Scala、Python或是R代码片段到远端的Spark集群上执行;
(2)提交Java、Scala、Python所编写的Spark作业到远端的Spark集群上执行;
(3)提交批处理应用在集群中运行。
Kylin
Kylin 依赖 Hive HBase等服务,是构建大型即时响应数仓的关键服务,通过空间换时间的理念,对数据构建若干 Cube,从而实现数据的快速筛查。
Hue
Hue 是 Hadoop 生态圈的可视化组件,可以直接对接 HDFS、YARN、Hive等服务,方便用户通过图形化界面的方式对服务进行操控。
KafkaUI
KafkaUI 本质为 KafkaEagle,是国产化的 Kafka 可视化工具套件,可以方便用户对 Broker、Topic 可视化管理。
ZKUI
ZKUI 方便用户以图形化界面的方式查看 Zookeeper 中的数据挂载结构。
Ranger
Apache Ranger提供一个集中式安全管理框架, 并解决授权和审计。它可以对Hadoop生态的组件如HDFS、Yarn、Hive、Hbase等进行细粒度的数据访问控制。通过操作Ranger控制台,管理员可以轻松的通过配置策略来控制用户访问权限。
Atlas
Atlas能够提供元数据管理能力。可以根据项目的实际情况,制定元数据的使用规范和主数据的使用规范,在此基础上构建相应的元数据和主数据子系统,并支持未来各类管理数据的信息转换共享。