大数据的核心:
1、分布式存储
2、分布式计算
Hadoop分布式系统的两大核心:
1、分布式存储 HDFS
名称节点NameNode:文件管理
数据节点DataNode:文件存储
2、分布式计算 MapReduce
Map:任务的分解
Reduce:结果的汇总
HDFS分布式文件系统(Hadoop Distributed File System):
hdfs是一个高度容错性的分布式文件系统,能够提供高吞吐量的数据访问,非常适合大规模数据集上的应用。
NameNode:可以看作是分布式文件系统中的管理者,存储文件系统的meta-data,主要负责管理文件系统的命名空间,集群配置信息,存储块的复制。
DataNode:是文件存储的基本单元,它存储文件块在本地文件系统中,保存了文件块的meta-data,同时周期性的发送所有存在的文件块的报告给NameNode。
HDFS具体操作:
文件写入:
1、Client向NameNode发起文件写入的请求
2、NameNode根据文件大小和文件块配置情况,返回给Client它所管理部分DataNode的信息
3、Client将文件划分为多个文件块,根据DetaNode的地址信息,按顺序写入到每一个DataNode块中
文件读取:
1.Client向NameNode发起文件读取的请求。
2.NameNode返回文件存储的DataNode的信息。
3.Client读取文件信息
MapReduce框架
MapReduce是一种编程模型,用于大规模数据集的并行运算。
Map(映射)和Reduce(化简),采用分而治之思想,先把任务分发到集群的多个节点上,并行计算,然后再把计算结果合并,从而得到最终计算结果。多节点计算,所涉及的任务调度、负载均衡、容错处理等,都由MapReduce框架完成,不需要编程人员关心这些内容。
分两个阶段:Map阶段---程序Maptask
Reduce阶段---程序ReduceTask
map阶段:将每一行文本数据变成<单词,1>这样的key-value数据
reduce阶段:将相同单词的一组key-value数据进行聚合,累加所有的key-value
注意:mapreduce程序中
map阶段的进、出数据
reduce阶段的进、出数据
数据的类型应该是实现了Hadoop序列化的类型,如:
String -> Text
Integer -> IntWritable
Long -> LongWritable
MapReduce程序运行在很多机器上,而且先执行map task,当众多的map task都处理完数据后,还需要启动众多的reduce task,这个过程如果是用户自己手动调度不现实,需要有自动化的调度平台---hadoop中就为mapreduce之类的分布式运算开发了一个自动化调度平台—yarn
Yarn的基本概念
yarn是一个分布式程序的运行调度平台,yarn有两个核心角色
1、ResourceManager
接受用户提交的分布式计算程序,并为其划分资源,管理、监控各个NodeManager上的资源,以便于负载均衡
2、NodeManager
管理它所在的机器的运行资源(CPU+内存)
负责接收ResourceManager分配的任务,创建容器,回收资源
Yarn的安装
NodeManager在物理上应该跟data node部署在一起
ResourceManager在物理上应该部署在一台专门的机器上
1、修改配置文件:yarn-site.xml
2、scp这个文件到其他的节点上
3、启动yarn集群:start-yarn.sh(只能在ResourceManager上执行)
4、用jps命令检查yarn的进程,用web浏览器查看yarn的web控制台
地址:http://192.168.13.129:8088