Hadoop组成简介

Hadoop是Apache的一个项目(它是包含了很多子项目的集合,见下图),它是一个实现了MapReduce计算模型的可以运用于大型集群并行计算的分布式并行计算编程框架,当然分布式计算离不开分布式存储,Hadoop框架包含了分布式存储系统HDFS(Hadoop Distributed File System),其存储和数据结构很类似Google的GFS.
HBase是Hadoop的其中一个子项目,它是基于Hadoop HDFS分布存储系统的一个Google BigTable开源实现。它在存储数据结构上并非关系型,而是疏松分布式的,持久并按多维排序并索引的map型,
    Google BigTable的paper: 
http://labs.google.com/papers/bigtable-osdi06.pdf



 

目前,整个Hadoop家族由以下几个子项目组成:

Hadoop Common
Hadoop体系最底层的一个模块,为Hadoop各子项目提供各种工具,如:配置文件和日志操作等。

Avro
Avro是doug cutting主持的RPC项目,有点类似Google的protobuf和Facebook的thrift。avro用来做以后hadoop的RPC,使hadoop的RPC模块通信速度更快、数据结构更紧凑。

Chukwa
Chukwa是基于Hadoop的大集群监控系统,由yahoo贡献。

HBase
基于Hadoop Distributed File System,是一个开源的,基于列存储模型的分布式数据库。

HDFS
分布式文件系统

Hive
hive类似CloudBase,也是基于hadoop分布式计算平台上的提供data warehouse的sql功能的一套软件。使得存储在hadoop里面的海量数据的汇总,即席查询简单化。hive提供了一套QL的查询语言,以sql为基础,使用起来很方便。

MapReduce
实现了MapReduce编程框架

Pig
Pig是SQL-like语言,是在MapReduce上构建的一种高级查询语言,把一些运算编译进MapReduce模型的Map和Reduce中,并且用户可以定义自己的功能。Yahoo网格运算部门开发的又一个克隆Google的项目Sawzall。

ZooKeeper
Zookeeper是Google的Chubby一个开源的实现。它是一个针对大型分布式系统的可靠协调系统,提供的功能包括:配置维护、名字服务、分布式同步、组服务等。ZooKeeper的目标就是封装好复杂易出错的关键服务,将简单易用的接口和性能高效、功能稳定的系统提供给用户。

### Hadoop 简介 Hadoop 是一个开源的分布式计算框架,主要用于处理和存储大量数据[^3]。它由 Apache 软件基金会开发,基于 GoogleMapReduceGoogle 文件系统 (GFS) 的理念设计。Hadoop 提供了一种可扩展、容错的方式来处理大规模数据集,使得用户能够在廉价的硬件上进行分布式计算。 ### Hadoop 的特性 1. **高容错性**:Hadoop 通过分布式文件系统(如 HDFS)提供数据冗余功能,能够自动处理节点故障并确保数据完整性。 2. **高扩展性**:Hadoop 支持水平扩展,可以通过增加更多的节点来提升系统的处理能力和存储容量。 3. **成本效益**:Hadoop 运行在普通的商用硬件上,降低了构建大规模数据处理系统的成本。 4. **高效的数据处理**:HadoopMapReduce 编程模型可以将任务分解为多个小任务,并行运行在集群的不同节点上,从而显著提高数据处理效率。 ### Hadoop 的应用场景 Hadoop 广泛应用于需要处理大规模数据的场景中,包括但不限于: - **大数据分析**:用于日志分析、用户行为分析等。 - **搜索引擎**:支持搜索引擎索引的生成和更新。 - **推荐系统**:通过对海量用户数据的分析,生成个性化的推荐结果。 - **金融行业**:用于风险评估、欺诈检测等。 - **生物信息学**:处理基因组数据和其他复杂的生物数据集。 ### Hadoop组成结构 Hadoop 主要由以下几个核心组件组成: #### 1. **HDFS (Hadoop Distributed File System)** HDFS 是 Hadoop 的分布式文件系统,用于存储大规模数据[^3]。它的设计目标是实现高吞吐量的数据访问,适合大规模数据集的应用程序。HDFS 将文件分割成块(默认大小为 128MB),并将这些块分布到集群中的不同节点上存储。每个块都会被复制多份以确保数据的可靠性和容错性。 #### 2. **MapReduce** MapReduceHadoop 的分布式计算框架,用于处理大规模数据集。它通过两个主要阶段(Map 和 Reduce)将复杂的计算任务分解为简单的子任务,并行运行在集群的不同节点上。Map 阶段负责将输入数据转换为键值对,而 Reduce 阶段则对这些键值对进行汇总和整理。 #### 3. **YARN (Yet Another Resource Negotiator)** YARN 是 Hadoop 的资源管理框架,负责管理和调度集群中的计算资源。它将资源管理和作业调度分离,允许不同的计算框架(如 MapReduce、Spark 等)共享同一个集群。YARN 的主要组件包括 ResourceManager 和 NodeManager,分别负责全局资源管理和单个节点的资源管理。 ### 示例代码:Hadoop MapReduce 程序 以下是一个简单的 Hadoop MapReduce 程序示例,用于统计文本中单词出现的次数: ```java // Mapper 类 public class WordCountMapper extends Mapper<LongWritable, Text, Text, IntWritable> { private final static IntWritable one = new IntWritable(1); private Text word = new Text(); @Override protected void map(LongWritable key, Text value, Context context) throws IOException, InterruptedException { String line = value.toString(); String[] words = line.split("\\s+"); for (String w : words) { word.set(w); context.write(word, one); } } } // Reducer 类 public class WordCountReducer extends Reducer<Text, IntWritable, Text, IntWritable> { @Override protected void reduce(Text key, Iterable<IntWritable> values, Context context) throws IOException, InterruptedException { int sum = 0; for (IntWritable val : values) { sum += val.get(); } context.write(key, new IntWritable(sum)); } } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值