一.hadoop
1.项目起源
Hadoop由 Apache Software Foundation 公司于 2005 年秋天作为Lucene的子项目Nutch的一部分正式引入。它受到最先由 Google Lab 开发的 Map/Reduce 和 Google File System(GFS) 的启发。
2.核心组件
核心组件包括Hadoop的基础组件HDFS、MapReduce和Yarn,以及其他常用组件如:HBase、Hive、Hadoop Streaming、Zookeeper等。
3.组件介绍
- HDFS:分布式海量数据存储功能
- Yarn:提供资源调度与任务管理功能
- 资源调度:根据申请的计算任务,合理分配集群中的计算节点(计算机)。
- 任务管理:任务在执行过程中,负责过程监控、状态反馈、任务再调度等工作。
- MapReduce:分布式并行编程模型和计算框架。解决分布式编程门槛高的问题,基于其框架对分布式计算的抽象map和reduce,可以轻松实现分布式计算程序。
- Hive:提供数据摘要和查询的数据仓库。解决数据仓库构建问题,基于Hadoop平台的存储与计算,与传统SQL相结合,让熟悉SQL的编程人员轻松向Hadoop平台迁移。
- Streaming:解决非Java开发人员使用Hadoop平台的语言问题,使各种语言如C++、python、shell等均可以无障碍使用Hadoop平台。
- HBase:基于列式存储模型的分布式数据库。解决某些场景下,需要Hadoop平台数据及时响应的问题。
- Zookeeper:分布式协同服务。主要解决分布式下数据管理问题:统一命名、状态同步、集群管理、配置同步等。
4.生态圈
5.Ambari平台环境介绍
- Apache Ambari是一种基于Web的工具,支持Apache Hadoop集群的供应、管理和监控。Ambari已支持大多数Hadoop组件,包括HDFS、MapReduce、Hive、Pig、 Hbase、Zookeper、Sqoop和Hcatalog等。
- 同类产品为Cloudera Manager的CDH。
- 优点:
- Web安装图形界面操作便捷
- Hadoop家族各组件支持全面
- 社区资源比较丰富
- 缺点:
- Bug较多:安装过程中,莫名其妙的出现错误。系统运维过程中偶尔出错。以上两种情况重启就正常。
- 安装速度与网络质量关系较大,往往时间较长。
在合理避免大坑的情况下,3小时内可以搭建一个基本版的集群。
二.HDFS
1.产生背景
传统的本地文件系统(单机式),在数据量增长过快、数据备份、数据安全性、操作使用便捷性上存在严重不足。
2.特点介绍
- 高容错和高可用性,硬件错误是常态而不是异常
HDFS设计为运行在普通硬件上,所以硬件故障是很正常的。HDFS提供文件存储副本策略,可以实现错误自检并快速自动恢复。个别硬件的损坏不影响整体数据完整性和计算任务的正常执行。
- 流式数据访问
HDFS主要采用流式数据读取,做批量处理而不是用户交互处理,因此HDFS更关注数据访问的高吞吐量。
- 弹性存储,支持大规模数据集
HDFS支持大文件存储,典型的文件在GB甚至TB级别,可以支持数以千万计的大规模数据集。根据业务需要灵活的增加或者缩减存储节点。弹性存储的最大挑战是减小在修改存储节点时的数据震荡问题。
- 简单一致性模型
HDFS文件实行一次性写、多次读的访问模式。设计为文件一经创建、写入和关闭之后就不需要再更改了,这种设计和假定简化了数据一致性问题,使高吞吐量成为可能。
- 移动计算而非移动数据
由于HDFS支持大文件存储,对于大文件来说,移动计算比移动数据的代价要低。这样也可以减少网络的拥塞和提高系统的吞吐量。
- 协议和接口多样性
为上层应用提供了多种接口,Http RestFul接口、NFS接口、Ftp接口等等POSIX标准协议,另外通常会有自己的专用接口。
- 多样的数据管理功能
对于数据压缩、数据加密、数据缓存和存储配额等提供了多样的管理功能。
3.应用场景
- 各大电信运营商
- 中大型互联网公司,如BAT、京东、乐视、美团等
- 金融银行保险类公司
- 各大云平台底层存储平台
- 其他本地系统无法承载存储能力的应用
HDFS架构设计
1.HDFS是什么
HDFS(Hadoop Distributed File System )Hadoop分布式文件系统。
由论文为GFS(Google File System)Google 文件系统启发