第二章-大数据处理框Hadoop
第二章-大数据处理框Hadoop
文章目录
- 第二章-大数据处理框Hadoop
- Hadoop简介
- Hadoop概念
- Hadoop版本
- Hadoop优化与发展
- Hadoop生态系统
- Hive
- Pig
- Hadoop重要组件
- Hadoop集群部署
Hadoop简介
Hadoop概念
Hadoop是Apache软件基金会旗下的一个开源分布式计算平台,为用户提供了系统底层细节透明的分布式基础架构。Hadoop被公认为行业大数据标准开源软件,在分布式环境下提供了海量数据的处理能力
Hadoop是基于Java语言开发的,具有很好的跨平台特性,并且可以部署在廉价的计算机集群中。Hadoop可以支持多种编程语言:C/C++、Java、Python 等。
Hadoop的核心是分布式文件系统HDFS(Hadoop Distributed File System)和 MapReduce。
Hadoop是一个能够对大量数据进行分布式处理的软件框架,并且是以一种可靠、高效、可伸缩的方式进行处理的,它具有以下几个方面的特性:
- 高可靠性
- 高效性
- 高可扩展性
- 高容错性
- 成本低
Hadoop凭借其突出的优势,已经在各个领域得到了广泛的应用,而互联网领域是其应用的主阵地
- Facebook主要将Hadoop平台用于日志处理、推荐系统和数据仓库等方面
- 国内采用Hadoop的公司主要有百度、阿里、网易、华为、中国移动等,其中,阿里的Hadoop 集群比较大
Hadoop在企业中的应用架构:
Hadoop版本
Apache Hadoop版本演变:
- Hadoop1.0
- Hadoop0.20.x
- Hadoop0.21.x
- Hadoop0.22.x
- Hadoop2.0
- Hadoop0.23.x
- Hadoop2.x
- Hadoop3.0
- Hadoop3.x
Hadoop 3.x 版本还没有经过充分的测试,可能还存在些问题。目前还是推荐使用 Hadoop 2.x 版本。
Hadoop1.0 的核心组件仅包括 MapReduce 和 HDFS,存在单一名称节点、单一命名空间、资源管理效率低等问题。Hadoop2.0 中设计了HDFS HA,提供名称节点热备机制;设计了HDFS Federation,管理多个命名空间;设计了新的资源管理框架 YARN。
Hadoop优化与发展
Hadoop的优化与发展主要体现在两个方面:
- Hadoop 自身两大核心组件 MapReduce 和 HDFS 的架构设计改进
- Hadoop 生态系统其它组件的不断丰富,加入了Pig、Tez、Spark 等新组件
组件 | 功能 | 解决的问题 |
---|---|---|
Pig | 处理大规模数据的脚本语言,用户只需要编写几条简单的语句,系统会自动转换为 MapReduce 作业 | 抽象层次低,需要手工编写大量代码 |
Spark | 基于内存的分布式并行编程框架,具有较高的实时性,并且较好支持迭代计算 | 延迟高,而且不适合执行迭代计算 |
Oozie | 工作流和协作服务引擎,协调Hadoop上运行的不同任务 | 没有提供作业(Job)之间依赖关系管理机制,需要用户自己处理作业之间依赖关系 |
Tez | 支持DAG作业的计算框架,对作业的操作进行重新分解和组合,形成一个大的DAG作业,减少不必要操作 | 不同的MapReduce任务之间存在重复操作,降低了效率 |
Kafka | 分布式发布订阅消息系统,不同类型的分布式系统可以统一接入到Kafka,实现和Hadoop各个组件之间的不同类型数据的实时高效交换 | Hadoop生态系统中各个组件和其他产品之间缺乏统一的、高效的数据交换中介 |
Hadoop生态系统
Hadoop的项目结构不断丰富发展,已经形成一个丰富的Hadoop生态系统
数据仓库(Data Warehouse)是一个面向主题的、集成的、相对稳定的、反映历史变化的数据集合,用于支持管理决策。
数据仓库与数据库的主要区别在于:
- 数据库是面向事务的设计,数据仓库是面向主题设计的
- 数据库一般存储在线交易数据,数据仓库存储的一般是历史数据
- 数据库设计是尽量避免冗余,数据仓库在设计是有意引入冗余
- 数据库是为捕获数据而设计,数据仓库是为分析数据而设计
Hive
Hive是一个构建于 Hadoop 顶层的数据仓库工具,支持大规模数据存储、分析,具有良好的可扩展性,某种程度上可以看作是用户编程接口,本身不存储和处理数据。
- 依赖分布式文件系统 HDFS 存储数据
- 依赖分布式并行计算模型 MapReduce 处理数据
- 定义了简单的类似 SQL 的查询语言——HiveQL,用户可以通过编写的 HiveQL 语句运行 MapReduce 任务
- 可以很容易把原来构建在关系数据库上的数据仓库应用程序移植到 Hadoop 平台上
Hive本身提供了一系列对数据进行提取、转换、加载(ETL)的工具,可以存储、查询和分析存储在Hadoop中的大规模数据,这些工具能够很好地满足数据仓库各种应用场景。
Hive在很多方面和传统的关系数据库类似,但是它的底层依赖的是 HDFS 和 MapReduce,所以在很多方面又有别于传统数据库。
对比 | Hive | 传统数据库 |
---|---|---|
数据插入 | 支持批量导入 | 支持单条和批量导入 |
数据更新 | 不支持 | 支持 |
索引 | 支持 | 支持 |
执行延迟 | 高 | 低 |
扩展性 | 好 | 有限 |
Hive应用实例:WordCount
- 采用 Hive 实现 WordCount 算法需要编写较少的代码量
- 在 MapReduce 的实现中,需要进行编译生成 jar 文件来执行算法,而在 Hive 中不需要。HiveQL 语句的最终实现需要转换为 MapReduce 任务来执行,这都是由 Hive 框架自动完成的,用户不需要了解具体实现细节
Hive在企业大数据分析平台中的应用,有时候 Pig 可以作为 Hive 的替代工具。
Pig
Pig是一个基于Hadoop的大规模数据分析平台,它简化了 Hadoop 常见的工作任务。Pig可加载数据、表达转换数据以及存储最终结果,Pig内置的操作使得半结构化数据变得有意义(如日志文件)。同时Pig可扩展使用Java中添加的自定义数据类型并支持数据转换。
- 提供类似 SQL 的查询语言Pig Latin
- 允许用户通过编写简单的脚本来实现复杂的数据分析,而不需要编写复杂的MapReduce应用程序
- Pig会自动把用户编写的脚本转换成MapReduce作业在 Hadoop集群上运行,而且具备对生成的MapReduce程序进行自动优化的功能
- Hive一般处理的是结构化的数据,Pig可以处理非结构化数据。处理流程: LOAD-> 转换 ->STORE/DUMP
Tez: 支持DAG作业的计算框架。核心思想是将 Map 和 Reduce 两个操作进一步拆分,分解后的元操作可以任意灵活组合,产生新的操作,这些操作经过一些控制程序组装后,可形成一个大的 DAG 作业。
Hadoop重要组件
Hadoop生态系统重要组件
组件 | 功能 |
---|---|
HDFS | 分布式文件系统 |
MapReduce | 分布式并行编程模型 |
YARN | 资源管理和调度器 |
Tez | 运行在 YARN 之上的下一代 HAdoop 查询处理框架 |
Hive | Hadoop 上的数据仓库 |
HBase | Hadoop 上的非关系型的分布式数据库 |
Pig | 一个基于 Hadoop 的大规模数据分析平台,提供类似 SQL 的查询语言 Pig Latin |
Sqoop | 用于在 Hadoop 与传统数据库之间进行数据传递 |
Oozie | Hadoop 上的工作流管理系统 |
Zookeeper | 提供分布式协调一致性服务 |
Storm | 流计算框架 |
Flume | 一个高可用的,高可靠,分布式的海量日志采集、聚合和传输的系统 |
Ambari | Hadoop 快速部署工具,支持Apache Hadoop集群的供应、管理和监控 |
Kafka | 一种高吞吐量的分布式发布订阅消息系统,可以处理消费者规模的网站中的所有动作流数据 |
Spark | 类似于Hadoop MapReduce的通用并行框架 |
Hadoop集群部署
Hadoop安装方式:
- 单机模式:Hadoop 默认模式为非分布式模式(本地模式),无需进行其他配置即可运行。
- 伪分布式模式:Hadoop 可以在单节点上以伪分布式的方式运行,Hadoop 进程以分离的 Java 进程来运行,节点既作为 NameNode 也作为 DataNode,同时,读取的是 HDFS 中的文件。
- 分布式模式:使用多个节点构成集群环境来运行 Hadoop
Hadoop框架中最核心的设计是为海量数据提供存储的 HDFS 和对数据进行计算的 MapReduce。MapReduce的作业主要包括:
- 从磁盘或从网络读取数据,即IO密集工作
- 计算数据,即CPU密集工作
Hadoop集群的整体性能取决于CPU、内存、网络以及存储之 间的性能平衡。因此运营团队在选择机器配置时要针对不同 的工作节点选择合适硬件类型。
一个基本的 Hadoop 集群中的节点主要有:
- NameNode:负责协调集群中的数据存储
- DataNode:存储被拆分的数据块
- JobTracker:协调不同机器上数据计算任务
- TaskTracker:负责执行由 JobTracker 指派的任务
- SecondaryNameNode:帮助 NameNode 收集文件系统运行的状态信息
在集群中,大部分的机器设备是作为 Datanode和 TaskTracker 工作的。NameNode提供整个 HDFS 文件系统的 NameSpace(命名 空间)管理、块管理等所有服务,很多元数据是直接保存在 内存中的,因此需要更多的RAM,与集群中的数据块数量 相对应,并且需要优化 RAM 的内存通道带宽。SecondaryNameNode在小型集群中可以和 NameNode 共用一台机器,较大的群集可以采用与NameNode相同的硬件。
Hadoop集群规模可大可小,初始时,可以从一个较小规模的集群开始,比如包含10个节点,然后,规模随着存储器和计算需求的扩大而扩大。
对于一个小的集群,名称节点(NameNode)和 JobTracker 运行在单个节点上,通常是可以接受的。但是,随着集群和存储在HDFS 中的文件数量的增加,名称节点需要更多的主存,这时,名称节点和 JobTracker 就需要运行在不同的节点上。
第二名称节点(SecondaryNameNode)会和名称节点可以运行在 相同的机器上,但是,由于第二名称节点和名称节点几乎具有相同的主存需求,因此,二者最好运行在不同节点上。
普通的Hadoop集群结构由一个两阶网络构成。每个机架(Rack)有30-40个服务器,配置一个1GB的交换机,并向上传输到一个核心交换机或者路由器(1GB或以上)。
第二章-大数据处理框Hadoop相关推荐
- 大数据技术原理与应用(第二章 大数据处理架构Hadoop)
目录 2.1Hadoop简介 HDFS(分布式文件系统) MapReduce(分布式并行编程框架) Hadoop的特点 Hadoop的应用 编辑Hadoop版本的变化 2.2Hadoop项目结构 T ...
- 云计算与大数据第15章 分布式大数据处理平台Hadoop习题带答案
第15章 分布式大数据处理平台Hadoop习题 15.1 选择题 1.分布式系统的特点不包括以下的( D ). A. 分布性 B. 高可用性 C. 可扩展性 D.串行 ...
- Hadoop专业解决方案-第1章 大数据和Hadoop生态圈
一.前言: 非常感谢Hadoop专业解决方案群:313702010,兄弟们的大力支持,在此说一声辛苦了,经过两周的努力,已经有啦初步的成果,目前第1章 大数据和Hadoop生态圈小组已经翻译完成,在此 ...
- 第二章:小朱笔记hadoop之源码分析-脚本分析
第二章:小朱笔记hadoop之源码分析-脚本分析 第一节:start-all.sh 第二节:hadoop-config.sh 第三节:hadoop-env.sh 第四节:start-dfs.sh 第五 ...
- 第二章:大数据处理架构Hadoop
本章内容: 1.Hadoop的发展历程 2.Hadoop生态系统的各个组件及其功能 3.Hadoop的安装和使用方法 4.Hadoop集群的部署和使用方法 1.Hadoop简介 Hadoop是Apac ...
- 第二章 大数据操作系统
本章将重点展示Hadoop作为大数据操作系统的一面,通过分布式文件系统(HDFS)和负载和资源管理器(YARN)来概述Hadoop的原理.另外还会演示如何使用命令行与HDFS进行交互,并执行一个Map ...
- 第一、二章大数据与Hadoop的概述
目录 第一章:大数据的概述 1.1 大数据的概念 1.2 大数据的特征(重点) 1.3 大数据的应用场景 1.4 大数据的发展前景 1.5 企业大数据的一般工作流程 1.6 数据部门的组织架构 1. ...
- 第二章 大数据如此重要,引无数英雄竞折腰
在这个一秒钟就可能江山易主的大数据时代,获得最真实可靠的数据并进行准确的分析和预测是企业占得先机的重要条件.如何在数据上展开角力成为企业生存的核心问题,只有企业对大数据的"外貌"和 ...
- 第三章 大数据之Hadoop搭建
这是大数据测试系列第三章,可参考大数据测试系列文章 环境 服务器信息,是腾讯云服务器,2核cpu,4GB内存,80GB云硬盘,系统为centos 7.6_x64 介绍 Hadoop是用来处理大数据集合 ...
最新文章
- jquerymobile在手机上很小_手机充电时按这个键,充电快很多!
- java json特殊字符处理_java json字符串传递给 js 时 特殊字符转义错误 研究
- 反应型关系数据库事务
- 在JDK 12精简数字格式中使用最小分数数字
- c#异常处理_C#中的异常处理
- css3中animation动画、浏览器私有前缀、文字阴影
- 容器编排技术 -- Kubernetes kubectl label 命令详解
- galera mysql cluster
- 12种获取节点和元素的代码
- lightgbm algorithm case of kaggle(下)
- 批量下载CSS中的图片
- 阿里巴巴开放平台Oauth2.0协议获取access_token
- 替罪羊树的原理及实例
- 添加或删除程序 0x00310030指令引用的0x00310030内存。该内存不能为written。
- html实现背景图片自动更换,如何实现在HTML中更换或添加网站背景图片
- linux ubuntu 五笔输入法,ubuntu下安装fcitx五笔输入法
- 运用极域电子教室控制其他学生端(不需要教师端)
- 利用opencv-python绘制多边形框或(半透明)区域填充(可用于分割任务mask可视化)
- 2021年熔化焊接与热切割考试题库与解析
- C语言手写爱心-还原最新热剧撩妹代码
热门文章
- 常见数据归一化的几种方法
- 【Python】青少年蓝桥杯_每日一题_8.11_画二叉树
- virtual DOM和真实DOM的区别_让虚拟DOM和DOMdiff不再成为你的绊脚石
- 菲律宾达沃照明和电力公司的数据中心发生火灾
- android获取小程序音频时长,最新微信小程序获取音频时长与实时获取播放进度...
- java csrf_java使用jsp servlet来防止csrf 攻击的实现方法
- C++:C++语言入门级基础知识考察点回顾之函数、结构体和类
- 成功解决TypeError: unhashable type: 'numpy.ndarray'
- 成功解决\h5py\__init__.py:34: FutureWarning: Conversion of the second argument of issubdtype from `float
- RBF:RBF基于近红外光谱的汽油辛烷值含量预测结果对比