概述
IT领域每隔十五年就会迎来一次重大变革:
- 1980:个人计算机
- 1995:互联网
- 2010:物联网、云计算和大数据
信息科技为大数据时代提供技术支撑:
- 存储设备容量不断增加
- CPU处理能力大幅提升
- 网络带宽不断增加
大数据是由结构化和非结构化数据组成的
- 10%的结构化数据,存储在数据库中
- 90%的非结构化数据,它们与人类信息密切相关
大数据技术的不同层面及其功能:
大数据计算模式及其代表产品:
云计算与物联网:
- 云计算:虚拟化、分布式存储、分布式计算、多租户
- 物联网:利用局部网络或互联网等通信技术把传感器、控制器、机器、人员和物等通过新的方式联在一起,形成人与物、物与物相联,实现信息化和远程管理控制。【识别和感知技术(二维码、RFID、传感器等)、网络与通信技术、数据挖掘与融合技术】
大数据与云计算、物联网的关系:
Hadoop
Hadoop是基于Java语言开发的,具有很好的跨平台特性,并且可以部署在廉价的计算机集群中。
它的核心是为海量数据提供存储的分布式文件系统HDFS(Hadoop Distributed File System)和对数据进行计算的MapReduce。
MapReduce模型包括两个函数Map和Reduce,Map负责把任务分解为多个任务,Reduce负责把分解后的多个任务处理结果汇总起来。把对大数据集的操作分发给主节点管理下的从节点共同完成,然后通过整合各从节点的中间结果,从而得到最终结果。
BigTable
为处理 PB 级别数据的非关系数据库,是一个稀疏的、分布式的、持久化存储的多维度排序 Map。
采用键值对(key-value)方式存储,键(key)有三维:行键、列键、时间戳。
(row:string, column:string, time:int64)→string
Hadoop
而Hadoop是一个能够对大量数据进行分布式处理的软件框架,具有高可靠性、高效性、高可扩展性、高容错性、低成本、支持多种编程语言的特性。
Hadoop版本分为两代:Hadoop1.0 (MapReduce、HDFS)、Hadoop2.0(MapReduce、HDFS、YARN)。
项目结构:
Hadoop安装配置
- 创建Hadoop用户
sudo useradd -m hadoop -s /bin/bash //创建 hadoop 用户,并以 /bin/bash 为shell
sudo passwd hadoop //设置 hadoop 用户的密码
sudo useradd hadoop sudo //给 hadopp 用户添加管理员权限
- SSH登录权限设置
Secure Shell 是建立在应用层和传输层基础上的安全协议。
Hadoop 名称节点需要通过 SSH 启动集群中所有 Hadoop 的守护线程,而它没有提供SSH输入密码登录的形式,所以每台机器的 Hadoop 用户需要配置免密登录。
- 安装Java环境 JDK
- 三种运行模式:单机模式、伪分布式模式、分布式模式
解压 hadoop-2.x.y.tar.gz,在 sbin 下执行 start-all.sh 可启动(启动之前需要初始化文件系统hadoop namenode -format)。
默认为单机模式,可以修改 /usr/local/hadoop/etc/hadoop/ 下的 core-site.xml、hdfs-site.xml、mapred-site.xml 等配置文件,使用其他模式。
- 访问web界面,http://ip:50070
hadoop fs、hadoop dfs、hdfs dfs 的区别:
hadoop fs 适用于任何不同的文件系统,比如本地文件系统和 HDFS 文件系统,hadoop dfs 只能适用于 HDFS 文件系统,而 hdfs dfs 与 hadoop dfs 相同。
一个基本的Hadoop集群中的节点主要有:
- NameNode:负责协调集群中的数据存储
- DataNode:存储被拆分的数据块
- JobTracker:协调数据计算任务
- TaskTracker:负责执行由JobTracker指派的任务
- SecondaryNameNode:帮助NameNode收集文件系统运行的状态信息
HDFS
分布式文件系统把文件分布存储到多个计算机节点上,成千上万的计算机节点构成计算机集群。
分布式文件系统在物理结构上是由计算机集群中的多个节点构成的,这些节点分为两类,一类叫“主节点”(Master Node)或者也被称为“名称结点”(NameNode),另一类叫“从节点”(Slave Node)或者也被称为“数据节点”(DataNode)。
优点:
- 兼容廉价的硬件设备
- 流数据读写
- 大数据集
- 简单的文件模型
- 强大的跨平台兼容性
局限性:
- 不适合低延迟数据访问
- 无法高效存储大量小文件
- 不支持多用户写入及任意修改文件
HDFS采用抽象的块概念,默认一个块64MB,一个文件被分成多个块,以块作为存储单位。块的大小远远大于普通文件系统,可以最小化寻址开销。
HDFS 主要组件及其功能:
- NameNode:
对应 HDFS 的命名空间,即目录、文件和块。
在 NameNode 启动的时候,它会将 FsImage 文件中的内容加载到内存中,之后再执行 EditLog 文件中的各项操作,使得内存中的元数据和实际的同步。
-
**SecondaryNameNode:**保存 NameNode 中对HDFS 元数据信息的备份(GET/POST),并减少 NameNode 重启的时间。
-
**DataNode:**负责数据的存储和读取,会根据客户端或者是名称节点的调度来进行数据的存储和检索,并且向名称节点定期发送自己所存储的块的列表。
HDFS1.0体系结构:
HDFS