ITPub博客

浅谈Hadoop

原创 Hadoop 作者:jeanron100 时间:2015-03-21 23:15:23 0 删除 编辑
大数据的概念炒了好多年了,很显然这项技术经受住了时间的考验,不是有些人想的那样华而不实,多年来总是伴随着Hadoop的身影越发壮大。
这些年来数据的增长量真是发生了天翻地覆的变化,原来大家过年的时候都会很认真的拍一张全家福,恨不得把胶卷能够正反两用,多存点照片,现在好了,手机各类终端齐上阵,微博,微信,图片,小视频,所有的数据真是应有尽有。数据量上来了,数据的分析工作就显得尤为重要了。用现在很形象的一种描述就是,让数据说话。
Hadoop的使命就是主要海量数据的存储和分析,也有两个核心的功能,一个是HDFS,一个就是MapReduce。怎么理解呢,HDFS就是Hadoop Distributed FileSystem, MapReduce是一个编程模型,所做的工作是map和reduce两部分,这些海量数据需要存储,这个很容易理解,那么什么是MapReduce呢?
举一个简单的例子。
我们存在一些文本数据,是关于pm2.5的。记录了每天的数据情况。内容如下:
20150321 01 60
20150321 06 50
20150321 12 100
20150320 01 200
20150320 06 150
20150320 12 160
20150319 01 150

20150319 06 200
如果我们想知道这些数据中每天的pm2.5最高的值,不需要精确到小时,按天即可。
我们可以做一个映射,这个操作就是类似map部分。
20150321  60
20150321  50
20150321  100
20150320  200
20150320  150
20150320  160
20150319  150
20150319  200

然后进一步处理得到
20150321    (60,505,100)
20150320   (200,150,160)
20150319   (150,200)
这个处理就是一个类似map的操作。把数据做了映射。

reduce的部分,来看看进一步的处理,对于每天的数据,查看最大的值。

20150321    (100)
20150320   (200)
20150319   (200)
这就是一个基本的MapReduce的过程,因为是一个编程模型,可以通过多种语言来实现。这也是Hadoop精明的地方之一,就跟Java中的Servlet一样,定义一个借口,借口的实现根据不同的web容器来具体实现。
Hadoop其实还有很有的组件,
比如Pig是一种数据流艳艳和运行环境,通常用来检索非常大的数据集
Hive是一个分布式,按列存储的数据仓库,管理HDFS中的数据。
HBase是一个分布式,按列存储的数据库
ZooKeeper是一个分布式,高可用性的协调服务。
Sqoop是HDF和数据库之间传输数据的工具
Avro是一种支持高校,跨语言的RPC和永久存储数据的序列化系统
如果这么扩展,一下子感觉Hadoop抽象起来,高不可攀,不过核心的部分还是HDFS和MapReduce.深入理解这两个部分也是作为学习Hadoop的基础。
原以为大数据总是和数据库 有着千丝万缕的联系,但是大数据的书中似乎都在尽力去撇清和传统关系型数据库的关系。
翻看了一些书,加上一些自己的理解,拿oracle来比较,我认为主要有以下几个方面。
首先是处理的数据量上Hadoop面向的是P级,而传统数据库是G,T级,一般大型库在T级也高不过几百T。
其次Hadoop的分布式存储一个很明显的差别,分布式的思想会尽可能希望数据能够分布得更散。而oracle的设计思想就是share everything,尽可能的把数据都汇总起来共享,Oracle中的RAC+ASM尤其说明了它的这种特点。无论你通过多少个实例来达到高可用性,但是数据源都是同一处共享存储,加上自动化存储管理,不过oracle中ASM所做的工作和HDFS有些类似。
在数据的处理上,关系型数据库处理xml数据或者clob,blob数据总是一件比较纠结的事情,性能是一大硬伤。比如海量的图片,在oracle中就只能是blob的存储了,而这些数据在Hadoop中只在数据处理的时候才进行解释,在这方面可能显得更加轻量级。






下一篇: MongoDB初探第二篇
请登录后发表评论 登录
全部评论

注册时间:2012-05-14

  • 博文量
    1667
  • 访问量
    14184919