目录
1. Hadoop 简介
Hadoop是使用Java编写,允许分布式集群,使用简单的编程模型的计算机大型数据集处理的Apache的开源框架。Hadoop框架应用工程提供跨计算机集群的分布式存储和计算的环境。Hadoop是专为单一服务器到上千台机器扩展,每个机器都可以提供本地计算和存储。
2. Hadoop 的架构
在其核心,Hadoop主要有两个层次,即:加工/计算层(MapReduce),以及存储层(Hadoop分布式文件系统)。
3. MapReduce 简介
MapReduce是一种并行编程模型,是一种处理技术和程序模型基于Java的分布式计算,用于编写普通硬件的设计,谷歌对大量数据的高效处理(多TB数据集)的分布式应用在大型集群(数千个节点)以及可靠的容错方式。MapReduce程序可在Apache的开源框架Hadoop上运行。MapReduce算法包含了两项重要任务,即Map和Reduce。Map采用了一组数据,并将其转换成另一组数据,其中,各个元件被分解成元组(键/值对)。其次,减少任务,这需要从Map作为输入并组合那些数据元组成的一组小的元组输出。作为MapReduce暗示的名称的序列在Map作业之后执行Reduce任务。【以下的MapReduce运算开发示例做详细说明】。
4. Hadoop HDFS 简介
Hadoop文件系统使用分布式文件系统设计开发。它是运行在普通硬件。不像其他分布式系统,HDFS是高度容错以及使用低成本的硬件设计。
HDFS拥有超大型的数据量,并提供更轻松地访问。为了存储这些庞大的数据,这些文件都存储以冗余的方式的方式来拯救系统免受可能的数据损失,在发生故障时。同样,HDFS也使得可用于并行处理的应用程序。
HDFS的特点:①它适用于在分布式存储和处理。②Hadoop提供的命令接口与HDFS进行交互。③名称节点和数据节点的帮助用户内置的服务器能够轻松地检查集群的状态。④流式访问文件系统数据。⑤HDFS提供了文件的权限和验证。
5. HDFS架构
下面给出的是Hadoop的文件系统的体系结构。
HDFS遵循主从架构,它具有以下元素:
名称节点 - Namenode:包含GUN/Linux操作系统和软件名称节点的普通硬件。他是一个可以在商品硬件上运行的软件。具有名称节点系统作为主服务器,他执行以下任务:管理文件系统命名空间。规范客户端对文件的访问。它也执行文件系统操作,如重命名,关闭和打开文件和目录。
数据节点 - datanode:具有GUN/Linux操作系统和软件Datanode的普通硬件。对于集群中的每一个节点(普通硬件/系统),都有一个数据节点。这些节点管理数据存储在他们的系统。数据节点上的文件系统执行的读写操作,根据客户的请求。还根据名称节点的指令执行操作,如块的创建,删除和复制。
块:一般用户数据存储在HDFS文件。在一个文件系统中的文件将被划分为一个或多个段和/或存储在个人数据的节点。这些文件段被称为块。换句话说,数据的HDFS可以读取或写入的最小量被称为一个块。缺省的块大小为64MB,但他可以增加按照需要在HDFS配置来改变。
6. MapReduce开发流程概念(重点)
mapreduce 运算框架主要实现 hadoop 的数据处理。数据处理中流经过5个节点。
数据流: input -> split -> map -> shuffle -> reduce (最后 reduce 输出)
6.1 input
input 是将被运算的数据(文件)切成默认的是64M的块(block)方便后续运算。
6.2 split
切片,将Input中的块按照行切成片(片是键值对),方便后续Map运算。
wordcount split 数据处理:每行的起始下标作为输出键,每行的内容作为输出值。
6.3 map(开发做)
对slipt的片(行)进行数据处理,处理成键值对。
wordcount map 数据处理:将每行拆分成每一个单词作为输出键,个数设置为1 作为输出值。
6.4 shuffle
混洗,将所有的map运算结果