将设为首页浏览此站
开启辅助访问 天气与日历 收藏本站联系我们切换到窄版

易陆发现论坛

 找回密码
 开始注册
查看: 33|回复: 1
收起左侧

hadoop组件介绍

[复制链接]
发表于 2022-11-15 15:00:09 | 显示全部楼层 |阅读模式
购买主题 本主题需向作者支付 2 金钱 才能浏览
 楼主| 发表于 2022-11-15 15:00:10 | 显示全部楼层
1.Hadoop本质上是:分布式文件系统(HDFS) + 分布式计算框架(Mapreduce) + 调度系统Yarn搭建起来的分布式大数据处理框架。
3 h- o1 e% h5 N$ F
% g* _3 ^( P4 y4 Q+ l, s- s  }2.Hive:是一个基于Hadoop的数据仓库,适用于一些高延迟性的应用(离线开发),可以将结构化的数据文件映射为一张数据库表,并提供简单的sql查询功能。Hive可以认为是MapReduce的一个包装,把好写的HQL转换为的MapReduce程序,本身不存储和计算数据,它完全依赖于HDFS和MapReduce,Hive中的表是纯逻辑表。hive需要用到hdfs存储文件,需要用到MapReduce计算框架。
1 ~- f& H- P9 s1 {1 e1 i6 B9 R- ]/ {, ~+ `" {- ~8 Q2 L$ m
3.HBase:是一个Hadoop的数据库,一个分布式、可扩展、大数据的存储。hbase是物理表,不是逻辑表,提供一个超大的内存hash表,搜索引擎通过它来存储索引,方便查询操作。HBase可以认为是HDFS的一个包装。他的本质是数据存储,是个NoSql数据库;HBase部署于HDFS之上,并且克服了hdfs在随机读写方面的缺点,提高查询效率。  F) v- w# U' [% d9 K) C: m  {$ W

& ~( p2 R) w1 y  t4 b对HBASE数据结构的简单说明:
; l. i0 K7 P! ^/ I1 @1 Q& d& V7 L) _$ c. U2 x+ w0 O: p6 T) M) y2 W

! h& a! B4 I! S) ~/ ^4 S9 h
# }/ Q7 u9 Y3 ?; X假设HBASE表内容如上,一般将personal data 和 professional data称为column family,而name、city、designation和salary则称为各个column family下面的qualifier。每一个column family都可以认为是一个字典结构,其里面的qualifier则为key,如下:1 _. H9 Q& Z5 @# t! X, f
" U3 \5 f3 I2 V  K( x0 P5 t
{
6 n- w: v5 I' |  z: l6 ?6 A9 z: j* e  "row1": {
, a. _1 ?: Z3 B: b: M    "personal_data": {  ]4 N3 ^" u% K2 u$ o0 A
      "name": "raju",
1 d2 J- K' S5 ^4 r, s      "city": "hyderabad"9 E7 Q8 m; ]2 v5 u- ?  c
    },
+ h+ ^( e' u( ^- v: }) J9 n3 M    "professional_data": {
# `1 z6 N3 a' K3 b3 g' V7 [- w      "designation": "manager",
# R' w2 A: L: S  s0 _      "salary": 5000
/ I! x* X. J/ N% t" d& A4 x9 y0 l    }
) g, \! p7 `# c' s& V  },
/ @: }6 w1 e8 Q8 E) L3 n  "row2": {...}
1 w2 ], s* ?' `! C# T1 U}
3 U2 m  A6 y' Y7 f. n8 z/ Y其中,对于每一行,每个qualifier其实并不是必须存在的,可以缺失。除了上面的column family,qualifier之外,还有timestamp信息,即每个字段数据保留多久(TTL)。
" J. a% N) K3 X6 y) x7 p
1 H7 A  x$ m; x1 A% D1 e4. Apache Hadoop 项目有两个核心组件,被称为 Hadoop 分布式文件系统 (Hadoop Distributed File System, HDFS) 的文件存储,以及被称为 MapReduce 的编程框架。有一些支持项目充分利用了 HDFS 和 MapReduce。
, F" ]  Z/ r  c7 F' _/ b; U8 s! c6 j
HDFS: 如果您希望有 4000 多台电脑处理您的数据,那么最好将您的数据分发给 4000 多台电脑。HDFS 可以帮助您做到这一点。HDFS 有几个可以移动的部件。Datanodes 存储数据,Namenode 跟踪存储的位置。还有其他部件,但这些已经足以使您开始了。
3 r" e+ _) ^/ h+ [7 u3 u9 bMapReduce: 这是一个面向 Hadoop 的编程模型。有两个阶段,毫不意外,它们分别被称为 Map 和 Reduce。如果希望给您的朋友留下深刻的印象,那么告诉他们,Map 和 Reduce 阶段之间有一个随机排序。JobTracker 管理您的 MapReduce 作业的 4000 多个组件。TaskTracker 从 JobTracker 接受订单。如果您喜欢 Java,那么用 Java 编写代码。如果您喜欢 SQL 或 Java 以外的其他语言,您的运气仍然不错,您可以使用一个名为 Hadoop Streaming 的实用程序。
# i$ h" k  h( v- jHadoop Streaming:一个实用程序,在任何语言(C、Perl 和 Python、C++、Bash 等)中支持 MapReduce 代码。示例包括一个 Python 映射程序和一个 AWK 缩减程序。( U: A( \* C3 N+ F
Hive 和 Hue: 如果您喜欢 SQL,您会很高兴听到您可以编写 SQL,并使用 Hive 将其转换为一个 MapReduce 作业。不,您不会得到一个完整的 ANSI-SQL 环境,但您的确得到了 4000 个注释和多 PB 级的可扩展性。Hue 为您提供了一个基于浏览器的图形界面,可以完成您的 Hive 工作。hive是基于Hadoop的一个数据仓库工具,用来进行数据提取、转化、加载,这是一种可以存储、查询和分析存储在Hadoop中的大规模数据的机制。hive数据仓库工具能将结构化的数据文件映射为一张数据库表,并提供SQL查询功能,能将SQL语句转变成MapReduce任务来执行。Hive的优点是学习成本低,可以通过类似SQL语句实现快速MapReduce统计,使MapReduce变得更加简单,而不必开发专门的MapReduce应用程序。hive十分适合对数据仓库进行统计分析& n1 S' [# {3 N- J' a; O1 J5 m
Pig: 一个执行 MapReduce 编码的更高层次的编程环境。Pig 语言被称为 Pig Latin。您可能会发现其命名约定有点不合常规,但是您会得到令人难以置信的性价比和高可用性。% D2 O3 |2 c: W6 w
Sqoop:在 Hadoop 和您最喜爱的关系数据库之间提供双向数据传输,将数据从数据库导入Hive,将Hive导入数据库等操作。。
0 z. S- x: }3 m1 T* XOozie:管理 Hadoop 工作流。这并不能取代您的调度程序或 BPM 工具,但它在您的 Hadoop 作业中提供 if-then-else 分支和控制。# L, P4 P0 f* r( s. O0 B, Z
HBase:一个超级可扩展的键值存储。它的工作原理非常像持久的散列映射(对于 Python 爱好者,可以认为是词典)。尽管其名称是 HBase,但它并不是一个关系数据库。
# s4 f! r7 Z1 K$ Y+ ]  \0 eFlumeNG:一个实时的加载程序,用来将数据流式传输到 Hadoop 中。它将数据存储在 HDFS 和 HBase 中。您会希望从 FlumeNG 开始,因为它对原始的水槽有所改进。
; ?6 u- ~0 ?& K0 Z0 m" K% B& Z1 C# [Whirr:面向 Hadoop 的云配置。您可以在短短几分钟内使用一个很短的配置文件启动一个集群。
/ ~7 j9 U1 |3 E& M2 UMahout:面向 Hadoop 的机器学习。用于预测分析和其他高级分析。
1 M* b  E  _; ?6 B0 x, E0 rFuse:让 HDFS 系统看起来就像一个普通的文件系统,所以您可以对 HDFS 数据使用 ls、rm、cd 和其他命令。
3 G; b+ Z+ c9 ~- E! z* x/ i  fZookeeper:用于管理集群的同步性。您不需要为 Zookeeper 做很多事情,但它在为您努力工作。如果您认为自己需要编写一个使用 Zookeeper 的程序,您要么非常非常聪明,并且可能是 Apache 项目的一个委员会,要么终将会有过得非常糟糕的一天。' d' _  e4 o8 |' g! a
Azkaban对操作进行管理,比如定时脚本执行,有图形化界面,上传job简单,只需要将脚本打成包,可直接上传。2 w, U, \% \: e* f& R0 G
二、准则1 t' i4 ~, g! V) V+ W
) a1 a6 H2 z6 n9 O7 S
1、确认储存规模; {/ C4 R7 R* W% O+ K
有很多的大数据项目其实数据量跟本没这么大,跟本不需要到使用Hadoop这类的大数据软件,所以,第一步应该是先确认数据量有多大,真的MySQL跑的太久再去使用Hadoop就好。
: s1 J& C$ z0 X9 X
8 u. d. a# r5 V1 d9 n2、确认数据类型7 c- t- u9 O0 `8 Q. f" O/ L2 j. j
除了结构化数据以外,现在有些大数据项目需要处理的是一些非结构化数据,例如文本、音频、图像、视频之类的,针对这些非结构化的数据,需要事先做处理,再用相对应的软件进行储存。) n. w4 P9 n* E' N

  j( ?- k9 u( i. s% C4 a- P# ?3、确认数据源
  E! r- N: A& O# m' T' S数据源非常重要,首先要先确认数据是否可获取、可用,例如微信聊天记录这种的根本就获取不了,而且会触犯到隐私。有些数据需要先做持久化再导入到数据库内储存,如何获取想要的数据有时候不是直接从数据库里抓这么简单,在获取数据源的时候,也需要考虑数据的质量,否则会提高未来使用的难度。
) o- u3 ^6 i' g  f6 G' n6 l* C" ^% `5 ]& [& B) D1 B8 Q
三、介绍2
, l& p: [* p0 H* Y- v7 V3 I$ g- q- N
7 P1 B/ U4 z7 o+ iHadoop的核心为HDFS(分布式文件系统)和MapReduce(离线计算框架)。简单来说,HDFS就是将要储存的文件分散在不同的硬盘上,并记录他们的位置,而MapReduce就是将计算任务分配给多个计算单元,下面针对这两个核心再做进一步的说明。
& Y, _+ B7 @& Y7 O8 c3 x, b
4 @) C! `0 C2 p, x$ i6 O5 Q, G1. HDFS$ o. }0 K; ?% X+ H  q" X
HDFS已经成为现在大数据的储存标准,他适合储存一次写入,多次读取的数据,并且他有自动检错、快速回复数据的功能,能够避免数据因为硬盘损坏而丢失的危险。
1 n0 V8 _- i& d: d4 K; u. M. `, c6 ^
HDFS是由DataNode和NameNode组成的,DataNode负责储存数据,而NameNode负责管理数据,一个NameNode对应多个DataNode,NameNode记录着每个DataNode储存的数据内容,并曝露给上层系统调用,也会根据上层的指令对DataNode进行增、删、复制。
# o2 \8 T) `. x4 _
8 o6 @* Z: C2 S5 f% @# q/ U2. MapReduce
, `4 q4 s, }) n0 N$ UMapReduce是将计算任务分配给数据就近的处理节点,进行完运算后再合并导入结果,能很好的去进行大量数据的调取,但是延时较高,不适合处理实时流数据。
( ^9 @! Z" {- Q) q5 K0 k  ^$ g7 FMapReduce可以分为Map和Reduce两个处理步骤。首先Map将用户输入的指令解析出一个个的Key/Value,然后再将转化成一组新的KV值,将原本的任务拆解成小的而且是临近数据的,并且确保这些运算任务彼此不会影响。而Reduce则是将这些运算的结果汇总起来,将结果写入。: y+ g4 }' S/ Z6 a8 M# W* Q, r8 ^
' s4 t4 l1 f8 _/ C6 j
另外YARN和Zookeepr都是用来管理的,YARN是面对计算资源的管理,而Zookeeper是面对服务器集群的管理。8 X3 B2 d% Q9 n- h) o; M
3. YARN:资源管理框架,用来管理和调度CPU、内存的资源,避免所有的计算资源被某些任务大量占用,有点像是云管理平台可以创造不同的容器和虚拟机,并将这些硬件资源按用户的意愿分配给计算任务。
; K0 f, r0 J5 B/ P9 O4. Zookeeper:集用来做群管理,跟微服务里的功能相似,可以在集群里面选出一个leader,并保证集群里面服务器的一致性、可靠性和实时性。, x5 P4 r) F( [

, h! _# H% |* m四、组件1 p5 C. a. [2 }' x: [  y8 m
6 O8 ^1 G& z. V) g0 ?
1、Hive( \+ X7 ^0 [5 G3 y. Q; G
Hive是将Hadoop包装成使用简单的软件,用户可以用比较熟悉的SQL语言来调取数据,也就是说,Hive其实就是将Hadoop包装成MySQL。Hive适合使用在对实时性要求不高的结构化数据处理。像是每天、每周用户的登录次数、登录时间统计;每周用户增长比例之类的BI应用。) Q& a0 {" A) r" ]7 l# S
% ^; Y7 J  a* `' E
2、HBase
( f( l/ i( a' o1 M) Q2 c, XHBase是用来储存和查询非结构化和半结构化数据的工具,利用row key的方式来访问数据。HBase适合处理大量的非结构化数据,例如图片、音频、视频等,在训练机器学习时,可以快速的透过标签将相对应的数据全部调出。
. Y, x/ |( e# }8 X. r
, j6 z5 ]5 e% Z3、Storm4 v" f0 E/ j0 y
前面两个都是用来处理非实时的数据,对于某些讲求高实时性(毫秒级)的应用,就需要使用Storm。Storm也是具有容错和分布式计算的特性,架构为master-slave,可横向扩充多节点进行处理,每个节点每秒可以处理上百万条记录。可用在金融领域的风控上。8 W5 Y6 h1 D& f  Y5 I
1 N# m" P7 |# J1 e+ k% W1 e
4、Impala1 z5 W! Z' v% @3 Q* Q( l
Impala和Hive的相似度很高,最大的不同是Impala使用了基于MPP的SQL查询,实时性比MapReduce好很多,但是无法像Hive一样可以处理大量的数据。Impala提供了快速轻量查询的功能,方便开发人员快速的查询新产生的数据。' j# [+ {+ U: Y* j0 x1 y' A" [; U  s
. s3 y8 K' E6 s# F

; W1 ?9 s0 m. V" X% P1 Z9 x, U
您需要登录后才可以回帖 登录 | 开始注册

本版积分规则

关闭

站长推荐上一条 /4 下一条

如有购买积分卡请联系497906712

QQ|返回首页|Archiver|手机版|小黑屋|易陆发现 点击这里给我发消息

GMT+8, 2022-12-10 09:44 , Processed in 0.776170 second(s), 23 queries .

Powered by LR.LINUX.cloud bbs168x X3.2 Licensed

© 2012-2022 Comsenz Inc.

快速回复 返回顶部 返回列表