Hadoop⽣态系统的构成(Hadoop⽣态系统组件释义)
现在先让我们了解⼀下 Hadoop ⽣态系统的构成,主要认识 Hadoop ⽣态系统都包括那些⼦项⽬,每个项⽬都有什么特点,每个项⽬都能解决哪⼀类问题,能回答这三个问题就可以了(本段属于热⾝…重在理解 Hadoop ⽣态系统组成,现状,发展,将来)。
HDFS:
HDFS(HadoopDistributedFileSystem,Hadoop 分布式⽂件系统)是 Hadoop 体系中数据存储管理的基础。它是⼀个⾼度容错的系统,能检测和应对硬件故障,⽤于在低成本的通⽤硬件上运⾏。HDFS 简化了⽂件的⼀致性模型,通过流式数据访问,提供⾼吞吐量应⽤程序数据访问功能,适合带有⼤型数据集的应⽤程序。
MapReduce:
MapReduce 是⼀种计算模型,⽤以进⾏⼤数据量的计算。Hadoop 的 MapReduce实现,和 Common、HDFS ⼀起,构成了 Hadoop 发展初期的三个组件。MapReduce 将应⽤划分为 Map 和 Reduce 两个步骤,其中 Map 对数据集上的独⽴元素进⾏指定的操作,⽣成
键-值对形式中间结果。Reduce 则对中间结果中相同“键”的所有“值”进⾏规约,以得到最终结果。MapReduce 这样的功能划分,⾮常适合在⼤量计算机组成的分布式并⾏环境⾥进⾏数据处理。
HBase
HBase 是⼀个针对结构化数据的可伸缩、⾼可靠、⾼性能、分布式和⾯向列的动态模式数据库。和传统关系数据库不同,HBase 采⽤了BigTable 的数据模型:增强的稀疏排序映射表(Key/Value),其中,键由⾏关键字、列关键字和时间戳构成。HBase 提供了对⼤规模数据的随机、实时读写访问,同时,HBase 中保存的数据可以使⽤ MapReduce 来处理,它将数据存储和并⾏计算完美地结合在⼀起。
本⼈整理了⼤数据Zui新Zui全的⼤数据视频教程,配套资料代码都有的,需要请私信我~
Hive
Hive是Hadoop中的⼀个重要⼦项⽬,最早由Facebook设计,是建⽴在Hadoop基础上的数据仓库架构,它为数据仓库的管理提供了许多功能,包括:数据 ETL(抽取、转换和加载)⼯具、数据存储管理和⼤型数据集的查询和分析能⼒。Hive提供的是⼀种结构化数据的机制,定义了类似于传统关系数据库中的类 SQL 语⾔:HiveQL,通过该查询语⾔,数据分析⼈员可以很⽅便地运⾏数据分析业务(将SQL 转化
为 MapReduce 任务在 Hadoop 上执⾏)。
Pig
Pig 运⾏在 Hadoop 上,是对⼤型数据集进⾏分析和评估的平台。它简化了使 ⽤ Hadoop 进⾏数据分析的要求,提供了⼀个⾼层次的、⾯向领域的抽象语⾔:PigLatin。通过 PigLatin,数据⼯程师可以将复杂且相互关联的数据分析任务编码为 Pig 操作上的数据流脚本,通过将该脚本转换为 MapReduce 任务链,在Hadoop 上执⾏。和 Hive ⼀样,Pig 降低了对⼤型数据集进⾏分析和评估的门槛。
Zookeeper
在分布式系统中如何就某个值(决议)达成⼀致,是⼀个⼗分重要的基础问题。ZooKeeper 作为⼀个分布式的服务框架,解决了分布式计算中的⼀致性问题。
在此基础上,ZooKeeper 可⽤于处理分布式应⽤中经常遇到的⼀些数据管理问题,如统⼀命名服务、状态同步服务、集管理、分布式应⽤配置项的管理等。
ZooKeeper 常作为其他 Hadoop 相关项⽬的主要组件,发挥着越来越重要的作⽤。
Mahout
Mahout 起源于 2008 年,最初是 ApacheLucent 的⼦项⽬,它在极短的时间内取得了长⾜的发展,现在是 Apache 的顶级项⽬。Mahout 的主要⽬标是创建⼀些可扩展的机器学习领域经典算法的实现,旨在帮助开发⼈员更加⽅便快捷地创建智能应⽤程序。Mahout 现在已经包含了聚类、分类、推荐引擎(协同过滤)和频繁集挖掘等⼴泛使⽤的数据挖掘⽅法。除了算法,Mahout 还包含数据的输⼊/输出⼯具、与其他存储系统(如数据库、MongoDB 或 Cassandra)集成等数据挖掘⽀持架构。
Flume
Flume 是 Cloudera 开发维护的分布式、可靠、⾼可⽤的⽇志收集系统。它将数据从产⽣、传输、处理并最终写⼊⽬标的路径的过程抽象为数据流,在具体的数据流中,数据源⽀持在 Flume 中定制数据发送⽅,从⽽⽀持收集各种不同协议数据。同时,Flume 数据流提供对⽇志数据进⾏简单处理的能⼒,如过滤、格式转换等。此外,Flume 还具有能够将⽇志写往各种数据⽬标(可定制)的能⼒。
总的来说,Flume 是⼀个可扩展、适合复杂环境的海量⽇志收集系统。
Sqoophadoop分布式集搭建
Sqoop 是 SQL-to-Hadoop 的缩写,是 Hadoop 的周边⼯具,它的主要作⽤是在结构化数据存储与 Hadoop 之间进⾏数据交换。Sqoop 可以将⼀个关系型数据库(例如 MySQL、Oracle、PostgreSQL 等)
中的数据导⼊ Hadoop 的 HDFS、Hive 中,也可以将 HDFS、Hive 中的数据导⼊关系型数据库中。Sqoop 充分利⽤了 Hadoop的优点,整个数据导⼊导出过程都是⽤ MapReduce 实现并⾏化,同时,该过程中的⼤部分步骤⾃动执⾏,⾮常⽅便。
Accumulo
Accumulo 是⼀个可靠的、可伸缩的、⾼性能的排序分布式的 Key-Value 存储解决⽅案,基于单元访问控制以及可定制的服务器端处理。使⽤ GoogleBigTable设计思路,基于 ApacheHadoop、Zookeeper 和 Thrift 构建。
Spark
Spark 是专为⼤规模数据处理⽽设计的快速通⽤的计算引擎。Spark 是UCBerkeleyAMPlab( 加 州 ⼤ 学 伯 克 利 分 校 的 AMP 实验室 )所 开 源 的 类HadoopMapReduce 的通⽤并⾏框架,Spark,拥有HadoopMapReduce 所具有的优点;但不同于 MapReduce 的是——Job 中间输出结果可以保存在内存中,从⽽不再需要读写 HDFS,因此 Spark 能更好地适⽤于数据挖掘与机器学习等需要迭代的MapReduce 的算法。
Spark 是⼀种与 Hadoop 相似的开源集计算环境,但是两者之间还存在⼀些不同之处,这些有⽤的不
同之处使 Spark 在某些⼯作负载⽅⾯表现得更加优越,换句话说,Spark 启⽤了内存分布数据集,除了能够提供交互式查询外,它还可以优化迭代⼯作负载。
Spark 是在 Scala 语⾔中实现的,它将 Scala ⽤作其应⽤程序框架。与 Hadoop不同,Spark 和 Scala 能够紧密集成,其中的 Scala 可以像操作本地集合对象⼀样轻松地操作分布式数据集。
尽管创建 Spark 是为了⽀持分布式数据集上的迭代作业,但是实际上它是对Hadoop 的补充,可以在 Hadoop ⽂件系统中并⾏运⾏。通过名为 Mesos 的第三⽅集框架可以⽀持此⾏为。Spark 由加州⼤学伯克利分校 AMP 实验室 (Algorithms,Machines,andPeopleLab)开发,可⽤来构建⼤型的、低延迟的数据分析应⽤程序。
Avro
Avro 是⼀个数据序列化系统,设计⽤于⽀持⼤批量数据交换的应⽤。它的主 要特点有:⽀持⼆进制序列化⽅式,可以便捷,快速地处理⼤量数据;动态语⾔友好,Avro 提供的机制使动态语⾔可以⽅便地处理 Avro 数据。当前市场上有很多类似的序列化系统,如 Google 的Protocol Buffers, Facebook 的 Thrift。这些系统反响良好,完全可以满⾜普通应⽤的需求。针对重复开发的疑惑,Doug Cutting 撰⽂解释道:Hadoop 现存的 RPC 系统遇到⼀些
问题,如性能瓶颈(当前采⽤ IPC 系统,它使⽤ Java ⾃带的 DataOutputStream 和 DataInputStream);需要服务器端和客户端必须运⾏相同版本的 Hadoop;只能使⽤ Java 开发等。但现存的这些序列化系统⾃⾝也有⽑病,以 ProtocolBuffers 为例,它需要⽤户先定义数据结构,然后根据这个数据结构⽣成代码,再组装数据。如果需要操作多个数据源的数据集,那么需要定义多套数据结构并重复执⾏多次上⾯的流程,这样就不能对任意数据集做统⼀处理。其次,对于 Hadoop 中 Hive 和 Pig 这样的脚本系统来说,使⽤代码⽣成是不合理的。并且 Protocol Buffers 在序列化时考虑到数据定义与数据可能不完全匹配,在数据中添加注解,这会让数据变得庞⼤并拖慢处理速度。其它序列化系统有如 Protocol Buffers 类似的问题。所以为了 Hadoop 的前途考虑,Doug Cutting 主导开发⼀套全新的序列化系统,这就是 Avro,于 09 年加⼊ Hadoop 项⽬族中。
本⼈整理了今年⼤数据蕞新蕞全的⼤数据视频教程,配套资料代码都有的,对学习⼤数据⾯试就业及技术提升⾮常有帮助,[2021全新⼤数据学习教程]值得学习,需要请私信我。
Crunch
Apache Crunch 是基于 FlumeJava 实现的,它是⼀个基于 MapReduce 的数 据管道库。Apache Crunch 是⼀个 Java 类库,它⽤于简化 MapReduce 作业的 编写和执⾏,并且可以⽤于简化连接和数据
聚合任务 API 的 Java 类库。与 Pig 和 Hive ⼀样,Crunch 是为了降低 MapReduce 的⼊门成本。它们的区别是:
Pig 是⼀个基于管道的框架,⽽ Crunch 则是⼀个 Java 库,它提供⽐ Pig 更⾼级别的灵活性。
Hue
HUE=Hadoop User Experience
Hue 是⼀个开源的 Apache Hadoop UI 系统,由 Cloudera Desktop 演化⽽来,最后 Cloudera 公司将其贡献给 Apache 基⾦会的Hadoop 社区,它是基于 Python Web 框架 Django 实现的。
通过使⽤ Hue,可以在浏览器端的 Web 控制台上与 Hadoop 集进⾏交互,来分析处理数据,例如操作 HDFS 上的数据,运⾏MapReduce Job,执⾏ Hive 的 SQL语句,浏览 HBase 数据库等等。(就是⽀持提供各种 Web 图形化界⾯的)。
Impala
Impala 是 Cloudera 公司主导开发的新型查询系统,它提供 SQL 语义,能查询存储在 Hadoop 的 HDFS 和 HBase 中的 PB 级⼤数据。已有的 Hive 系统虽然也 提供了 SQL 语义,但由于 Hive 底层执⾏
使⽤的是 MapReduce 引擎,仍然是⼀个批处理过程,难以满⾜查询的交互性。相⽐之下,Impala 的最⼤特点也是最⼤卖点就是它的快速。
Kafka
Kafka 是由 Apache 软件基⾦会开发的⼀个开源流处理平台,由 Scala 和 Java
编写。Kafka 是⼀种⾼吞吐量的分布式发布订阅消息系统,它可以处理消费者在
⽹站中的所有动作流数据。 这种动作(⽹页浏览,搜索和其他⽤户的⾏动)是在现代⽹络上的许多社会功能的⼀个关键因素。 这些数据通常是由于吞吐量的要求⽽通过处理⽇志和⽇志聚合来解决。
对于像 Hadoop ⼀样的⽇志数据和离线分析系统,但⼜要求实时处理的限制,这是⼀个可⾏的解决⽅案。Kafka 的⽬的是通过 Hadoop 的并⾏加载机制来统⼀线上和离线的消息处理,也是为了通过集来提供实时的消息。
Kudu
Kudu 是 cloudera 开源的运⾏在 hadoop 平台上的列式存储系统,拥有 Hadoop⽣态系统应⽤的常见技术特性,运⾏在⼀般的商⽤硬件上,⽀持⽔平扩展,⾼可⽤。
Oozie
Oozie由 Cloudera 公司贡献给 Apache 的基于⼯作流引擎的开源框架,是⽤于 Hadoop平台的开源的⼯作流调度引擎,是⽤来管理 Hadoop 作业,属于 web 应⽤程序,由 Oozie client 和 Oozie Server 两个组件构成,Oozie Server 运⾏于Java Servlet 容器(Tomcat)中的 web 程序。
Sentry
Sentry 是⼀个开源的实时错误追踪系统,可以帮助开发者实时监控并修复异常问题。它主要专注于持续集成、提⾼效率并且提升⽤户体验。Sentry 分为服务端和客户端 SDK,前者可以直接使⽤它家提供的在线服务,也可以本地⾃⾏搭建;后者提供了对多种主流语⾔和框架的⽀持,包括 React、Angular、Node、Django、RoR、PHP、Laravel、Android、.NET、JAVA 等。同时它可提供了和其他流⾏服务集成的⽅案,例如 GitHub、GitLab、bitbuck、heroku、slack、Trello 等。
注意:Apache Parquet 是⼀种能够有效存储嵌套数据的列式存储格式。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论