Hadoop大数据相关概念

olivee 4年前 ⋅ 1326 阅读

1. 大数据概念

  • 是指无法在一定时间范围内 用常规软件工具进行捕捉管理处理的数据集合,是需要新处理模式才能具有更强的决策力、洞察发现力和流程优化能力的海量、高增长率和多样化的信息资产

  • 主要解决海量数据的存储和海量数据的分析计算问题

1.1 特点:

  1. 大量
  2. 高速
  3. 多样: 除了结构化数据,还包括日志、音频、视频、图片、地理位置等数据
  4. 低价值密度★★

1.2 应用场景

  1. 仓储物流:科学库存布局、拣货路径优化、智能单量预测、仓储作业人效提升等
  2. 零售: 用户消费习惯分析
  3. 旅游: 个性推荐、人流分析、人脸识别、口碑监测等
  4. 商品广告推荐

2 Hadoop

Hadoop可以指Hadoop软件本身,也可以指Hadoop生态圈(即Hadoop和它的一系列衍生品)。

2.1 初衷

hadoop的初衷是采用大量的廉价机器,组成一个集群!完成大数据的存储和计算

2.2 主要解决

海量数据的存储和海量数据的分析计算问题。

2.3 发展历史

2003-2004年,Google公布了部分GFS和MapReduce思想的细节,受此启发的Doug Cutting等人用2年的业余时间实现了DFS和MapReduce机制,使Nutch性能飙升。然后Yahoo招安Doug Gutting及其项目。

2005年,Hadoop作为Lucene的子项目Nutch的一部分正式引入Apache基金会。

2006年2月被分离出来,成为一套完整独立的软件,起名为Hadoop

Hadoop名字不是一个缩写,而是一个生造出来的词。是Hadoop之父Doug Cutting儿子毛绒玩具象命名的。

Hadoop的成长过程

  • Lucene–>Nutch—>Hadoop

总结起来,Hadoop起源于Google的三大论文

  • GFS:Google的分布式文件系统Google File System

  • MapReduce:Google的MapReduce开源分布式并行计算框架

  • BigTable:一个大型的分布式数据库

演变关系

  • GFS—->HDFS

  • Google MapReduce—->Hadoop MapReduce

  • BigTable—->HBase

2.4 hadoop的历史版本介绍

0.x系列版本:hadoop当中最早的一个开源版本,在此基础上演变而来的1.x以及2.x的版本

1.x版本系列:hadoop版本当中的第二代开源版本,主要修复0.x版本的一些bug等

2.x版本系列:架构产生重大变化,引入了yarn平台等许多新特性

2.5 hadoop三大公司发型版本介绍

1.免费开源版本apache:

  • http://hadoop.apache.org/

  • 优点:拥有全世界的开源贡献者,代码更新迭代版本比较快,

  • 缺点:版本的升级,版本的维护,版本的兼容性,版本的补丁都可能考虑不太周到,学习可以用,实际生产工作环境尽量不要使用

  • apache所有软件的下载地址(包括各种历史版本):http://archive.apache.org/dist/

2.免费开源版本hortonWorks:

  • https://hortonworks.com/

  • hortonworks主要是雅虎主导Hadoop开发的副总裁,带领二十几个核心成员成立Hortonworks,核心产品软件HDP(ambari),HDF免费开源,并且提供一整套的web管理界面,供我们可以通过web界面管理我们的集群状态,web管理界面软件HDF网址(http://ambari.apache.org/

3.软件收费版本ClouderaManager:

  • https://www.cloudera.com/
  • cloudera主要是美国一家大数据公司在apache开源hadoop的版本上,通过自己公司内部的各种补丁,实现版本之间的稳定运行,大数据生态圈的各个版本的软件都提供了对应的版本,解决了版本的升级困难,版本兼容性等各种问题,生产环境强烈推荐使用

2.6 优势

  1. 高可靠性:Hadoop底层维护多个数据副本,所以即使Hadoop某个计算元素或存储出现故障,也不会导致数据的丢失
  2. 高扩展性:在集群间分配任务数据,可以方便的扩展数以千计的节点
  3. 高效性:在MapReduce的思想下,Hadoop是并行工作的,以加快任务处理速度。
  4. 高容错性:能够自动将失败的任务自动分配。

2.7 组成

zucheng.png

1.x和2.x的区别是将资源调度和管理进行分离!由同一的资源调度平台YARN进行大数据计算资源的调度!

  • 提升了Hadoop的通用性!Hadoop搭建的集群中的计算资源,不仅可以运行Hadoop中的MR程序!
  • 也可以运行其他计算框架的程序!
  • 在hadoop不久之后,由于MR的低效性,出现了许多更为高效的计算框架!例如: Tez,Storm,Spark,Flink

2.8 2.x版本hadoop的组成

  • HDFS(框架):负责大数据的存储

  • YARN(框架): 负责大数据的资源调度

  • MR(编程模型): 使用Hadoop制定的编程要求,编写程序,完成大数据的计算!

2.9 完成大数据的计算

①写程序,程序需要复合计算框架的要求!

  • java---->main----->运行

  • MapReduce(编程模型)----->Map--Reducer

②运行程序,申请计算资源(cpu+内存,磁盘IO,网络IO)

  • java----->JVM------>OS----->申请计算资源
  • 1.0: MapReduce(编程模型)---->JobTracker----->JVM----->申请计算资源
  • 2.0: MapReduce(编程模型)---->jar------>运行时,将jar包中的任务,提交给YARN,和YARN进行通信
    • 由YARN中的组件-----JVM------>申请计算资源

2.10 HDFS: 负责大数据的存储

hdfs.png

必须进程

  1. Namenode(1个):
  • 负责文件的名称等元数据(属性信息)存储!
  • 元数据就包括:文件名,大小,文件切分了多少块(block),创建和修改时间等!
  • 职责:
    • 接受客户端的请求!

    • 接受DN的请求!

    • 向DN分配任务!

  1. Datanode(N个): 负责文件中数据的存储!
  • 职责:
    • 负责接受NM分配的任务

    • 负责数据块(block)的管理(读,写)

可选进程

  1. SecondaryNamenode(N个):
  • 负责辅助NameNode工作!

2.11 MapReduce

MapReduce(是一个编程规范): 程序中有Mapper(简单处理)和Reducer(合并)

遵循MapReduce的编程规范,编写的程序,打包后,称为一个Job(任务)!

Job需要提交到YARN上,向YARN申请计算资源,运行Job中的Task(进程)!

Job会先创建一个进程MRAppMaster(mapreduce 应用管理者),由MRAppMaster向YARN申请资源!

MRAppMaster负责监控Job中各个Task运行情况,进行容错管理!

2.12 YARN

YARN负责集群中所有计算资源的管理和调度!

yarn.png

常见进程:

ResourceManager(1个): 负责整个集群所有资源的管理!

  • 职责:
    • 负责接受客户端的提交Job的请求!

    • 负责向NM分配任务!

    • 负责接受NM上报的信息!

NodeManager(N个): 负责单台计算机所有资源的管理!

  • 职责:
    • 负责和RM进行通信,上报本机中的可用资源!

    • 负责领取RM分配的任务!

    • 负责为Job中的每个Task分配计算资源!

2.13 概念:Container(容器)

NodeManager为Job的某个Task分配了2个CPU和2G内存的计算资源!

为了防止当前Task在使用这些资源期间,被其他的task抢占资源!

将计算资源,封装到一个Container中,在Container中的资源,会被暂时隔离!

无法被其他进程所抢占!

当前Task运行结束后,当前Container中的资源会被释放!允许其他task来使用!

3. 大数据生态

dsjst.png

  1. Sqoop:Sqoop是一款开源的工具,主要用于在Hadoop、Hive与传统的数据库(MySql)间进行数据的传递,可以将一个关系型数据库(例如 :MySQL,Oracle 等. 中的数据导进到Hadoop的HDFS中,也可以将HDFS的数据导进到关系型数据库中。
  2. Flume:Flume是Cloudera提供的一个高可用的,高可靠的,分布式的海量日志采集、聚合和传输的系统,Flume支持在日志系统中定制各类数据发送方,用于收集数据;同时,Flume提供对数据进行简单处理,并写到各种数据接受方(可定制. 的能力。
  3. Kafka:Kafka是一种高吞吐量的分布式发布订阅消息系统,有如下特性:
  • 1). 通过O(1)的磁盘数据结构提供消息的持久化,这种结构对于即使数以TB的消息存储也能够保持长时间的稳定性能。
  • 2). 高吞吐量:即使是非常普通的硬件Kafka也可以支持每秒数百万的消息。
  • 3). 支持通过Kafka服务器和消费机集群来分区消息。
  • 4). 支持Hadoop并行数据加载。
  1. Storm:Storm用于“连续计算”,对数据流做连续查询,在计算时就将结果以流的形式输出给用户。
  2. Spark:Spark是当前最流行的开源大数据内存计算框架。可以基于Hadoop上存储的大数据进行计算。
  3. Oozie:Oozie是一个管理Hdoop作业(job. 的工作流程调度管理系统。
  4. Hbase:HBase是一个分布式的、面向列的开源数据库。HBase不同于一般的关系数据库,它是一个适合于非结构化数据存储的数据库。
  5. Hive:Hive是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并提供简单的SQL查询功能,可以将SQL语句转换为MapReduce任务进行运行。 其优点是学习成本低,可以通过类SQL语句快速实现简单的MapReduce统计,不必开发专门的MapReduce应用,十分适合数据仓库的统计分析。
  6. R语言:R是用于统计分析、绘图的语言和操作环境。R是属于GNU系统的一个自由、免费、源代码开放的软件,它是一个用于统计计算和统计制图的优秀工具。
  7. Mahout:Apache Mahout是个可扩展的机器学习和数据挖掘库。
  8. ZooKeeper:Zookeeper是Google的Chubby一个开源的实现。它是一个针对大型分布式系统的可靠协调系统,提供的功能包括:配置维护、名字服务、 分布式同步、组服务等。ZooKeeper的目标就是封装好复杂易出错的关键服务,将简单易用的接口和性能高效、功能稳定的系统提供给用户。

4. 推荐系统架构

tjxtjg.png