首页 > 编程知识 正文

hadoop生态圈组件有哪些,hadoop生态项目有哪些

时间:2023-05-06 17:24:16 阅读:56968 作者:2795

首先,让我们了解一下Hadoop生态系统的构成。 主要是Hadoop生态系统包含那些子项目,每个项目有什么特点,每个项目能解决什么类型的问题,能回答这三个问题就好了。 (本段属于预热…重点是了解…Hadoop生态系统的构成、现状、发展和未来。

HDFS:HDFS (硬盘分布式文件系统,Hadoop分布式文件系统)是Hadoop系统中数据存储管理的基础。 它是一个容错系统,可检测和响应硬件故障,可在低成本的通用硬件上运行。 HDFS简化了文件完整性模型,通过流数据访问提供了高吞吐量的APP应用程序数据访问功能,适用于具有大型数据集的APP应用程序。

MapReduce: MapReduce是进行大数据量计算的计算模型。 Hadoop的MapReduce实现与Common、HDFS一起构成Hadoop发展初期的三个组件。 MapReduce将APP应用程序分为两个步骤:映射和重建。 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可以用于解决分布式APP应用程序中常见的数据管理问题,如统一名称服务、状态同步服务、群集管理和分布式APP应用程序配置项管理。

ZooKeeper作为其他Hadoop相关项目的主要组件,发挥着越来越重要的作用。

Mahout Mahout始于2008年,最初是ApacheLucent的子项目,在短时间内取得了长足发展,现在是Apache的顶级项目。 Mahout的主要目标是创建可扩展机器学习领域的经典算法实现,旨在帮助开发人员更方便快捷地创建智能APP应用程序。 Mahout目前包括聚类、分类、推荐引擎(协同过滤)和频繁聚集挖掘等广泛使用的数据挖掘方法。 除了算法外,Mahout还包括数据挖掘支持体系结构,如与其他存储系统(如数据输入/输出工具、数据库、MongoDB和Cassandra )的集成。

Flume Flume是由Cloudera开发维护的分布式、可靠、高可用性的日志收集系统。 将生成、传输和处理数据并最终写入目标路径的过程抽象为数据流。 在特定数据流中,数据源支持在Flume中自定义数据源,并支持收集各种协议数据。 另一方面,Flume数据流提供了易于处理日志数据的功能,如过滤、格式转换等。 Flume还具有将日志写入各种数据目标(可定制)的能力。

通常,Flume是一个可扩展、适用于复杂环境的大量日志收集系统。

Sqoop 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 是一种能够有效存储嵌套数据的列式存储格式。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。