1.1 什么是Hadoop

分布式计算平台

优点:

高可靠性

高扩展性

高效性 在各节点之间动态地移动数据,保证各个节点的动态平衡

高容错性 数据多副本;重新启动失败任务

Hadoop应用:

Yahoo 广告系统Web搜索研究

Facebook 数据分析 机器学习

百度 搜索日志分析 网页数据挖掘

淘宝 存储并处理电子商务交易的相关数据

中国移动研究院对数据进行分析并对外提供服务

1.2 Hadoop项目及其结构:

Pig    Chukwa    Hive    Hbase

MapReduce    HDFS    ZooKeeper

Common    Avro

Common:

为Hadoop其他子项目提供支持的常用工具

主要包括FileSystem、RPC和串行化库

Avro:

是用于数据序列化的系统

提供了丰富的数据结构类型、快速可压缩的二进制数据格式、存储持久性数据的文件集、RPC、简单的动态语言集成功能

依赖于模式(scheme),数据的读写是在模式下完成的,这样可以减少写入数据的开销,提高序列化的速度并缩减其大小

在RPC中,Avro系统的客户端和服务器端通过握手协议进行模式的交换

MapReduce:

一种编程模型,用于大数据集(1TB)的并行运算

HDFS:
分布式文件系统,具有高容错性(fault-tolerant)

高吞吐率(high-throughput)

设计目标:

检测和快速恢复硬件故障

流式数据访问   重点在于批量处理而不是用户交互式处理,数据吞吐量而不是数据访问的反应速度

简化一致模型:一次写入,多次读取

通信协议

Client和NameNode--Client Protocol

NameNode和DataNode--DataNode Protocol

Chukwa:

开源的数据收集系统,监控和分析大型分布式系统的数据

在HDFS和MapReduce框架之上搭建

显示、监视和分析数据结果,以便更好的利用所收集的结果

Hive:

建立在Hadoop之上的数据仓库

MapReduce编程模型中也可通过Hive QL查询数据

Hbase:

分布式的、面向列的开源数据库,该技术来源于Google——Bigtable

适合非结构化数据存储的数据库

基于列模式,一个数据行拥有一个可选择的键和任意数量的列

Pig:

对大型数据集进行分析、评估的平台

突出优势:它的结构能经受住高并行化的检验

底层由一个编译器组成,运行时会产生一些MapReduce程序序列

ZooKeeper:

为分布式应用设计的开源协调服务

提供同步、配置管理、分组、命名服务,减少分布式应用程序所承担的协调任务

目录树结构

J ava编写,支持Java C

Sqoop:

为高效传输批量数据而设计的一种工具,其用于Apache Hadoop和结构化数据库如关系型数据库之间的数据传输

Flume:

一种分布式的、可靠的、用于高效搜集、汇总、移动大量日志数据的服务。

Mahout:

一种基于Hadoop的机器学习和数据挖掘的分布式计算框架算法集,实现了多种MapReduce模式的数据挖掘算法。

Spark:

一个开源的数据分析集群计算框架,建立于HDFS之上,用于构建大规模、低延时的数据分析应用,采用Scala语言开发

Storm:

分布式的、容错的实时计算系统,属于流处理平台,多用于实时计算并更新数据库

也可被用于连续计算(continuous computation),对数据流做连续查询,在计算时将结果以流的形式输出给用户

Shark:

即Hive on Spark,为Spark打造的数据仓库系统,兼容HQL

Phoenix:

构建在HBase之上的SQL中间层,Java编写

Phoenix查询引擎会将SQL查询转换为一个或多个HBase scan,并编排执行以生成标准的JDBC结果集。

直接使用HBase API、协同处理器与自定义过滤器

对简单查询来说是毫秒

对百万级别的行来说是秒

Tez:

基于YARN之上的DAG(Directed Acyclic Graph)就算框架

把MapReduce拆分成若干子过程,同时可以把多个MapReduce任务组合成一个较大的DAG任务,减少了MapReduce中间过程文件的存储

合理组合其子过程,减少任务的运行时间

Ambari:

一个供应、管理和监视Hadoop集群的开源框架

1.3 Hadoop体系结构:

两大核心:HDFS  MapReduce

通过HDFS实现分布式存储的底层支持

通过MapReduce实现分布式并行任务处理的程序支持

HDFS:

主从结构

NameNode:管理文件系统的命名空间和客户端对文件的访问操作

DataNode:管理存储的数据

MapReduce:

JobTracker:调度一个作业的所有任务

TaskTracker:负责主节点指派的任务

JobTracker接收到提交作业和其配置信息后,将配置信息等分发给从节点,同时调度任务并监控TaskTracker的执行。

1.4 Hadoop与分布式开发

Hadoop上并行应用程序的开发是基于MapReduce编程模型的

MapReduce库的用户用两个函数来表达这个计算:Map和Reduce

Map函数接收一个输入的key/value对,然后产生一个中间key/value对的集合;

把具有相同key值得value集合在一起,然后传递给Reduce函数。

Reduce函数接收key和相关的value集合

每次调用Reduce函数只产生0或1个输出的value值。

MapReduce计算模型非常适合在大量计算机组成的大规模集群上并行运行。

原理:

数据分布存储

分布式并行计算:DataNode既是数据存储结点,也是计算结点

本地计算:移动计算比移动数据更经济

任务粒度:Block  M个Map任务分布于N台计算机上并行运行,Reduce任务数由用户指定

数据合并:Combine,在分割之前,将中间结果有相同key的value合并

数据分割:Partition,把Map任务的中间结果按key划分为R份——reduce任务数

Reduce:Map任务的中间结果在执行完Combine、Partition之后,以文件形式存储于本地磁盘,中间结果的位置将通知JobTracker,JobTracker再通知Reduce任务到哪取中间结果。

任务管道:有R个Reduce任务就有R个最终结果,很多情况下它们无需合并,而是作为另一个计算任务的输入,这也就形成了任务管道。

1.5 Hadoop计算模型——MapReduce

将运行于大规模集群上的复杂的并行计算过程高度地抽象为两个函数:Map和Reduce。

一个Job通常把输入的数据集切分为若干独立的数据块,由Map任务并行处理。

框架对Map的输出进行排序,然后把结果输入给Reduce任务。

计算结点和存储结点在一起。

1.6 Hadoop数据管理

分布式文件系统 HDFS

分布式数据库 HBase

数据仓库工具 Hive

HDFS的数据管理

整个集群的单一命名空间

数据一致性:一次写入,多次读取

文件分割成多个文件块,每个文件块被分配存储到数据结点上,根据配置由复制文件块保证数据安全

三个角色:NameNode,DataNode,Client

NameNode元数据信息:路径,副本数,分块,块所在的结点

文件写入:

1.Client向NameNode发起文件写入请求;

2.NameNode根据文件大小和文件块配置情况,返回给Client所管理的DataNode的信息;

3.Client将文件划分为多个Block,根据DataNode的地址信息按顺序将其写到每一个DataNode中。

文件读取:

1.Client向NameNode发起文件读取的请求;

2.NameNode返回文件存储的DataNode信息;

3.Client从DataNode读取文件。

文件块复制:

1.NameNode发现部分文件的Block不符合最小复制数这一要求或部分DataNode失效;

2.通知DataNode相互复制Block;

3.DataNode开始直接相互复制。

文件块的位置:三个副本,本机架2个,另一机架1个

心跳检测:用心跳检测DataNode的健康状况

数据复制:场景为DataNode宕机、需平衡DataNode的存储利用率和平衡DataNode数据交互压力等情况,可使用HDFS的balancer命令配置threshold来平衡每一个DataNode的磁盘利用率。

数据校验:CRC32    写入校验信息,读入时,先校验后读入

管道性写入:写入文件到DataNode上时,首先读取一个Block,然后将其写到一个DataNode上,接着由第一个DataNode将其传递到备份的DataNode上,直到所有备份完成后,客户端才开始写下一个block。

安全模式:启动时进入/命令进入。数据不允许修改和删除。主要是为了在系统启动时检查各个DataNode上数据块的有效性,同时根据策略进行必要的复制或删除部分数据块。

Hbase的数据管理

类似于BigTable的分布式数据库

一个稀疏的、长期存储的、多维度的排序映射表,这张表的索引是行关键字、列关键字和时间戳

表中的数据都是字符串

每一行都有一个可排序的主键和任意多的列

由于列是稀疏存储的,所以同一张表中的每一行数据都可以有截然不同的列

列名字的格式是<family><label>

每一张表有一个family集合,这个集合是固定不变的,相当于表结构

label值相对于每一行来说都是可以改变的

Hbase把同一family中的数据存储在同一目录下

Hbase的写操作是锁行的,每一行是一个原子元素,可以加锁

时间戳,每次生成一个新的版本都会跟一个时间戳,可以设置保留几个版本

客户端可以获得最近版本,也可获得全部版本

三大组成部分

HBaseMaster:HBase主服务器

ZooKeeper

领导选举法(Leader Election Algorithm)

主服务器承担初始化集群的任务。当主服务器第一次启动时,会试图从HDFS获取根或根域目录,如果获取失败则创建根或根域目录,以及第一个元域目录。

下次启动时,主服务器可获得集群和集群中所有域的信息。

负责域的分配、域服务器运行状态的监视、表格管理

HRegionServer:Hbase域服务器

服务于主服务器分配的域、处理客户端的读写请求、本地缓冲回写、本地数据压缩、分割域

每个域只能由一台域服务器来提供服务

当其开始服务于某个域时,它会从HDFS文件系统中读取该域的日志和所有存储文件

同时管理操作HDFS文件的持久性存储工作

客户端与主服务器通信获取域和域服务器列表信息后,就可以直接向域服务器发送域读写请求,来完成操作。

HBase Client:

客户端与Hbase主机交换消息以查找根域的位置,这是二者的唯一交流

定位根域后,客户端获取元域信息,元域信息中包含所需用户域的域服务器地址

客户端再连接元域所在的域服务器,获得用户域所在的域服务器地址

定位用户域服务器后发出读写请求

用户域的地址将缓存在客户端中

Hive的数据管理

建立在Hadoop上的数据仓库基础架构,提供一系列工具进行数据的提取、转化、加载

是一种可以存储、查询和分析存储在Hadoop中的大规模数据的机制

Hive QL

1.元数据存储

Hive将元数据存储在RDBMS中,有三种模式可以连接到数据库

a.Single User Mode:此模式连接到一个In-Memory的数据库Derby,一般用于Unit Test。

b.Multi User Mode:通过网络连接

c.Remote Server Mode:用于非Java客户端访问元数据库,在服务器端启动一个MetaStoreServer,客户端利用Thrift协议通过MetaStoreServer来访问元数据库

2.数据存储

无专门存储格式,无索引

只需明确列分隔符、行分隔符

Hive中所有数据都存储在HDFS中

4种数据模型:Table、  External Table、 Partition、  Bucket

3.数据交换

用户接口:客户端、Web界面、数据库接口

元数据存储:通常存储在关系数据库中,如MySQL、Derby等

解释器、编译器、优化器、执行器

Hadoop:HDFS进行存储、MapReduce进行计算

元数据包括表的名字、表的列、表的分区、表分区的属性、表的属性(外表?)、表的数据所在目录。

生成的查询计划存储在HDFS中,随后由MapReduce调用执行

带*的查询不会生成MapReduce任务

1.7 Hadoop集群安全策略

用户权限管理

用户分组管理,为更高层的HDFS访问、服务访问、Job提交和配置Job等操作提供认证和控制基础。

Hadoop上的用户和用户组由用户自己指定,如果未指定,Hadoop会调用Linux的whoami命令获取当前Linux系统的用户名和用户组,将其保存在Job的user.name和group.name两个属性中。

用户提交Job的后续认证和授权以及集群服务的访问都将基于此用户名和用户组的权限及认证信息进行。

HDFS安全策略

用户和HDFS服务之间的交互主要有两种情况:

用户机和NameNode之间的RPC交互获取待通信的DataNode位置;

客户机和DataNode交互传输数据块

MapReduce安全策略

主要涉及Job提交、Task和Shuffle三个方面

1 Hadoop简介相关推荐

  1. hadoop使用mapreduce统计词频_深圳嘉华学校之Hadoop简介(什么是Map-Reduce-Mapreduce-about云开发)...

    Hadoop简介 Hadoop就是一个实现了Google云计算系统的开源系统,包括并行计算模型Map/Reduce,分布式文件系统HDFS,以及分布式数据库Hbase,同时Hadoop的相关项目也很丰 ...

  2. Hadoop简介(1):什么是Map/Reduce

    看这篇文章请出去跑两圈,然后泡一壶茶,边喝茶,边看,看完你就对hadoop整体有所了解了. Hadoop简介 Hadoop就是一个实现了Google云计算系统的开源系统,包括并行计算模型Map/Red ...

  3. Hadoop简介与分布式安装

    Hadoop的基本概念和分布式安装: Hadoop 简介 Hadoop 是Apache Lucene创始人道格·卡丁(Doug Cutting)创建的,Lucene是一个应用广泛的文本搜索库,Hado ...

  4. 什么是Hadoop?大数据与Hadoop简介

    要了解什么是Hadoop,我们必须首先了解与大数据和传统处理系统有关的问题.前进,我们将讨论什么是Hadoop,以及Hadoop如何解决与大数据相关的问题.我们还将研究CERN案例研究,以突出使用Ha ...

  5. Hadoop简介和家族成员介绍

    本文为博主原创,允许转载,但请声明原文地址:http://www.coselding.cn/article/2016/05/31/Hadoop简介和家族成员介绍/ 1. HDFS:分布式文件系统实现, ...

  6. hadoop基础一:Hadoop简介、安装

    你的点赞与评论是我最大的创作动力! hadoop简介: hadoop平台是一个可靠的.可扩展的.可分布式计算的开源软件. Apache Hadoop平台是一个框架,允许使用简单的编程模型.该平台被设计 ...

  7. Hadoop简介和体系架构

    目录 2.1 Hadoop简介 2.1.1 Hadoop由来 2.1.2 Hadoop发展历程 2.1.3 Hadoop生态系统 2.2 Hadoop的体系架构 2.2.1 分布式文件系统HDFS 2 ...

  8. Hadoop简介和集群搭建

    文章目录 Hadoop简介和集群搭建 Hadoop介绍 Hadoop的发行版本和三大公司 hadoop的架构 安装Hadoop 第一步:上传编译后的apache hadoop包并解压 第二步:修改配置 ...

  9. Hadoop详解(一):Hadoop简介

    1. Hadoop 起源 1.1 Hadoop的身世 首先我们介绍一下Nutch的发展情况,Nutch是一个以Lucene为基础实现的搜索引擎系统,Lucene为Nutch提供了文本检索和索引的API ...

  10. 2018-3-7 Hadoop简介1(名字的由来,以及基本的结构)

    问题一:什么是云计算? 实际上是提供的一种服务,这个服务的特点是?                  主要是按需分配 云计算_百度百科 https://baike.baidu.com/item/%E4 ...

最新文章

  1. XMind安装/注册完整教程
  2. MySQL 5.6.26 Release Note解读
  3. 接口(Interface)的深入理解
  4. reuse project css less path folder hierarchy issue
  5. XML和HTML的不同点
  6. 北大学霸:高考有漏洞可钻,学会套路,立马提分,屡试不爽!
  7. java数据结构基础名词解释
  8. java data 图像 显示_Java(JMF)获取本地摄像头,实时显示图像
  9. 计算机网络基石 —— 集线器
  10. 课堂笔记(一些知识散点)但很有用(*^__^*)
  11. Linux 僵尸进程查杀
  12. oracle创建java程序并执行
  13. 短路主板电源针,启动电脑的办法
  14. Java后端开发技术选型
  15. 精通开关电源设计(一)
  16. 关于svn汉化包安装无效的解决办法
  17. 如何准备一场Java面试?
  18. 电信物联网平台ctwing对接开发-平台概述
  19. 设置计算机访问权限密码忘了怎么办,苹果访问限制密码是什么?忘记怎么办【详解】...
  20. K660E I7 D4 clover 引导黑苹果完美驱动

热门文章

  1. C++网络编程快速入门(一):TCP网络通信基本流程以及基础函数使用
  2. leetcode 198. 打家劫舍 思考分析
  3. 创建bootstrap项目_使用Bootstrap创建第一个网页
  4. 微信小程序 查找兄弟节点_使用C ++程序在链接列表中查找节点
  5. 面向对象(封装对象private关键字)
  6. 网页服务器和mysql服务器_实现Web服务器之间使用同一个MYSQL和相同的网页配置文件的方法...
  7. hash函数查找和ASL计算
  8. linux操作系统之条件变量
  9. 每日一题:leetcode173.二叉搜索树迭代器
  10. 网易资深Java架构师:java数组对象转为list集合