初识Hadoop
Hadoop概述
Hadoop起源于Apache Nutch项目,始于2002年,是Apache Lucene的子项目之一。2004年,Google在“操作系统设计与实现”(Operating System Design and Implementation,OSDI)会议上公开发表了题为MapReduce:Simplified Data Processing on Large Clusters(Mapreduce:简化大规模集群上的数据处理)的论文之后,受到启发的Doug Cutting等人开始尝试实现MapReduce计算框架,并将它与NDFS(Nutch Distributed File System)结合,用以支持Nutch引擎的主要算法。由于NDFS和MapReduce在Nutch引擎中有着良好的应用,所以它们于2006年2月被分离出来,成为一套完整而独立的软件,并被命名为Hadoop。
Hadoop是Apache社区的顶级项目,其官方网址是:https://hadoop.apache.org/
Apache Hadoop 是一个可靠的(Reliable),可扩展的(Scalable),有分布式计算(Distribution computing)特征的开源的软件。它是一个可以使用简单的编程模型,对跨计算机集群的大数据集进行分布式处理的一个框架。它被设计成从单个服务器扩展到数千台机器,每台机器都提供本地计算和存储。与依赖硬件来实现高可用性不同,库本身被设计探测和处理在应用层的故障,因为在计算机集群上提供高可用性服务,其中每一个服务都有可能会出现故障。
包含的模块
该项目包含以下几个模块:
- Hadoop Common:支持其他Hadoop模块的通用工具。
- Hadoop Distributed File System (HDFS):提供应用程序数据的高吞吐量访问的分布式文件系统。
- Hadoop YARN:集群资源管理和任务调度的框架。
- Hadoop MapReduce:一个基于YARN的大数据集并行处理系统。
- Hadoop Ozone:Hadoop的对象存储
总结如下:
分布式文件系统: HDFS,实现将文件分布式存储在很多的服务器上。
分布式计算框架:MapReduce,实现在很多机器上分布式并行计算
分布式资源调度框架:YARN,实现集群资源管理以及作业的调度。
Hadoop核心组件之分布式文件系统HDFS
其源自于Google的GFS论文,论文发表于2003年10月。HDFS是GFS的克隆版,它具有扩展性、容错性和海量数据存储的特点。
它将文件切分成指定大小的数据块并以多副本的方式存储在多个机器上。数据的切分、多副本、容错等操作对用户是透明的。
Hadoop核心组件之分布式计算框架MapReduce
其源自于Google的MapReduce论文,论文发表于2004年12月,MapReduce是Google MapReduce的克隆版。MapReduce的特点:扩展性、容错性、海量数据离线处理。
下图就是MapReduce对于词频统计的处理流程:
Hadoop核心组件之资源调度系统YARN
YARN:Yet Another Resource Negotiate,负责整个集群资源的管理和调度。
YARN特点:扩展性、容错性、多框架资源统一调度
Hadoop优势
- 高可靠性
- 数据存储:数据块多副本
- 数据计算:重新调度作业计算
- 扩展性
- 存储/计算资源不够时,可以横向的线性扩展机器
- 一个集群中可以包含数以千计的节点
- 其他优势:
- 存储在廉价机器上,降低成本
- 成熟的生态圈
狭义Hadoop VS 广义Hadoop
狭义的Hadoop:是一个适合大数据分布式存储(HDFS)分布式计算(MapReduce)和资源调度(YARN)的平台;
广义的Hadoop:指的是Hadoop生态系统,Hadoop生态系统是一个很庞大的概念,Hadoop是其中最重要最基础的一个部分;生态系统中的每一子系统只解决某一个特定的问题域,不搞统一型的一个全能系统,而是小而精的多个小系统;
Hadoop生态系统
Hadoop生态系统的特点:
- 开源、社区活跃
- 囊括了大数据处理的方方面面
- 成熟的生态圈
Hadoop常用发行版及选型
Apache
优点: 纯开源的
缺点: 不同版本,不同框架之间的整合 有可能会出现jar包冲突
CDH
https://www.cloudera.com/ 优点:cm(cloudera manager) 通过页面一键安装各种框架,方便升级
缺点:cm不开源、与社区版本有些许出入
Hortonworks: HDP
优点:原装Hadoop、纯开源、支持tez
缺点:企业级安全不开源