大数据分布式

一、数据导论

1.1.数据是什么?

数据:一种可以被鉴别的对客观事件进行记录的符号。简单来说就是:对人类的行为及产生的事件的一种记录。生活中无时无刻不在产生数据:

1.2.数据对于现实生活有什么影响?

对于京东而言,数据可以更好的了解客户

1.3.数据有什么价值?

  • 对数据的内容进行深入分析,可以更好的帮助了解事和物在现实世界的运行规律
  • 比如,购物的订单记录(数据)可以帮助平台更好的了解消费者,从而促进交易。

二、大数据诞生

2.1.大数据的发展

大数据的诞生和信息化以及互联网的发展是密切相关的。

⑴.早期的计算机(上世纪 70 年代之前)大多数是相互独立的,各自处理各自的数据

⑵.上世纪 70 年代后,逐步出现了基于 TCP/IP 协议的小规模的计算机互联互通。但多数是军事、科研等用途。

⑶.上世纪 90 年代左后,全球互联的互联网出现个人、企业均参与其中真正逐步的实现了全球互联。

⑷.在 2000 年后,互联网上的商行为剧增,现在知名的互联网公司谷歌 AWS 腾讯阿里等)是在这个年代开始步。在互联网参与多的前下,商业公司、科研单等,所能获得数据量剧增

2.2.大数据的诞生

2.2.1.为什么需要大数据技术?

剧增的数据量和羸弱的单机性,让多科技公司开始尝试数量来解决问题

剧增的数据量,和羸弱的单机性,让多科技公司开始尝试数量来解决问题在这个过程中,分布式处理技术诞生了。

2008年之前在当时较为”高端”的分布式技术基本上还处于大企业内部专用且不够成熟

2.2.2.Hadoop

Apache Hadoop 是一款开的分布式处理技术栈提供了:

  • 基于 Hadoop HDFS 的:分布式数据存储技术
  • 基于 Hadoop MapReduce 的:分布式数据计算技术
  • 基于 Hadoop YARN 的:分布式资源调度技术

Apache Hadoop 的出现有非常重大的意义:

  • 提供第一款企业级大数据分布式技术解
  • Hadoop 开始,大数据体系逐步建成,各类大数据技术不断出现

Apache Hadoop 源技术栈说明:

  • Apache HBase NoSQL 数据
  • Apache Kafka 分布式消息
  • Apache Hive 分布式 SQL 平台
  • Apache Spark 分布式内
  • Apache Flume 式数据传输工具
  • Apache Flink 计算平台

三、大数据概述

3.1.什么是大数据?

通过大数据的诞生可以发现:大数据的出现,本质上是为了解决海量数据处理的难题

大数据就是:使用分布式技术完成海量数据的处理,得到数据背后蕴含的价值。

  • 狭义上:大数据是一类技术栈,是一种用来处理海量数据的软件技术体系
  • 广义上:大数据是数字化时代、信息化时代的基础(技术)支撑,以数据为生活赋能

3.2.大数据的特征

大数据有 5 特征,称之为: 5V

从海量的高增长、多类别、低信息密度的数据中挖掘出高质量的结果

3.3.大数据的核心工作

整个大数据学习的技术围绕着这三点来进行的,

  • 分布式存储相关技术栈
  • 分布式计算相关技术栈
  • 量数据传输相关技术栈

四、大数据软件生态

4.1.大数据的核心工

  • 存储妥善保存海处理数据
  • 计算:完成海量数据的价值挖掘
  • 传输:协助各个节的数据传输

4.2.大数据软件生态

  • 存储 Apache Hadoop HDFS  Apache HBase  Apache Kudu 平台
  • 计算: Apache Hadoop MapReduce  Apache Spark  Apache Flink、 Apache Hive
  • 传输 Apache Kafka  Apache Pulsar  Apache Flume  Apache Sqoop

大数据体系内的软件种类是非常多的:

4.3.数据存储

Apache Hadoop - HDFS:Apache Hadoop 框架内的 HDFS 是大数据体系使用广泛的分布式存储技术

4.4.数据计算

Apache Hadoop - MapReduce:Apache Hadoop MapReduce 件是早一代的大数据分布式计算引擎对大数据的发展出了卓越贡献

Apache Hive:Apache Hive 是一款以 SQL 为要开发言的分布式计算框架其底层使用了 Hadoop MapReduce 技术Apache Hive 在大数据一线,被公司使用。

Apache Spark:Apache Spark 是目前全球范围最火热的分布式内计算引擎是大数据体系明星计算产品

Apache Flink:Apache Flink 同样也是一款明星级的大数据分布式内计算引擎别是在实时计算(计算)领域 Flink 据了大多数的内市

4.5.数据传输

Apache Kafka:Apache Kafka 是一款分布式的消息系,可以完成海量规模的数据传输工作。Apache Kafka 在大数据领域也明星产品

五、Apache Hadoop 概述

5.1.什么是 Hadoop?

Hadoop Apache 软件基金会下的顶级源项目,用以提供

  • 分布式数据存储
  • 分布式数据计算
  • 分布式资源调度

为一体的体解Apache Hadoop 型的分布式软件框架,可以部署 1 乃至成千服务器上协同工作。个人或企业可以 Hadoop 构建大规模服务器集群,完成海量数据的存储和计算。

5.2.为什么学习 Hadoop?

10 年来,大数据技术体系一词一 Hadoop 上等号的,提起大数据技术基就是在 Hadoop 些年的发展,多的新技术框架的出现,大数据技术体系来了丰富的生态,但是元老Hadoop 依旧非常重要。为什么学习 Hadoop 有如下关重要的原因

  • Hadoop 早的一大数据技术框架,在市高的大的用户群体。
  • Hadoop 在大数据体系内,技术难度相对较低,非常适合作为大数据学习的入技术栈。

所以,学习 Hadoop 不仅仅因其适合可以为大数据学习好的基

5.3.Hadoop 功能

通常意义上, Hadoop 是一个体,部还分为功能组件,分别是:

Hadoop 是一个集了:存储、计算、资源调度为一体的大数据分布式框架

5.4.Hadoop 发展历程

Hadoop 始人:道格·卡丁(Doug Cutting)

Hadoop 起源 Apache Lucene 子项目: Nutch

  • Nutch 计目标是构建一个大型的全网搜索引擎
  • 遇到瓶颈:如何解十亿存储索引问题

Google 三篇

  • The Google file system 谷歌分布式件系 GFS
  • MapReduce: Simplified Data Processing on Large Clusters 谷歌分布式计算框架 MapReduce
  • Bigtable: A Distributed Storage System for Structured Data 谷歌化数据存储

5.5.Hadoop 发行版本

Hadoop 发行版本( Hadoop 体系)

  • Apache 区发行方发行版本
  • :更新代快

业公司发行(商业公司二次发行)

  • 基于 Apache 协议,服务需
  • 容好
  • 版本更新

开源社区版本:https://hadoop.apache.org/

发行版本

  • CDH Cloudera's Distribution, including Apache Hadoop Cloudera 公司出品,目前使用多的商业版
  • HDP Hortonworks Data Platform ), Hortonworks 公司出品,目前被 Cloudera
  • 星环产商业版星环公司出品,在政企使用

[面试题]Hadoop由哪三大组件组成?

① HDFS :海量数据存储

② MapReduce :海量数据计算

③ YARN :资源调度

5.6.Hadoop特性(优点)

① 扩容能力(Scalable)

Hadoop是在可用的计算机集群间分配数据并完成计算任务的,这些集群可用方便的扩展到数以千计的节点中。

② 成本低(Economical)

Hadoop通过普通廉价的机器组成服务器集群来分发以及处理数据,以至于成本很低。

③ 高效率(Efficient)

通过并发数据,Hadoop可以在节点之间动态并行的移动数据,使得速度非常快。

④ 可靠性(Rellable)

能自动维护数据的多份复制,并且在任务失败后能自动地重新部署(redeploy)计算任务。所以Hadoop的按位存储和处理数据的能力值得人们信赖。

副本机制 => 1TB => HDFS有副本机制(默认3副本机制,一个数据会冗余3份)

Hadoop特点:① 扩容能力强 ② 成本低 ③ 高效 ④ 可靠性

有问题:Hadoop支持随机读写么?

答:不是,Hadoop支持随机读(并行读),串行写

5.7.Hadoop国内外应用

不管是国内还是国外,Hadoop最受青睐的行业是互联网领域,可以说互联网公司是Hadoop的主要使用力量。国外来说,Yahoo、Facebook、IBM等公司都大量使用Hadoop集群来支撑业务。比如:Yahoo的Hadoop应用在支持广告系统、用户行为分析、支持Web搜索等。Facebook主要使用Hadoop存储内部日志与多维数据,并以此作为报告、分析和机器学习的数据源。国内来说,BAT、美团、JD、滴滴、字节跳动领头的互联网公司是当仁不让的Hadoop使用者、维护者。比如Ali云梯(14年国内最大Hadoop集群)、百度的日志分析平台、推荐引擎系统等。

国内其他非互联网领域也有不少hadoop的应用,比如:

  • 金融行业: 个人征信分析
  • 证券行业: 投资模型分析
  • 交通行业: 车辆、路况监控分析
  • 电信行业: 用户上网行为分析

总之:Hadoop并不会跟某种具体的行业或者某个具体的业务挂钩,它只是一种用来做海量数据分析处理的工具。

5.8.Hadoop不同版本之间的区别

到目前为止,Hadoop软件一共经历过三个阶段,形成了3个大版本:

  • Hadoop1.0
  • Hadoop2.0
  •  Hadoop3.0版本

Hadoop1.X架构,只有两个组件:HDFS 和 MapReduce

  • HDFS用于完成海量数据的存储服务
  • MapReduce用于完成海量数据的计算服务

Hadoop1.X架构图:

☆ 解析1.X架构

HDFS中,一共有3个节点:

① namenode节点(1个节点),负责管理整个HDFS集群,负责元数据的存储(名称、大小、权限、修改时间以及每个文件存储在datanode中的位置),每个元数据大概占用150B

namenode属于内存型应用,所以在部署时,部署namenode节点的机器内存尽量要大一些

② datanode节点(多个节点),负责整个HDFS集群中具体数据的存储。

datanode属于硬盘型应用,所以在部署时,部署datanode节点的机器要求硬盘尽量要大一些

③ secondarynamenode(2nn):非namenode备份,主要负责辅助namenode完成元数据的管理

MapReduce中,一共有两个节点:

MapReduce主要负责任务的计算,来了一个任务,MapReduce要把其分散在多个机器上实现计算操作。

例:求1-10之间,所有数字的累加结果 => MR => 3台机器(1台计算1+2+3;2台计算4+5+6;3台计算7+8+9+10),最终把结果合并

① JobTracker :MapReduce组件的核心,负责接收客户端发送过来的计算任务,以及任务的分配;除此以外还要进行资源的分配与调度。

② TaskTracker:负责处理JobTracker发送过来的任务。

Hadoop1.X架构还有缺点:主要问题集中在JobTracker问题,因为在Hadoop1.X的设计过程中,JobTracker只能是单节点设计(整个集群就只有这一个节点),无法实现高可用,一旦JobTracker出现故障,则整个MapReduce集群将处于瘫痪状态。

☆ 解析2.X 与 3.X架构

Hadoop3.x 在性能上相对于 2.x版本,性能有所提升。Hadoop2.X和3.X都有三大组件:

  • HDFS
  • MapReduce
  • YARN(资源调度器)

很多小伙伴,看到2.X和3.X架构图会很好奇,为什么少了一个MapReduce。特别说明:并没有少,只是MapReduce不是以节点方式出现,而是以程序(代码)方式成为Hadoop的一部分。

Hadoop2.X以及Hadoop3.X版本中,MapReduce已经形成任务形式,作为Hadoop的一部分。相对于Hadoop1.X版本中,新增一个YARN组件(资源调度器)

HDFS没有变:namenode、datanode、secondarynamenode

MapReduce:已经以任务形式存在了

YARN资源调度器(新增):

  • resource manager:YARN核心(接收MapReduce等计算任务、资源调度)
  • node manager:负责处理resourcemanager以及appmaster分配过来的任务

[面试题] 解析Hadoop高可用架构设计

Hadoop高可用主要用于解决Hadoop集群架构中NameNode和ResourceManager单点故障问题。

  • 注意点1:在高可用架构中,HDFS集群是没有SecondaryNamenode节点的。
  • 注意点2:高可用就是解决NameNode和ResourceManager单点故障问题,所以有多份

实现原理:

① NameNode可以依靠zookeeper实现故障切换(自动)

② 由于NameNode中存在元数据,所以当activate出现故障时,不仅要进行节点的切换,还要把自身的元数据转移到standby备机

③ 在Hadoop高可用架构中,通过JournalNode集群实现元数据存储,平常,主namenode会定期上传元数据到JournalNode集群,当故障发生时,备namenode会自动下载元数据,从而保障元数据安全

posted @ 2019-10-28 11:50  酒剑仙*  阅读(569)  评论(0)    收藏  举报