大数据入门(二) - 初探Hadoop

相关源码

  • 官网首页

1 简介

  • 名字的由来
    Hadoop这个名字不是一个缩写,而是一个虚构的名字。该项目的创建者,Doug Cutting解释Hadoop的得名 :“这个名字是我孩子给一个棕黄色的大象玩具命名的。我的命名标准就是简短,容易发音和拼写,没有太多的意义,并且不会被用于别处。小孩子恰恰是这方面的高手。”

  • 介绍

2 应用

  • 搭建大型数据仓库,PB级数据的存储、处理、分析、统计等业务
  • 搜索引擎,从海量的数据中筛选出用户所需要的数据
  • 日志分析,是目前大数据技术最主流的应用场景,因为数据挖掘、分析大部分都是基于日志的
  • 商业智能,我们都知道数据是人工智能的燃料,通过海量的数据能够训练出比较好的机器学习模型
  • 数据挖掘,从海量的数据中挖掘出有价值的数据,为公司提供效益,实现数据变现,就像是挖矿一样

3 Hadoop 框架

包含了以下这些模块:

  • Hadoop Common:这是一个通用的模块,是包含着其他Hadoop模块的一个通用模块
  • Hadoop Distributed File System (HDFS):这是一个分布式文件系统,该模块提供一个对应用程序数据的高通量访问的分布式文件系统,简称HDFS
  • Hadoop YARN:这是一个用于作业调度与集群资源管理的框架
  • Hadoop MapReduce:基于YARN的大数据量并行处理系统,也就是实现分布式计算的框架

3.1 Hadoop核心组件之 HDFS

HDFS是Hadoop核心组件之一,它用于实现分布式的文件系统.
HDFS源自于Google的GFS论文,论文发表于2003年10月.
由于GFS并没有开源,只是发表了论文,所以才发展出了HDFS,HDFS是GFS的克隆版。

HDFS 的特点

  • 扩展性,可以直接水平扩展,机器不够用了,直接增加机器即可
  • 容错性,以多副本的方式存储在多个节点上
  • 海量数据存储
  • 将文件切分成指定大小的数据块并以多副本的存储在多个机器上,默认的数据块大小是128M
  • 数据切分、多副本、容错等操作对用户是透明的,用户无需关注底层的数据切分

图解

  • Block Replication表是数据块副本存储的格式信息
  • Datanodes 示意数据节点中存储的一个个数据块

我们以 /users/sameerp/data/part-0, r:2, {1,3},...为例来简单说明

  • /users/sameerp/data/part-0 表示的是文件名
  • r:2 表示每个数据块有多少个副本,这里的数字为2,就表示每个数据块都有2个副本
  • {1,3} 表示数据块的编号

结合起来就是 /users/sameerp/data/part-0 这个文件有两个数据块,编号分别是 13 ,而这两个数据块各自都有 2 个副本.

我们从上图中的Datanodes示意的数据节点里,也可以看到1和3都分别有两份,存储在了不同的数据节点上

3.2 Hadoop核心组件之 YARN

YARN是Hadoop核心组件之一,它用于实现资源管理、调度系统.
YARN是Yet Another Resource Negotiator的首字母缩写,意为 “另一种资源协调者” 。YARN负责整个集群资源的管理和调度,例如有一个作业上来,那么要给这个作业分配多少cpu以及内存就是由YARN来完成。

YARN特点

  • 扩展性,如果机器资源不够用,则可以以增加机器的方式来提升资源的分配率
  • 容错性,作业在执行过程当中,如果出现问题,YARN就会对这个作业进行一定次数的重设
  • 多框架资源统一调度,这是Hadoop2.x才有的特性,也是非常重要的特性

    从上图中可以看到,YARN可以统一调度多种不同的框架,这样不管对运维人员还是开发人员来说,都减轻了不少负担.

3.3 MapReduce

MapReduce是Hadoop核心组件之一,它用于实现分布式并行计算。Hadoop中的MapReduce源自于Google的MapReduce论文,论文发表于2004年12月。MapReduce其实就是Google MapReduce的克隆版,是Google MapReduce的开源实现。

MapReduce特点:

  • 扩展性,如果机器的计算能力不够用,则可以以增加机器的方式来提升集群的计算能力
  • 容错性,当某个计算节点的机器挂掉,会把任务分配给其他节点的机器完成
  • 海量数据离线处理

下图简单展示了MapReduce的计算流程:

上图是一个统计词频的计算流程

  • 在Input环节中,我们把文本进行输入
  • 然后在Splitting环节按照空格分割每个单词
  • 接着在Mapping环节中把相同的单词都映射到同一个节点上
  • 到了Shuffling环节就会对数据进行洗牌
  • 最后到Reducing环节进行数据的整合
  • 并将最终的结果写入到一个文件中

4 Hadoop优势

4.1 高可靠性

  • 数据存储:数据块多副本
  • 数据计算:重新调度作业计算

4.2 高扩展性

  • 存储 / 计算资源不够时,可以横向的线性扩展机器
  • 一个集群可以包含数以千记的节点

4.3 成本计算

  • 可以存储在廉价机器上,降低成本
  • 非常成熟的生态圈

关于Hadoop发展史可以参考这篇文章

5 Hadoop生态系统

5.1 狭义的Hadoop与广义的Hadoop

  • 狭义的Hadoop:是一个适合大数据分布式存储(HDFS)、分布式计算(MapReduce)和资源调度(YARN)的平台,也就是Hadoop框架

  • 广义的Hadoop:指的是Hadoop生态系统,Hadoop生态系统是一个很庞大的概念,Hadoop框架是其中最重要最基础的一个部分。生态系统中的每一子系统只解决某一个特定的问题域(甚至可能很窄),不搞统一型的一个全能系统,而是小而精的多个小系统。工作岗位招聘上写的Hadoop一般都是指广义的Hadoop,也就是Hadoop生态系统。

  • Hadoop生态系统示意图:

5.2 特点

  • 开源以及社区活跃
  • 囊括了大数据数理的方方面面
  • 成熟的生态圈

5.3 Hadoop常用发行版及选型

Hadoop就像Linux一样,也有多个发行版,常用发行版有以下几种:

5.3.1 原生态的Apache Hadoop

原生态的Apache Hadoop框架在生产环境中不建议使用,因为Apache社区里的Hadoop生态系统的框架只是解决了单个框架的问题,如果想要将不同的框架,例如Hive、Hbase等框架综合起来使用的话,总是会产生jar包的冲突问题,而且这些冲突问题通常都是无法解决的。所以在学习的时候可以使用Apache Hadoop,但是生产环境中就不太建议使用了

5.3.2 HDP:Hortonworks Data Platform

5.3.3 CDH:Cloudera Distributed Hadoop

CDH以及HDP都是基于Apache Hadoop社区版衍生出来的,这两个发行版虽然是商业版的,但是不属于收费版本,除非需要提供技术服务,才需要收取一定的服务费用,并且它们也都是开源的。在国内绝大多数公司都会选择使用CDH版本,所以在这里也主要介绍CDH,选择CDH的主要理由如下:

CDH对Hadoop版本的划分非常清晰,只有两个系列的版本(现在已经更新到CDH6.2.x了,基于hadoop2.x),分别是cdh3和cdh4,分别对应第一代Hadoop(Hadoop 1.0)和第二代Hadoop(Hadoop 2.0),相比而言,Apache版本则混乱得多;
CDH文档清晰且丰富,很多采用Apache版本的用户都会阅读cdh提供的文档,包括安装文档、升级文档等。
而且CDH提供了一个CM组件,让我们在安装它的时候只需要在浏览器上的页面中,点击各种下一步就可以完成安装,比起Apache Hadoop的安装要方便很多,而且很多操作都可以在图形界面上完成,例如集群的搭建以及节点切换等。CDH与Spark的合作是非常好的,所以在CDH中对Spark的支持比较好。最主要的是一般情况下使用同一版本的CDH,就不会发生jar冲突的情况。

CDH的下载地址如下:
http://archive.cloudera.com/cdh5/cdh/5/

注:选择版本的时候尽量保持一致,例如hive选择了cdh5.7.0的话,那么其他框架也要选择cdh5.7.0,不然有可能会发生jar包的冲突。

#读书笔记##Java##春招##实习##笔经#
全部评论
大数据入门1呢
点赞 回复 分享
发布于 2019-04-03 18:26
同问大数据入门一在哪里哇 楼主
点赞 回复 分享
发布于 2019-06-03 23:28

相关推荐

qz鹿:*** 祝他毕业就失业
点赞 评论 收藏
分享
11-29 11:21
门头沟学院 Java
总包48.5w,意想不到的价格
想开了的垂耳兔很喜欢拱白菜:转人工
点赞 评论 收藏
分享
评论
1
16
分享
牛客网
牛客企业服务