一、Hadoop
我们生活在一个数据大爆炸的时代,数据飞快的增长,急需解决海量数据的存储和计算问题。Hadoop是一个适合海量数据的分布式存储和分布式计算平台。Hadoop是Apache Lucene创始人道格卡丁(Doug Cutting)创建的,Lucene是一个应用广泛的文本搜索系统库。Hadoop起源于开源网络搜索引擎Apache Nutch,后者本身也是Lucene项目的一部分。Hadoop这个词是生造出来的。这个名字是Doug Cutting的孩子给他的毛绒象玩具取的。Hadoop生态系统中的很多项目都是以动物的主题命名的。Hadoop是Apache软件基金会旗下的一个开源分布式计算平台,为用户提供了系统底层细节透明的分布式基础架构Hadoop是基于Java语言开发的,具有很好的跨平台特性,并且可以部署在廉价的计算机集群中。Hadoop的核心是分布式文件系统HDFS(Hadoop Distributed File System)和MapReduceHadoop被公认为行业大数据标准开源软件,在分布式环境下提供了海量数据的处理能力
1.1 Hadoop生态圈介绍
Hadoop入门介绍(图1)1.2 Hadoop1 vs Hadoop
Hadoop入门介绍(图2)二、Hadoop三大组件介绍Hadoop是一个统称,目前Hadoop主要包含三大组件:
(1) HDFS:是一个分布式存储框架,适合海量数据存储
(2) MapReduce:是一个分布式计算框架,适合海量数据计算
(3) YARN:是一个资源调度平台,负责给计算框架分配计算资源
2.1 HDFS架构分析负责数据的分布式存储。
(1) 主从结构:主节点,最多可以有2个:namenode;从节点,有多个:datanode。
(2) NameNode负责:接收用户操作请求,是用户操作的入口;维护文件系统的目录结构,称作命名空间。
(3) DataNode负责:存储数据
2.2 YARM架构分析
资源的调度和管理平台
(1) 主从结构
主节点,最多可以有2个:ResourceManager
从节点,有很多个: NodeManager
(2) ResourceManager负责
集群资源的分配与调度
MapReduce、Storm、Spark、Flink等应用,必须实现ApplicationMaster接口,才能被RM管理
(3) NodeManager负责:单节点资源的管理
2.3 MapReduce解析mapreduce是一个编程模型,它是分布式运行的,由两个阶段组成:Map和Reduce
Map阶段是一个独立的程序,有很多个节点同时运行,每个节点处理一部分数据。
Reduce阶段也是一个独立的程序,在这先把reduce理解为一个单独的聚合程序即可。
三、Hadoop特点3.1 特点
(1) 扩容能力(Scalable):能可靠(reliably)地存储和处理PB级别的数据。如果数据量更大,存储不下了,再增加节点就可以了。
(2) 成本低(Economical):可以通过普通机器组成的服务器集群来分发以及处理数据.这些服务器集群可达数千个节点。
(3) 高效率(Efficient):通过分发计算程序,hadoop可以在数据所在节点上(本地)并行地(parallel)处理他们,这使得处理非常的迅速
(4) 可靠性(Reliable):hadoop能够自动地维护数据的多份副本,并且在任务失败后能够自动地重新部署(redeploy)计算任务.
3.2 大数据4V特性规模性(Volume)大数据的特征首先就体现为“数量大”,存储单位从过去的GB到TB,直至PB、EB。随着信息技术的高速发展,数据开始爆发性增长。
多样性(Varity)广泛的数据来源,决定了大数据形式的多样性。大数据大体可分为三类:一是结构化数据(存储在关系型数据库中的数据)、二是非结构化的数据(视频、图片、音频)、三是半结构化数据(HTML文档、邮件、网页)。
高速性(Velocity)与以往的档案、广播、报纸等传统数据载体不同,大数据的交换和传播是通过互联网、云计算等方式实现的,远比传统媒介的信息交换和传播速度快捷。
价值性(Value)这也是大数据的核心特征。现实世界所产生的数据中,有价值的数据所占比例很小。相比于传统的小数据,大数据最大的价值在于通过从大量不相关的各种类型的数据中,挖掘出对未来趋势与模式预测分析有价值的数据,并通过机器学习方法、人工智能方法或数据挖掘方法深度分析,发现新规律和新知识,并运用于农业、金融、医疗等各个领域,从而最终达到改善社会治理、提高生产效率、推进科学研究的效果。
3.3 Hadoop数据管理Hadoop的数据管理,主要包括hadoop的分布式文件系统HDFS、分布式数据库HBase和数据仓库工具Hive的数据管理
四、Hadoop常见业务流与应用架构
4.1 Hadoop项目架构Hadoop入门介绍(图3)Hadoop的项目结构不断丰富发展,已经形成一个丰富的Hadoop生态系统
Hadoop入门介绍(图4)一个基本的Hadoop集群中的节点主要有:
(1)NameNode:负责协调集群中的数据存储
(2)DataNode:存储被拆分的数据块
(3)JobTracker:协调数据计算任务
(4)TaskTracker:负责执行由JobTracker指派的任务
(5)SecondaryNameNode:帮助NameNode收集文件系统运行的状态信息
常见组件和功能介绍:
组件
功能
HDFS
分布式文件系统
MapReduce
分布式并行编程模型
YARN
资源管理和调度器
Tez
运行在YARN之上的下一代Hadoop查询处理框架
Hive
Hadoop上的数据仓库
HBase
Hadoop上的非关系型的分布式数据库
Pig
一个基于Hadoop的大规模数据分析平台,提供类似SQL的查询语言Pig Latin
Sqoop
用于在Hadoop与传统数据库之间进行数据传递
Oozie
Hadoop上的工作流管理系统
Zookeeper
提供分布式协调一致性服务
Storm
流计算框架
Flume
一个高可用的,高可靠的,分布式的海量日志采集、聚合和传输的系统
Ambari
Hadoop快速部署工具,支持Apache Hadoop集群的供应、管理和监控
Kafka
一种高吞吐量的分布式发布订阅消息系统,可以处理消费者规模的网站中的所有动作流数据
Spark
类似于Hadoop MapReduce的通用并行框架
4.2 Hadoop业务处理流Hadoop入门介绍(图5)单机单线程瓶颈:
(1) 没有充分的利用CPU资源
(2) 速度慢
(3) 受到IO瓶颈---单机瓶颈
Hadoop入门介绍(图6)