前言
Hadoop不是历史上第一个用于数据存储和分析的分布式系统,但hadoop发展壮大到今天必然有它过人的特性。接下来就探讨下Hadoop的相关知识。
一、Hadoop是什么?
Hadoop是一个对海量数据存储和海量数据分析计算的分布式系统。
Hadoop 1.x
海量数据存储 ----> HDFS
海量数据分析计算 ----> MapReduce
Hadoop 2.x 增加
资源调度系统 ----> Yarn
从hadoop最初的原型来看,hadoop已经远远超过了本身的批处理。从广义上来说,hadoop现在可以是指更广泛的一个hadoop生态了,而不仅仅是HDFS,MapReduce和Yarn。例如Hive,Hbase,Flume,Sqoop等等项目都属于这个生态。
二、Hadoop发展
Hadoop是道格·卡丁(Doug Cutting)创建的,Hadoop起源于开源网络搜索引擎Apache Nutch,后者本身也是Lucene项目的一部分。Nutch项目面世后,面对数据量巨大的网页显示出了架构的灵活性不够。当时正好借鉴了谷歌分布式文件系统,做出了自己的开源系统NDFS分布式文件系统。第二年谷歌又发表了论文介绍了MapReduce系统,Nutch开发人员也开发出了MapReduce系统。随后NDFS和MapReduce命名为Hadoop,成为了Apache顶级项目。
从Hadoop的发展历程来看,它的思想来自于google的三篇论文。
- GFS:Google File System 分布式处理系统 ------》解决存储问题
- Mapreduce:分布式计算模型 ------》对数据进行计算处理
- BigTable:解决查询分布式存储文件慢的问题,把所有的数据存入一张表中,通过牺牲空间换取时间
在之后的学习中,我会对这三篇论文进行总结和归纳。
三、Hadoop发行版本
Hadoop三大发行版本:Apache、Cloudera、Hortonworks。
1、Apache最基础的版本,适合入门学习,可以基于此做二次开发。
官网地址:http://hadoop.apache.org/releases.html
下载地址:https://archive.apache.org/dist/hadoop/common/
2、Cloudera在大型互联网企业中用的较多。
官网地址:https://www.cloudera.com/downloads/cdh/5-10-0.html
下载地址:https://archive.cloudera.com/cdh5/redhat/7/x86_64/cdh/
3、Hortonworks文档较好。
官网地址:https://hortonworks.com/products/data-center/hdp/
下载地址:https://hortonworks.com/downloads/#data-platform
四、Hadoop优势
- 高可靠性
因为hadoop假设计算元素和存储会出现故障,因为它维护多个数据结构和副本(默认3副本),在出现故障时可以对失败的节点重新分布处理
- 高扩展性
在集群间分配任务数据,可方便的扩展数以千计的节点
思考:动态扩容如何实现?
对于添加少量的机器,可以通过手动配置或通过CDH添加
如果需要动态扩容上百台呢,而且可以根据数据量增长和减少的趋势,可以auto scaling。
- 高效性
在MapReduce的思想下,Hadoop时并行工作的,以加快任务处理速度
- 高容错性
自动保存多副本数据,并且能够自动将失败的任务重新分配
五、传统数仓与大数据存储
传统数据仓库和大数据存储概念
传统数据仓库:传统方式 DW(Data Warehouse)基于传统的关系型数据库(Oracle,Mysql)是将所有的东西共享,放在一起存储分析。
大数据存储:分布式,东西不共享,分别在不同的机器上完成存储分析,最后整合到一起。
目前传统数仓和大数据存储的区别已经渐渐模糊了。传统的关系型数据库借鉴了hadoop思想,也实现了分布式的数据存储和处理,而大数据存储也增加了索引和事物的特性。但就其存储的数据结构还是不同的,大数据存储更擅长非结构化数据和半结构化数据,而关系型数据库更擅长结构化数据
OLTP和OLCP
OLTP:联机事务处理(On-Line transaction Processing)
OLAP:联机分析处理(On-Line Analytical Processing)
OLTP是传统的关系型数据库的主要应用,主要是基本的、日常的事务处理,例如银行交易。OLTP系统强调数据库的内存效率,强调内存各种指标的命令率,强调绑定变量,强调并发操作。
OLAP是数据仓库系统的主要应用,支持复杂的分析操作,侧重决策支持,并支持提供直观易懂的查询结果,OLAP强调的数据分析,强调SQL执行市场,强调磁盘I/O,强调分区等。
区别
OLTP,联机事务处理,表示事务性非常高的系统,一般都是高可用的在线系统,以小的事务以及小的查询为主。OLTP出现瓶颈的地方在于CPU与磁盘子系统。OLTP系统也是一个数据块变化非常频繁,语句提交非常频繁的系统。
OLAP,联机分析处理,有时候也叫DSS决策支持系统,也就是我们所说的数据仓库,语句的执行量不是考核的标准,因为一条语句可能执行的时间会非常的长,读取的数据也会非常的多,所以,在这样的系统中,考核的标准往往是磁盘子系统的吞吐量(宽带),如能达到多少MB/s流量。