设为首页 收藏本站
查看: 885|回复: 0

[经验分享] 大数据时代之hadoop(六):hadoop 生态圈(pig,hive,hbase,ZooKeeper,Sqoop)

[复制链接]

尚未签到

发表于 2015-9-7 10:47:32 | 显示全部楼层 |阅读模式
  hadoop是有apache基金会所开发的分布式系统基础架构,其主要提供了两方面的功能:分布式存储和分布式计算。 其中分布式存储是分布式计算的基础,在hadoop的实现里面,提供了分布式存储的接口,并自己实现了一个分布式存储的实现即HDFS,但并不代表 hadoop只支持HDFS这一中实现,其同时支持别的存储系统,并在别的存储系统上运行分布式计算程序(mapreduce)。
  
DSC0000.jpg
  
        从开发角度来说,hadoop给开发人员预留了两个接口,即map接口和reduce接口,而整个作业的处理流程是固定的,即用户所能做的就是根据具体的项目需求来找到合适的方法实现自己的map函数和reduce函数,从而达到目的。
  
        从整体上来学习hadoop毕竟还是有点难度的,但已经有一些开源的工具已经替我们做了很多,如pig,hive,hbase等,本节的重点在于了解这些构建在hadoop基础之上的一些开源工具,也可称为hadoop的生态圈吧。
  
1、pig
DSC0001.jpg
        pigs eat anything!
  
      pig 是Yahoo 为了让研究员和工程师能够更简单的挖掘大规模数据集而发明的。
  
      pig为大型数据集的处理提供了更高层次的抽象。MapReduce使程序员能够自定定义连续执行的map和reduce函数。但是,数据处理通常需要多个mapreduce过程才能实现,所以将数据处理要求改写成mapreduce模式很复杂的。
  
    与mapreduce相比,pig提供了更丰富的数据结构,还提供了一套强大的数据变换操作。
  
    Pig包括两部分:
          用于描述数据流的语言,称为pig latin。
          用于运行pig latin程序的执行环境。用两种模式:单JVM中的本地环境和hadoop集群上的分布式执行环境
           一个pig latin程序有一系列的“操作(operation)”和“变换(transformation)”组成。每个操作或变换对输入进行处理,然后产生输出结果。这些操作整体上描述了一个数据流。Pig执行环境把数据流翻译成可执行的内部表示,并运行它。
  
示例:



[html] view plaincopyprint?

  • --加载数据,并按照as 后指定的格式加载
  • records = load ‘/home/user/input/temperature1.txt’ as (year: chararray,temperature: int);  
  • --打印records 对象
  • dump records;
  • describe records;
  • --过滤掉temperature!=999的数据
  • valid_records = filter records by temperature!=999;  
  • --按year分组
  • grouped_records = group valid_records by year;  
  • dump grouped_records;
  • describe grouped_records;
  • --取最大数
  • max_temperature = foreach grouped_records generate group,MAX(valid_records.temperature);  
  • --备注:valid_records是字段名,在上一语句的describe命令结果中可以查看到group_records 的具体结构。
  • dump max_temperature;
  
与传统数据库比较:
  
          pig latin 是一种数据流编程语言,而SQL是一种描述性编程语言。
        pig 不支持事物和索引,不支持低延时查询
  
2、hive
DSC0002.jpg
         Hive是一个构建在hadoop上的数据仓库框架,它的设计目的是让精通SQL技能分析师能够在facebook存放在hdfs的大规模数据集进行查询。
  
         HIVE会把查询转换为一系列在hadoop集群上运行的mapreduce作业。hive把数据组织为表,通过这种方式为存储在HDFS的数据赋予结构。元数据如表模式存储在名为metastore的数据库中。
  
示例:
  



[html] view plaincopyprint? DSC0003.jpg DSC0004.jpg

  • (1)创建表

  • CREATE TABLE csdn (username STRING,passw STRING,mailaddr STRING) row format delimited fields terminated by '#';

  • (2)load本地文件进csdn表:

  • LOAD DATA LOCAL INPATH '/home/development/csdnfile' OVERWRITE INTO TABLE csdn;

  • (3) 执行查询并将结果输出至本地目录:

  • INSERT OVERWRITE LOCAL DIRECTORY '/home/development/csdntop' SELECT passw,count(*) as passwdnum FROM csdn group by passw order by passwdnum desc;
  

  与传统数据库比较:
  
    hive介于pig和传统RDBMS之间,hive的查询语言HiveQL,是基于SQL的。
    hive对数据的验证并不在加载数据时进行,而在查询时进行,称为“读时模式”,而传统的数据库是“写实模式”。
    hive也不支持事物和索引,不支持低延时查询。
  
3、hbase

         HBase是一个在HDFS上开发的面向列的分布式数据库,并支持实时地随机读写超大规模数据集
  
       hbase是我们能够在廉价硬件构成的集群上管理超大规模的稀疏表
  
数据模型
  
   在hbase中,表格是由版本的,单元格的内容是字节数组,表中的行的主键也是字节数组,所有对表的访问都要通过标的主键。
  
   一个表的列族必须作为表模式定义的一部分预先给出,但是列族中新的列成员可以随后按需加入。
  
     hbase是有一个面向列族的存储器,即按列族存储。hbase在水平方向上把表分采“区域”存储,每个区域有表中的子集构成。
  
   hbase是一个分布式的、面向列的数据存储系统

4、ZooKeeper


           ZooKeeper是hadoop的分布式协调服务,诞生于Yahoo公司。
  
         ZooKeeper提供了一组工具,使我们在构建分布式引用时能够对部分失败进行处理
  
5、Sqoop
  Sqoop是一个开源工具,它允许用户将数据从关系型数据库抽取到hadoop中,用以进一步处理。抽取处理的数据可以被mapreduce程序使用,也可以被其他类似于hive的工具使用。一旦形成分析结果,Sqoop便可以将这些结果导回数据库,供其他客户端使用。

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-110494-1-1.html 上篇帖子: ZooKeeper系列之一:ZooKeeper简介 下篇帖子: HDFS, YARN, HBase, Hive, ZooKeeper端口说明
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表