文章目录
- 大数据的简介
- Hadoop框架
- Hadoop的优缺点
- Hadoop1.x和2.x的版本区别
- Hadoop架构
- Hadoop目录结构
- 正常工作的Hadoop集群中Hadoop都分别需要启动哪些进程,它们的作用分别是什么?
大数据的简介
- 大数据是指无法再一定时间范围内用常规软件工具进行捕捉,管理和处理的数据集合,同时大数据也是需要新的处理模式才能具有更强的决策力,洞察发现力和流程优化能力的海量以及多样化的信息资产。
- 大数据的特点:大量,高速,多样,真实以及低价值。
- 大量:指的是采集,存储和计算的数据量都非常大。
- 高速:指的是在大数据时代,数据的创建,存储,分析都被要求高速处理,比如电商网站的个性化推荐尽可能要求实时完成推荐,这也是大数据区别于传统数据挖掘的显著特征。
- 多样:数据的形式和来源多样化,包括结构化,半结构化和非结构化数据,具体表现为网络日志,音频,视频,图片,地理位置信息等等,多类型的数据对数据的处理能力提出了更高的要求。
- 真实:确保数据的真实性,才能保证数据分析的正确性。
- 低价值:数据价值密度相对较低,互联网催生了海量数据,但是价值密度较低,如何结合业务罗杰并通过强大的机器算法来挖掘数据价值,是大数据时代最需要解决的问题。
Hadoop框架
Hadoop是什么?
- Hadoop是一个由Apache基金会开发的一套分布式存储和计算平台。
- Hadoop主要解决海量数据的存储以及分析计算问题。
- 狭义上说Hadoop就是一个框架平台,广义上讲Hadoop代表大数据的一个技术生态圈,包括很多其他的软件框架。
hadoop 生态系统
- hadoop生态系统,不仅包含hadoop,还包括保证hadoop框架正常高效运行其他框架,比如zookeeper、Flume、Hbase、Hive、Sqoop等辅助框架。
- Hadoop(HDFS + MapReduce + Yarn)。
- Zookeeper:是一个开源的分布式应用程序协调服务,基于zookeeper可以实现同步服务,配置维护,命名服务
- Hive 基于Hadoop的一个数据仓库工具,可以将结构化的数据档映射为一张数据库表,并提供简单的sql 查询功能,可以将sql语句转换为MapReduce任务进行运行。
- Hbase:是一个海量列式非关系型数据库, 利用Hadoop HDFS作为其存储系统。
- Flume:一个高可用的,高可靠的,分布式的海量日志采集、聚合和传输数据采集工具。
- Sqoop 将一个关系型数据库中的数据导进到Hadoop的HDFS中,也可以将HDFS的数据导进到关系型数据库中。
- Kafka 高吞吐消息中间件等。
Hadoop的特点
- 扩容能力(Scalable):Hadoop是再计算机集群内分配数据并完成计算任务, 群可以方便的扩展到数以千计个节点。
- 低成本(Economical):Hapoop通过普通廉价的机器组成服务器集群来分发以及处理数据,成本很低。
- 高效率(Efficient):Hapood可以在节点之间动态并行的移动数据,速度很快。
- 可靠性(Rellable):能自动维护数据的多份复制,并且在任务失败后能自动的重新部署(redeploy)计算任务。
Hadoop的发行版本
- Hadoop发行版本非常多,有Cloudera发行版(CDH)、Hortonworks发行版、华为发行版、Intel发行版等,所有这些发行版均是基于Apache Hadoop衍生出来的。
- 目前Hadoop常用的三个版本分别是:
- Apache Hadoop版本(最原始的,所有发行版均基于这个版本进行改进)
- Cloudera版本(Cloudera’s Distribution Including Apache Hadoop,简称“CDH”)
- Hortonworks版本(Hortonworks Data Platform,简称“HDP”)。
Hadoop的各个发行版本的特点
- Apache Hadoop 原始版本(官网地址:http://hadoop.apache.org/)
- 拥有全世界的开源贡献,代码更新版本比较快,需要注意版本的升级,版本的维护,以及版本之间的兼容性。
- 软件收费版本ClouderaManager CDH版本 --生产环境使用(官网地址:https://www.cloudera.com/)。
- Cloudera是是美国一家大数据公司在Apache开源Hadoop的版本上,通过自己公司内部的各种补丁,实现版本之间的稳定运行,大数据生态圈的各个版本的软件都提供了对应的版本,解决了版本的升级困难,版本兼容性等各种问题。
- 免费开源版本HortonWorks HDP版本–生产环境使用(官网地址:https://hortonworks.com/)。
- hortonworks主要是雅虎主导Hadoop开发的副总裁,带领二十几个核心成员成立Hortonworks,核心产品软件HDP(ambari),
- HDF免费开源,并且提供一整套的web管理界面,供我们可以通过web界面管理我们的集群状态.
- web管理界面软件HDF网址(http://ambari.apache.org/)
Apache Hadoop版本更迭
- 0.x 系列版本:Hadoop当中最早的一个开源版本,在此基础上演变而来的1.x以及2.x的版本
- 1.x 版本系列:Hadoop版本当中的第二代开源版本,主要修复0.x版本的一些bug等
- 2.x 版本系列:架构产生重大变化,引入了yarn平台等许多新特性
- 3.x 版本系列:EC技术、YARN的时间轴服务等新特性
Hadoop的优缺点
Hadoop的优点
- 高可靠性:Hadoop底层维护多个数据副本,即使Haadoop某个计算元素或存储出现故障,也不会导致数据的丢失。
- 高扩展性:Hadoop通过可用的计算机集群分配数据,完成存储和计算任务,这些集群可以方便地扩展到数以千计的节点中。
- 高效性:Hadoop能够在节点之间进行动态地移动数据,并保证各个节点的动态平衡,处理速度非常快
- 高容错性:Hadoop能够自动保存数据的多个副本,并且能够自动将失败的任务重新分配
Hadoop的缺点
- Hadoop不适用于低延迟数据访问。
- Hadoop不能高效存储大量小文件。
- Hadoop不支持多用户写入并任意修改文件。
Hadoop1.x和2.x的版本区别
- Hadoop1.x中,MapReduce同时处理业务逻辑运算和资源的调度,耦合性较大。
- Hadoop2.x中,增加了Yarn,将业务逻辑运算和资源调度分开了,Yarn只负责资源的调度,MapReduce只负责运算。
Hadoop架构
- Hadoop=HDFS(分布式文件系统)+MapReduce(分布式计算框架)+Yarn(资源协调框架)+Common模块。
Hadoop之HDFS概述
- HDFS即(Hadoop Distribute File System )分布式文件系统。
- HDFS是一个高可靠、高吞吐量的分布式文件系统。比如:100T数据存储,采用“分而治之”的思想,进行数据切割,100T数据拆分为10G一个数据块由一个电脑节点存储这个数据块
- HDFS主要用于数据切割,制作副本,分散存储。
HDFS核心架构
- NameNode(nn):存储文件的元数据,比如文件名、文件目录结构、文件属性(生成时间、副本数、文件权限),以及每个文件的块列表和块所在的DataNode等。
- DataNode(dn):在本地文件系统存储文件块数据,以及块数据的校验.
- SecondaryNameNode(2nn):辅助NameNode更好的工作,用来监控HDFS状态的辅助后台程序,每隔一段时间获取HDFS元数据快照。
- NN,2NN,DN这些既是HDFS角色名称,也是进程名称,代指电脑节点名称
Hadoop之MapReduce
- Hadoop MapReduce即(分布式计算框架)。
- MapReduce是分布式的离线并行计算框架,用于拆解任务,分散处理,汇整结果。
- MapReduce计算过程分为两个阶段:Map阶段 和 Reduce阶段
- Map阶段就是“分”的阶段,并行处理输入数据;
- Reduce阶段就是“合”的阶段,对Map阶段结果进行汇总;
Hadoop之Yarn
- Hadoop Yarn即(资源协调框架):作业调度与集群资源管理的框架。
- Yarn主要用于计算资源协调。
Yarn核心架构
- ResourceManager(rm)主要作用如下:
- 处理客户端请求
- 启动/监控ApplicationMaster、
- 监控NodeManager
- 资源分配与调度;
- NodeManager(nm)主要作用如下:
- 单个节点上的资源管理
- 处理来自ResourceManager的命令
- 处理来自ApplicationMaster的命令;
- ApplicationMaster(am)主要作用如下:
- 数据切分.
- 为应用程序申请资源,并分配给内部任务.
- 任务监控与容错。
- Container主要作用如下:
- 对任务运行环境的抽象,封装了CPU、内存等多维资源以及环境变量、启动命令等任务运行相关的信息。
- ResourceManager是老大,NodeManager是小弟,ApplicationMaster是计算任务专员。
- Hadoop Common:支持其他模块的工具模块(Configuration、RPC、序列化机制、日志操作)
Hadoop目录结构
- bin目录:存放对Hadoop相关服务(HDFS,YARN)进行操作的脚本
- etc目录:Hadoop的配置文件目录,存放Hadoop的配置文件
- lib目录:存放Hadoop的本地库(对数据进行压缩解压缩功能)
- sbin目录:存放启动或停止Hadoop相关服务的脚本
- share目录:存放Hadoop的依赖jar包、文档、和官方案例
正常工作的Hadoop集群中Hadoop都分别需要启动哪些进程,它们的作用分别是什么?
- NameNode:它是hadoop中的主服务器,管理文件系统名称空间和对集群中存储的文件的访问,保存有metadate。
- SecondaryNameNode:它不是namenode的冗余守护进程,而是提供周期检查点和清理任务,帮助NN合并editslog,减少NN启动时间
- DataNode:它负责管理连接到节点的存储(一个集群中可以有多个节点)。每个存储数据的节点运行一个datanode守护进程
- ResourceManager(JobTracker):JobTracker负责调度DataNode上的工作。每个DataNode有一个TaskTracker,它们执行实际工作。
- NodeManager:(TaskTracker)执行任务。
- DFSZKFailoverController:高可用时它负责监控NN的状态,并及时的把状态信息写入ZK。它通过一个独立线程周期性的调用NN上的一个特定接口来获取NN的健康状态。FC也有选择谁作为ActiveNN的权利,因为最多只有两个节点,目前选择策略还比较简单(先到先得,轮换)。
- JournalNode:高可用情况下存放namenode的editlog文件。