大数据技术导论
1. why?什么学习这门课?原因
5G时代,随着PC、手机终端、物联网端万物互联时代的到来,迎来了海量数据时代,即大数据时代。
之前在关系型库时代,以行列二维表格形式,用来存储结构化数据,关系型数据库时代即将落下帷幕,或者确切点是即将为云计算时代的大数据库做铺垫。前端时间在中国闹的很厉害的Oracle裁员事件,因为随着云计算时代,云计算从Iass逐渐向PaaS和SaaS发展时,云计算技术体系对于Oracle等传统数据库服务商的冲击就比较明显了,因为云端采用传统数据库的场景已经越来越少了。在云计算时代,我们已经不用关注客户用的是哪种类型的数据库。
该课程名为《大数据库》,实际上就是云计算时代,大数据应用、开发、数据挖掘、处理的数据库综合课程,所以,学习该门课程非常有必要,为自己以后的求职工作打下坚实的基础。
从技术层面分析,原因有四点:
1. 关系模型束缚对海量数据的快速访问能力。关系模型是按内容访问的模型,即根据列值来定位相应的行,优点快速查找,缺点,耗时IO,可以扩充水平分区和垂直分区优化数据库系统,来降低IO访问,提升性能,但是在海量数据时代,这种分区带来的性能改善并不明显。
2. 缺乏海量数据访问灵活性。用户查询希望具有极大的灵活性,可以提任何问题,可以针对任何数据提问题,可以在任何时间提问题,无论有任何问题,都可以得到快速的回答。
3. 对非结构化数据处理能力薄弱。传统的RDBMS,对数据处理局限性在数字、字符等,随着大数据时代的到来,数据的多样性开始呈现,用户对数据处理要求从存储上升为识别、检索和深加工,数据有声音、图像、时间序列号、视频、模拟型号等。
4. 海量数据导致存储成本、维护管理成本不断增加。
2. what?是什么?该门课概括起来实际上包含了大数据时代的4类技术
2.1 列式数据库
2.2内存数据库
2.3键值(对)数据库
2.4流式数据库
接下来重点说下Hbase。官网对于hbase的定义:
这是 Apache HBase的官方文档, Hbase是一个分布式,版本化(versioned),构建在 Apache Hadoop和 Apache ZooKeeper上的列数据库。
3. 应用场景(where)
能做什么?
拿Hbase来说,可以存储数据为上百亿行和上百万列,一般RDBMS列不超过254,oracle现在扩充到了1000个,有列的限制。可以海量数据存储,百毫秒之内的准实时查询。
使用场景
交通:GPS基本信息、对交通做辅助决策、摄像头信息量大
金融:贷款信息、还款信息、抵押信息等
电商:浏览日志、购买、退货、关注、交易、物流信息都可以放Hbase
移动:通话、记录、
HBase特点:
容量大:上百亿行和上百万列
面向列存储:可以动态增加列
多版本:例如个人的住址信息变化 version
稀疏性:不给空的字段赋值
扩展性:底层依赖于HDFS,当磁盘空间不够的时候,动态增加DataNode扩容。
高可靠性:容易理解,在分布式环境下,基于HDFS的副本数机制
高性能:写和读的性能,写基于LSM(逻辑数结构合并)和RowKey(行键)机制。
Region划分保证了分区随机读取。
概念:
3.1 列式数据库,如Hbase
行式数据库:
1.数据是按行存储的
2.没有建立索引的查询将消耗很大的io
3.建立索引和视图需要花费一定的物理空间和时间资源
4.面对大量的查询,复杂的查询,数据库必须被大量膨胀才能满足性能需求
列式数据库:
1.数据是按列存储的,每一列单独存放
2.数据既是索引
3.只访问查询涉及的列,大量降低系统io
4.每一列有一个线索来处理,支持查询的高并发
5.数据类型一致,数据特征相似,高效的压缩
为什么可以大量降低系统io:
比如查询表中所有人的名字;行式数据库需要查询所有行,列式数据库只需要查询name列.
行式与列式数据库优缺点:
根据实际的业务场景来选择对应的数据库系统.传统的crud操作应用适合行式数据库(表之间有关联关系);列式数据库适用于数据仓库,数据分析,海量存储,涉及到不经常更新的数据库,列式在并行查询,压缩上更有优势。
Zookeeper作用在于:
1、hbase regionserver 向zookeeper注册,提供hbase regionserver状态信息(是否在线)。
2、hmaster启动时候会将hbase系统表-ROOT- 加载到 zookeeper cluster,通过zookeeper cluster可以获取当前系统表.META.的存储所对应的regionserver信息。
通俗理解:如果namenode,HMaster宕机后,这时候Zookeeper 的重新选出leader。这是它最大的作用所在。
Hbase的表结构模型,不需要先指定列,需要指定列簇,实际就是面向列簇的数据库。
这个图有点难以理解,我下面使用简单的格式图给大家讲下,方便大家理解:
比如说我们在求职的时候,按照这个构建我们的Hbase表结构
把分类化为列簇,使用上更为灵活!
总结:
1.
HIVE:
数据仓库
OLAP(联机分析处理)工具,On-line analytical Processing
以前OLTP(联机事务处理)工具,On-line transaction Processing
ETL:数据提取,
3.2
Spark的四大优点
快:与Hadoop的MapReduce相比,Spark基于内存的运算要快100倍以上;而基于磁盘的运算也要快10倍以上。Spark实现了高效的DAG执行引擎,可以通过基于内存来高效地处理数据流。
容易使用:Spark支持Java、Python和Scala的API,还支持超过80种高级算法,使用户可以快速构建不同应用。而且Spark支持交互式的Python和Scala的Shell,这意味着可以非常方便的在这些Shell中使用Spark集群来验证解决问题的方法,而不是像以前一样,需要打包、上传集群、验证等。这对于原型开发非常重要。
通用性:Spark提供了统一的解决方案。Spark可以用于批处理、交互式查询(通用Spark SQL)、实时流处理(通过Spark Streaming)、机器学习(通过Spark MLlib)和图计算(通过Spark GraphX)。
这些不同类型的处理都可以在同一应用中无缝使用。Spark统一的解决方案非常具有吸引力,毕竟任何公司都想用统一的平台处理问题,减少开发和维护的人力成本和部署平台的物理成本。当然还有,作为统一的解决方案,Spark并没有以牺牲性能为代价。相反,在性能方面Spark具有巨大优势。
可融合性:Spark非常方便的与其他开源产品进行融合。比如,Spark可以使用Hadoop的YARN和Apache Mesos作为它的资源管理和调度器,并且可以处理所有Hadoop支持的数据,包括HDFS、HBase和Cassanda等。这对于已部署Hadoop集群的用户特别重要,因为不需要做任何数据迁移就可以使用Spark强大的处理能力。Spark也可以不依赖第三方的资源管理器和调度器,它实现了Standalone作为其内置资源管理器和调度框架,这样进一步降低了Spark的使用门槛,使得所有人可以非常容易地部署和使用Spark。此外Spark还提供了在EC2上部署Standalone的Spark集群的工具。
3.3
1. 缓存技术出现的原因
抢票、抢房、抢座等场景,资源有限,客户端非常多。
为了应对高并发、大流量、大数据量,提高效率。
2. redis热点:
2.1 NOSQL:Not Only SQL
2.2 高性能、持久存储、高并发 10万次/s+
2.3 基于键值对类型 1G
2.4内存数据库
2.5异步操作
2.6较小数据
Redis是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。从2010年3月15日起,Redis的开发工作由VMware主持。从2013年5月开始,Redis的开发由Pivotal赞助。
3. redis的数据类型
3.1 String类型,本质是字节数组
3.2 list类型,动态集合
3.3 set集合,无序集合
3.4 sorted set(有序集合)
3.5 hash(哈希表)
- 点赞
- 收藏
- 关注作者
评论(0)