• 扩充分布式系统Hadoop的强大工具组合
    时间:2012-06-03   作者:佚名   出处:互联网

    Apache基金会规划的Hadoop体系中还有许多牛B的周边方案,如可支持SQL语法的Hive,不懂Java也能撰写MapReduce的Pig,这些都是开发者不能错过的Hadoop相关方案哦。

    HDFS和MapReduce只是打造Hadoop平台最基本的核心套件,在Apache基金会的网站中还有其他的相关开源套件,共同组成了一个Hadoop体系(Hadoop Ecosystem)。

    透过这些相关方案的延伸,开发人员就算不懂Java,也可以用特定Script语言来撰写Hadoop上的MapReduce程序,甚至可以用SQL语法来查询HDFS上的资料。这些周边方案可说是大幅强化Hadoop功能的软体军火库,想要善用Hadoop的开发人员不可错过。其中重要的周边方案包括HBase、Hive 、ZooKeeper、Pig和Mahout。

    HBase 能容纳PB资料量的分散式资料库

    HBase是专门用於Hadoop档案系统上的资料库系统,採取Column-Oriented 资料库设计,不同於传统的关联式资料库,例如没有资料表、Schema资料架构等功能,而是採用Key-Value形式的资料架构,每笔资料都有一个Key值对应到一个Value值,再透过多维度的对应关係来建立类似表格效果的资料架构。如此就能採取分散式储存方式,可以扩充到数千臺服务器,以应付PB等级的资料处理。

    Hive 可用SQL语法存取Hadoop资料

    Hive是建置在HDFS上的一套分散式资料仓储系统,可让使用者以惯用的SQL语法,来存取Hadoop档案中的大型资料集,例如可以使用Join、Group by、Order by等,而这个语法称为Hive QL。不过,Hive QL和SQL并非完全相同,例如Hive就不支援Store Procedure、Trigger等功能。

    Hive会将使用者输入的Hive QL指令编译成Java程序,再来存取HDFS档案系统上的资料,所以,执行效率依指令复杂度和处理的资料量而异,可能有数秒鐘,甚至是数分鐘的延迟。和HBase相比,Hive容易使用且弹性高,但执行速度较慢。不少资料库系统,都是透过先连结到Hive,才能与Hadoop整合。例如微软就是透过Hive ODBC驱动程序,将SQL指令转换成Hive QL,让Excel可以存取Hadoop上的资料。

    在同一个Hadoop丛集中,Hive可以存取HBase上的资料,将HBase上的资料对应成Hive内的一个表格。

    Pig 不懂Java开发也能写MapReduce

    Pig提供了一个Script语言Pig Latin,语法简单,类似可读性高的高阶Basic语言,可用来撰写MapReduce程序。Pig会自动将这些脚本程序转换,成为能在Hadoop中执行的MapReduce Java程序。

    因此,使用者即使不懂Java也能撰写出MapReduce。不过,一般来说,透过Pig脚本程序转换,会比直接用Java撰写MapReduce的效能降低了25%。

    ZooKeeper 让Hadoop内部服务器能协同运作

    Zookeeper是监控和协调Hadoop分散式运作的集中式服务,可提供各个服务器的配置和运作状态资讯,用於提供不同Hadoop系统角色之间的工作协调。

    以HBase资料库为例,其中有两种服务器角色:Region服务器角色和Master服务器角色,系统会自动透过ZooKeeper监看Master服务器的状态,一旦Master的运作资讯消失,代表当机或网路断线,HBase就会选出另一臺Region服务器成为Mater角色来负责管理工作。

    Mahout 即时可用的常用MapReduce函数库

    在Hadoop中,开发人员必须将资料处理作法拆解成可分散运算的Map和Reduce程序,因为思考逻辑和常见的程序开发逻辑不同,所以开发难度狠高。Mahout则提供了一个常用的MapReduce函式库,常见的数值分析方法、丛集分类和筛选方式,都已经有对应的MapReduce函数可呼叫,开发人员就不必再重复开发一次。

    网友留言/评论

    我要留言/评论

    相关文章

    Redis学习之主从复制介绍:redis主从复制配置和使用都非常简单。通过主从复制可以允许多个slave server拥有和master server相同的数据库副本。
    Redis学习之Sorted-Sets数据类型介绍:redis是一个key-value存储系统。和Memcached类似,它支持存储的value类型相对更多,包括string(字符串)、list(链表)、set(集合)和zset(有序集合)。这些数据类型都支持push/pop、add/remove及取交集并集和差集及更丰富的操作,而且这些操作都是原子性的。在此基础上,redis支持各种不同方式的排序。与memcached一样,为了保证效率,数据都是缓存在内存中。区别的是redis会周期性的把更新的数据写入磁盘或者把修改操作写入追加的记录文件,并且在此基础上实现了master-slave(主从)同步。本文将介绍Redis之Sorted-Sets数据类型。
    使用Memcache存储一些注意点:Memcache使用了Slab Allocator的内存分配机制:按照预先规定的大小,将分配的内存分割成特定长度的块,以完全解决内存碎片问题
    浅谈Squid在图片存储架构中的应用:将近快一个月没写文章了,太懒散了,今天振作了一下,写了篇关于Squid的文章,Squid作为分布式代理缓存服务器真的非常的棒,希望本文对你有帮助。
    运维必须要知道的几个 Linux 服务器监控命令:如果你是个运维管理同学,如果你想知道你的服务器正在做干什么,你就需要了解一些基本的命令,一旦你精通了这些命令,那你就是一个 专业的 Linux 系统管理员。
    SMTP的相关流程和命令介绍:SMTP(Simple Mail Transfer Protocol)即简单邮件传输协议,它是一组用于由源地址到目的地址传送邮件的规则,由它来控制信件的中转方式。SMTP协议属于TCP/IP协议族,它帮助每台计算机在发送或中转信件时找到下一个目的地。通过SMTP协议所指定的服务器,就可以把E-mail寄到收信人的服务器上了,整个过程只要几分钟。SMTP服务器则是遵循SMTP协议的发送邮件服务器,用来发送或中转发出的电子邮件。
    基于Facebook和Flash平台的应用架构解析(三):Flash平台可帮助你构建富用户体验的应用,而Facebook平台可帮助你构建富社会化体验的应用。将二者合而为一,你就可以构建高交互性、富于表现力,并融入了社会化功能的杀手级应用了。
    基于Facebook和Flash平台的应用架构解析(二):Flash平台可帮助你构建富用户体验的应用,而Facebook平台可帮助你构建富社会化体验的应用。将二者合而为一,你就可以构建高交互性、富于表现力,并融入了社会化功能的杀手级应用了。
    基于Facebook和Flash平台的应用架构解析(一):Flash平台可帮助你构建富用户体验的应用,而Facebook平台可帮助你构建富社会化体验的应用。将二者合而为一,你就可以构建高交互性、富于表现力,并融入了社会化功能的杀手级应用了。
    由12306.cn谈谈网站性能技术:12306.cn网站挂了,被全国人民骂了。我这两天也在思考这个事,我想以这个事来粗略地和大家讨论一下网站性能的问题。因为仓促,而且完全基于本人有限的经验和了解,所以,如果有什么问题还请大家一起讨论和指正。(这又是一篇长文,只讨论性能问题,不讨论那些UI,用户体验,或是是否把支付和购票下单环节分开的功能性的东西)