【Hadoop 01】简介
**Hadoop01: 简介**
Apache Hadoop 是一个开源的大数据处理框架,用于处理海量的结构化、半结构化和非结构化数据。它由 Doug Cutting 和 Mike Cafarella 等人开发,并于2006 年首次发布。
**什么是大数据?**
大数据(Big Data)指的是以太快、以太多、以太复杂的数据,超出了传统数据库管理系统处理能力的数据量和速度。这些数据通常来源于互联网、社会媒体、移动设备等各种渠道。
**Hadoop 的特点**
Hadoop 有以下几个重要的特点:
1. **分布式**: Hadoop 将数据分割成小块,存储在多台机器上,每台机器处理一部分数据。
2. **可扩展性**: Hadoop 可以轻松地增加或减少计算资源,以适应数据量的变化。
3. **高吞吐量**: Hadoop 能够处理非常大的数据集,并且能够快速完成任务。
4. **低成本**: Hadoop 使用廉价的硬件设备,降低了大数据处理的成本。
**Hadoop 的组成部分**
Hadoop 由以下几个主要组成部分:
1. **HDFS (Hadoop Distributed File System)**: HDFS 是一个分布式文件系统,用于存储和管理大数据。
2. **MapReduce**: MapReduce 是一个编程模型和计算框架,用于处理大数据集。
3. **YARN (Yet Another Resource Negotiator)**: YARN 是一个资源管理器,用于管理 Hadoop 的资源。
**HDFS**
HDFS 是 Hadoop 的分布式文件系统,它将数据分割成小块,存储在多台机器上。每个块称为一个块(Block),大小通常为64MB 或128MB。HDFS 有以下几个重要的特点:
1. **分布式**: HDFS 将数据分割成小块,存储在多台机器上。
2. **可扩展性**: HDFS 可以轻松地增加或减少计算资源,以适应数据量的变化。
3. **高吞吐量**: HDFS 能够处理非常大的数据集,并且能够快速完成任务。
**MapReduce**
MapReduce 是一个编程模型和计算框架,用于处理大数据集。它有以下几个重要的特点:
1. **分割数据**: MapReduce 将数据分割成小块,进行并行处理。
2. **映射函数**: MapReduce 使用映射函数(Mapper)来处理每个块的数据。
3. **归纳函数**: MapReduce 使用归纳函数(Reducer)来合并映射函数的输出。
**YARN**
YARN 是一个资源管理器,用于管理 Hadoop 的资源。它有以下几个重要的特点:
1. **资源分配**: YARN 分配资源给应用程序,以便它们能够执行任务。
2. **负载均衡**: YARN 负责将任务分配到多台机器上,以实现负载均衡。
**示例代码**
下面是一个简单的 Hadoop 程序,使用 MapReduce 来计算单词频率:
java// Mapper.javapublic class WordCountMapper extends Mapper
java// Driver.javapublic class WordCountDriver extends Configured implements Tool { @Override public int run(String[] args) throws Exception { Job job = Job.getInstance(getConf(), "word count"); job.setJarByClass(WordCountDriver.class); job.setMapperClass(WordCountMapper.class); job.setCombinerClass(WordCountReducer.class); job.setReducerClass(WordCountReducer.class); job.setOutputKeyClass(Text.class); job.setOutputValueClass(IntWritable.class); FileInputFormat.addInputPath(job, new Path(args[0])); FileOutputFormat.setOutputPath(job, new Path(args[1])); return job.waitForCompletion(true) ?0 :1; } public static void main(String[] args) throws Exception { int exitCode = ToolRunner.run(new WordCountDriver(), args); System.exit(exitCode); } }
**总结**
Hadoop 是一个开源的大数据处理框架,用于处理海量的结构化、半结构化和非结构化数据。它由 HDFS、MapReduce 和 YARN 组成,具有分布式、可扩展性、高吞吐量和低成本等特点。通过使用 MapReduce 来计算单词频率,我们可以看到 Hadoop 的基本工作原理和编程模型。