Hadoop是一个由Apache基金会所开发的分布式系统基础架构。Apache Hadoop软件库是一个框架,允许使用简单的编程模型跨计算机集群分布式处理大型数据集。它旨在从单个服务器扩展到数千台计算机,每台计算机都提供本地计算和存储。库本身不是依靠硬件来提供高可用性,而是设计用于检测和处理应用层的故障,从而在计算机集群之上提供高可用性服务,每个计算机都可能容易出现故障。
该项目包括以下模块:
- Hadoop Common:支持其他Hadoop模块的常用实用程序。
- Hadoop分布式文件系统(HDFS™):一种分布式文件系统,可提供对应用程序数据的高吞吐量访问。
- Hadoop YARN:作业调度和集群资源管理的框架。
- Hadoop MapReduce:基于YARN的系统,用于并行处理大型数据集。
- Hadoop Ozone: Hadoop的对象存储。
编译环境
- 系统环境:Ubuntu18.04。
- 硬件环境:台式,内存:32G,处理器:Intel® Core™ i7-8700 CPU @ 3.20GHz × 12 ,32核。
- Hadoop版本:2.8.5;2.9.2。
编译准备
Hadoop源码下载地址 :https://hadoop.apache.org/releases.html。
Hadoop官方参考文档:http://hadoop.apache.org/docs/r2.8.5/。
博主下载了两个版本 : 2.8.5和2.9.2
编译过程
- 解压源码包。
- 进入到源码目录,找到BUILDING.txt文件,里面有源码编译指南,注意Protobuf可能需要自行编译安装。
- 找到maven环境下的settings.xml文件,添加镜像代理
<mirror>
<id>nexus</id>
<mirrorOf>*</mirrorOf>
<url>http://maven.aliyun.com/nexus/content/groups/public/</url>
</mirror>
<mirror>
<id>nexus-public-snapshots</id>
<mirrorOf>public-snapshots</mirrorOf>
<url>http://maven.aliyun.com/nexus/content/repositories/snapshots/</url>
</mirror>
- 执行编译,进入到源码目录,找到BUILDING.txt文件,其中有编译命令
- 编译结果
- 编译问题,2.9.2版本,出现 Could not find artifact com.amazonaws:DynamoDBLocal 异常,找到maven的settings.xml文件,修改镜像配置如下:
再到hadoop2.9.2的hadoop-maven-plugins目录下,添加pom.xml文件添加如下依赖配置
<dependency>
<groupId>com.amazonaws</groupId>
<artifactId>DynamoDBLocal</artifactId>
<version>1.11.86</version>
</dependency>
- Hadoop2.9.2的最终编译结果
- 最终编译产生的 Protocol Buffer 中间通讯协议文件在各子项目的target目录下。
Apache的其他Hadoop相关项目包括:
- Ambari™:基于Web的工具,用于配置,管理和监控Apache Hadoop集群,包括对Hadoop HDFS,Hadoop MapReduce,Hive,HCatalog,HBase,ZooKeeper,Oozie,Pig和Sqoop的支持。Ambari还提供了一个用于查看集群运行状况的仪表板,例如热图,以及可视化查看MapReduce,Pig和Hive应用程序的功能,以及以用户友好的方式诊断其性能特征的功能。
- Avro™:数据序列化系统。
- Cassandra™:可扩展的多主数据库,没有单点故障。
- Chukwa™:用于管理大型分布式系统的数据收集系统。
- HBase™:可扩展的分布式数据库,支持大型表的结构化数据存储。
- Hive™:一种数据仓库基础架构,提供数据汇总和即席查询。
- Mahout™:可扩展的机器学习和数据挖掘库。
- Pig™:用于并行计算的高级数据流语言和执行框架。
- Spark™:用于Hadoop数据的快速通用计算引擎。Spark提供了一种简单而富有表现力的编程模型,支持广泛的应用程序,包括ETL,机器学习,流处理和图形计算。
- Tez™:基于Hadoop YARN构建的通用数据流编程框架,它提供了一个功能强大且灵活的引擎,可以执行任意DAG任务来处理批量和交互式用例的数据。Tez正在被Hadoop生态系统中的Hive™,Pig™和其他框架以及其他商业软件(例如ETL工具)采用,以取代Hadoop™MapReduce作为底层执行引擎。
- ZooKeeper™:用于分布式应用程序的高性能协调服务。