深入了解
Hadoop
Hadoop 是Apache 基金会的一个开源项目。它是一个用Java 编写的框架,最初由Doug Cutting 在2005 年开发。创建它是为了支持文本搜索引擎Nutch 的分发。 Hadoop 使用 Google 的 Map Reduce 和 Google 文件系统技术作为其基础。
Hadoop 的特点
- 它经过优化,可以使用商用硬件处理大量结构化、半结构化和非结构化数据。
- 它没有共享任何架构。
- 它将其数据复制到多台计算机中,因此如果一台计算机出现故障,仍可以从存储其副本的另一台计算机处理数据。
-
Hadoop 用于高吞吐量而不是低延迟。它是处理海量数据的批处理操作;因此响应时间不是即时的。
- 它补充了在线事务处理和在线分析处理。但是,它不能替代
RDBMS。
- 当工作无法并行化或数据中存在依赖关系时,这是不好的。
- 不适合处理小文件。它最适合处理大型数据文件和数据集。
Hadoop 版本
Hadoop 有两个版本可用:
- Hadoop 1.0
- Hadoop 2.0
Hadoop 1.0
它有两个主要部分:
1.数据存储框架
它是一个通用的文件系统,称为 Hadoop 分布式文件系统 (HDFS)。
HDFS 没有架构
它只是存储数据文件,这些数据文件几乎可以是任何格式。
我们的想法是尽可能接近原始格式来存储文件。
这反过来又为业务部门和组织提供了急需的灵活性和敏捷性,而不必过度担心它可以实施什么。
2。数据处理框架
这是一个简单的函数式编程模型,最初由 Google 推广为MapReduce。
它本质上使用两个函数:MAP 和REDUCE 来处理数据。
“映射器”接收一组键值对并生成中间数据(这是另一个键值对列表)。
“Reducers”然后对该输入进行操作以生成输出数据。
这两个功能看似相互隔离,因此能够以高度并行、容错和可扩展的方式高度分布处理。
Hadoop 1.0 的限制
第一个限制是MapReduce 编程专业知识的要求。
它只支持批处理,虽然适用于日志分析、大规模数据挖掘项目等任务,但几乎不适合其他类型的项目。
-
一个主要限制是Hadoop 1.0 与MapReduce 在计算上紧密耦合,这意味着成熟的数据管理供应商留下了两种意见:
要么在MapReduce 中重写它们的功能,以便它可以
在Hadoop 或
中执行
从HDFS 中提取数据或在Hadoop 之外进行处理。
这些选项都不可行,因为它会导致数据移入和移出 Hadoop 集群导致流程效率低下。
Hadoop 2.0
在Hadoop 2.0 中,HDFS 仍然是数据存储框架。
但是,一个新的独立资源管理框架称为 Yet A另一个 Resource Negotiater ( YARN) 已添加。
YARN 支持任何能够将自身划分为并行任务的应用程序。
YARN 协调提交应用的子任务分配,从而进一步提高应用的灵活性、可扩展性和效率。
它的工作原理是使用 Application Master 代替 Job Tracker,在由新的 Node Manager 管理的资源上运行应用程序。
ApplicationMaster 能够运行任何应用程序,而不仅仅是MapReduce。
这意味着它不仅支持批处理,还支持实时处理。 MapReduce 不再是唯一的数据处理选项。
Hadoop 的优势
它将数据存储在其本机中。在键入数据或存储数据时没有强加结构。 HDFS 少架构。只有稍后需要处理数据时,才会将结构强加于原始数据。
它是可扩展的。 Hadoop 可以在数百台并行运行的廉价服务器上存储和分发非常大的数据集。
它对失败具有弹性。 Hadoop 是容错。它勤奋地实践数据的复制,这意味着每当数据发送到任何节点时,相同的数据也会被复制到集群中的其他节点,从而确保在节点发生故障时,总会有另一个数据副本可供使用。
它很灵活。 Hadoop 的主要优势之一是它可以处理任何类型的数据:结构化、非结构化或半结构化。此外,Hadoop 的处理速度非常快,这要归功于“将代码移动到数据”范例。
Hadoop 生态系统
以下是Hadoop 生态系统的组成部分:
HDFS:Hadoop 分布式文件系统。它只是将数据文件存储在尽可能接近原始格式的位置。
HBase:它是 Hadoop 的数据库,可与 RDBMS 媲美。它支持大表的结构化数据存储。
Hive:它支持使用与标准ANSI SQL 非常相似的语言分析大型数据集,这意味着任何熟悉SQL 的人都应该能够访问Hadoop 集群上的数据.
猪:是一种易于理解的数据流语言。它有助于分析大型数据集,这与Hadoop 相当。 Pig 脚本由 Pig 解释器自动转换为 MapReduce 作业。
ZooKeeper:它是分布式应用程序的协调服务。
Oozie:这是一个工作流schedular系统来管理Apache Hadoop作业。
Mahout:它是一个可扩展的机器学习和数据挖掘库。
Chukwa:用于管理大型分布式系统的数据收集系统。
Sqoop:用于在Hadoop和关系数据库等结构化数据存储之间传输批量数据。
Ambari:它是一个基于 Web 的工具,用于配置、管理和监控 Hadoop 集群。
蜂巢
Hive 是一个数据仓库基础设施工具,用于处理Hadoop 中的结构化数据。它驻留在Hadoop 之上,用于汇总大数据并使查询和分析变得容易。
Hive 不是
关系数据库
在线事务处理设计 (OLTP)。
一种用于实时查询和行级更新的语言。
Hive 的特点
它将架构存储在数据库中,并将处理后的数据存储到HDFS。
专为OLAP设计。
它提供SQL 类型语言用于查询,称为HiveQL 或HQL。
它更熟悉、快速、可扩展和可扩展。
蜂巢架构
Hive 架构中包含以下组件:
用户界面:Hive 是一个data warehouse 基础架构,可以在用户和HDFS 之间创建交互。 Hive 支持的用户界面是 Hive Web UI、Hive 命令行和 Hive HD Insight(在 Windows Server 中)。
MetaStore:Hive 选择各自的database servers 存储表、数据库、表中的列、它们的数据类型和@987654383 的架构或Metadata @映射。
HiveQL 流程引擎:HiveQL 类似于 SQL,用于查询 Metastore 上的架构信息。它是MapReduce 程序的传统方法的替代之一。不用在Java 中写MapReduce,我们可以为MapReduce 写一个查询并处理它。
执行引擎:HiveQL 流程引擎和MapReduce 的结合部分是Hive 执行引擎。执行引擎处理查询并生成与MapReduce results 相同的结果。它使用MapReduce 的风格。
HDFS 或 HBase:Hadoop 分布式文件系统或HBase 是将数据存储到文件系统中的数据存储技术。