你会大数据吗?我不会
学习大数据相关知识,需要掌握的技术栈
大数据存储框架
- hadoop
- 分布式存储HDFS(Hadoop Distributed File System)+分布式计算(MapReduce)
- 优点:非常适合处理超大规模的数据集(TB,PB量级),非常不适合处理大量小文件,Hadoop一次写入,多次读写。Hadoop不支持随机修改文件
- 缺点:Hadoop数据处理高延迟,数据的实时性不高。原因很显然,因为处理的数据规模非常大且是以分布式方式存储,读写访问需要花费更多时间
- hadoop的特点总结:不适合低延迟数据访问、无法高效存储大量小文件、不支持多用户写入及任意修改文件
- hbase
- Hbase是一种NoSQL数据库。HBase是非关系型数据库(Nosql),在某些业务场景下,数据存储查询在Hbase的使用效率更高
- hive
- 简单说,Hive提供了一种独特的SQL查询语句,使得熟悉SQL的开发者通过编写SQL语句即可访问Hadoop存储的海量数据,通过hive的SQL查询语句,开发者可以在一定程度上绕过MapReduce。hive可以用SQL的语言转化成Map Reduce任务对hdfs数据的查询分析。hive的使用者无需写Map Reduce任务,掌握SQL可完成查询分析工作
- kudu
1. 背景介绍
- 在 Kudu之前,大数据主要以两种方式存储,静态数据和动态数据
- 静态数据:以 HDFS 引擎作为存储引擎,适用于高吞吐量的离线大数据分析场景;这类存储的局限性是数据无法进行随机的读写
- 动态数据:以HBase、Cassandra作为存储引擎,适用于大数据随机读写场景;这类存储的局限性是批量读取吞吐量远不如HDFS,不适用于批量数据分析的场景
- 静态数据和动态数据的边界问题:从上面分析可知,两种数据在存储方式上完全不同,进而导致使用场景完全不同,但在真实的场景中,边界可能没有那么清晰,面对既需要随机读写,又需要批量分析的大数据场景,该如何选择呢?这个场景中,单种存储引擎无法满足业务需求,需要通过多种大数据工具组合来满足这一需求。如上图所示,数据实时写入 HBase,实时的数据更新也在HBase完成,为了应对 OLAP需求,定时(通常是 T+1或者 T+H)将 HBase数据写成静态的文件(如:Parquet)导入到 OLAP引擎(如:HDFS)。 这一架构能满足既需要随机读写,又可以支持 OLAP 分析的场景,但它有如下 缺点:架构复杂 。从架构上看,数据在 HBase、消息队列、 HDFS 间流转,涉及环节太多,运维成本很高。并且每个环节需要保证高可用,都需要维护多个副本,存储空间也有一定的浪费。最后数据在多个系统上,对数据安全策略、监控等都提出了挑战。 时效性低 。数据从 HBase导出成静态文件是周期性的,一般这个周期是一天(或一小时),在时效性上不是很高。难以应对后续的更新。 真实场景中,总会有数据是延迟到达的。如果这些数据之前已经从 HBase
导出到 HDFS,新到的变更数据就难以处理了,一个方案是把原有数据应用上新的变更后重写
一遍,但这代价又很高。为了解决上述架构的这些问题, Kudu应运而生。 Kudu的定位是 Fast Analytics on Fast Data,是一个既支持随机读写、又支持OLAP分析的大数据存储引擎。
从上图可以看出,KUDU 是一个折中的产品 ,在 HDFS和 HBase这两个偏科生中平衡了随
机读写和批量分析的性能。从KUDU的诞生可以说明一 个观点:底层的技术发展很多时候都是上
层的业务推动的,脱离业务的技术很可能是空中楼阁。
- 硬件设备:内存(RAM)的技术发展非常快,它变得越来越便宜,容量也越来越大。Cloudera的客户数据显示,他们的客户所部署的服务器, 2012年每个节点仅有 32GB RAM,现如今增长到每个节点有128GB或 256GB RAM。存储设备上更新也非常快,在很多普通服务器中部署 SSD也是屡见不鲜。
HBase、HDFS、以及其他的 Hadoop工具都在不断自我完善,从而适应硬件上的升级换代。然而,
从根本上,HDFS基于03年GFS,HBase基于05年BigTable,在当时系统瓶颈主要取决于底层磁盘速
度。当磁盘速度较慢时,CPU利用率不足的根本原因是磁盘速度导致的瓶颈,当磁盘速度提高了之
后,CPU利用率提高,这时候CPU往往成为系统的瓶颈。HBase、HDFS由于年代久远,已经很难从基本架构上进行修改,而Kudu是基于全新的设计,因此可以更充分地利用 RAM、I/O资源,并优化CPU利用率。
可以理解为:Kudu相比与以往的系统,CPU使用降低了,I/O的使用提高了,RAM的利用更充分了
- kudu是什么:Apache Kudu是由Cloudera开源的存储引擎 ,可以同时提供低延迟的随机读写和高效的数据析能力,它是一个融合 HDFS和 HBase的功能的新组件,具备介于两者之间的新存储组件。
Kudu支持水平扩展,并且与Cloudera Impala和 Apache Spark等当前流行的大数据查询和分析工具结合紧密
- kudu的应用场景:Kudu的很多特性跟 HBase很像,它支持索引键的查询和修改, Cloudera曾经想过基于HBase进行修改,然而结论是对HBase的改动非常大, Kudu的数据模型和磁盘存储都Hbase不同。HBase本身成功的适用于大量的其它场景,因此修改HBase很可能吃力不讨好。最后Cloudera决定开发一个全新的存储系统。
- Strong performance for both scan and random access to help customers simplify complex hybrid architectures(适用于那些既有随机访问,也有批量数据扫描的复合场景 )
- High CPU efficiency in order to maximize the return on investment that our customers are making in modern processors( 高计算量的场景 )
- High IO efficiency in order to leverage modern persistent storage( 使用了高性能的存储设备,包括使用更多的内存 )
- The ability to upDATE data in place, to avoid extraneous processing and data movement( 支持数据更新,避免数据反复迁移 )
- The ability to support active-active replicated clusters that span multiple data centers in geographically distant locations(支持跨地域的实时数据备份和查询 )
大数据分析框架
数据挖掘和机器学习框架
- scikit-learn
- TensorFlow
- Spark MLlib
数据可视化与报表框架
其他辅助工具框架