文档章节

1 Hadoop简介

把南墙撞开
 把南墙撞开
发布于 2017/02/03 23:22
字数 3570
阅读 3
收藏 0


1.1 什么是Hadoop

分布式计算平台

优点:

高可靠性

高扩展性

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

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

 

Hadoop应用:

Yahoo 广告系统Web搜索研究

Facebook 数据分析 机器学习

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

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

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


1.2 Hadoop项目及其结构:

Pig    Chukwa    Hive    Hbase

MapReduce    HDFS    ZooKeeper

Common    Avro

 

Common

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

主要包括FileSystemRPC和串行化库

Avro

是用于数据序列化的系统

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

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

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

MapReduce

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

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

高吞吐率(high-throughput

设计目标:

检测和快速恢复硬件故障

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

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

通信协议

ClientNameNode--Client Protocol    

NameNodeDataNode--DataNode Protocol

Chukwa

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

HDFSMapReduce框架之上搭建

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

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库的用户用两个函数来表达这个计算:MapReduce

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

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

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

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

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


原理:

数据分布存储

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

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

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

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

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

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

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

 

1.5 Hadoop计算模型——MapReduce

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

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

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

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

 

1.6 Hadoop数据管理

分布式文件系统 HDFS

分布式数据库 HBase

数据仓库工具 Hive

 

HDFS的数据管理

整个集群的单一命名空间

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

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

 

三个角色:NameNodeDataNodeClient

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

 

文件写入:

1.ClientNameNode发起文件写入请求;

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

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

 

文件读取:

1.ClientNameNode发起文件读取的请求;

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

3.ClientDataNode读取文件。

 

文件块复制:

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

2.通知DataNode相互复制Block

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

 

 

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

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

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

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

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

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

 

Hbase的数据管理

类似于BigTable的分布式数据库

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

表中的数据都是字符串

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

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

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

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

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

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

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

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

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

 

三大组成部分

HBaseMasterHBase主服务器

ZooKeeper

领导选举法(Leader Election Algorithm

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

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

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

HRegionServerHbase域服务器

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

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

当其开始服务于某个域时,它会从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界面、数据库接口

元数据存储:通常存储在关系数据库中,如MySQLDerby

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

HadoopHDFS进行存储、MapReduce进行计算

 

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

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

*的查询不会生成MapReduce任务

 

1.7 Hadoop集群安全策略

用户权限管理

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

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

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

 

HDFS安全策略

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

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

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

 

MapReduce安全策略

主要涉及Job提交、TaskShuffle三个方面

本文转载自:http://blog.csdn.net/weixin_37289816/article/details/54695797

上一篇: 2.4 multiset
下一篇: 2.11 queue
把南墙撞开
粉丝 0
博文 73
码字总数 21068
作品 0
昌平
私信 提问
好程序员大数据教程分享之Hadoop优缺点

好程序员大数据教程分享之Hadoop优缺点,大数据成为时代主流,开启时代的大门,全球43亿部电话、20亿位互联网用户每秒都在不断地产生大量数据,人们发送短信给朋友、上传视频、用手机拍照、更...

好程序员IT
06/11
15
0
6月9日上海 华东运维技术大会:演讲主题、演讲嘉宾等信息

会议名称:华东运维技术大会 参会形式:免费报名制(注释:须事先报名,场地有限) 会议定位:企业运维技术的最佳实践 会议主题:运维自动化、Web服务器的优化与架构、云计算、虚拟化技术 会...

金官丁
2012/05/19
2.5K
11
hadoop的简介与伪分布的搭建

一:大数据hadoop简介 二:hadoop的伪分布安装 三:运行wordcount测试 四:hadoop 常用端口号 五:hadoop的四大模块包含 六:启动脚本: 一: 大数据hadoop简介 二:hadoop的伪分布安装 2.1 ...

flyfish225
2018/04/10
0
0
windows 环境下Eclipse开发MapReduce环境设置

1、Hadoop开发环境简介 1.1 Hadoop集群简介 Java版本:jdk-6u31-linux-i586.bin Linux系统:CentOS6.0 Hadoop版本:hadoop-1.0.0.tar.gz 1.2 Windows开发简介 Java版本:jdk-6u31-windows-i5......

加油_张
2013/11/30
13.6K
0
centos单机部署hadoop伪集群

目录 1 简介 2 版本 3 创建hadoop用户 4 设置SSH无密码登陆localhost 5 下载hadoop 6 设置环境变量 7 配置hadoop 8 测试hadoop 9 一些注意 简介 Hadoop能在单台机器上以伪分布式模式运行,即...

lwaif
2015/06/24
214
0

没有更多内容

加载失败,请刷新页面

加载更多

让《强化学习(第2版)》架起一座通往强化学习经典知识宝库的桥梁

上交大计算科学与工程系俞凯教授,5分钟口述讲解,带你快速认识了解年度重磅图书《强化学习(第二版)》! 在 AlphaGo战胜李世石之后,AlphaZero以其完全凭借自我学习超越人类在各种棋类游戏...

博文视点Bv
21分钟前
6
0
TLA7-EVM开发板的处理器、NOR FLASH、DDR3

TLA7-EVM开发板是一款由广州创龙基于Xilinx Artix-7系列FPGA自主研发的核心板+底板方式的开发板,可快速评估FPGA性能。核心板尺寸仅70mm*50mm,底板采用沉金无铅工艺的6层板设计,专业的PCB...

Tronlong创龙
30分钟前
4
0
UUID的变种-有序

为了解决UUID无序的问题,NHibernate在其主键生成方式中提供了Comb算法(combined guid/timestamp)。保留GUID的10个字节,用另6个字节表示GUID生成的时间(DateTime)。 /// <summary> //...

Canaan_
31分钟前
4
0
Netty学习(6)——通道间数据传输

1. FileChannel实现通道间的数据传输 在Java NIO中,如果两个通道中有一个是FileChannel,那你可以直接将数据从一个channel传输到另外一个channel。 transferFrom() FileChannel的transferF...

江左煤郎
34分钟前
4
0
AngularDOM操作

gtandsn
35分钟前
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部