Hadoop以及组件介绍

一、背景介绍

在接触过大数据相关项目的时候常常都会听到Hadoop这个东西,简单来说,他是一个用分布式计算来处理大数据的开源软件,下面包含了许多的组件和子项目,这篇文章将会介绍Hadoop的原理以及一些组件的应用。

二、准备工作

1、确认储存规模

有很多的大数据项目其实数据量跟本没这么大,跟本不需要到使用Hadoop这类的大数据软件,所以,第一步应该是先确认数据量有多大,真的MySQL跑的太久再去使用Hadoop就好。

2、确认数据类型

除了结构化数据以外,现在有些大数据项目需要处理的是一些非结构化数据,例如文本、音频、图像、视频之类的,针对这些非结构化的数据,需要事先做处理,再用相对应的软件进行储存。

3、确认数据源

数据源非常重要,首先要先确认数据是否可获取、可用,例如微信聊天记录这种的根本就获取不了,而且会触犯到隐私。有些数据需要先做持久化再导入到数据库内储存,如何获取想要的数据有时候不是直接从数据库里抓这么简单,在获取数据源的时候,也需要考虑数据的质量,否则会提高未来使用的难度。

三、Hadoop介绍

Hadoop的核心为HDFS(分布式文件系统)和MapReduce(离线计算框架)。简单来说,HDFS就是将要储存的文件分散在不同的硬盘上,并记录他们的位置,而MapReduce就是将计算任务分配给多个计算单元,下面针对这两个核心再做进一步的说明。

HDFS

HDFS已经成为现在大数据的储存标准,他适合储存一次写入,多次读取的数据,并且他有自动检错、快速回复数据的功能,能够避免数据因为硬盘损坏而丢失的危险。

HDFS是由DataNode和NameNode组成的,DataNode负责储存数据,而NameNode负责管理数据,一个NameNode对应多个DataNode,NameNode记录着每个DataNode储存的数据内容,并曝露给上层系统调用,也会根据上层的指令对DataNode进行增、删、复制。

MapReduce

MapReduce是将计算任务分配给数据就近的处理节点,进行完运算后再合并导入结果,能很好的去进行大量数据的调取,但是延时较高,不适合处理实时流数据。

MapReduce可以分为Map和Reduce两个处理步骤。首先Map将用户输入的指令解析出一个个的Key/Value,然后再将转化成一组新的KV值,将原本的任务拆解成小的而且是临近数据的,并且确保这些运算任务彼此不会影响。而Reduce则是将这些运算的结果汇总起来,将结果写入。

另外YARN和Zookeepr都是用来管理的,YARN是面对计算资源的管理,而Zookeeper是面对服务器集群的管理。

YARN:资源管理框架,用来管理和调度CPU、内存的资源,避免所有的计算资源被某些任务大量占用,有点像是云管理平台可以创造不同的容器和虚拟机,并将这些硬件资源按用户的意愿分配给计算任务。

Zookeeper:集用来做群管理,跟微服务里的功能相似,可以在集群里面选出一个leader,并保证集群里面服务器的一致性、可靠性和实时性。

四、Hadoop常用组件介绍

1、Hive

Hive是将Hadoop包装成使用简单的软件,用户可以用比较熟悉的SQL语言来调取数据,也就是说,Hive其实就是将Hadoop包装成MySQL。Hive适合使用在对实时性要求不高的结构化数据处理。像是每天、每周用户的登录次数、登录时间统计;每周用户增长比例之类的BI应用。

2、HBase

HBase是用来储存和查询非结构化和半结构化数据的工具,利用row key的方式来访问数据。HBase适合处理大量的非结构化数据,例如图片、音频、视频等,在训练机器学习时,可以快速的透过标签将相对应的数据全部调出。

3、Storm

前面两个都是用来处理非实时的数据,对于某些讲求高实时性(毫秒级)的应用,就需要使用Storm。Storm也是具有容错和分布式计算的特性,架构为master-slave,可横向扩充多节点进行处理,每个节点每秒可以处理上百万条记录。可用在金融领域的风控上。

4、Impala

Impala和Hive的相似度很高,最大的不同是Impala使用了基于MPP的SQL查询,实时性比MapReduce好很多,但是无法像Hive一样可以处理大量的数据。Impala提供了快速轻量查询的功能,方便开发人员快速的查询新产生的数据。

原文地址:https://www.cnblogs.com/yenpaul/p/10223828.html

时间: 2024-10-11 11:17:15

Hadoop以及组件介绍的相关文章

Hadoop——相关组件及其关系

如今Apache Hadoop已成为大数据行业发展背后的驱动力.Hive和Pig等技术也经常被提到,但是他们都有什么功能,为什么会需要奇怪的名字(如Oozie,ZooKeeper.Flume). Hadoop带来了廉价的处理大数据(大数据的数据容量通常是10-100GB或更多,同时数据种类多种多样,包括结构化.非结构化等)的能力.但这与之前有什么不同? 现 今企业数据仓库和关系型数据库擅长处理结构化数据,并且可以存储大量的数据.但成本上有些昂贵.这种对数据的要求限制了可处理的数据种类,同时这种惯

Android四大基本组件介绍与生命周期

主要参考: 1.http://blog.csdn.net/android_tutor/article/details/5772285 2.http://www.cnblogs.com/bravestarrhu/archive/2012/05/02/2479461.html Android四大基本组件介绍与生命周期,布布扣,bubuko.com

Hadoop离线项目介绍

Hadoop离线项目介绍(不包括程序) 一:项目场景 1.需求分析 根据用户行为数据进行程序的处理,得到结果保存到关系型数据库中 需要收集用户(系统使用者)在不同客户端上产生的用户行为数据,最终保存到hdfs上 需要明确收集字段的相关信息,而且需要考虑到后期的新需求的提出 总:收集不同客户端的用户行为数据,通过mr.hive进行数据分析处理,将分析结果数据保存到关系型数据库中 2.场景一 二:核心关注点 1.核心关注点 购买率 购买的人数/总人数 购买的人数/查看该商品的总人数 复购率 n次购买

ExtJS 4.2 组件介绍

目录 1. 介绍 1.1 说明 1.2 组件分类 1.3 组件名称 1.4 组件结构 2. 组件的创建方式 2.1 Ext.create()创建 2.2 xtype创建 1. 介绍 1.1 说明 ExtJS的强大功能之一是提供了非常丰富的组件,包括grid(表格).panel(面板).form(表单).button(按钮).progressBar(进度条)等等. 一个的ExtJS 4应用程序的UI界面,就是由一个或多个组件组成. 这里将会介绍组件的分类.名称.结构以及创建方式. 1.2 组件分类

RDIFramework.NET ━ .NET快速信息化系统开发框架 ━ 工作流程组件介绍

RDIFramework.NET ━ .NET快速信息化系统开发框架 工作流程组件介绍 RDIFramework.NET,基于.NET的快速信息化系统开发.整合框架,给用户和开发者最佳的.Net框架部署方案. 1.RDIFramework.NET框架介绍 RDIFramework.NET,基于.NET的快速信息化系统开发.整合框架,为企业或个人在.NET环境下快速开发系统提供了强大的支持,开发人员不需要开发系统的基础功能和公共模块,框架自身提供了强大的函数库和开发包,开发人员只须集中精力专注于业

[ExtJs5.1.0-第3天] 进度条组件介绍

进度条组件介绍 1.认识Ext.Progress BarExt.ProgressBar是一个可更新的进度条组件,继承自Ext.Component,该进度条具有2种不同的模式: 手工模式 和 自动模式.在手工模式中程序员要自己控制进度条的显示.更新.清楚:在自动模式中只需调用wait方法,进度条就会自动无限制地滚动下去,它适合为那些长时间的同步操作进行提示. 下表给出所有组件都有的公共属性和方法 配置项 类型 说明 renderTo String 指定一个页面上已经存在的元素或元素id,该元素将会

Hadoop发行版本介绍

前言 从2011年开始,中国进入大数据风起云涌的时代,以Hadoop为代表的家族软件,占据了大数据处理的广阔地盘.开源界及厂商,所有数据软件,无一不向Hadoop靠拢.Hadoop也从小众的高富帅领域,变成了大数据开发的标准.在Hadoop原有技术基础之上,出现了Hadoop家族产品,通过“大数据”概念不断创新,推出科技进步. 目录 Hadoop的发展史 Hadoop的发行版本的选择和介绍 1. Hadoop发展史 1.1Hadoop产生背景 Hadoop 最早起源于Nutch .Nutch 是

Hadoop入门扫盲:hadoop发行版介绍与选择

一.hadoop发行版介绍 目前Hadoop发行版非常多,有Intel发行版,华为发行版.Cloudera发行版(CDH).Hortonworks版本等,所有这些发行版均是基于Apache Hadoop衍生出来的,之所以有这么多的版本,是由于Apache Hadoop的开源协议决定的:任何人可以对其进行修改,并作为开源或商业产品发布/销售. 目前而言,不收费的Hadoop版本主要有三个,都是国外厂商,分别是: Apache(最原始的版本,所有发行版均基于这个版本进行改进) Cloudera版本(

Docker生态系统系列之一:常用组件介绍

[编者的话]本篇文章是介绍Docker生态系统的第一篇,不仅从概念上介绍了容器化.服务发现和全局配置存储.网络工具.调度.集群管理和编排这几部分内容,而且配以清晰易懂的例子进行讲解说明,非常值得读者称赞.Docker是现在使用最多的容器化软件.与其它已经存在的容器化系统相比,Docker可以更加简单的创建和管理容器,并与其它开源软件集成. 简介 容器化是一个以可移植和可预测的方式来部署分布式应用的过程,它会将应用组件以及依赖打包为一个标准.独立.轻量的环境,这个环境其实就是容器.现在许多公司都乐