<强>猪强>
一种操作hadoop的轻量级脚本语言,最初又雅虎公司推出,不过现在正在走下坡路了。当初雅虎自己慢慢退出猪的维护之后将它开源贡献到开源社区由所有爱好者来维护。不过现在还是有些公司在用,不过我认为与其使用猪不如使用蜂巢。)
猪是一种数据流语言,用来快速轻松的处理巨大的数据。
猪包含两个部分:猪接口,拉丁语。
猪可以非常方便的处理HDFS和HBase的数据,和蜂巢一样,猪可以非常高效的处理其需要做的,通过直接操作猪查询可以节省大量的劳动和时间。当你想在你的数据上做一些转换,并且不想编写MapReduce工作就可以用猪。
<强>蜂巢强>
不想用程序语言开发MapReduce的朋友比如DB们,熟悉SQL的朋友可以使用蜂巢开离线的进行数据处理与分析工作。
注意蜂巢现在适合在离线下进行数据的操作,就是说不适合在挂在真实的生产环境中进行实时的在线查询或操作,因为一个字“慢”。相反
起源于FaceBook,蜂巢在Hadoop中扮演数据仓库的角色。建立在Hadoop集群的最顶层,对存储在Hadoop群上的数据提供类SQL的接口进行操作。你可以用HiveQL进行选择,加入,等等操作。
如果你有数据仓库的需求并且你擅长写SQL并且不想写MapReduce工作就可以用蜂巢代替。
<强> HBase 强>
HBase作为面向列的数据库运行在HDFS之上,HDFS缺乏随即读写操作,HBase正是为此而出现.HBase以Google BigTable为蓝本,以键值对的形式存储。项目的目标就是快速在主机内数十亿行数据中定位所需的数据并访问它。
HBase是一个数据库,一个NoSql的数据库,像其他数据库一样提供随即读写功能,Hadoop不能满足实时需要,HBase正可以满足。如果你需要实时访问一些数据,就把它存入HBase。
你可以用Hadoop作为静态数据仓库,HBase作为数据存储、放那些进行一些操作会改变的数据。
<强>猪VS蜂巢强>
蜂巢更适合于数据仓库的任务,蜂巢主要用于静态的结构以及需要经常分析的工作.Hive与SQL相似促使其成为Hadoop与其他BI工具结合的理想交集。
猪赋予开发人员在大数据集领域更多的灵活性,并允许开发简洁的脚本用于转换数据流以便嵌入到较大的应用程序。
猪相比蜂房相对轻量,它主要的优势是相比于直接使用Hadoop Java api可大幅削减代码量。正因为如此,猪仍然是吸引大量的软件开发人员。
蜂巢和猪都可以与HBase组合使用,蜂巢和猪还为HBase提供了高层语言支持,使得在HBase上进行数据统计处理变的非常简单
<强>蜂巢VS HBase 强>
蜂巢是建立在Hadoop之上为了减少MapReduce工作编写工作的批处理系统,HBase是为了支持弥补Hadoop对实时操作的缺陷的项目。
想象你在操作RMDB数据库,如果是全表扫描,就用蜂巢+ Hadoop,如果是索引访问,就用HBase + Hadoop。
蜂巢查询就是MapReduce工作可以从5分钟到数小时不止,HBase是非常高效的,肯定比蜂房高效的多。
介绍:
<强>一、什么是蜂巢? ? ? 强>
1,蜂巢是基于Hadoop的一个数据仓库工具,
2,可以将结构化的数据文件映射为一张数据库表,并提供类sql的查询功能,
3,可以将sql语句转换为mapreduce任务进行运行,
4,可以用来进行数据提取转换加载(ETL)
5,蜂巢是sql解析引擎,它将sql语句转换然成M/R工作后在Hadoop中运行。
蜂巢的表其实就是HDFS的目录/文件夹。
蜂巢表中的数据就是hdfs目录中的文件。按表名把文件夹分开。如果是分区表,则分区值是子文件夹,可以直接在M/R工作里使用这些数据。
<强> 6,蜂巢优点与缺点:强>
可以提供类SQL语句快速实现简单的mapreduce统计,不需要开发专门的mapreduce应用
<强>不支持实时查询强>
7,蜂巢数据分为真实存储的数据和元数据
<强>真实数据存储在hdfs中,元数据存储在mysql中强>
metastore元数据存储数据库
蜂巢将元数据存储在数据库中,如MySQL,德比。
蜂巢中的元数据包括表的名字,表的列和分区及其属性,表的属性(是否为外部表等),表的数据所在目录等。
二、蜂巢的体系架构: