Hadoop数据管理
本节主要从三方面介绍Hadoop数据管理:分布式文件系统HDFS、分部式数据库HBase和数据仓库工具Hive。
1. HDFS的数据管理
HDFS是分布式计算的存储基石,Hadoop分布式文件系统和其他分布式文件系统由很多类似的特性:
1)对于整个集群有单一的命名空间;
2)具有数据一致性,都适合一次写入多次读取的模型,客户端在文件没有被成功创建之前是没有办法看到文件存在的;
3)文件会被分割成多个文件块,每个文件快被分配存储到数据节点上,而且会根据配置由复制文件快来保证数据的安全性。
HDFS通过NameNode、DataNode和Client来进行文件系统的管理。NameNode可以看成是分布式文件系统中的管理者,主要负责文件系统的命名空间、集群配置信息和存储块的复制等。NameNode会将文件系统的Metadata存储在内存中,这些信息主要包括文件信息、每一个文件对应的文件块的信息和每一个文件块在DataNode中的信息等。DataNode是文件存储的基本单元,它将文件块(Block)存储在本地文件系统中,保存了所有的Block和Metadata,同时周期性地将所有文件存在的Block信息发送给NameNode。Client就是需要获取分布式文件系统文件的应用程序。
(1)文件写入
1)Client向NameNode发起文件写入的请求;
2)NameNode根据文件大小和文件块配置信息,返回给Client所管理的DataNode的信息;
3)Client将文件划分为多个Block,根据DataNode的地址信息,按顺序将其写入到每一个DataNode块中。
(2)文件读取
1)Client向NameNode发起文件读取的请求;
2)NameNode返回文件存储的DataNode信息;
3)Client读取文件信息。
(3)文件块(Block)复制
1)NameNode发现部分文件的Block不符合最小复制数这一要求或部分DataNode失效;
2)通知DataNode相互复制Block;
3)DataNode开始直接相互复制。
作为分布式文件系统,HDFS在数据管理方面还有值得借鉴的几个功能:
(1)文件块(Block)的放置:一个Block会有三分备份,一份放在NameNode指定的DataNode上,另一份放在与指定DataNode不在同一机器上的DataNode上,最后一份放在与指定DataNode同一Rack的DataNode上。备份的目的是为了数据安全,采用这种配置方式主要是考虑同一Rack失败的情况,以及不同的Rack之间进行数据复制会带来的性能问题。
(2)心跳检测:用心跳检测DataNode的健康状况,如果发现问题就采取数据备份的方式来保证数据的安全性。
(3)数据复制( 场景为DataNode失败、需要平衡DataNode的存储利用率和平衡DataNode数据交互的压力等情况):使用Hadoop时可以用HDFS的balancer命令配置Threshold来平衡每一个DataNode的磁盘利用率。假设设置了Threshold为10%,那么执行balancer命令时,首先会统计所有DataNode的磁盘利用率上午平均值,然后判断如果某一个DataNode的磁盘利用率超过这个平均值,那么将会把这个DataNode的Block转移到磁盘利用率低的DataNode上,这对于新节点的加入十分有用。
(4)数据校验:采用CRC32(循环冗余校验)做数据校验。在写入文件块的时候,除了会写入数据外还会写入校验信息,在读取的时候则需要先校验后读入。
(5)单个NameNode:如果单个NameNode失败,任务处理信息将会记录在本地文件系统和远端的文件系统中。
(6)数据管道性的写入:当客户端要写入文件到DataNode上时,首先会读入一个Block,然后将其写到第一个DataNode上,然后由第一个DataNode将其传递到备份的DataNode上,知道所有需要写入这个Block的DataNode都写入后,客户端才会开始写下一个Block。
(7)安全模式:分布式文件系统启动时会进入安全模式(系统运行期间也可以通过命令进入安全模式),当分布式文件系统处于安全模式时,文件系统中的内容不允许修改也不运行删除,知道安全模式结束。安全模式时为了在系统启动时检查各个DataNode上的数据块的有效性,同时根据策略进行必要的复制或删除部分数据块。
2. HBASE的数据管理
HBASE是一个类似Bigtable的分布式数据库,它的大部分特性和Bigtable一样,是一个稀疏的、长期存储的(存在硬盘上)、多维度的排序映射表,这张表的索引是行关键字、列关键字和时间戳。表中的每个值是一个纯字符数组,数据都是字符串,没有类型。用户在表格中存储数据,每一行都有一个可排序的主键和任意多的列。由于是稀疏存储的,所以同一张表中的每一行数据都可以有截然不同的列。列名字的格式是“<family>:<label>”,它是由字符串组成的,每一张表有一个family集合,这个集合是固定不变的,相当于表的结果,只能通过该表表结构来改变family集合。但是label值相对于每一行来说都是可以改变的。
HBase把同一个family的数据存储在同一个目录下,而HBase的写操作是锁行的,每一行都是一个原子元素,都可以加锁。所有数据库的更新都有一个时间戳标记,每次更新都会生成一个新的版本,而HBase会保留一定数量的版本,这个值是可以设定的。客户端可以选择获取距离某个时间段最近的版本,或者一次获取所有版本。
HBase在分布式集群上主要依靠由HRegion、HMaster、HClient组成的体系结构从整体上管理数据。
HBase体系结构的三大重要组成部分:
(1)HBaseMaster:HBase主服务器,与Bigtable的主服务器类似。
一个HBase值部署一台 主服务器,它通过领导选举算法(Leader Election Algorithm)确保只有唯一的主服务器是活跃的,ZooKeeper保存主服务器的服务器地址信息。如果主服务器瘫痪,可以通过领导选举算法从备用的服务器中选择新的新服务器。主服务器承担着初始化集群的任务。当主服务器第一次启动的时候,会试图从HDFS获取根或根域目录,如果获取失败则自动创建根或根域目录,以及第一个元域目录。在下次启动的时候,主服务器就可以获取集群和集群中所有的预的信息了。同时主服务器还负责集群中域的分配、域服务器运行情况的监视、表格的管理等工作。
(2)HRegionServer:HBase域服务器,与Bigtable的Tablet服务器类似。
HBase域服务器的主要职责有服务于主服务器分配的域、处理客户端的读写请求、本地缓存区回写、本地数据压缩和分割域等功能。
每个域只能由一台域服务器来提供服务。当它开始服务于某个域时,它会从HDFS文件系统中读取该域的日志和所有存储文件,同时还会管理操作HDFS的持久性存储工作。客户端通过与主服务器通信获取域和域所在域服务器的列表信息后,就可以直接向域服务器发起域读写请求来完成操作。
(3)HBaseClient:HBase客户端是由org.apache.hadoop.client.HTable 定义的。
HBase客户端负责查找用户域所在域服务器的地址。HBase客户端会与HBase主机交换消息以在查找根域的位置,这是两者之间唯一的交流。定位根域之后,客户端连接根域所在服务器,并扫描根域获取元域信息,元域信息中包含所需用户的域服务器的地址。客户端再连接元域所在的域服务器,扫描元域以获取所需用户所在的域服务器地址。定位用户域之后,客户端再连接用户域所在的域服务器并发出读写请求。用户域的地址将在客户端被缓存,后续的请求无须再进行以上操作。
综上所述,在HBase体系结构中,HBase主要由主服务器、域服务器和客户端三部分组成。主服务器作为HBase的中心,管理整个集群中的所有域,监控每台域服务器的运行情况等;域服务器接受来自服务器的分配域,处理客户端的域读写请求并回写映射文件等;客户端主要用来查找用户域所在的域服务器地址信息。
3. Hive的数据管理
Hive是建立在Hadoop上的数据仓库基础架构。它提供了一系列工具,用来进行数据提取、转化、加载,这是一种可以存储、查询和分析存储在Hadoop中的大规模数据的机制。Hive定义了简单的类SQL的查询语言,称为Hive SQL,它允许熟悉SQL的用户用SQL语言查询数据。作为一个数据仓库,Hive的数据管理按照使用层次可以从元数据存储、数据存储和数据交换三方面来介绍。
(1)元数据存储
Hive将元数据存储在RDBMS中,支持三种模式连接到数据库:
1)Single Use Mode:此模式连接到一个In-memory的数据库Derby,一般用于Unit Test。
2)Multi User Mode:通过网络连接到一个数据库中,这是最常用的模式。
3)Remote Server Mode:用于非Java客户端访问元数据库,在服务器端启动一个MetaStoreServer,客户端利用Thrift协议通过MetaSoreServer来访问元数据库。
(2)数据存储
首先,Hive没有专门的数据存储格式,也没有为数据建立索引,用户可以非常自由地阻止Hive中的表,只需要在创建表的时候告诉Hive数据中的列分隔符和行分隔符,它就可以解析数据了。其次,Hive中的所有数据都存储在HDFS中,Hive中包含4中数据模型:Table、External Table、Partition和Bucket。
(3)数据交换
数据交换主要分为以下几部分,如下图所示。
1)用户接口:包括客户端、Web界面和数据库接口。
其中最常用的是客户端。Client是Hive的客户端,当启动Client模式时,用户会想要连接Hive Server,这时需要指出Hive Server所在的节点,并且在该节点启动HiveServer。Web界面是通过浏览器访问Hive的接口。
2)元数据存储:通常存储在关系数据库中,如MySQL、Derby等。
Hive中的元数据包括:表的名字、表的列、表的分区、表分区的属性、表的属性(是否为外部表等)、表的数据所在目录等。
3)解释器、编译器、优化器、执行器。
前三个主要完成Hive QL查询语句从词法分析、语法分析、编译、优化到查询计划的生成。生成的查询计划存储在HDFS中,并且随后MapReduce调用执行。
4)Hadoop:利用HDFS进行存储,利用MapReduce进行计算,大部分的查询由MapReduce完成(包含*的查询不会生成MapReduce任务,比如select * from table1)。
以上从Hadoop的分布式文件系统HDFS、分布式数据库HBase和数据仓库工具Hive介绍了Hadoop的数据管理,它们都通过自己的数据定义、体系结构、实现了数据从宏观到微观的立体化管理,完成了Hadoop平台上大规模的数据存储和任务处理。
以上就是博主为大家介绍的这一板块的主要内容,这都是博主自己的学习过程,希望能给大家带来一定的指导作用,有用的还望大家点个支持,如果对你没用也望包涵,有错误烦请指出。如有期待可关注博主以第一时间获取更新哦,谢谢!
版权声明:本文为博主原创文章,未经博主允许不得转载。
Hadoop数据管理的更多相关文章
- Hadoop数据管理介绍及原理分析
Hadoop数据管理介绍及原理分析 最近2014大数据会议正如火如荼的进行着,Hadoop之父Doug Cutting也被邀参加,我有幸听了他的演讲并获得亲笔签名书一本,发现他竟然是左手写字,当然这个 ...
- Hadoop高级培训课程大纲-管理员版
一.课程概述 本次培训课程主要面向大数据系统管理人员和开发设计人员,基于开源社区大数据应用最活跃的Hadoop和HBase技术框架.围绕分布式文件存储(HDFS).分布式并行计算(Map/Recue) ...
- oschina大数据开源软件
Hadoop 图形化用户界面 Hue 大数据可视化工具 Nanocubes 企业大数据平台 RedHadoop 大数据查询引擎 PrestoDB Hadoop集群监控工具 HTools 安全大数据分析 ...
- Hadoop的数据管理
Hadoop的数据管理,主要包括Hadoop的分布式文件系统HDFS.分布式数据库HBase和数据仓库工具Hive的数据管理. 1.HDFS的数据管理 HDFS是分布式计算的存储基石,Hadoop分布 ...
- 大数据笔记05:大数据之Hadoop的HDFS(数据管理策略)
HDFS中数据管理与容错 1.数据块的放置 每个数据块3个副本,就像上面的数据库A一样,这是因为数据在传输过程中任何一个节点都有可能出现故障(没有办法,廉价机器就是这样的) ...
- hadoop基础学习---数据管理策略
上图中的ABCDE都代表默认大小64M的数据块 nameNode与dataNode之间有一个心跳机制,datanode每隔多秒钟定期的发送心跳到nameNode
- hadoop生态圈介绍
原文地址:大数据技术Hadoop入门理论系列之一----hadoop生态圈介绍 1. hadoop 生态概况 Hadoop是一个由Apache基金会所开发的分布式系统基础架构. 用户可以在不了解分 ...
- Hadoop学习笔记—15.HBase框架学习(基础知识篇)
HBase是Apache Hadoop的数据库,能够对大型数据提供随机.实时的读写访问.HBase的目标是存储并处理大型的数据.HBase是一个开源的,分布式的,多版本的,面向列的存储模型,它存储的是 ...
- Hadoop学习路线图
Hadoop家族产品,常用的项目包括Hadoop, Hive, Pig, HBase, Sqoop, Mahout, Zookeeper, Avro, Ambari, Chukwa,新增加的项目包括, ...
随机推荐
- 「SHOI2002」「LuoguP1291」百事世界杯之旅(UVA10288 Coupons)(期望,输出
题目描述 “……在2002年6月之前购买的百事任何饮料的瓶盖上都会有一个百事球星的名字.只要凑齐所有百事球星的名字,就可参加百事世界杯之旅的抽奖活动,获得球星背包,随声听,更克赴日韩观看世界杯.还不赶 ...
- IE botton 点击文字下沉
IE点击文字下沉这个应该是浏览器自带的,只要是用button标签应该都是避免不了的. 如果实在接受不了的话,用一个元素比如div.p等块级元素或者是i.b.s.u.span等行内元素.用样式去模拟bu ...
- poj 2069 Super Star——模拟退火(收敛)
题目:http://poj.org/problem?id=2069 不是随机走,而是每次向最远的点逼近.而且也不是向该点逼近随意值,而是按那个比例:这样就总是接受,但答案还是要取min更新. 不知那个 ...
- C++常见错误总结
1. error C2871: 'std' : does not exist or is not a namespace 原来 C++有两个不同版本的头文件.引入名字空间这个概念以前编译器用的是#i ...
- 分布式环境下的session管理
一.分布式Session的几种实现方式 1.1.基于cookie 进行session共享 简单.方便,每次通过判断cookie中的用户状态信息判断用户的登录状态:但是用户信息要存在客户端,存在安全隐患 ...
- cookie,sessionStorage 和 localStorage
1.三者之间的区别 cookie是网站为了标示用户身份而储存在用户本地终端(Client Side)上的数据(通常经过加密). cookie数据始终在同源的http请求中携带(即使不需要),记会在浏览 ...
- 连接Oracle数据库的Hibernate配置…
连接Oracle数据库的Hibernate配置文件 连接Oracle的Hibernate配置文件有两种格式,一种是xml格式的,另一种是Java属性文件格式的.下面分别给出这两种格式配置文件的代码. ...
- android学习点滴一:android环境的搭建
东一点西一点,很多时间都浪费了.是该系统性的做好自己的东西了. <android学习点滴一:android环境的搭建> [环境变量]变量名:JAVA_HOME变量值:C:\Java\jdk ...
- 安装Matlab出现Error 1935错误解决方法
1.开始 - 运行(输入regedit.exe)- 确定或者回车,打开注册表编辑器: 2.在打开的注册表编辑器中找到:HKEY_LOCAL_MACHINE ,并展开:HKEY_LOCAL_MACHIN ...
- Fedora下Msitools使用
msitools学习 msitools使用 wixl-heat使用 概述 打包程序就是把程序依赖的所有库文件和可执行文件以及其他一些资源文件按照源目录结构进行压缩,知道自己的程序依赖哪些库是简单的,但 ...