浅谈Hadoop

大数据的概念炒了好多年了,很显然这项技术经受住了时间的考验,不是有些人想的那样华而不实,多年来总是伴随着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中只在数据处理的时候才进行解释,在这方面可能显得更加轻量级。






优秀的个人博客,低调大师

微信关注我们

原文链接:https://yq.aliyun.com/articles/286891

转载内容版权归作者及来源网站所有!

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。

相关文章

发表评论

资源下载

更多资源
Mario,低调大师唯一一个Java游戏作品

Mario,低调大师唯一一个Java游戏作品

马里奥是站在游戏界顶峰的超人气多面角色。马里奥靠吃蘑菇成长,特征是大鼻子、头戴帽子、身穿背带裤,还留着胡子。与他的双胞胎兄弟路易基一起,长年担任任天堂的招牌角色。

Eclipse(集成开发环境)

Eclipse(集成开发环境)

Eclipse 是一个开放源代码的、基于Java的可扩展开发平台。就其本身而言,它只是一个框架和一组服务,用于通过插件组件构建开发环境。幸运的是,Eclipse 附带了一个标准的插件集,包括Java开发工具(Java Development Kit,JDK)。

Java Development Kit(Java开发工具)

Java Development Kit(Java开发工具)

JDK是 Java 语言的软件开发工具包,主要用于移动设备、嵌入式设备上的java应用程序。JDK是整个java开发的核心,它包含了JAVA的运行环境(JVM+Java系统类库)和JAVA工具。

Sublime Text 一个代码编辑器

Sublime Text 一个代码编辑器

Sublime Text具有漂亮的用户界面和强大的功能,例如代码缩略图,Python的插件,代码段等。还可自定义键绑定,菜单和工具栏。Sublime Text 的主要功能包括:拼写检查,书签,完整的 Python API , Goto 功能,即时项目切换,多选择,多窗口等等。Sublime Text 是一个跨平台的编辑器,同时支持Windows、Linux、Mac OS X等操作系统。