Hadoop是一个用Java编写的Apache开源框架,允许使用简单的编程模型跨计算机集群分布式处理大型数据集。Hadoop框架工作的应用程序在跨计算机集群提供分布式存储和计算的环境中工作。Hadoop旨在从单个服务器扩展到数千个机器,每个都提供本地计算和存储。
Hadoop是一个开源框架来存储和处理大型数据在分布式环境中。它包含两个模块,一个是MapReduce,另外一个是Hadoop分布式文件系统(HDFS)。
-
MapReduce:它是一种并行编程模型在大型集群普通硬件可用于处理大型结构化,半结构化和非结构化数据。
-
HDFS:Hadoop分布式文件系统是Hadoop的框架的一部分,用于存储和处理数据集。它提供了一个容错文件系统在普通硬件上运行。
Hadoop生态系统包含了用于协助Hadoop的不同的子项目(工具)模块,如Sqoop, Pig 和 Hive。
-
Sqoop: 它是用来在HDFS和RDBMS之间来回导入和导出数据。
-
Pig: 它是用于开发MapReduce操作的脚本程序语言的平台。
-
Hive: 它是用来开发SQL类型脚本用于做MapReduce操作的平台。
注:有多种方法来执行MapReduce作业:
- 传统的方法是使用Java MapReduce程序结构化,半结构化和非结构化数据。
- 针对MapReduce的脚本的方式,使用Pig来处理结构化和半结构化数据。
- Hive查询语言(HiveQL或HQL)采用Hive为MapReduce的处理结构化数据。
Hadoop架构
Hadoop框架包括以下四个模块:
-
Hadoop Common: 这些是其他Hadoop模块所需的Java库和实用程序。这些库提供文件系统和操作系统级抽象,并包含启动Hadoop所需的Java文件和脚本。
-
Hadoop YARN: 这是一个用于作业调度和集群资源管理的框架。
-
Hadoop Distributed File System (HDFS™): 分布式文件系统,提供对应用程序数据的高吞吐量访问。
-
Hadoop MapReduce:这是基于YARN的用于并行处理大数据集的系统。
Hadoop如何工作?
阶段 1
用户/应用程序可以通过指定以下项目来向Hadoop(hadoop作业客户端)提交作业以获取所需的进程:
-
分布式文件系统中输入和输出文件的位置。
-
java类以jar文件的形式包含map和reduce函数的实现。
-
通过设置作业的不同参数来配置作业。
阶段 2
Hadoop作业客户端然后将作业(jar /可执行文件等)和配置提交给JobTracker,JobTracker然后承担将软件/配置分发给从属的责任,Hadoop作业客户端然后将作业(jar /可执行文件等)和配置提交给JobTracker,JobTracker然后承担将软件/配置分发给从属的责任,
阶段 3
不同节点上的TaskTracker根据MapReduce实现执行任务,reduce函数的输出存储在文件系统上的输出文件中。
Hadoop的优势
-
Hadoop框架允许用户快速编写和测试分布式系统。它是高效的,它自动分配数据和工作在整个机器,反过来,利用CPU核心的底层并行性。
-
Hadoop不依赖硬件来提供容错和高可用性(FTHA),相反Hadoop库本身设计用于检测和处理应用程序层的故障。
-
服务器可以动态添加或从集群中删除,Hadoop继续运行而不中断。
-
Hadoop的另一个大的优点是,除了开源之外,它在所有平台上兼容,因为它是基于Java的。