Chapter2 大数据处理架构Hadoop

news/2024/5/20 1:30:09 标签: hadoop, big data, 大数据, hdfs, mapreduce

2.1 Hadoop简介和版本演变

2.1.1 Hadoop简介

Hadoop是Apache软件基金会旗下开源软件,为用户提供高层接口,为用户提供了底层细节透明的分布式基础架构。
Hadoop是基于java语言开发的,具有很好的跨平台性,但是它支持多种语言,包括C、java、Python等。
Hadoop并不是单一的技术,而是多种大数据解决方案的继承体。

Hadoop的两大核心为:分布式文件系统HDFS、MapReduce。
在这里插入图片描述
这两大核心共同解决了大数据的两大问题:海量数据的分布式存储、海量数据的分布式处理。
在这里插入图片描述
在这里插入图片描述

几乎所有主流厂商都围绕Hadoop提供开发工具、开源软件、商业化工具和技术服务,如Google、Baidu、Microsoft、Alibaba、Facebook等。

Hadoop的标志:
在这里插入图片描述

2.1.2 Hadoop发展史
  1. Hadoop最初是由Apache Lucene项目的创始人Doug Cutting开发的文本搜索库。Hadoop源自始于2002年的Apache Nutch项目,即一个开源的网络搜索引擎。
  2. 在2003年,谷歌发布了分布式文件系统GFS(Google File System)。2004年,Nutch模仿GFS开发了NDFS,也就是HDFS的前身。
  3. 在2004年,谷歌发布了分布式并行框架MapReduce。2005年,Nutch开源实现了谷歌的MapReduce。
  4. 到2006年2月,NDFS和MapReduce开始独立,成为Lucene项目的一个子项目,成为Hadoop。
  5. 在2008年4月,Hadoop打破世界纪录,成为最快排序1TB数据的系统,它采用了一个由910个节点构成的集群进行运算,排序时间只用了209秒。
  6. 在2009年5月,Hadoop更是把1TB的数据排序时间缩短到62秒。Hadoop从此名声大震,迅速发展成为大数据时代最具影响力的开源分布式开发平台,并成为事实上的大数据处理标准。
2.1.3 Hadoop特性
  1. 高可靠性
    多台机器构成集群,部分机器发生故障,剩余机器可以继续对外提供服务。
  2. 高效率
    将成百上千台机器构成集群进行运算。
  3. 可扩展性
    可以不断向集群中增加机器。
  4. 高容错性
    一部分节点出现问题,其余结点可以继续工作。
  5. 成本低
    在云计算和大数据出现之前,很多大型企业使用高性能计算HPC(High Performance Computing)进行计算,要使用成本高昂的小型机。
    但Hadoop可以使用普通PC机构建一个集群。
  6. 运行在Linux平台上
  7. 支持多种编程语言
2.1.4 Hadoop的应用现状

Facebook公司采用Hadoop集群用于日志处理、推荐系统和数据仓库等方面。

Hadoop在企业中的应用架构如下图所示:在企业应用中最常见的就是数据分析、数据实时查询、数据挖掘。
大数据层中,可以使用HDFS分布式文件存储满足企业中海量数据存储的需求。

  • 第一类离线分析(将数据进行批量处理),批量处理Hadoop中最方便的就是MR(MapReduce),除了MR外,也可以用Hadoop平台上的Hive和Pig实现离线的数据分析。
  • 第二类实时查询,可以使用HBase数据库(支持几十亿行数据存储)。
  • 第三类BI分析,可以使用Mahout,包含很多数据挖掘算法的实现。

在这里插入图片描述

2.1.5 Hadoop版本演变

不同版本具备的功能存在较大差异。

Apache Hadoop版本分为两代:
在这里插入图片描述
从Hadoop1.0到Hadoop2.0:
在1.0版本中,MapReduce要同时负责数据处理、集群资源的调度。要负责的工作过多导致MapReduce效率低下。因此在2.0版本中,将MapReduce承担的任务分解,将其关于资源管理调度的工作单独划分出来,做成一个新的框架YARN,为上层框架提供底层资源,MapReduce只负责数据处理工作。
在2.0版本中,MapReduce是在YARN之上的计算框架,YARN也同时支持其他的计算框架。比如Spark、Storm等。
在2.0版本中,提出了NN Federation(NameNode Federation,其中NameNode是名称结点,负责数据目录服务,外界结点先访问目录服务再取得数据),由于之前HDFS只有一个、扩展性不好,所以2.0中设置多个进行分区管理,形成联邦(Federation)。
同时,在2.0版本中,提出了HA(高可能性)。因为在1.0版本中只有一个NameNode作为目录服务器,一旦它失效,整个服务器都不可用。HA实现了热备份机制,一旦一个失效,就用另一个顶替。
在这里插入图片描述
Hadoop有许多版本,很多企业将开源代码进行开发,研究出性能更好的企业版产品。
常见的Hadoop版本如下:
在这里插入图片描述
选择Hadoop版本的考虑因素:

  1. 是否开源(即是否免费)
  2. 是否有稳定版
  3. 是否经过实践检验
  4. 是否有强大社区支持

2.2 Hadoop项目结构

Hadoop的项目结构不断发展,已经形成了一个丰富的Hadoop生态系统。
在这里插入图片描述
HDFS负责利用成百上千台计算机进行数据存储。
YARN框架负责资源管理和调度,包括内存、CPU等。
MapReduce负责离线批处理,基于磁盘进行计算。
Tez将多个MapReduce作业进行分析优化后,构成有向无环图,以提高工作效率。
Spark基于内存进行计算,性能比MapReduce高。
Hive是Hadoop上的数据仓库,用于决策分析,支持SQL语句(但实际上Hive会把SQL语句转成MapReduce作业)。
Pig负责流数据处理(轻量级脚本语言),是基于Hadoop的大规模数据分析平台,提供类似SQL的查询语言Pig Latin。
Oozie是Hadoop上的作业流调度系统,用于工作流管理。
Zookeeper提供分布式协调一致性服务,比如集群管理、分布式锁等。
HBase是列族数据库,支持随机读写,实时应用。
Flume负责日志收集分析。
Sqoop用于Hadoop与传统数据库平台之间互导数据。
Ambari是Hadoop部署工具,支持Apache Hadoop集群的供应、管理和监控。

2.3 Hadoop安装

2.1.1 Hadoop安装方式

包括三种方式:

  1. 单机模式
    Hadoop默认模式为非分布式模式(本地模式),无需进行其他配置即可运行。
    非分布式即单Java进程,方便进行调试。
  2. 伪分布式模式
    Hadoop可以在单节点上以伪分布式的方式运行,Hadoop进程以分离的Java进程来运行,节点既作为NameNode也作为DataNode。
    同时,读取的是HDFS中的文件。
  3. 分布式模式
    使用多个节点构成集群环境来运行Hadoop。
2.1.2 Hadoop安装配置主要步骤
  1. 创建Hadoop用户
  2. SSH登录权限设置
  3. 安装Java环境
  4. 单机安装配置
  5. 伪分布式安装配置

2.4 Hadoop集群的部署和使用

2.4.1 Hadoop集群中的节点类型

Hadoop框架中两大核心组件为HDFS、MapReduce。
在这里插入图片描述
MapReduce的作业主要包括:

  1. 从磁盘或从网络读取数据,即I/O密集工作。
  2. 计算数据,即CPU密集工作。

一个基本的Hadoop集群中的节点主要有:

  1. NameNode:负责协调集群中的数据存储
  2. DataNode:存储被拆分的数据块
  3. JobTracker:协调数据计算任务,协调位于多个不同机器上的TaskTracker共同完成一个作业。
  4. TaskTracker:负责执行由JobTracker指派的任务,部署在不同的机器上,每一个TaskTracker负责跟踪和执行分配给自己的一小部分作业。
  5. SecondaryNameNode:帮助NameNode收集文件系统运行的状态信息,是备份(一旦NameNode出问题,SecondaryNameNode不能马上顶上来,需要一定的缓冲时间)。

访问数据时,首先访问NameNode获得要访问的数据在哪个DataNode上。(NameNode类似于目录服务器)

在这里插入图片描述

2.4.2 集群中硬件配置

集群中大部分的机器设备是作为DataNode和TaskTracker工作的,当然二者可以位于同一机器上。

DataNode/TaskTracker的硬件规格可以采用如下方案:
在这里插入图片描述

NameNode像是总管家,提供整个HDFS文件系统的NameSpace(命名空间)管理、块管理等所有服务,因此需要更多的RAM,与集群中的数据块数量相对应,并且需要优化RAM的内存通道带宽,采用双通道或三通道以上内存。
在这里插入图片描述
硬件规格可以采用如下配置:
在这里插入图片描述

SecondaryNameNode在小型集群中可以和NameNode共用一台机器,较大的集群则需要采用与NameNode相同的硬件。
在这里插入图片描述

2.4.3 集群规模大小

集群规模大小需要根据数据量进行设计。
在这里插入图片描述

2.4.4 集群网络拓扑

每个机架(Rack)中有30~40个刀片服务器,配置一个1GB的交换机,并向上传输到一个核心交换机或者路由器(1GB或以上)
在这里插入图片描述
普通的Hadoop集群结构由一个两阶网络构成。
在相同的机架中的节点间的带宽总和,要大于不同机架间的节点的带宽总和。

2.4.5 集群建立与安装

采购好硬件设备后,即可把硬件装入机架。
安装Hadoop有多种方法,主要包括:

  1. 手动化安装
  2. 自动化安装
    为了缓解安装和维护每个节点上相同软件的负担,可以使用自动化方法实现完全自动化安装。
2.4.5 Hadoop集群基准测试

在这里插入图片描述

2.4.6 在云计算环境中使用Hadoop

Hadoop不仅可以运行在企业内部的集群中,也可以运行在云计算环境中。
比如现在的百度云、阿里云、亚马逊等。
在这里插入图片描述


http://www.niftyadmin.cn/n/1799912.html

相关文章

Chapter3 分布式文件系统HDFS

3.1分布式文件系统 计算机集群结构: 分布式文件系统把文件分布存储导多个计算机节点上,成千上万的计算机节点构成计算机集群。与之前使用多个处理器和专业高级硬件的并行化处理装置不同的是,目前的分布式文件系统采用的计算机集群都是由普通…

USACO 2.4

The Tamworth Two 两只塔姆沃斯牛 还以为又是一道 大搜索 想不到是大水.... 直接模拟 搞个多维数组判重 Overfencing穿越栅栏 先两遍floyd ... 然后 把 每个点到出口的最短距离统计出来 , 再取最大... Bessie Come Home回家 spfa 秒过.. Fractions to Decimals分…

Chapter4 分布式数据库HBase

4.1概述 4.1.1从BigTable说起 HBase是BigTable的开源实现。 BigTable是一个分布式存储系统,它最初是用于解决谷歌公司内部的大规模网页所搜问题。 网页搜索可以分为两个阶段: 1.第一阶段:建立整个网页的索引。 通过爬虫不断的抓取各个网站…

网站DDOS***防护实战老男孩经验心得分享

网站DDOS***防护实战老男孩经验心得分享 老男孩由于要培训学生、批改作业,因此最近比较忙,还要经常写书、录视频,搞的思路混乱,受朋友邀请参加某论坛活动,推迟不过,挤了一点时间,给大家简单分…

Chapter5 MapReduce

5.1概述 5.1.1分布式并行编程 MapReduce是一种分布式并行编程框架。 在计算机发展史上的"摩尔定律":CPU的性能每隔18个月就可以翻一番。然而,从2005年起,摩尔定律逐渐失效,因为CPU制作工艺存在上限、性能不可能无限提…

su和sudo命令

摘要: 超级用户是系统最高权限的拥有者,是系统管理唯一的胜任者;由于权限的超级并且达到无所不能的地步,如果管理不擅,必会对系统安全造成威胁。 除了尽可能的避免用直接用超级用户root登录系统外,我们还要…

Chapter6 数据仓库Hive

6.1数据仓库概念 6.1.1什么是数据仓库 数据仓库:数据仓库是一个面向主题的、集成的、相对稳定的、反映历史变化的数据集合,用于支持管理决策。 数据仓库的目的:支持企业内部的商业分析和决策,让企业可以基于数据仓库的分析结果…

sgu 114

2019独角兽企业重金招聘Python工程师标准>>> 带权中位数的应用。 给定位置数组x[0...n]和权重数组w[0...n] 求 x 使得 w0|x0 - x| w1|x1 - x| ... wn|xn - x|最小 #include <cstdio> #include <vector> #include <cmath> #include <cassert…