Hadoop 第一代分布式存储计算框架
Hadoop是一个分布式系统基础架构,由Apache基金会开发,它容许用户在不理解分布式底层细节的状况下,开发分布式程序,充分利用集群的威力高速运算和存储。Hadoop蕴含丰盛的生态组件,有咱们耳熟能详的分布式文件系统HDFS,分布式计算框架MapReduce,以及散布式调度零碎YARN。
HDFS是一个高容错、高吞吐的分布式存储系统,能够被宽泛部署在高价的硬件设施之上。根本架构:
有几个概念值得记住:
• 数据块(Block)
大文件被切分成多个block存储,默认大小为128M。为了保证数据可靠性,每个block分布式存储在多个datanode节点上,默认3正本。
• NameNode
NameNode是HDFS的主节点,次要作用是维大数据培训护文件系统的目录构造,管理文件与block之间关系,block与datanode之间关系。
• DataNode
DataNode是HDFS的数据节点,次要作用是存储与治理数据块,并将信息上报给NameNode。
MapReduce是Hadoop体系中的并行计算框架, 也是一种编程模型,分成Map和Reduce两个阶段,在Map阶段对数据进行提取,失去无效的键值对,而后在Reduce阶段进行计算,失去最终的后果。流程图如:
YARN是一个通用资源管理零碎,可为下层利用提供对立的资源管理和调度,它的引入在集群利用率、资源对立治理和数据共享等方面具备重大意义。这里不做具体介绍。
Hive 基于Hadoop的数据仓库
Hive是构建在Hadoop之上的数据仓库工具,由facebook开源,最后用于解决海量结构化的日志数据统计问题。Hive 定义了一品种 SQL 查询语言 HQL,提供SQL查问性能,能够将SQL语句转换为MapReduce工作运行。
Hive是一个SQL on Hadoop组件,次要特点是高吞吐、高延时,学习成本低(SQL),通常用于海量结构化数据离线剖析;Hive反对TextFile、RCFile、ORC、Parquet等多种文件格式,Gzip、LZO、Snappy等多种压缩格局;反对用户自定义函数。数据模型如下:
Hive是大家比拟熟知的开源组件,少数状况下咱们只有解决如何更好、稳固、高效的应用问题即可。波及Hive MetaStore相干的属于高阶应用。
HBase 支流的分布式NoSQL数据库
HBase(Hadoop database)是一个分布式、可扩大、面向列的NoSQL数据库,实质上是一个Key-Value零碎,底层数据存储在文件系统HDFS上,原生反对 MapReduce计算框架,具备高吞吐、低延时的读写特点。
HBase周边生态成熟,具备很多丰盛的个性,比方强一致性读写、主动分区、主动故障转移、面向列等。HBase次要用于海量数据永久性存储与超大规模并发拜访场景,目前利用十分宽泛。生态架构如:
HBase相干的概念次要有:
• HMaster
HBase主节点,负责节点的治理。
• RegionServer
HBase从节点,数据节点;负责数据的读写。
• Region
HBase表的分区,程度方向分布式存储的单元。
• Namespace
• Table
• Rowkey
• ColumnFamily
• ColumnQualifier
Spark 一站式的分布式计算引擎
Spark是一个疾速通用的、一站式的分布式计算引擎,它是开源的类Hadoop MapReduce的通用并行框架,领有Hadoop MapReduce所具备的长处,但又不同于MapReduce,其中间输入后果能够保留在内存中,从而不再须要频繁读写HDFS,因而Spark能更好地实用于数据挖掘与机器学习等须要迭代的MapReduce算法。
Spark提供了大量的库,次要包含Spark Core、Spark SQL 、Spark Streaming 、MLlib、GraphX等。开发者能够在同一个应用程序中无缝组合应用这些库。框架图如:
总结Spark的技术劣势,次要有以下几点:
• 弱小的RDD模型
• 先进的DAG架构
• 高效的Cache机制
• 丰盛的算子操作类型
• 多语言反对
• 对立残缺的解决方案
Kafka 分布式音讯引擎及流解决平台
Kafka是一个分布式音讯引擎与流解决平台,常常用做企业的音讯总线、实时数据管道,甚至还可把它看作存储系统。晚期Kafka 的定位是一个高吞吐的分布式音讯零碎,目前则演变成了一个成熟的分布式音讯引擎,以及流解决平台。
高吞吐、低延时是Kafka 显著的特点,Kafka可能达到百万级的音讯吞吐量,提早可达毫秒级。Kafka是典型的生产者-消费者模型,如下:
Kafka生产端发送音讯到集群Broker节点上,具体是发到某一个topic的partition中,音讯在同一partition中保障程序;生产端拉取音讯进行生产解决,通常是sink到其余引擎如另一个kafka、存储系统、NoSQL数据库等。波及次要概念有:
• Producer
生产者,即音讯产生和发送的一方。
• Consumer
消费者,即拉取音讯进行解决的一方。
• Broker
Kafka实例或角色,一个Kafka集群由多个broker形成,通常一台机器部署一个Kafka实例,一个实例挂了不影响其余实例。
• Topic
即主题,服务端音讯的逻辑存储单元。一个topic通常蕴含若干个Partition即分区。
• Partition
Topic的分区,分布式存储在各个broker中, 实现公布与订阅的负载平衡。
• Message
音讯,或称日志音讯,是Kafka服务端理论存储的数据。
Elasticsearch 支流的分布式搜索引擎
Elasticsearch,简称ES,是当下支流的分布式全文搜寻,它容许用户疾速的进行存储、搜寻和剖析海量数据,底层是开源库Lucene,开箱即用。
ES通常为具备简单的搜寻要求或多维度查问的应用程序提供底层数据存储、搜寻能力,不仅仅是全文搜寻。根本架构图:
总结次要有以下关键词或特点:
• 全文或结构化搜寻
ES是一个搜索引擎,可用于全文搜寻或结构化搜寻。
• 分布式
如上图示,ES数据在程度方向是以分片(shard)以及正本分片(replica)的模式分布式存储在不同节点。
• Restful API
对外次要以Rest API或接口的模式提供服务。
• 近实时搜寻与更新
次要可能提供近实时的写入与搜寻能力,不太实用于那些对实时性要求比拟高的利用。
• 面向文档
ES还是一个文档型引擎,数据在ES中被称为document,用户可指定document id,否则ES会主动生成一个document id。
• Schema free
ES是一个Schema free的组件,咱们能够提前定义schema构造,也能够不定义,ES会主动帮咱们创立schema构造,动静增加字段。