Haddoop大数据教程笔记_02_Hadoop生态圈简介

本文全面介绍了Hadoop及其生态圈中的关键组件,包括HDFS、MapReduce、Hive、HBase、Zookeeper、Sqoop、Pig、Mahout、Flume、Spark、Storm、Impala、Kafka、YARN、Hue、Oozie和Ambari,详细阐述了各组件的功能与作用。

Hadoop生态圈简介

目录

Hadoop生态圈简介

Hadoop生态圈:

(一)Hdfs

(二)Mapreduce

(三)Hive

(四)Hbase

(五)Zookeeper

(六)Sqoop

(七)Pig

(八)Mahout

(九)Flume

(十)Spark

(十一)Storm

(十二)Impala

(十三)Kafka

(十四)Yarn

(十五)Hue

(十六)Oozie

(十七)Ambari


 

 

Hadoop生态圈:

    狭义上的Hadoop,指的是Hadoop的核心技术,对应为apache开源社区的一个项目,主要包括三部分内容:hdfs,mapreduce,yarn

HDFS:分布式文件系统, 实现将文件分布式存储在很多的服务器上MAPREDUCE :分布式运算编程框架,实现在很多机器上分布式并行运算YARN:分布式资源调度平台,帮用户调度大量的mapreduce程序,并合理分配运算资源。  

    广义上的Hadoop指一个生态圈,泛指大数据技术相关的开源组件或产品,如hbase、hive、spark、pig、zookeeper、kafka、flume、phoenix、sqoop等。封面首图所示为现有常用hadoop生态圈相关组件。

 

下面简单介绍常用Hadoop组件(以下介绍来自:https://www.jianshu.com/p/9918fb395d1e)

(一)Hdfs

Hdfs是一种分布式文件系统,是Hadoop体系中数据存储管理的基础。它是一个高度容错的系统,能检测和应对硬件故障,用于在低成本的通用硬件上运行。Hdfs简化了文件的一致性模型,通过流式数据访问,提供高吞吐量应用程序数据访问功能,适合带有大型数据集的应用程序。

(二)Mapreduce

MapReduce分为第一代(称为 MapReduce 1.0或者MRv1,对应hadoop第1代)和第二代(称为MapReduce 2.0或者MRv2,对应hadoop第2代)。第一代MapReduce计算框架,它由两部分组成:编程模型(programming model)和运行时环境(runtime environment)。它的基本编程模型是将问题抽象成Map和Reduce两个阶段,其中Map阶段将输入数据解析成key/value,迭代调用map()函数处理后,再以key/value的形式输出到本地目录,而Reduce阶段则将key相同的value进行规约处理,并将最终结果写到HDFS上。它的运行时环境由两类服务组成:JobTracker和TaskTracker,其中,JobTracker负责资源管理和所有作业的控制,而TaskTracker负责接收来自JobTracker的命令并执行它。

MapReduce 2.0或者MRv2具有与MRv1相同的编程模型,唯一不同的是运行时环境。MRv2是在MRv1基础上经加工之后,运行于资源管理框架YARN之上的MRv1,它不再由JobTracker和TaskTracker组成,而是变为一个作业控制进程ApplicationMaster,且ApplicationMaster仅负责一个作业的管理,至于资源的管理,则由YARN完成。

总结下,MRv1是一个独立的离线计算框架,而MRv2则是运行于YARN之上的MRv1。

(三)Hive

Hive是一种基于Hadoop的数据仓库,由facebook开源,最初用于解决海量结构化的日志数据统计问题。Hive定义了一种类似SQL的查询语言(HQL),将SQL转化为MapReduce任务在Hadoop上执行。通常用于离线分析。

(四)Hbase

HBase是Google Bigtable的克隆版。它是一个针对结构化数据的可伸缩、高可靠、高性能、分布式和面向列的动态模式数据库。和传统关系数据库不同,HBase采用了BigTable的数据模型:增强的稀疏排序映射表(Key/Value),其中,键由行关键字、列关键字和时间戳构成。HBase提供了对大规模数据的随机、实时读写访问,同时,HBase中保存的数据可以使用MapReduce来处理,它将数据存储和并行计算完美地结合在一起。

(五)Zookeeper

ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,是Google的Chubby一个开源的实现。它是一个为分布式应用提供一致性服务的软件,提供的功能包括:配置维护、域名服务、分布式同步、组服务等。ZooKeeper的目标就是封装好复杂易出错的关键服务,将简单易用的接口和性能高效、功能稳定的系统提供给用户。ZooKeeper包含一个简单的原语集,提供Java和C的接口。

(六)Sqoop

Sqoop是一款开源的工具,主要用于在Hadoop和传统的数据库(mysql、postgresql等)进行数据的传递,可以将一个关系型数据库(例如:MySQL、Oracle、Postgres等)中的数据导进到Hadoop的HDFS中,也可以将HDFS的数据导进到关系型数据库中。

Sqoop分为一代(称为Sqoop1)和二代(称为Sqoop2),其中Sqoop1的架构,仅仅使用一个Sqoop客户端,Sqoop2的架构,引入了Sqoop server集中化管理connector,以及rest api,web,UI,并引入权限安全机制。

(七)Pig

Apache Pig是MapReduce的一个抽象。它是一个工具/平台,用于分析较大的数据集,并将它们表示为数据流。Pig通常与 Hadoop 一起使用;我们可以使用Apache Pig在Hadoop中执行所有的数据处理操作。要编写数据分析程序,Pig提供了一种称为 Pig Latin 的高级语言。该语言提供了各种操作符,程序员可以利用它们开发自己的用于读取,写入和处理数据的功能。

要使用 Apache Pig 分析数据,程序员需要使用Pig Latin语言编写脚本。所有这些脚本都在内部转换为Map和Reduce任务。Apache Pig有一个名为 Pig Engine 的组件,它接受Pig Latin脚本作为输入,并将这些脚本转换为MapReduce作业。
所以使用PIG,可以让不太擅长编写Java程序的程序员来进行大数据分析处理。

(八)Mahout

Mahout起源于2008年,最初是Apache Lucent的子项目,它在极短的时间内取得了长足的发展,现在是Apache的顶级项目。

Mahout的主要目标是创建一些可扩展的机器学习领域经典算法的实现,旨在帮助开发人员更加方便快捷地创建智能应用程序。Mahout现在已经包含了聚类、分类、推荐引擎(协同过滤)和频繁集挖掘等广泛使用的数据挖掘方法。除了算法,Mahout还包含数据的输入/输出工具、与其他存储系统(如数据库、MongoDB 或Cassandra)集成等数据挖掘支持架构。

(九)Flume

Flume是Cloudera(一个知名的基于开源hadoop的大数据发行商)设计开发的一个开源的日志收集工具, 具有分布式、高可靠、高容错、易于定制和扩展的特点。它将数据从产生、传输、处理并最终写入目标的路径的过程抽象为数据流,在具体的数据流中,数据源支持在Flume中定制数据发送方,从而支持收集各种不同协议数据。同时,Flume数据流提供对日志数据进行简单处理的能力,如过滤、格式转换等。此外,Flume还具有能够将日志写往各种数据目标(可定制)的能力。总的来说,Flume是一个可扩展、适合复杂环境的海量日志收集系统。

(十)Spark

Spark是一个通用计算引擎,能对大规模数据进行快速分析,可用它来完成各种各样的运算,包括 SQL 查询、文本处理、机器学习等,而在 Spark 出现之前,我们一般需要学习各种各样的引擎来分别处理这些需求。Spark不依赖于MapReduce,它使用了自己的数据处理框架。Spark使用内存进行计算,速度更快。Spark本身就是一个生态系统,除了核心API之外,Spark生态系统中还包括其他附加库,可以在大数据分析和机器学习领域提供更多的能力,如Spark SQL,Spark Streaming,Spark MLlib,Spark GraphX,BlinkDB,Tachyon等。

(十一)Storm

Storm是Twitter开源的分布式实时大数据处理框架,最早开源于github,从0.9.1版本之后,归于Apache社区,被业界称为实时版Hadoop。它与Spark Streaming的最大区别在于它是逐个处理流式数据事件,而Spark Streaming是微批次处理,因此,它比Spark Streaming更实时。

(十二)Impala

Impala是Cloudera公司主导开发的新型查询系统,它提供SQL语义,能查询存储在Hadoop的HDFS和HBase中的PB级大数据。已有的Hive系统虽然也提供了SQL语义,但由于Hive底层执行使用的是MapReduce引擎,仍然是一个批处理过程,难以满足查询的交互性。相比之下,Impala的最大特点也是最大卖点就是它的快速。

另外Impala可以Hive结合使用,它可以直接使用Hive的元数据库Metadata。

(十三)Kafka

Kafka是一种分布式的,基于发布/订阅的消息系统,类似于消息对列的功能,可以接收生产者(如webservice、文件、hdfs、hbase等)的数据,本身可以缓存起来,然后可以发送给消费者(同上),起到缓冲和适配的作。

(十四)Yarn

Yarn是一种新的 Hadoop 资源管理器,它是一个通用资源管理系统,可为上层应用提供统一的资源管理和调度。它将资源管理和处理组件分开,它的引入为集群在利用率、资源统一管理和数据共享等方面带来了巨大好处。可以把它理解为大数据集群的操作系统。可以在上面运行各种计算框架(包括MapReduce、Spark、Storm、MPI等)。

(十五)Hue

Hue是一个开源的Apache Hadoop UI系统,通过使用Hue我们可以在浏览器端的Web控制台上与Hadoop集群进行交互来分析处理数据,例如操作HDFS上的数据,运行MapReduce Job等等。

(十六)Oozie

在Hadoop中执行的任务有时候需要把多个Map/Reduce作业连接到一起,这样才能够达到目的。Oozie让我们可以把多个Map/Reduce作业组合到一个逻辑工作单元中,从而完成更大型的任务。wuOozie是一种Java Web应用程序,它运行在Java servlet容器中,并使用数据库来存储相关信息。

(十七)Ambari

Ambari是一个开源的大数据集群管理系统,可以用来就是创建、管理、监视 Hadoop 的集群,并提供WEB可视化的界面来让用户进行管理。

 

后续介绍《Hadoop安装部署》《hdfs文件系统部署和操作》

<think>好的,我现在需要帮助用户解决在Windows环境下Hadoop 2.7.6找不到winutils.exe的问题,同时配置Map/Reduce项目的引用库。首先,我得回顾用户的问题和之前的回答,确保不重复并覆盖所有细节。 用户提到错误信息是“Could not locate executable null \bin\winutils.exe”和“Unable to load native-hadoop library”,这说明系统找不到winutils.exe和hadoop.dll。根据引用[1]和[2],解决方案是下载这两个文件并放到Hadoop的bin目录。但用户现在用的是Hadoop 2.7.6,可能需要特定版本的winutils。之前的回答可能提到过2.7.4的配置,但用户现在版本不同,需要注意版本匹配。 首先,确认winutils.exe和hadoop.dll的正确来源。通常这些文件需要对应Hadoop的版本,用户可能从非官方渠道获得,比如GitHub上的资源。需要指导用户下载适用于2.7.6的文件,并检查权限问题,比如是否需要在Windows中设置可执行权限或者添加环境变量。 接下来是配置引用库的问题。用户之前可能尝试在Eclipse中手动添加JAR包,但可能遇到路径问题或版本冲突。需要详细说明如何正确添加Hadoop的核心JAR包,如common、hdfsmapreduce等模块的JAR文件,以及处理可能的依赖冲突,比如使用Maven管理依赖。 另外,用户提到在IDEA中运行代码时出现问题,可能需要配置运行环境,特别是设置HADOOP_HOME环境变量,并确保IDE能够识别本地库路径。此外,用户可能需要配置项目的构建路径,包括添加必要的库和排除冲突的依赖项。 还要考虑用户可能遇到的权限问题,比如winutils.exe需要管理员权限运行,或者防病毒软件阻止了这些文件的执行。需要提醒用户检查这些方面,并指导如何设置环境变量PATH和HADOOP_HOME。 最后,验证步骤很重要,建议用户编写一个简单的WordCount程序测试配置是否正确,确保所有依赖库正确加载,并且没有类路径或版本冲突的问题。同时,如果用户使用Maven或Gradle,提供相应的配置示例会更有帮助,确保依赖版本一致。 总结来说,需要分步骤指导用户下载正确的文件,配置环境变量,添加引用库,处理依赖冲突,并进行验证测试,确保所有问题都得到解决。</think>### 解决方案:解决Hadoop 2.7.6在Windows下缺失winutils.exe及配置引用库 --- #### 一、修复winutils.exe缺失问题 1. **下载适用于Hadoop 2.7.6的Windows工具包** - **来源**:从可靠仓库(如GitHub的[winutils](https://github.com/cdarlint/winutils))下载 `hadoop-2.7.6` 对应的 `winutils.exe` 和 `hadoop.dll`[^1] - **存放路径**: - 将文件放入Hadoop安装目录的 `bin` 文件夹(如 `D:\hadoop-2.7.6\bin`) 2. **配置系统环境变量** - **设置 `HADOOP_HOME`**: ```shell HADOOP_HOME=D:\hadoop-2.7.6 ``` - **添加 `PATH` 路径**: ```shell PATH=%HADOOP_HOME%\bin;%PATH% ``` - **验证**:在命令行执行 `winutils.exe`,确保无权限错误(若提示权限问题,右键文件 → 属性 → 解除锁定)[^1] 3. **解决本地库加载失败** - **确保文件完整性**:确认 `hadoop.dll` 存在于 `%HADOOP_HOME%\bin` - **禁用Windows Defender/杀毒软件**:临时关闭可能拦截文件的防护程序 - **手动加载本地库**:在代码中添加以下语句(仅调试用) ```java System.setProperty("hadoop.home.dir", "D:\\hadoop-2.7.6"); ``` --- #### 二、配置Map/Reduce项目的Referenced Libraries 1. **手动添加Hadoop核心JAR包** - **定位JAR文件**:进入Hadoop安装目录的 `share/hadoop` 子目录,添加以下关键库: - **common**:`hadoop-common-2.7.6.jar`, `hadoop-annotations-2.7.6.jar` - **hdfs**:`hadoop-hdfs-2.7.6.jar` - **mapreduce**:`hadoop-mapreduce-client-core-2.7.6.jar` - **操作步骤**(以Eclipse为例): - 右键项目 → `Build Path > Configure Build Path` → `Add External JARs` → 选择上述文件 2. **处理依赖冲突** - **排除冲突库**: - 检查是否引入多个版本的 `guava`(Hadoop 2.7.x需 `guava-11.0.2.jar`) - 在构建路径中移除高版本(如 `guava-30.0-jre.jar`) - **强制指定本地库路径**:在运行配置中添加JVM参数 ```shell -Djava.library.path=D:\hadoop-2.7.6\bin ``` 3. **使用Maven管理依赖(推荐)** - **pom.xml配置示例**: ```xml <dependency> <groupId>org.apache.hadoop</groupId> <artifactId>hadoop-client</artifactId> <version>2.7.6</version> <exclusions> <exclusion> <groupId>com.google.guava</groupId> <artifactId>guava</artifactId> </exclusion> </exclusions> </dependency> <dependency> <groupId>com.google.guava</groupId> <artifactId>guava</artifactId> <version>11.0.2</version> <!-- 强制指定兼容版本 --> </dependency> ``` --- #### 三、验证配置 1. **运行简单MapReduce任务** - **WordCount测试**: ```java public static void main(String[] args) throws Exception { Configuration conf = new Configuration(); conf.set("mapreduce.framework.name", "local"); Job job = Job.getInstance(conf, "word count"); // ...(标准WordCount代码) System.exit(job.waitForCompletion(true) ? 0 : 1); } ``` - **检查日志**:若输出 `Using builtin-java classes` 消失,表示本地库加载成功[^2] 2. **IDE特定配置(IntelliJ IDEA)** - **编辑运行配置**: - 在 `VM Options` 中添加: ```shell -Djava.library.path=D:\hadoop-2.7.6\bin -Dhadoop.home.dir=D:\hadoop-2.7.6 ``` - 勾选 `Include dependencies with "Provided" scope` --- ### 相关问题 1. 如何调试Hadoop本地库加载失败的具体原因? 2. 在IntelliJ IDEA中如何配置Hadoop开发环境? 3. Hadoop 2.x与Hadoop 3.x在Windows支持上有何差异? --- ### 关键点总结 | 步骤 | 操作 | 验证方法 | |------|------|----------| | 修复winutils缺失 | 下载文件并配置环境变量 | 命令行执行 `winutils.exe` | | 添加Hadoop JAR包 | 手动或通过Maven引入 | 项目无编译错误 | | 处理依赖冲突 | 排除冲突版本 | 运行时无 `NoSuchMethodError` | | 验证本地库 | 运行WordCount程序 | 日志无警告且输出正确结果 | 通过以上步骤,可系统性解决Windows下Hadoop环境配置问题[^1][^2]。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值