一、Hadoop能够解决的问题
Hadoop解决的问题就是大数据存储和运算问题。
这里要说一个宏观的问题,就是大数据产业链,来说明Hadoop在产业链中所处的位置,以便于更好的理解Hadoop是做什么的。
所谓大数据的产业链,就像于普通商品的产业链,普通商品的产业链先是原材料的搜集、原材料的预加工、深加工、 制造成各种各样的商品、最终销售变现获得利润。
大数据产业链可以分为三个阶段:
- 大数据收集、整理阶段;
- 大数据存储、处理阶段;
- 大数据应用、变现阶段;
Hadoop是用来解决第二步,大数据存储、处理问题的技术的。
拿一般的企业而言,数据的搜集渠道很多,也已经有了,比如订单数据、PV、UV数据等等。搜集到数据这是第一步。
第二步是如何存储和运算这些大数据,这个就是Hadoop擅长的事情,Hadoop为存储和处理大数据提供了解决方案。
第三步是和具体业务相关的,是从需求的角度为出发点利用第二步中存储的大数据,比如想做一个基于PV、UV的用户行为分析的应用程序,来指导如何优化页面和流程,以便于更好的引导客户下单,从而实现利润。
二、Hadoop核心和概念
Hadoop是存储和处理大数据的解决方案,相对应地Hadoop的核心就两个:
1、 HDFS:HDFS是分布式文件系统,提供了数据存储的方案。
2、 MapReduce:MapReduce是平行运算架构,提供了数据处理的的解决方案。
Hadoop概念分狭义的和广义的:
1、 狭义的Hadoop只是Hadoop本身 (HDFS+MapReduce)。
2、 广义的Hadoop其实是泛指在HDFS+MapReduce核心上衍生出来的一个Hadoop生态系统。
三、Hadoop生态系统
1、 Hadoop生态系统
2、生态系统的核心:
(1) HDFS和MapReduce是Hadoop的核心,一个负责数据存储,一个负责数据处理
(2) HDFS特点是分布式存储、顺序读、只能追加
- 分布式:会将一个文件分割后存储在不同的节点,
- 流式访问:只能从前往后读取,几乎每次读取都要读取全部数据。
- 只能追加:HDFS中,数据写入只能追加到文件的末尾,不支持随机读写。
(3) MapReduce是线性的、可伸缩的编程模型,核心是两个函数:map()和reduce();
- 线性表现在:所有的数据处理都是顺序执行map()和reduce()。
- 可伸缩表现在:可以在很多运算节点并行执行,而节点数量理论上是可以无限增加的。
3、衍生的项目:
- Sqoop: Hadoop的数据来源往往是原有的关系型数据库,经过Hadoop的处理后,往往是把结果数据再存入关系型数据库中,所以Sqoop就是用来做数据导入导出的,Sqoop是关系型数据库和HDFS之间数据的传输桥梁。
- HBase是在HDFS基础上开发的面向列的分布式数据库。 它用巧妙的方式解决了不违反HDFS存取规则的前提下,提供随机读写、实时响应的功能。
- ChukWa是一个对整个Hadoop系统的运行情况进行分析和反馈的工具。
- ZooKeeper: Hadoop可以是分布式大集群系统,必然各个节点间的协调变的很复杂,ZooKeeper就是为分布式应用程序开发的协调服务。
- Pig: Hadoop中数据处理的机制就是通过MapReduce来线性地执行各个map()和reduce()函数来操作,要写大量的map函数和reduce函数,雅虎开发了Pig ,Pig会转换为一堆map、reduce函数来执行,简化开发。
- Hive:雅虎有Pig,Fackbook也有自己的解决方案,开发了Hive。Hive更像SQL的语法,但是最终还是翻译为map、reduce函数来执行
- 总结:整个Hadoop生态系统中,HDFS和MapReduce是比较底层的东西,实际应用开发时,不太可能会用到,而是利用基于它们这两个核心之上的各种工具来开发。
4、用SqlServer数据库理解Hadoop生态系统
SqlServer数据库解决的问题是数据存储和对数据的增删改查等处理操作;Hadoop也是解决的是数据的存储和处理操作。所以可以对他们进行对比,很多都能匹配的上,虽然有些牵强,但是对理解Hadoop有一些帮助。
Hadoop生态系统 |
| SqlServer数据库系统 |
HDFS |
| 数据库 |
MapReduce |
| 数据库管理系统 |
Hadoop |
| 数据库系统 |
Pig |
| 查询规划器 |
Hive |
| SQL语言 |
Sqoop |
| 导入导出工具 |
ZooKeeper |
|
|
Chukwa |
| SqlServer Profiler |