Hadoop/Hive简介

  hive是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并提供完整的sql查询功能,可以将 sql语句转换为MapReduce任务进行运行。 其优点是学习成本低,可以通过类SQL语句快速实现简单的MapReduce统计,不必开发专门的MapReduce应用,十分适合数据仓库的统计分析。

  Hadoop是一个存储计算框架,主要由两部分组成:

  1,存储(Hadoop分布式文件系统-HDFS)

  2,计算(MapReduce计算框架)

1,Hadoop分布式文件系统

  这是一种文件系统实现,类似于NTFS,ext3,ext4等等,不过它是建立在更高的层次之上的。在HDFS上存储的文件被分成块(每块默认未 64M,比一般的文件系统块大小大的多,可调)分布在多台机器上,其中的每块又会有多块的冗余备份(默认为3),以增强文件系统的容错能力。这种存储模式与后面将要说明的MapReduce计算模型相得益彰。HDFS在具体实现中主要有以下几个部分:

  一、名称节点(NameNode):它的职责在于存储整个文件系统的元数据,这是个非常重要的角色。元数据在集群启动时会加载到内存中,元数据的改变也会写到磁盘上的一个文件系统映像文件中(同时还会维护一个对元数据的编辑日志)。目前名称节点还是一个单点。因为HDFS存储文件的时候是将文件划分成逻辑上的块来存储的,模个文件对应那些块都存储在名称节点上,所以如果它有损坏整个集群的数据将不可用。当然我们可以采取一些措施来备份名称节点的元数据(文件系统映像文件),比如可以将名称节点目录同时设置到本地目录和一个NFS目录,这样任何元数据的改变将写入到两个位置做冗余备份,向两个目录冗余写的过程是原子的。这样,在使用中的名称节点宕机之后,我们可以使用NFS上的备份文件来恢复文件系统。

  二、第二名称节点(SecondaryNameNode):这个角色的作用就是定期通过编辑日志合并命名空间映像,防止编辑日志过大。不过第二名称节点的状态是滞后于主名称节点的,所以如果主名称节点挂掉,也必定会有一些文件损失。

  三、数据节点(DataNode):这是HDFS中具体存储数据的地方,一般有多台机器。除了提供存储服务,它们还定时向名称节点发送它们存储的块的列表,所以名称节点没有必要永久保存每个文件的每个块所在的数据节点,这些信息会在系统启动后由数据节点重建。

2,MapReduce计算框架

  这是一种分布式计算模型,其核心就是将任务分解成小任务由不同的计算者同时参与计算,并将各个计算者的计算结果合并得出最终的结果。模型本身非常简单,一般只需要实现两个接口即可;问题的关键在于怎样将实际问题转化为MapReduce任务。Hadoop的MapReduce部分主要由以下几部分组成:

  一、作业跟踪节点(JobTracker):负责任务的调度(可以设置不同的调度策略)、状态跟踪。它的角色有点类似于HDFS中的名称节点,JobTracker也是一个单点,在未来的版本中可能会有所改进。

  二、任务跟踪节点(TaskTracker):负责具体的任务的执行。它通过“心跳”的方式告知JobTracker其状态,并由 JobTracker根据其报告的状态为其分配任务,TaskTracker会启动一个新的JVM来运行一个任务,当然JVM实例也可以被重用。

  以上就是对于Hadoop最重要的两个部分的简介,Hadoop存在的理由就是它适应于大数据的存储计算。一个Hadoop集群可以看成是一个存储、计算“数据”的“库”。

Hive是一个构建于Hadoop集群之上的“数据仓库”应用

  Hive是Facebook开发的构建于Hadoop集群之上的数据仓库应用,它提供了类似于SQL语法的HQL语句作为数据访问接口,这使得普通分析人员的应用Hadoop的学习曲线变缓。至于Facebook为什么使用Hadoop和Hive组建其数据仓库,其内部人员分享了他们的一些经历,大致的过程是如下的:

  1,Facebook的数据仓库一开始是构建于MySQL之上的,但是随着数据量的增加某些查询需要几个小时甚至几天的时间才能完成。

  2,当数据量接近1T的时候,mysqld后台进程宕掉,这时他们决定将他们数据仓库转移到Oracle。当然这次转移的过程也是付出了很大的代价的,比如支持的SQL方言不同,修改以前的运行脚本等等。

  3,Oracle应付几T的数据还是没有问题的,但是在开始收集用户点击流的数据(每天大约400G)之后,Oracle也开始撑不住了,由此又要考虑新的数据仓库方案。

  4,内部开发人员花了几周的时间建立了一个并行日志处理系统Cheetah,这样的话勉强可以在24小时之内处理完一天的点击流数据。

  5,Cheetah也存在许多缺点。后来发现了Hadoop项目,并开始试着将日志数据同时载入Cheetah和Hadoop做对比,Hadoop 在处理大规模数据时更具优势,后来将所有的工作流都从Cheetah转移到了Hadoop,并基于Hadoop做了很多有价值的分析。

  6,后来为了使组织中的多数人能够使用Hadoop,开发了Hive,Hive提供了类似于SQL的查询接口,非常方便。与此同时还开发了一些其它工具。

  7,现在集群存储2.5PB的数据,并且以每天15TB的数据在增长,每天提交3000个以上的作业,大约处理55TB的数据...

  现在很多大的互联网公司出于成本考虑都在研究、使用Hadoop;数据的价值正得到越来越多的人的重视,而这种重视,又体现出Hadoop存在的巨大价值。

转载:http://zhangwei20086.blog.163.com/blog/static/230557182012619111956724/

时间: 2024-11-06 11:40:02

Hadoop/Hive简介的相关文章

Hive简介、什么是Hive、为什么使用Hive、Hive的特点、Hive架构图、Hive基本组成、Hive与Hadoop的关系、Hive与传统数据库对比、Hive数据存储(来自学习资料)

1.1 Hive简介 1.1.1   什么是Hive Hive是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并提供类SQL查询功能. 1.1.2   为什么使用Hive Ø  直接使用hadoop所面临的问题 人员学习成本太高 项目周期要求太短 MapReduce实现复杂查询逻辑开发难度太大   Ø  为什么要使用Hive 操作接口采用类SQL语法,提供快速开发的能力. 避免了去写MapReduce,减少开发人员的学习成本. 功能扩展很方便. 1.1.3   H

hadoop hive安装教程

以下是本人hive的安装过程: hive 是Hadoop中最常用的工具,可以说是必装工具. 按apache官方文档,推荐使用svn下载后编译,文档地址:https://cwiki.apache.org/confluence/display/Hive/AdminManual+Installation 但build时,因为依赖关系,整了很久,下了很多包也没有成功. 推荐使用tar.gz包,直接安装,文档地址:https://cwiki.apache.org/confluence/display/Hi

[Hadoop]Hive r0.9.0中文文档(二)之联表查询Join

一.Join语法 join_table: table_reference [INNER] JOIN table_factor [join_condition] | table_reference {LEFT|RIGHT|FULL} [OUTER] JOIN table_reference join_condition | table_reference LEFT SEMI JOIN table_reference join_condition table_reference: table_fac

[Hadoop]Hive r0.9.0中文文档(一)之数据操作语句

一.创建表的语法 CREATE [EXTERNAL] TABLE [IF NOT EXISTS] table_name [(col_name data_type [COMMENT col_comment], ...)] [COMMENT table_comment] [PARTITIONED BY (col_name data_type [COMMENT col_comment], ...)] [CLUSTERED BY (col_name, col_name, ...) [SORTED BY

hadoop hive 操作 是封装在shell脚本好还是java中好?

问题描述 hadoop hive 操作 是封装在shell脚本好还是java中好? 我们现在将hive语句都封装到shell中,因为我个人比较擅长java 所以设想应该可以把hive写在java中,然后再走工作流调用. 就是不知道这两样都有什么优点,希望高手们指点迷津 最好基于你们遇到此问题的做法 多谢 解决方案 高手都在哪 高手都在哪 高手都在哪 解决方案二: 肯定是shell脚本好,shell容易维护,尽量不要使用java,你自己写一堆java代码,过了一段时间后,你发现自己都不认识了,使用

基于Hadoop/hive架构的网络身份识别系统的设计与实现

基于Hadoop/hive架构的网络身份识别系统的设计与实现 南京邮电大学  付倩文 本文在实际系统开发的基础上,综述了一种基于Hadoop/hive架构的网络身份识别系统设计与实现的开发方案.将各个数据源的原始数据利用MapReduce进行层层清洗后,装载入一个新建的基于事件的数据仓库.随后,利用HiveQL语言,在专业工作流控制工具的控制下,根据用户要求完成数据的分析处理工作.最后,将数据分析结果展示给用户.该系统的功能已经部分投入使用,经过实际验证,其各项性能指标均达到用户要求,有很高的实

Hadoop学习笔记(三):Hive简介

定义       Hive是一个构建在Hadoop上的数据仓库框架.可以将结构化的数据文件映射为一张数据库表,并提供完整的sql查询功能,可以将sql语句转换为MapReduce任务进行运行. 其优点是学习成本低,可以通过类SQL语句快速实现简单的MapReduce统计,不必开发专门的MapReduce应用,十分适合数据仓库的统计分析.(来自百度百科~~) metastore       metastore是Hive元数据的集中存放地,metastore包括两部分:服务和后台数据的存储.默认情况

Hadoop白皮书(4):数据仓库Hive简介

Hive 是一种建立在 Hadoop 之上的数据仓库架构.它提供了: • 一套方便的实施数据抽取(ETL)的工具. • 一种让用户对数据描述其结构的机制. • 支持用户对存储在Hadoop中的海量数据进行查询和分析的能力. Hive 的基本特点是它采用 HDFS 进行数据存储并利用 Map/Reduce 框架进行数据操作.所以从本质上来说,Hive 就是个编译器,它把用户的操作(查询或者 ETL)变换成Map/Reduce 任务,利用 Map/Reduce 框架执行这些任务以对HDFS上的海量数

Hadoop/HIVE错误解决方案大全

1.Retrying connect to server: localhost/127.0.0.1:9000. Call to localhost/127.0.0.1:9000 failed on connection exception: java.net.ConnectException: Connection refused 原因:hadoop未启动或core-site.xml中配置错误 解决方案:启动hadoop或修改配置. 2.Exception in thread "main&quo