您的位置:

Hadoop简介

一、Hadoop概述

Hadoop是一个由Apache开发和维护的开源软件框架,它是一个分布式计算平台,主要用于存储和处理大数据(Big Data)应用。Hadoop的核心组件包括Hadoop Distributed File System (HDFS)和MapReduce分布式计算框架。

二、Hadoop发展历史

2003年,Google公司发布了一篇名为"Google File System"的技术论文,描述了他们如何处理大规模数据。2004年,Google发布了第一篇MapReduce的论文,描述了如何利用分布式计算框架的优势,处理分布式资源。

2005年,Doug Cutting与Michael J. Cafarella研发了一个名为Nutch的搜索引擎项目。为了让Nutch能够处理Google级别的数据规模,Doug Cutting决定基于Google的技术论文开发一个用于存储和处理大规模数据的分布式计算平台,这就是Hadoop。

三、Hadoop架构

Hadoop平台中的主要组件是Hadoop Distributed File System(HDFS)和MapReduce。其中HDFS是分布式文件系统,用于将数据存储在物理集群节点上。MapReduce是分布式计算框架,用于处理在HDFS上存储的数据。

整体上,Hadoop的架构可以被分为五个层次:存储层、计算层、管理层、安全层和应用层。

<dependencies>
  <dependency>
    <groupId>org.apache.hadoop</groupId>
    <artifactId>hadoop-core</artifactId>
    <version>1.2.1</version>
  </dependency>
</dependencies>

四、Hadoop输入输出

Hadoop支持多种不同的文件格式和协议来输入和输出数据。Hadoop可以在输入和输出数据的各自格式上进行自动转换。其中,输入数据可以是文本文件、Avro二进制数据、SequenceFile、普通文件和HBase表。输出数据可以是文本文件、SequenceFile、Avro二进制数据、HBase表等。

public class Map extends Mapper<Object, Text, Text, IntWritable>
{
    public void map(Object key, Text value, Context context)
                    throws IOException, InterruptedException
    {
        String[] words = value.toString().split(" ");
        for (String word : words)
        {
            context.write(new Text(word), new IntWritable(1));
        }
    }
}

五、Hadoop生态圈

Hadoop生态圈包括HBase、ZooKeeper、Hive、Pig、Mahout等组件。HBase是一个分布式列存储数据存储系统,它基于Google的Bigtable构建。ZooKeeper是一个开源的分布式系统协调器,它的主要作用是为分布式应用提供协调服务。Hive是一个基于Hadoop的数据仓库工具,可以将结构化数据映射到一个数据库上,并支持类SQL的操作。Pig是一个高级的语言/平台,用于批量处理大型数据集。Mahout是一个纯Java开发的机器学习库,可以作为Hadoop的扩展来使用。

<dependency>
  <groupId>org.apache.hbase</groupId>
  <artifactId>hbase-client</artifactId>
  <version>2.3.0</version>
</dependency>