大数据:指无法在一定时间范围内用常规软件工具进行捕捉、管理和处理的数据的集合,是需要新处理模式才能具备更强的决策力、洞察发现力和流程优化能力的海量、高增长和多样化的信息资产。
按顺序给出数据存储单位:
Bit Byte KB MB GB TB PB EB ZB YB BB NB DB
大数据特点:
1.Volume(大量)-数据量非常庞大 最显著的特点
2.Velocity(高速)-数据量产生的速度非常快
3.Variety(多样性)-数据的多种多样
数据被分为结构化数据和非结构化数据
4.Value(低价值密度)
价值密度的高低和数据总量的大小成反比。
Hadoop
主要解决:海量数据的存储和海量数据的分析计算问题。
优势:
1.高可靠性:Hadoop底层维护多个数据副本。
2.高扩展性:在集群进行工作时,可以方便地扩展数以千计的节点。
3.高效性:Hadoop是并行工作的,以加快任务处理的速度。
4.高容错性:能够自动将失败的任务重新分配。
Hadoop的组成:
Hadoop 1.x
MapReduce 计算+资源调度
HDFS 数据存储
Common 辅助工具
Hadoop 2.x
MapReduce 计算
Yarn 资源调度
HDFS 数据存储
Common 辅助工具
HDFS
架构概述
1.NameNode(NN) 类似于目录
存储文件的元数据(描述数据的数据),如文件名、文件目录结构、文件属性(生成时间、副本数、文件权限),以及每个文件的块列表和块所在的DataNode等。
2.DataNode(DN) 类似于具体内容
在本地文件系统存储文件块数据,以及块数据的校验和。
3.SecondaryNameNode(2NN)
用来监控HDFS状态的辅助后台程序,每个一段时间获取HDFS数据的快照。
Yarn架构概述
1.ResourceManager(RM)
(1)处理客户端请求
(2)监控NodeManager
(3)启动或监控ApplicationMaster
(4)资源的分配和调度
是整个服务器集群中资源的老大,管理着所有的CPU、内存、磁盘、网络等。
2.NodeManager(NM)
(1)管理单个节点上的资源
(2)处理来自ResourceManager的命令
(3)处理来自ApplicationMaster的命令
单个节点的老大
3.ApplicationMaster(AM)
(1)负责数据的切分
(2)为应用程序申请资源并分配给内部的任务
(3)任务的监控和容错
4.Container
Container是Yarn中的资源抽象,它封装了某个节点上的多维度资源,如内存、CPU、磁盘和网络等。
MapReduce
结构概述
MapReduce将计算过程分为两个阶段:Map和Reduce。
1.Map阶段并行处理输入数据。
2.Reduce阶段对Map阶段获得的结果进行汇总
Hadoop
的安装准备工作
1.安装JDK环境变量
# java -version
# tar -zxvf java压缩包
可以将java路径写在/etc/profile.d里面,写一个sh脚本。
java.sh
export JAVA_HOME=java路径
export PATH=$PATH:${JAVA_HOME}/bin
需要再source
source /etc/profile
2.安装Hadoop
# hadoop
# hadoop version
hadoop.sh
export HADOOP_HOME=hadoop路径
export PATH=$PATH:${HADOOP_HOME}/bin
export PATH=$PATH:${HADOOP_HOME}/sbin
Hadoop
的目录结构
bin: hdfs hadoop yarn
etc: 存放配置文件
include: 头文件
lib: 本地库
lobexec: 本地库
sbin: 集群启动相关的脚本
hadoop-daemon.sh
slaves.sh
start-all.sh
start-dfs.sh
start-yarn.sh
share: 文档、案例、手册
Hadoop
运行模式:
本地运行模式
伪分布运行模式
完全分布式运行模式
官方grep案例
# mkdir input
# cp etc/hadoop/*.xml input
# bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.2.jar grep input ouput 'dfs[a-z.]+'(输入需要提取创建,输出不能提前创建)
# cat /ouput/*
_SUCCESS 是空的,主要是作为一个标识
part-r-00000 返回结果
官方WordCount案例
1.在hadoop路径下创建一个wcinput文件夹
# mkdir wcinput
2.在wcinput文件夹下创建一个wc.input文件;
# cd wcinput
# touch wc.input
3.编辑wc.input文件:
# vi wc.input
在文件内写入如下内容:
hadoop yarn
hadoop mapreduce
root
root
:x
4.回到hadoop目录/opt/hadoop-2.7.2
5.执行程序
# hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.2.jar wordcount wcinput wcoutput
6.查看结果
# cat wcoutput/part-r-00000
hadoop 2 root 2 mapreduce 1 yarn 1