Hadoop生态圈
一 ,采集,数据从哪里来?主要包括flume等;
一 ,存储,海量的数据怎样有效的存储?主要包括hdfs、Kafka;
二,计算,海量的数据怎样快速计算?主要包括MapReduce、Spark、storm等;
三,查询,海量数据怎样快速查询?主要为Nosql和Olap,Nosql主要包括Hbase、 Cassandra 等,其中olap包括kylin、impla等,其中Nosql主要解决随机查询,Olap技术主要解决关联查询;
四,挖掘,海量数据怎样挖掘出隐藏的知识?也就是当前火热的机器学习和深度学习等技术,包括TensorFlow、mahout、spark等;
Apache Ambari是一种基于Web的工具,界面友好,支持Apache Hadoop集群的供应、管理和监控。Ambari已支持大多数Hadoop组件,包括HDFS、MapReduce、Hive、Pig、 Hbase、Zookeeper、Sqoop等,可用于生产环境。
学习路线:
1、Hadoop是一个能够对大量数据进行分布式处理的软件框架,他以一种可靠、高效、可伸缩的方式进行数据处理。具有高可靠性、高扩展性、高效性、高容错性、低成本的特点。
2、Hadoop hdfs–分布式文件系统
将文件分成多个block,分散存储到不同的节点上,并提供多副本,保证数据容错性能。
主从结构
- 主节点,可以有2个: namenode
- 从节点,有很多个: datanode
namenode负责:管理整个集群。维护文件系统的目录结构
datanode负责:存储文件
3、Hadoop yarn–资源的调度和管理平台
集中管理集群的整个计算资源,以container的形式进行资源分配。主从结构
- 主节点,可以有2个: ResourceManager
- 从节点,有很多个: NodeManager
- ResourceManager负责:集群资源的分配与调度MapReduce、Spark等应用,必须实现
NodeManager负责:单节点资源的管理
4、Hadoop mapreduce
由两个阶段组成:Map和Reduce,Map阶段每个节点处理自己节点的数据。
Reduce阶段不同节点间进行数据交换,并进行聚合计算。
5、zookeeper
(1) ZooKeeper是什么?
ZooKeeper是 Hadoop 的分布式协调服务,开放源码的分布式应用程序协调服务,是Google的Chubby一个开源的实现,它是集群的管理者,监视着集群中各个节点的状态根据节点提交的反馈进行下一步合理操作。最终,将简单易用的接口和性能高效、功能稳定的系统提供给用户。(2) ZooKeeper提供了什么?
文件系统:每个子目录项如 NameService 都被称作为znode,和文件系统一样,我们能够自由的增加、删除znode,在一个znode下增加、删除子znode,唯一的不同在于znode是可以存储数据的。
有四种类型的znode:PERSISTENT-持久化目录节点
客户端与zookeeper断开连接后,该节点依旧存在PERSISTENT_SEQUENTIAL-持久化顺序编号目录节点
客户端与zookeeper断开连接后,该节点依旧存在,只是Zookeeper给该节点名称进行顺序编号EPHEMERAL-临时目录节点
客户端与zookeeper断开连接后,该节点被删除EPHEMERAL_SEQUENTIAL-临时顺序编号目录节点
客户端与zookeeper断开连接后,该节点被删除,只是Zookeeper给该节点名称进行顺序编号
通知机制:客户端注册监听它关心的目录节点,当目录节点发生变化(数据改变、被删除、子目录节点增加删除)时,zookeeper会通知客户端。
(3) Zookeeper做了什么?
- 命名服务
- 配置管理
- 集群管理
- 分布式锁
- 队列管理
6、hive
基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并提供简单的sql查询功能,可以将sql语句转换为MapReduce任务进行运行。
底层数据存储在哪? hdfs
元数据存储在哪? Mysql、derby等数据库
如何执行? Hive的解释器、编译器、优化器完成 HQL 语句从词法分析、语法分析、编译、优化,生成MapReduce 任务在hadoop上运行
用户接口主要有三个:CLI,JDBC/ODBC和 WebUI
- CLI,即Shell命令行
- JDBC/ODBC 是 Hive 的Java,与使用传统数据库JDBC的方式类似
- WebGUI是通过浏览器访问 Hive
7、hbase
HBase是一个分布式的、面向列的开源数据库
高可靠性、高性能、面向列、可伸缩,底层数据存在hdfs中
处理非常庞大的表, 适合处理1亿条或者10亿条以及以上条记录或者有百万个列的数据库。
8、flume
Flume是一个高可用的,高可靠的,分布式的海量日志采集、聚合和传输的系统。
flume是分布式的日志收集系统,它将各个服务器中的数据收集起来并送到指定的地方去比如说送到图中的HDFS,简单来说flume就是收集日志的。同时,Flume提供对数据进行简单处理,并写到各种数据接受方(可定制)的能力。
flume的架构主要有一下几个核心概念:
Event:一个数据单元,带有一个可选的消息头
Flow:Event从源点到达目的点的迁移的抽象
Client:操作位于源点处的Event,将其发送到Flume Agent
Agent:一个独立的Flume进程,包含组件Source、Channel、Sink
Source:用来消费传递到该组件的Event
Channel:中转Event的一个临时存储,保存有Source组件传递过来的Event
Sink:从Channel中读取并移除Event,将Event传递到Flow Pipeline中的下一个Agent(如果有的话)flume 常用结构
9、Spark
Apache Spark™ 是一个通用的快速的大数据处理引擎.速度快:
号称基于内存的运算速度比mapreduce快100倍以上,
基于磁盘的运算速度比mapreduce快10倍以上使用简单:
可以使用scala,java,python,R通用性强:
支持批处理spark core,流式处理spark streaming,spark sql, machine learning,GraphX随处运行
Spark具有很强的适应性,能够读取HDFS、HBase、 Cassandra、 S3和Techyon为持久层读写原生数据,能够以Mesos、YARN和自身携带的Standalone作为资源管理器调度job,来完成Spark应用程序的计算。
(1) Spark 基本原理(Map reduce思想)
每个节点的map任务读取本地数据,按照key进行分类,reduce任务拉取相同key的数据,并进行统计聚合。
(2) Spark 运行模式
- Local 模式
是用单机的多个线程来模拟Spark分布式计算,通常用来验证开发出来的应用程序逻辑上有没有问题。 - Standalone 模式
Spark自己提供独立的集群,主节点master,从节点worker,使用前需要启动spark集群,不受Hadoop yarn对资源的约束。 - yarn 模式
需要 Hadoop的yarn来分配资源,受yarn的约束,适用于生产环境。
10、kafka
Kafka 是一个高吞吐量的、持久性的、分布式发布订阅消息系统。
典型的生产消费模式,生产者向主题中发送消息消费者订阅主题消费消息。
应用场景:实时性较高的场合,比如流式处理,经典用法kafka+storm、kafka+sparkStreaming
11、Storm
Storm可以实现高频数据和大规模数据的实时处理不同于spark streaming 的微批处理,storm可以根据进来的每一条数据进行实时处理,实时性能非常高。
- Nimbus,主节点,负责在集群里面发送代码,分配工作给机器,并且监控状态。全局只有一个。
- Zookeeper是Storm重点依赖的外部资源。负责Nimbus和多个Supervisor之间的所有协调工作。
- Supervisor,从节点,会监听分配给它那台机器的工作,根据需要启动/关闭工作进程Worker。
- Worker,工作进程,它会启动很多线程来运行我们的任务。
转载于:https://blog.csdn.net/kan2281123066/article/details/81260198