3-快学hadoop
为数据中台新人进行培训,培训内容hadoop
1. Hadoop简介:
hadoop 是一个生态圈,由很多组件组成,是一个能够对大量数据进行分布式处理的软件框架。 Hadoop 以一种可靠、高效、可伸缩的方式进行数据处理。
其中最为核心的几个框架:
1. 分布式存储系统HDFS
- 分布式存储系统
- 提供了高可靠性、高扩展性和高吞吐率的数据存储服务
1. HDFS优点:
- 高容错性
- 适合批处理
- 适合大数据处理
- 可构建在廉价机器上
2. HDFS的缺点:
- 低延迟数据访问
- 小文件存取
- 并发写入、文件随机修改
3. HDFS架构:
- NameNode(NN元数据) 保存着 HDFS 的名字空间
- 接受客户端的读写服务
- 保存metadata信息包括
- 文件owership和permissions
- 文件包含那些快
- Block保存在datanode
- NameNode的metadata信息在启动后加载到内存
- Metadata存储到磁盘文件名为”fsImage”
- Block位置信息不会保存到fsImage
- Edits记录对metadata的操作日志
- SecondaryNameNode
- 不是NN的备份(但可以做备份),主要工作是帮助NN合并editslog,减少NN启动时间
- SNN执行合并时机
- DataNode(存放数据)
- Journal Node
- 两个NameNode为了数据同步,会通过一组称作JournalNodes的独立进程进行相互通信
- edits日志的改变必须写入大多数(一半以上)JNs,所以至少存在3个JournalNodes守护进程,这样系统能够容忍单个主机故障
4.HDFS文件权限
- 与Linux文件权限类似,rwx,权限x对于文件忽略,对文件夹表示允许访问
- HDFS用户认证:
- Simple:只认证用户,不验证密码
- KerBeros:认证用户名跟密码: 1.数据安全,但是速度比较慢 2.每添加一台机器,需要重置用户密码,不利于维护
2. 分布式计算框架MapReduce
i.分布式计算框架 ii.具有高容错性和高扩展性等优点
1. MapReduceu优点
- 良好的扩展性
- 高容错性
2. MapReduce的缺点
- 实时性差
- 处理流计算局限
- 不能处理DAG计算,性能底下
3. 分布式调度框架YARN
YARN 是一个资源调度平台,负责为运算程序提供服务器运算资源,相当于一个分布式的操 作系统平台,而 MapReduce 等运算程序则相当于运行于操作系统之上的应用程序。
1. YARN优点:
- 高扩展性
- 高可用性
- 高可靠性
- 向后兼容性
3. YARN架构:
- ResourceManager(YARN 集群主控节点)
基于应用程序对集群资源的需求进行调度的 YARN 集群主控节点,负责 协调和管理整个集群(所有 NodeManager)的资源,响应用户提交的不同类型应用程序的 解析,调度,监控等工作。
它主要由两个组件构成:调度器(Scheduler)和应用程序管理器(ApplicationsManager)
- 处理客户端请求
- 启动或监控 MRAppMaster
- 监控 NodeManager
- 资源的分配与调度
- NodeManager
YARN 集群当中真正资源的提供者,是真正执行应用程序的容器的提供者
- 管理单个节点上的资源
- 处理来自 ResourceManager 的命令
- 处理来自 MRAppMaster 的命令
4. hive
Hive是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并提供类SQL查询功能。
1. 为什么使用Hive
1. 直接使用hadoop所面临的问题
- 人员学习成本太高
- 项目周期要求太短
- MapReduce实现复杂查询逻辑开发难度太大
2. 操作接口采用类SQL语法,提供快速开发的能力。
- 避免了去写MapReduce,减少开发人员的学习成本。
- 扩展功能很方便。
2. Hive的特点
- 可扩展
- 延展性
- 容错
3. Hive组成
- 用户接口主要由三个:CLI、JDBC/ODBC和WebGUI。
- CLI为shell命令行;
- JDBC/ODBC是Hive的JAVA实现,与传统数据库JDBC类似;
- WebGUI是通过浏览器访问Hive。
- 元数据存储:Hive 将元数据存储在数据库中。Hive 中的元数据包括表的名字,表的列和分区及其属性,表的属性(是否为外部表等),表的数据所在目录等。
- 解释器、编译器、优化器完成 HQL 查询语句从词法分析、语法分析、编译、优化以及查询计划的生成。生成的查询计划存储在 HDFS 中,并在随后有 MapReduce 调用执行。