大数据体系架构
hadoop介绍
Hadoop是一个分布式系统基础架构,用户可以在不了解分布式底层细节的情况下,开发分布式程序、搭建大型数据仓库、PB级数据的存储、处理,、分析,、统计等,充分利用集群的威力高速运算和存储。
Hadoop可以分为狭义和广义两种:
- 狭义的Hadoop只是Hadoop本身,即HDFS+MapReduce。
- 广义的Hadoop指的是Hadoop生态系统,是一个很庞大的概念,hadoop是其中最重要最基础的一个部分。Hadoop生态的每一个子系统只解决某一个特定的问题域,是多个小而精的小系统。
Hadoop生态系统主要组件
Hadoop的生态系统是非常庞大的,下面介绍生态系统中一些主要部件:
HDFS (分布式文件系统)
HDFS是Hadoop体系中数据存储管理的基础。它是一个高度容错的系统,能检测和应对硬件故障,用于在低成本的通用硬件上运行。HDFS简化了文件的一致性模型,通过流式数据访问,提供高吞吐量应用程序数据访问功能,适合带有大型数据集的应用程序。
MapReduce(分布式计算框架)
MapReduce是一种计算模型,用以进行大数据量的计算。其中Map对数据集上的独立元素进行指定的操作,生成键-值对形式中间结果。Reduce则对中间结果中相同“键”的所有“值”进行规约,以得到最终结果。MapReduce这样的功能划分,非常适合在大量计算机组成的分布式并行环境里进行数据处理。
Spark(基于内存的分布式计算框架)
Spark是一种类似MapReduce的基于内存的分布式计算框架
Storm(实时的分布式计算框架)
Storm是Twitter开源的分布式实时大数据计算框架,类似于Spark的流式处理模块Spark Streaming和Structured Streaming
Flink(流式计算框架)
Flink是一款综合Spark、Storm优点的实时的分布式计算框架,用于对无界和有界数据流进行状态计算
Hive(基于Hadoop的数据仓库)
Hive定义了一种类似SQL的查询语言(HQL),将SQL转化为MapReduce任务在Hadoop上执行,可以交互式查询。通常用于离线分析。
Hbase(分布式列存数据库)
HBase查询非常快,底层还是存储在HDFS上,是一个针对结构化数据的可伸缩、高可靠、高性能、分布式和面向列的动态模式数据库。和传统关系数据库不同,HBase采用了BigTable的数据模型:增强的稀疏排序映射表(Key/Value),其中,键由行关键字、列关键字和时间戳构成。HBase提供了对大规模数据的随机、实时读写访问,同时,HBase中保存的数据可以使用MapReduce来处理,它将数据存储和并行计算完美地结合在一起。
Zookeeper(分布式协作服务)
解决分布式环境下的数据管理问题:统一命名,状态同步,集群管理,配置同步等。
Sqoop(数据同步工具)
Sqoop是SQL-to-Hadoop的缩写,主要用于传统数据库和Hadoop之前传输数据。数据的导入和导出本质上是Mapreduce程序,充分利用了MR的并行化和容错性。
Pig(基于Hadoop的数据流系统)
由yahoo开源,设计动机是提供一种基于MapReduce的ad-hoc(计算在query时发生)数据分析工具。定义了一种数据流语言—Pig Latin,将脚本转换为MapReduce任务在Hadoop上执行。通常用于进行离线分析。
Mahout(数据挖掘算法库)
Mahout的主要目标是创建一些可扩展的机器学习领域经典算法的实现,旨在帮助开发人员更加方便快捷地创建智能应用程序。Mahout现在已经包含了聚类、分类、推荐引擎(协同过滤)和频繁集挖掘等广泛使用的数据挖掘方法。除了算法,Mahout还包含数据的输入/输出工具、与其他存储系统(如数据库、MongoDB 或Cassandra)集成等数据挖掘支持架构。
Flume(日志收集工具)
Cloudera开源的日志收集系统,具有分布式、高可靠、高容错、易于定制和扩展的特点。它将数据从产生、传输、处理并最终写入目标的路径的过程抽象为数据流,在具体的数据流中,数据源支持在Flume中定制数据发送方,从而支持收集各种不同协议数据。同时,Flume数据流提供对日志数据进行简单处理的能力,如过滤、格式转换等。此外,Flume还具有能够将日志写往各种数据目标(可定制)的能力。总的来说,Flume是一个可扩展、适合复杂环境的海量日志收集系统。
Oozie(作业流调度引擎)
Oozie是一个基于工作流引擎的服务器,可以在上面运行Hadoop的Map Reduce和Pig任务。它其实就是一个运行在Java Servlet容器(比如Tomcat)中的Javas Web应用。
Hadoop生态四大核心组件
Hadoop HDFS、Hadoop MapReduce、Hadoop YARN、Hadoop Common
HDFS
HDFS(Hadoop Distributed File