数据源相关的技术栈有:
目录
一、Hadoop
二、Hbase
三、Hive
四、Apollo
五、Kibana
六、Spark
七、ZooKeeper
八、Redis
一、Hadoop
1、简介:
Hadoop是在分布式服务器集群上存储海量数据并运行分布式分析应用的开源框架,核心是HDFS和MapReduce。
HDFS是一个分布式文件系统,引入存放文件元数据信息的服务器Namenode和实际存放数据的服务器Datanode,对数据进行分布式存储和读取;
MapReduce是一个计算框架,核心思想是把计算任务分配给集群内的服务器里执行。通过对计算任务的拆分(Map计算/Reduce计算)再根据任务调度器(JobTracker)对任务进行分布式计算。
2、组件:
重要组件有:
Hbase:来源于Google的BigTable;是一个高可靠性、高性能、面向列、可伸缩的分布式数据库。
Hive:是一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表,通过类SQL语句快速实现简单的MapReduce统计,不必开发专门的MapReduce应用,十分适合数据仓库的统计分析。
Pig:是一个基于Hadoop的大规模数据分析工具,它提供的SQL-LIKE语言叫Pig Latin,该语言的编译器会把类SQL的数据分析请求转换为一系列经过优化处理的MapReduce运算。
ZooKeeper:来源于Google的Chubby;它主要是用来解决分布式应用中经常遇到的一些数据管理问题,简化分布式应用协调及其管理的难度。
Ambari:Hadoop管理工具,可以快捷地监控、部署、管理集群。
Sqoop:用于在Hadoop与传统的数据库间进行数据的传递。
Mahout:一个可扩展的机器学习和数据挖掘库。
3、特性:
高可靠性和高容错性:Hadoop能够自动保存数据的多个副本,并且能够自动将失败的任务重新分配。
高扩展性:Hadoop是在可用的计算机集群间分配数据并完成计算任务的,这些集群可以方便地进行扩展。说白了,想变大很容易。
高效性:Hadoop能够在节点之间动态地移动数据,并保证各个节点的动态平衡,因此处理速度非常快。
低成本:Hadoop是开源的,依赖于社区服务,使用成本比较低。
4、HDFS:
由NameNode名称节点、DataNode数据节点、Client客户机组成;
写入流程:
读取流程:
5、MapReduce:
运算过程:向MapReduce提及一个计算作业时,MapReduce会先把计算作业拆分成若干个Map任务,然后分配到不同的节点上去执行,每个Map任务处理输入数据中的一部分,当Map任务完成后,会生成一些中间文件,这些中间文件将会作为Reduce任务的输入数据。Reduce任务的主要目标就是把前面若干个Map的输出汇总到一起并输出。
二、Hbase
1、简介:
Hbase是一种分布式存储的数据库;
2、特性:
- 强读写一致,但是不是“最终一致性”的数据存储,这使得它非常适合高速的计算聚合
- 自动分片,通过Region分散在集群中,当行数增长的时候,Region也会自动的切分和再分配
- 自动的故障转移
- Hadoop/HDFS集成,和HDFS开箱即用,不用太麻烦的衔接
- 丰富的“简洁,高效”API,Thrift/REST API,Java API
- 块缓存,布隆过滤器,可以高效的列查询优化
- 操作管理,Hbase提供了内置的web界面来操作,还可以监控JMX指标
3、使用场景:
- 首先数据库量要足够多,如果有十亿及百亿行数据,那么Hbase是一个很好的选项,如果只有几百万行甚至不到的数据量,RDBMS是一个很好的选择。因为数据量小的话,真正能工作的机器量少,剩余的机器都处于空闲的状态
- 其次,如果不需要辅助索引,静态类型的列,事务等特性,一个已经用RDBMS的系统想要切换到Hbase,则需要重新设计系统。
- 最后,保证硬件资源足够,每个HDFS集群在少于5个节点的时候,都不能表现的很好。因为HDFS默认的复制数量是3,再加上一个NameNode。
4、架构:
- Zookeeper,作为分布式的协调。RegionServer也会把自己的信息写到ZooKeeper中。
- HDFS是Hbase运行的底层文件系统
- RegionServer,理解为数据节点,存储数据的。
- Master RegionServer要实时的向Master报告信息。Master知道全局的RegionServer运行情况,可以控制RegionServer的故障转移和Region的切分
在Hbase中,表被分割成多个更小的块然后分散的存储在不同的服务器上,这些小块叫做Regions,存放Regions的地方叫做RegionServer。Master进程负责处理不同的RegionServer之间的Region的分发。在Hbase实现中HRegionServer和HRegion类代表RegionServer和Region。HRegionServer除了包含一些HRegions之外,还处理两种类型的文件用于数据存储:
- HLog, 预写日志文件,也叫做WAL(write-ahead log)
- HFile 真实的数据存储文件
三、Hive
1、简介:
Hive是居于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并提供类SQL查询功能。
2、特性:
- 可扩展:Hive可以自由的扩展集群的规模,一般情况下不需要重启服务。
- 延展性:Hive支持用户自定义函数,用户可以根据自己的需求来实现自己的函数。
- 容错:良好的容错性,节点出现问题SQL仍可完成执行。
3、基本组成:
- 用户接口主要由三个:CLI、JDBC/ODBC和WebGUI。其中,CLI为shell命令行;JDBC/ODBC是Hive的JAVA实现,与传统数据库JDBC类似;WebGUI是通过浏览器访问Hive。
- 元数据存储:Hive将元数据存储在数据库中。Hive 中的元数据包括表的名字,表的列和分区及其属性,表的属性(是否为外部表等),表的数据所在目录等。
- 解释器、编译器、优化器完成 HQL 查询语句从词法分析、语法分析、编译、优化以及查询计划的生成。生成的查询计划存储在HDFS 中,并在随后有 MapReduce 调用执行。
架构:
4、数据存储:
-
Hive利用HDFS存储数据,利用MapReduce查询分析数据;
-
只需要在创建表的时候告诉 Hive 数据中的列分隔符和行分隔符,Hive 就可以解析数据。
- Hive 中包含以下数据模型:DB、Table,External Table,Partition,Bucket。
db:在hdfs中表现为${hive.metastore.warehouse.dir}目录下一个文件夹
table:在hdfs中表现所属db目录下一个文件夹
external table:外部表, 与table类似,不过其数据存放位置可以在任意指定路径;普通表: 删除表后, hdfs上的文件都删了;External外部表删除后, hdfs上的文件没有删除, 只是把文件删除了
partition:在hdfs中表现为table目录下的子目录
bucket:桶, 在hdfs中表现为同一个表目录下根据hash散列之后的多个文件, 会根据不同的文件把数据放到不同的文件中
四、Apollo
1、简介:
Apollo是一个配置管理中心,能够集中化管理应用不同环境、不同集群的配置,配置修改后能实时推送到应用端,并且具有规范的权限、流程治理等特性。
2、优点:
统一管理不同环境、不同集群的配置
配置修改实时生效(热发布)
版本发布管理
灰度分布
权限管理、发布审核、操作审计
客户端配置信息监控
提供Java和Net原生客户端
提供开发平台API
部署简单
文档完善
3、支持application、environment、cluster、namespace四个维度管理Key-Value格式的配置。
五、Kibana
1、简介:
Kibana是一种数据可视化和挖掘工具,可以用于日志和时间序列分析、应用程序下监控和运营智能使用案例。
2、Kibana可以用于搜索、查看ES中的数据,交互方式是各种图表、表格、地图,达到高级的数据分析与可视化的目的。
Elasticsearch、Logstash和Kibana这三个技术就是常说的ELK技术栈,这一种很典型的MVC思想,模型持久层,视图层和控制层。Logstash担任控制层的角色,负责搜集和过滤数据。Elasticsearch担任数据持久层的角色,负责储存数据,而Kibana担任视图层角色,拥有各种维度的查询和分析,并使用图形化的界面展示存放在Elasticsearch中的数据。
六、Spark
1、简介:
Spark是使用Scala实现的基于内存计算的大数据开源集群计算环境。
2、特性:
- 提供 Cache 机制来支持需要反复迭代计算或者多次数据共享,减少数据读取的 IO 开销;
- 提供了一套支持 DAG 图的分布式并行计算的编程框架,减少多次计算之间中间结果写到 Hdfs 的开销;
- 使用多线程池模型减少 Task 启动开稍, shuffle 过程中避免不必要的 sort 操作并减少磁盘 IO 操作。(Hadoop 的 Map 和 reduce 之间的 shuffle 需要 sort)
3、RDD是弹性分布式数据集,是Spark底层的分布式存储的数据结构。Spark API所有操作都是基于RDD的。
4、shuffle是划分DAG中stage的标识,同时是影响Spark执行速度的关键步骤;
七、ZooKeeper
1、简介:
ZooKeeper是一个分布式的、开源的程序协调服务,用于管理Hadoop、Hive、Pig,提供的主要功能包括配置管理、名字服务、分布式锁、集群管理。
2、存储结构:可以看作是一棵树,每个节点叫做Znode,每个节点可以通过路径来标识:
ZNode分为临时型和持久型;
ZooKeeper还配有监听器,监听Znode节点的数据变化和子节点的增减变化;
八、Redis
1、简介:
Redis是一种基于内存的数据库,主要用于存储缓存用的数据,和需要高速读写的场合。
2、数据结构:
参考:
【1】入门Hbase,看这一篇就够了 - 简书
【2】Hive简介、什么是Hive、为什么使用Hive、Hive的特点、Hive架构图、Hive基本组成、Hive与Hadoop的关系、Hive与传统数据库对比、Hive数据存储(来自学习资料)-阿里云开发者社区
【3】深入浅出大数据:到底什么是Hadoop? - 知乎
【4】【Apollo】(1)--- Apollo入门介绍篇 - 雨点的名字 - 博客园
【5】Kibana快速介绍 - 简书
【6】Spark 学习: spark 原理简述 - 知乎
【7】Spark 学习: spark 原理简述 - 知乎
【8】什么是ZooKeeper? - 知乎
【9】Redis是什么?看这一篇就够了 - 葡萄城技术团队 - 博客园



