Hadoop的产生
HADOOP最早起源于Nutch。
Nutch的设计目标是构建一个大型的全网搜索引擎,包括网页抓取、索引、查询等功能,
但随着抓取网页数量的增加,遇到了严重的可扩展性问题——如何解决数十亿网页的存储和索引问题。
2003年谷歌发表了三篇论文:
GFS——Google FileSystem 描述数据存储的思想,解决了海量数据如何存储的问题。
MapReduce——描述分布式运算系统,解决了海量数据如何计算的问题。
bigtable——快速查询的google的分布式数据库,解决了海量数据如何快速查询的问题。
Doug Cutting将Google 的三篇文章用Java重新实现。
GFS——HDFS(Hadoop Distributed File System)Hadoop的分布式文件存储系统,用于解决海量数据存储的问题。
MapReduce——MapReduce,解决海量数据分布式计算问题。
bigtable——Hbase,解决海量数据的快速查询问题。
Hadoop是什么?
Apache™Hadoop®项目是一个提供高可靠,可扩展(横向)的分布式计算的开源软件平台。
Apache Hadoop软件库是一个框架,允许使用简单的编程模型跨计算机集群分布式处理大型数据集。它旨在从单个服务器扩展到数千台计算机,每台计算机都提供本地计算和存储。Hadoop本身不是依靠硬件来提供高可用性,而是设计用于检测和处理应用程序层的故障,从而在计算机集群之上提供高可用性服务,每个计算机都可能容易出现故障。
Hadoop提供的功能:利用服务器集群,根据用户自定义业逻辑对海量数进行分布式处理。
Hadoop的核心组件:
1)Hadoop Common:支持其他Hadoop模块的常用工具。包括Hadoop常用的工具类,由原来的Hadoopcore部分更名而来。主要包括系统配置工具Configuration、远程过程调用RPC、序列化机制和Hadoop抽象文件系统FileSystem等。它们为,在通用硬件上搭建云计算环境提供基本的服务,并为运行在该平台上的软件开发提供了所需的API。
2) Hadoop分布式文件系统(HDFS™):一种分布式文件系统,可提供对应用程序数据的高吞吐量访问。
3) Hadoop YARN:作业调度和集群资源管理的框架。
4) Hadoop MapReduce:基于YARN的大型数据集并行处理系统。是一种计算模型,用以进行大数据量的计算。Hadoop的MapReduce实现,和Common、HDFS一起,构成了Hadoop发展初期的三个组件。MapReduce将应用划分为Map和Reduce两个步骤,其中Map对数据集上的独立元素进行指定的操作,生成键-值对形式中间结果。Reduce则对中间结果中相同“键”的所有“值”进行统计,以得到最终结果。MapReduce这样的功能划分,非常适合在大量计算机组成的分布式并行环境里进行数据处理。
Hadoop的核心组件
重点组件:
HDFS:Hadoop的分布式文件存储系统。
MapReduce:Hadoop的分布式程序运算框架,也可以叫做一种编程模型。
Hive:基于Hadoop的类SQL数据仓库工具
Hbase:基于Hadoop的列式分布式NoSQL数据库
ZooKeeper:分布式协调服务组件
Mahout:基于MapReduce/Flink/Spark等分布式运算框架的机器学习算法库
Oozie/Azkaban:工作流调度引擎
Sqoop:数据迁入迁出工具
Flume:日志采集工具
Hadoop的应用
Hadoop用于网站点击流日志数据挖掘
Hadoop用于用户画像
Hadoop应用于数据服务基础平台建设
总结:hadoop并不会跟某个具体的行业或者某个具体的业务挂钩,它只是一种用来做海量数据分析处理的工具。