1.Hadoop概述
1.1 Hadoop介绍
- 狭义上来讲,Hadoop是由Apache基金会开发的一款开源软件,允许用户使用简单的编程模型实现跨机器集群对海量数据进行分布式处理。Hadoop的核心组件为HDFS、YARN和MapReduce。
- 广义上来讲,Hadoop指的是围绕Hadoop打造的大数据生态圈,是一个很庞大的体系。
1.2 Hadoop的发展与现状
Hadoop最早起源于Apache Lucene的子项目:Nutch。Nutch的设计目标是构建一个大型的全网搜索引擎,包括网页抓取、索引、查询等功能,随着抓取网页数量的增加,遇到了严重的瓶颈——如何解决数十亿网页的存储和索引问题。
Google公司根据GFS、MapReduce两篇论文思想先后实现了Hadoop的HDFS分布式文件系统、MapReduce分布式计算模型并且开源。在2008年,Hadoop成为Apache基金会的顶级项目。此外,在2010年,Google公司根据论文BigTable的思想开发出了Hadoop的HBase并开源。这三篇论文奠定了大数据技术的基石,被称为Google公司的三驾马车。
现在的Hadoop仍是大数据领域中应用最广泛的一种分布式架构,HDFS作为分布式文件存储系统,处在生态圈的底层与核心地位;YARN作为分布式通用的集群资源管理系统和任务调度平台,支撑各种引擎运行,保证了Hadoop的地位;MapReduce作为大数据生态圈第一代分布式计算引擎,由于自身设计的模型所产生的弊端,导致企业一线几乎不再使用MapReduce进行编程处理。
1.3 Hadoop的特性优点
- 扩容能力:Hadoop是在可用的计算机集群间分配数据并完成计算任务的,这些集群可方便灵活的方式扩展到数以千计的节点。
- 效率高:通过并发数据,Hadoop可以在节点之间动态并行的移动数据,使得速度非常快。
- 高可靠性:能自动维护数据的多份复制,并且在任务失败后能自动地重新部署计算任务。所以Hadoop的按位存储和处理数据的能力值得人们信赖。
- 成本低:Hadoop集群允许通过部署普通廉价的机器组成集群来处理大数据,以至于成本很低。看重的是集群整体能力。
1.4 Hadoop的架构变迁
- Hadoop 1.0
HDFS(分布式文件存储)
MapReduce(资源管理和分布式数据处理)
- Hadoop 2.0
HDFS(分布式文件存储)
MapReduce(分布式数据处理)
YARN(集群资源管理、任务调度)
- Hadoop 3.0
Hadoop3.0架构组件和Hadoop2.0类似,3.0更着重于性能的优化
通用方面:精简内核、类路径隔离、shell脚本重构
Hadoop HDFS:EC纠删码、多NameNode支持
Hadoop MapReduce:任务本地化优化、内存参数自动推断
2.Hadoop集群搭建
2.1 Hadoop集群简介
- Hadoop集群包括两个集群:HDFS集群和YARN集群
- 两个集群通常逻辑上分离,物理上在一起;且两个集群都是标准的主从架构集群
- MapReduce是计算框架、代码层面的组件,不是集群
2.2 Hadoop集群模式安装
2.2.1 服务器基础环境准备
- 安装虚拟机
- 安装Linux操作系统
- 配置静态网络
- 虚拟机克隆
- 关闭防火墙并设置ssh免密登录
- 安装JDK1.8并配置环境变量
在/etc/profile文件后面追加
export JAVA_HOME='JDK所在位置'
export PATH=$PATH:$JAVA_HOME/bin
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
2.2.2 Hadoop的安装
- 上传解压Hadoop安装包
- 配置文件
(1) 配置Hadoop-env.sh文件( Hadoop环境变量设置
(2) 配置core-site.xml、hdfs-site.xml、mapred-site.xml、yarn-site.xml(分别为核心模块、hdfs文件系统模块、MapReduce模块、yarn模块的配置)
(3) 配置workers(添加主节点和子节点的主机名称)
- 格式化HDFS
- 启动Hadoop
- 验证Hadoop进程
- 通过Web访问Hadoop
2.2.3 Hadoop测试
- 执行Shell命令操作
- 执行Web UI页面操作
- 执行Hadoop官方自带的MapReduce案例
3.HDFS分布式文件系统
3.1 文件系统与分布式文件系统
3.1.1 传统的文件系统
- 传统常见的文件系统更多指单机文件系统,其底层不会横跨多台机器实现。如:Windows上的文件系统、Linux上的文件系统、FTP文件系统等。
- 数据:指存储内容本身,如文件、视频、图片等,这些数据底层最终是存储在磁盘等存储介质上的,只需要基于目录树进行增删改查即可,实际针对数据的操作由文件系统完成。
- 元数据:元数据(metadata)又称之为解释性数据ÿ