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提供了快速轻量查询的功能,方便开发人员快速的查询新产生的数据。
Hadoop以及组件介绍的更多相关文章
- hadoop Mapreduce组件介绍
MapReduce原理 MapRedcue采用‘分而治之’的思想,对大规模数据集的操作,分发给一个主节点下的各个分节点共同完成,然后通过整合各个节点的中间结果,得到最终结果.Mapreduce就是任务 ...
- hadoop hive组件介绍及常用cli命令
Hive架构图 Hive产生原因 1 关系型数据库以产生多年sql成熟 2 简化开发降低成本 3 java成员可编写udf函数 Hive是什么 Hive是基于hadoop的一个数据库工具,使用Hql作 ...
- hadoop yarn组件介绍
Yarn的产生 mapReduc1.0 1单点故障 2扩展效率低 3资源利用率高 降低运维成本 方便数据共享 多计算框架支持 MapReduce Spark Storm Yarn的架构图 Yarn模块 ...
- 大数据之路week06--day07(Hadoop生态圈的介绍)
Hadoop 基本概念 一.Hadoop出现的前提环境 随着数据量的增大带来了以下的问题 (1)如何存储大量的数据? (2)怎么处理这些数据? (3)怎样的高效的分析这些数据? (4)在数据增长的情况 ...
- 开源免费且稳定实用的.NET PDF打印组件itextSharp(.NET组件介绍之八)
在这个.NET组件的介绍系列中,受到了很多园友的支持,一些园友(如:数据之巅. [秦时明月]等等这些大神 )也给我提出了对应的建议,我正在努力去改正,有不足之处还望大家多多包涵.在传播一些简单的知识的 ...
- 免费开源的.NET多类型文件解压缩组件SharpZipLib(.NET组件介绍之七)
前面介绍了六种.NET组件,其中有一种组件是写文件的压缩和解压,现在介绍另一种文件的解压缩组件SharpZipLib.在这个组件介绍系列中,只为简单的介绍组件的背景和简单的应用,读者在阅读时可以结合官 ...
- 免费高效实用的.NET操作Excel组件NPOI(.NET组件介绍之六)
很多的软件项目几乎都包含着对文档的操作,前面已经介绍过两款操作文档的组件,现在介绍一款文档操作的组件NPOI. NPOI可以生成没有安装在您的服务器上的Microsoft Office套件的Excel ...
- 免费开源的DotNet任务调度组件Quartz.NET(.NET组件介绍之五)
很多的软件项目中都会使用到定时任务.定时轮询数据库同步,定时邮件通知等功能..NET Framework具有“内置”定时器功能,通过System.Timers.Timer类.在使用Timer类需要面对 ...
- 免费开源的DotNet二维码操作组件ThoughtWorks.QRCode(.NET组件介绍之四)
在生活中有一种东西几乎已经快要成为我们的另一个电子”身份证“,那就是二维码.无论是在软件开发的过程中,还是在普通用户的日常中,几乎都离不开二维码.二维码 (dimensional barcode) , ...
随机推荐
- Project Euler Problem 16-Power digit sum
直接python搞过.没啥好办法.看了下别人做的,多数也是大数乘法搞过. 如果用大数做的话,c++写的话,fft优化大数乘法,然后快速幂一下就好了.
- U盘还原系统
相信现在不少的人已经开始使用U盘作为启动盘来安装系统,说起来这可比用光盘装系统可是方便多了.毕竟U盘可以随身携带,至于光盘嘛,就不多说了. 可是还有许多人对U盘安装系统还是有些陌生的感觉. ...
- springmvc url处理映射的三种方式:
一.SpringMVC简介 SpringMVC是一种基于Spring实现了Web MVC设计模式的请求驱动类型的轻量级Web框架,使用了MVC架构模式的思想,将web层进行职责解耦,并管理应用所需对象 ...
- 安装vue-cli和安装nuxt
安装vue-cli:1.npm install vue-cli -g2.vue install webpack 项目名3.cd 项目名4.npm install5.npm i webpack-dev- ...
- git 回滚到某个版本
首先使用git log 显示最近的代码提交记录 commit后面的内容,就是回滚的记录名 增加了加载条显示,提高用户体验 commit 47f45668e72e4deeccae85e9767c250d ...
- P1052 国王放置问题
题目描述 在n*m的棋盘上放置k个国王,要求k个国王互相不攻击,有多少种不同的放置方法.假设国王放置在第(x,y)格,国王的攻击的区域是:(x-1,y-1), (x-1,y),(x-1,y+1),(x ...
- P1004 奶牛与牧场
题目描述 有一个牧场,牧场上的牧草每天都在匀速生长,这片牧场可供 \(a\) 头牛吃 \(b\) 天,或可供 \(c\) 头牛吃 \(d\) 天,那么,这片牧场每天新生的草量最多可供几头牛吃1天? 输 ...
- the password has expired
Oracle提示错误消息ORA-28001: the password has expired,是由于Oracle11G的新特性所致, Oracle11G创建用户时缺省密码过期限制是180天(即6个月 ...
- linux内存池
在内核中有不少地方内存分配不允许失败. 作为一个在这些情况下确保分配的方式, 内核 开发者创建了一个已知为内存池(或者是 "mempool" )的抽象. 一个内存池真实地只是一 类 ...
- SDOI2019热闹又尴尬的聚会
P5361 [SDOI2019]热闹又尴尬的聚会 出题人用脚造数据系列 只要将\(p\)最大的只求出来,\(q\)直接随便rand就能过 真的是 我们说说怎么求最大的\(p\),这个玩意具有很明显的单 ...